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












































