常見(jiàn)的幾種Windows后門持久化方式
背景
持久化后門是指當(dāng)破壞者者通過(guò)某種手段拿到服務(wù)器的控制權(quán)之后,通過(guò)在服務(wù)器上放置一些后門(腳本、進(jìn)程、連接之類),來(lái)方便他以后持久性的破壞,簡(jiǎn)單梳理一下日常遇見(jiàn)windows用的比較多的一些持久化方式方便以后排查問(wèn)題使用。
注冊(cè)表自啟動(dòng)
最常見(jiàn)的在指定鍵值添加一個(gè)新的鍵值類型為REG_SZ,數(shù)據(jù)項(xiàng)中添寫需要運(yùn)行程序的路徑即可以啟動(dòng),此類操作一些較為敏感容易被本地AV攔截,目前也是較為常見(jiàn)的一種方式。
鍵值路徑如下:
- HKEY_LOCAL_MACHINE\SOFTWARE\Microft\windows\currentversion\run
 
自啟動(dòng)項(xiàng)目如下:
用戶登錄
在注冊(cè)表路徑:HKCU\Environment\
創(chuàng)建字符串鍵值:UserInitMprLogonScript
鍵值設(shè)置為特定的腳本路徑即可:
另外一種實(shí)現(xiàn)方式是修改winlogon Userinit字段:
- HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
 
Powershell的一鍵修改命令如下:
- Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\WINDOWS NT\CurrentVersion\Winlogon" -name Userinit -value "C:\Windows\system32\userinit.exe,***************"
 
定時(shí)任務(wù)
Windows實(shí)現(xiàn)定時(shí)任務(wù)主要有schtasks與at二種方式,一定層次說(shuō)上schtasks是at命令的升級(jí)版、主要行為特別表現(xiàn)從一個(gè)特定的外網(wǎng)地址下載downloader樣本或病毒母體或者維持CC通信的心跳包。
使用以下命令可以一鍵實(shí)現(xiàn):
- "schtasks /create /sc minute /mo 1 /tn "chrome" /tr wscript.exe C:\Users\\AppData\Local\Temp\13442980_crypted.vbs"
 
WMI
WMI是微軟基于Web的企業(yè)管理(WBEM)的實(shí)現(xiàn)版本,這是一項(xiàng)行業(yè)計(jì)劃,旨在開(kāi)發(fā)用于訪問(wèn)企業(yè)環(huán)境中管理信息的標(biāo)準(zhǔn)技術(shù)。主要與Powershell命令配合使用可以實(shí)現(xiàn)無(wú)文件危害重要方式,具有良好的隱蔽性也是目前較為常用的持久化手段。
關(guān)鍵實(shí)現(xiàn)的代碼如下:
WMI對(duì)象主要是執(zhí)行一個(gè)WQL(WMI Query Language)的查詢后,本地調(diào)用Powershell執(zhí)行響應(yīng)的代碼由于沒(méi)有文件保存在本地磁盤能夠較好的免查殺。
Black Hat 2015公布了一個(gè)WMIBackdoor的poc畢竟還是經(jīng)典,在流行的powersploit與nishang框架里面也有相關(guān)的ps1文件。
傳送門:https://github.com/mattifestation/WMI_Backdoor
webshell
在指定的web服務(wù)器路徑藏的很深的那種放置一個(gè)webshell,同時(shí)做好免殺后的shell往往比常規(guī)的系統(tǒng)后門更難被發(fā)現(xiàn),這個(gè)操作很常規(guī)。
各類webshell種類比較多傳送門:https://github.com/xl7dev/WebShell
自啟動(dòng)服務(wù)
簡(jiǎn)單的分為二種方式將自己的惡意的可執(zhí)行文件注冊(cè)成服務(wù)或者調(diào)用系統(tǒng)進(jìn)程如svchost加載dll文件運(yùn)行服務(wù)。第二種方式相對(duì)隱蔽性較好由于系統(tǒng)進(jìn)程的特殊性往往不敢輕易終止進(jìn)程,由于此類均在PE文件或者其他類型文件在磁盤中容易被查殺,特殊處理過(guò)的除外。
Metasploit可以使用Metsvc創(chuàng)建服務(wù),此類操作極容易被AV查殺。
如下是永恒之藍(lán)挖礦病毒一個(gè)常見(jiàn)病毒,通過(guò)偽裝服務(wù)名為系統(tǒng)服務(wù)瞞天過(guò)海。
在Meterpreter下可以運(yùn)行run metsvc將會(huì)在目標(biāo)主機(jī)上以Meterpreter的服務(wù)的形式注冊(cè)在服務(wù)列表中,并開(kāi)機(jī)自動(dòng)自動(dòng):
Windows服務(wù)端服務(wù)注冊(cè)成功:
dll劫持
如果在進(jìn)程嘗試加載一個(gè)DLL時(shí)沒(méi)有指定DLL的絕對(duì)路徑,那么Windows會(huì)嘗試去指定的目錄下查找這個(gè)DLL;如果破壞者能夠控制其中的某一 個(gè)目錄,并且放一個(gè)惡意的DLL文件到這個(gè)目錄下,這個(gè)惡意的DLL便會(huì)被進(jìn)程所加載,從而造成代碼執(zhí)行。
比較常用的如LPK.dll的劫持:
win7及win7以上系統(tǒng)增加了KnownDLLs保護(hù),需要在注冊(cè)表:
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\ExcludeFromKnownDlls
 
