前言
后門(Backdoor),本意是指在建築物的背面開設的門,通常比較隱蔽。在信息安全領域,后門是指繞過安全控制措施獲取對程序或者系統訪問權限的方法。簡單地說,后門就是一個留在目標主機的軟件,它可以使攻擊者隨時與目標主機進行連接。在大多數情況下,后門是一個運行在目標主機上的隱蔽進程。因為后門可能允許一個普通的、未授權的用戶控制計算機,所以攻擊者經常使用后門來控制服務器。
攻擊者在提升權限后,往往會建立后門來維持對目標主機的控制權。這樣一來,即使修復了被攻擊者利用的系統漏洞,攻擊者還是可以通過后門繼續控制目標系統。
操作系統后門分析與防范
操作系統后門,泛指繞過目標系統安全控制體系的正規用戶認證過程來維持對目標系統的控制權及隱匿控制行為的方法。系統維護人員可以清除操作系統中的后門,以恢復目標系統安全控制體系的正規用戶的認證過程。
粘滯鍵后門
粘滯鍵后門介紹
粘滯鍵后門是一種比較常見的持續控制的方法。
在Windows主機上連續按5次"Shift"鍵,即可調用出粘滯鍵 。Windows粘滯鍵主要是為無法同時按多個按鍵的用戶設計的。例如,在使用組合鍵時,用戶需同時按住兩個或多個鍵位,但是如果使用粘滯鍵,用戶只需要按一個鍵。
當攻擊者用惡意腳本替換windows\system32 目錄下的粘滯鍵可執行文件sethc.exe,連續按五次"Shift"鍵,可以直接以System權限執行系統命令、創建管理員用戶、登錄服務器等。
黏貼鍵后門防范措施
- 在遠程登錄服務器時,連續按5次"Shift"鍵,判斷服務器是否被入侵
- 拒絕使用sethc.exe或者在"控制面板"中關閉"啟用粘滯鍵"選項
注冊表注入后門
注冊表注入后門介紹
在普通用戶權限下,攻擊者會將需要執行的后門程序或者腳本路徑填寫到注冊表鍵HKCU:Software\Microsoft\Windows\CurrentVersion\Run中(鍵名可以任意設置)。當管理員登錄系統時,后門就會運行,服務端反彈成功。
注冊表注入后門防范措施
殺毒軟件對此類后門有專門的查殺機制,當發現系統中存在后門時會彈出提示框。根據提示的內容,采取相應的措施,即可刪除此類后門。
計划任務后門
計划任務后門介紹
計划任務在Windows 7 及之前版本的操作系統中使用at命令調用,在從Windows 8 版本開始的操作系統中使用schtasks命令調用。計划任務的后門分為管理員權限和普通用戶權限兩種,管理員權限的后門可以設置更多的計划任務。
計划任務后門的防范
對計划任務后門,有效的防范措施是安裝安全防護軟件並對系統進行掃描;及時為系統打補丁;在內網中使用強度較高的密碼。
meterpreter后門
Persistence是meterpreter自帶的后門程序,是一個使用安裝自啟動方式的持久性后門程序。在使用這個后門程序時,需要在目標主機上創建文件,因此安全防護軟件會報警。網絡管理人員可以根據安全軟件的報警信息,采取相應的防范措施。
Cymotha后門
Cymotha是一款可以將ShellCode注入現有進程的后門工具,使用Cymotha注入的后門程序能與被注入的程序共存。
WMI后門
WMI后門介紹
WMI型后門只能由具有管理員權限的用戶運行。WMI型后門通常是用PowerShell編寫的,可以直接從新的WMI屬性中讀取和執行后門代碼、給代碼加密。通過這種方法,攻擊者可以在系統中安裝一個具有持久性的后門,且不會在系統磁盤中留下任何文件。
WMI型后門主要使用了WMI的兩個特征:即無文件和無進程。其基本原理是:將代碼加密存儲於WMI中,達到所謂的"無文件";當設定的條件被滿足時,系統將自動啟動PowerShell進程去執行后門程序,執行后,進程將會消失,達到所謂的"無進程"。
WMI后門防范
清楚WMI后門的常用方法有:刪除自動運行列表中的惡意WMI條目;在PowerShell中使用Get-WMIObject命令刪除與WMI持久化相關的組件
Web后門防范與分析
Web后門俗稱WebShell,是一段包含ASP、ASP.NET、PHP、JSP程序的網頁代碼。這些代碼都運行在服務器上。攻擊者會通過一段精心設計的代碼,在服務器上進行一些危險操作,以獲取某些敏感的技術信息,或者通過滲透和提權來獲得服務器的控制權。IDS、殺毒軟件和安全工具一般都能將攻擊者設置的Web后門檢測出來。不過,有些攻擊者會編寫專門用的Web后門來隱藏自己的行為。
Nishang下的WebShell
Nishang是一款針對PowerShell的滲透測試工具,集成了框架、腳本和各種Payload,廣泛用於滲透測試的各個階段。
在Nishang中也存在ASPX的"大馬"。該模塊在\nishang\Antak-WebShell目錄下。使用該模塊,可以進行編碼、執行腳本、上傳/下載文件等。
weevely后門
weevely是一款用Python語言編寫的針對PHP平台的WebShell,其主要功能如下:
- 執行命令和瀏覽遠程文件
- 檢測常見的服務器配置問題
- 創建TCP Shell和Reverse Shell
- 掃描端口
- 安裝HTTP代理
webacoo后門
webacoo(Web Backdoor Cookie)是一款針對PHP平台的Web后門工具。
ASPX meterpreter后門
Metasploit中有一個名為"shell_reverse_tcp"的Payload,可用於創建具有meterpreter功能的ShellCode。
PHP meterpreter后門
Metasploit中有一個名為"PHP meterpreter"的Payload,可用於創建具有meterpreter功能的 PHP WebShell。
域控制器權限持久化分析和防范
在獲得域控制器的權限后,攻擊者通常會對現有的權限進行持久化操作。
DSRM域后門
DSRM域后門介紹
DSRM(Directore Services Restore Mode,目錄服務恢復模式)是Windows 域環境中域控制器的安全模式啟動項。每個域控制器有一個本地管理員賬戶(也就是DSRM賬戶)。DSRM的用途是:允許管理員在域環境中出現故障或崩潰時還原、修復、重建活動目錄數據庫,使域環境的運行恢復正常。在域環境創建之初,DSRM的密碼需要在安裝DC時設置,且很少會被重置。
在滲透測試中,可以使用DSRM賬號對域環境進行持久化操作。我們知道,每個域控制器都由本地管理員賬號和密碼(與域管理員賬號和密碼不同)。DSRM賬號可以作為一個域控制器的本地管理員賬戶,通過網絡連接域控制器,進而控制域控制器。
DSRM域后門的防御措施
- 定期檢查注冊表中用於控制DSRM登錄方式的鍵值HKL\System\CurrentControlSet\Control\Lsa\DsrmAdminLogonBehavior,確認該鍵值為1,或者刪除該鍵值
- 定期修改域中所有控制器的DSRM賬號
- 經常檢查ID為4794的日志。嘗試設置活動目錄服務還原模式的管理員密碼會被記錄在4794日志中
SSP維持域控權限
SSP介紹
SSP(Security Support Provider)是Windows操作系統的安全機制的提供者。簡答的說,SSP就是一個DLL文件,主要用來實現Windows操作系統的身份認證功能,例如NTML、Kerberos、Negotiate、Secure Channel、Digets、Credential。
SSPI(Security Support Provider Interface,安全支持提供程序接口)是Windows操作系統在執行認證操作時使用的API接口,可以說,SSPI是SSP的API接口。
如果獲得了目標網絡的System權限,可以使用該方法進行持久化操作,其主要原理是:LSA(Local Security Authority)用於身份驗證;lsass.exe作為Windows的系統進程,用於本地安全和登陸策略;在系統啟動時,SSP將被加載到lsass.exe進程中。但是,假如攻擊者對LSA進行了擴展,自定義了惡意的DLL文件,在系統啟動時將其加載到lsass.exe進程中,就能獲取到lsass.exe的明文密碼。這樣,即使用戶更改密碼重新登陸,攻擊者依然能獲取該賬號的新密碼。
SSP維持域控制器權限的防御措施
- 檢查HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/Lsa/Security Packages項中是否有可疑的DLL文件
- 檢查C:\Windows\System32\目錄下是否有可疑DLL文件
- 使用第三方工具檢查LSA中是否有可疑的DLL文件
SID History域后門
SID History域后門介紹
每個用戶都有自己的SID,SID的主要作用是跟蹤安全主題控制用戶連接資源時的訪問權限。SID History是在域遷移過程中需要使用的一個屬性。
如果A域中的域用戶遷移到B域中,那么在B域中的新建用戶的SID會隨之改變,進而影響遷移后的用戶權限,導致遷移后的用戶不能訪問本來可以訪問的資源。SID History的作用是在域遷移過程中保持域用戶的訪問權限,即如果遷移后的用戶的SID改變了,系統會將其原來的SID添加到遷移后用戶的SID History屬性中,使遷移后的用戶保持原有權限、能訪問其原來可以訪問的資源。在滲透測試中,如果獲得了域管理員權限,就可以將SID History作為持久化的方法。
SID History域后門的防御措施
- 經常查看域用戶中SID為500的用戶
- 完成域遷移工作后,對有相同SID History屬性的用戶進行檢查
- 定期檢查ID為4765和4766的日志:4765為將SID History屬性添加到用戶的日志;4766為將SID History屬性添加到用戶失敗的日志
Golden Ticket
Golden Ticket介紹
在滲透測試中,如果發現系統中存在惡意行為,應及時更改域管理員密碼,對受控制的機器進行斷網處理,然后進行日志分析取證。然而,攻擊者往往會留下多條進入內網的通道,如果我們忘記將krbtgt賬號重置,攻擊者就可以很快拿到域控制器權限。
krbtgt是KDC服務使用的賬號,屬於Domain Admins組,在域環境中,每個用戶賬號的票據都是由krbtgt生成的,如果攻擊者拿到了krbtgt的NYLM Hash或者AES-256值,就可以偽造域內任意用戶的身份,並以該用戶的身份訪問其他服務。
攻擊者在使用域的Golden Ticket(黃金票據)進行票據攻擊時,通常需要掌握以下信息:
- 需要偽造的域管理員用戶名
- 完整的域名
- 域SID
- krbtgt的NTLM Hash或AES-256值
使用Golden Ticket偽造的用戶可以是任意用戶(即使這個用戶不存在),因為TGT的加密是由krbtgt完成的,所以,只要TGT被krbtgt賬戶和密碼正確的加密,那么任意KDC使用krbtgt將TGT解密后,TGT的所有信息都是可信的。
Golden Ticket攻擊的防御措施
管理員通常會修改域管理員的密碼,但有時會忘記將krbtgt密碼一並重置,所以,要想防止Golden Ticket攻擊,就需要將krbtgt密碼重置兩次。
Silver Ticket
Silver Ticket介紹
Silver Ticket(白銀票據)不同於Golden Ticket。Silver Ticket的利用過程是偽造TGS,通過已知授權服務密碼生成一張可以訪問該服務的TGT。因為在票據生成過程中不需要使用KDC,所以可以繞過域控制器,很少留下日志。而Golden Ticket在利用過程中需要由KDC頒發TGT,並且在生成偽造的TGT的20分鍾內,TGS不會對該TGT真偽進行校驗。
Silver Ticket依賴於服務賬號的密碼散列值,這不同於Golden Ticket利用需要使用krbtgt賬號密碼的散列值,因此更加隱蔽。
Golden Ticket使用krbtgt賬號的密碼散列值,利用偽造最高權限的TGT向KDC要求頒發擁有任意服務訪問權限的票據,從而獲得域控制器權限。而Silver Ticket會通過相應的賬號服務來偽造TGS,范圍有限,只能獲得對應的權限服務。Golden Ticket是由krbtgt賬號加密的,而Silver Ticket是由特定的服務賬號加密的。
攻擊者在使用Silver Ticket對內網進行攻擊時,需要掌握以下信息:
- 域名
- 域SID
- 目標服務器的FQDN
- 可利用的服務
- 服務賬號的NTLM Hash
- 需要偽造的用戶名
Silver Ticket攻擊的防范措施
- 在內網中安裝殺毒軟件,及時更新系統補丁
- 使用組策略在域中進行相應的設置,現值mimikatz在內網中的使用
- 計算機的賬號密碼默認30天清理一次,檢查該設置是否生效
Skeleton Key
使用Skeleton Key(萬能密碼),可以對域內權限進行持久化操作。
Skeleton Key攻擊的防范措施
- 域管理員要設置強口令,確保惡意代碼不會再域控制器內執行
- 在所有域用戶中啟動雙因子認證,例如智能卡認證
- 啟動應用程序的白名單,以限制mimakatz在域控制器中的運行
Hook PasswordChangeNotify
Hook PasswordChangeNotify的作用是當用戶修改密碼后在系統中進行同步。攻擊者可以利用該功能獲取用戶修改密碼時輸入的密碼明文。
Hook PasswordChangeNotify攻擊的防御措施
使用Hook PasswordChangeNotify不需要重啟系統、不會再系統磁盤上留下DLL文件、不需要修改注冊表。如果Hook PasswordChangeNotify被攻擊者利用,網絡管理員是很難檢測到的。所以,在日常的網絡維護工作中,需要對PowerShell進行嚴格檢視,並啟用約束語言模式,對Hook PasswordChangeNotify進行防御。