Liang的Rootkit习作-ZION
Win32平臺下的Rootkit習作 Codename: Zion by Liang
Zion是一套Rootkit攻防函數庫,我(Liang)負責全部的攻擊部分,檢測部分由另一實習生同學完成,能夠躲避常見的安全檢測工具這是本次練習中的關鍵任務,針對這些流行的內核級Rootkit隱藏技術,我一一對它們進行了實現。用戶可通過命令行輸入特定命令,達到特定的隱藏目的,效果圖如下:
?
目前的實現包括:
A 掛鉤系統服務描述表隱藏進程與文件 用戶可在用戶模式下自定義掛鉤函數,放在緩沖區中傳入內核態。進入內核態后,程序分配一段非分頁區存放該例程。利用這種方式,即使檢測軟件發現了SSDT HOOK的存在,也無法得知該HOOK 例程屬于哪一驅動模塊(因為分配的這段非分頁區不在任何模塊的地址空間范圍中),達到了其隱藏目的。因而是本次練習的一個亮點所在。
B DKOM方式隱藏進程、驅動模塊 對于DKOM,沒有很好的創新思路,唯一的原則便是分析檢測工具的原理,然后制定相應的執行體對象修改方案。在隱藏驅動以及注冊表部分可以繞過ICESword檢測。然而,IceSword檢測進程使用了四種不同的方式,其中直接搜索內存的方式無法通過DKOM方式繞過。
C 驅動派遣例程掛鉤方式隱藏網絡連接信息 在《Subverting the Windows Kernel》中給出了隱藏TCP連接的示例代碼,本次練習中我在此基礎上對其進行了完善,使其能夠繞過一些Anti-rootkit如IceSword的檢測(原版并不能繞過),并增加了過濾功能(例如用戶可自定義需要隱藏的ip信息與端口,操作非常友好)。另外,逆向了tcpip中查詢連接信息的代碼,分析出UDP的相關查詢結構,實現了UDP通信的隱藏。
D 文件過濾驅動實現隱藏文件或文件夾 修改自Winodws DDK的Sample Code: Sfilter。 刪去了很多功能:例如,動態綁定卷等。 這種方式與驅動派遣例程掛鉤原理類似,并沒有實際意義,僅僅為了Zion的完整性而加入。
E 掛鉤注冊表儲巢查詢例程實現注冊表隱藏 參考Pediy的《也談rootkit 注冊表信息隱藏》。
F 對檢測工具的一點總結 無論是Cross-View檢測技術還是掃描內核代碼檢測Hook的技術,要確保檢測結果的正確性,就必須保證檢測所采用的技術比Rootkit本身更底層。而Zion Rootkit之所以能繞過IceSword對內核模塊、端口信息、注冊表的檢測,正是因為在隱藏手段上,Zion使用了更為底層的技術。 從本質上講,內核態Rootkit之所以存在,是因為Windows為了提高查詢操作的效率,在內核中預留了許多冗余信息,例如:Windows采用遍歷EPROCESS鏈表的方式枚舉進程,然而CPU調度的最基本單位是線程,斷鏈EPROCESS并不會影響到CPU對線程的調度。如果檢測工具能夠找到CPU調度線程的真實鏈表對其進行枚舉,那么得到的結果必將是準確的(這里排除了Shadow Walker這類Rootkit技術),因為一旦Rootkit斷鏈了CPU調度線程列表,那么被斷鏈的線程將永遠得不到執行,這種操作應當視為“刪除”,而非“隱藏”。 可以這么說,運行于Windows內核級的所有檢測技術,永遠是不可靠的。必須比內核級Rootkit優先級別高,才能真正實現可靠檢測。將操作系統以虛擬化模式運行,在其之上進行實時監測,是一種比較理想的方法(如North Security Labs 推出的Hypersight RD),因為在這種情況下,Rootkit理論上不可能知道運行在其之上的檢測程序的存在。(但是,對于目前最新的硬件級Rootkit,這種檢測方式也是不可靠的。比如Bluepill Rootkit) - END by Liang
總結
以上是生活随笔為你收集整理的Liang的Rootkit习作-ZION的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 非常好用的截图做笔记软件
- 下一篇: jenkins的企业微信通知报错:No