下添加 “lpk.dll” 才能順利劫持:
另外一種思路是通過(guò)查看被劫持的DLL的導(dǎo)出函數(shù)表,編程實(shí)現(xiàn)劫持DLL向原DLL的導(dǎo)出函數(shù)的轉(zhuǎn)發(fā),并加入你的惡意代碼達(dá)到一個(gè)劫持的效果。
COM劫持
主要通過(guò)修改CLSID下的注冊(cè)表鍵值,實(shí)現(xiàn)對(duì)CAccPropServicesClass和MMDeviceEnumerator劫持,而系統(tǒng)很多正常程序啟動(dòng)時(shí)需要調(diào)用這兩個(gè)實(shí)例,所以,這就可以用作后門來(lái)使用,并且,該方法也能夠繞過(guò)Autoruns對(duì)啟動(dòng)項(xiàng)的檢測(cè)。
傳送門如下:
Powershell版本的poc:https://github.com/3gstudent/COM-Object-hijacking
Bootkit
MBR后門主要的思路是讀取主引導(dǎo)記錄和把分區(qū)表從主引導(dǎo)記錄中復(fù)制出來(lái)。然后把自己的包含惡意二進(jìn)制數(shù)據(jù)的主引導(dǎo)記錄放到主引導(dǎo)扇區(qū),并復(fù)制新的分區(qū)表到它。但是,并非只有分區(qū)表需要保留,還有原來(lái)的主引導(dǎo)記錄也需要保存下來(lái),MBR病毒復(fù)制原始主引導(dǎo)記錄到其它64個(gè)未用到的扇區(qū)。到MBR病毒執(zhí)行完自己的操作后在讀取原始的主引導(dǎo)記錄并跳到0x7c00處執(zhí)行來(lái)引導(dǎo)開(kāi)機(jī)。目前比較流行的比如暗云木馬系列:
詳細(xì)可參考騰訊的研究報(bào)告: https://slab.qq.com/news/tech/1308.html
通過(guò)PCHunter也能夠進(jìn)行簡(jiǎn)單的MBR的異常判斷,此類后門往往具有較大的實(shí)施難度病毒種類往往也較少。
總結(jié)
Windows環(huán)境的持久化還有更多霸氣側(cè)漏的姿勢(shì)沒(méi)有遇見(jiàn)總結(jié)到,相對(duì)于之前建立隱藏賬戶、網(wǎng)站跟目錄下的webshell、一個(gè)后門的exe程序、定時(shí)任務(wù)這些手法一些更新的手法顯得更加隱蔽與難以查殺,希望能給日常背鍋的運(yùn)維、安全應(yīng)急、開(kāi)發(fā)大佬與很有地位的道歉師在客戶現(xiàn)場(chǎng)搞的焦頭爛額時(shí)候提供一些排查思路吧。

































 
 
 







 
 
 
 