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