iT邦幫忙

2021 iThome 鐵人賽

DAY 7
0
Security

打通任督二脈奇幻之旅 - 用 30 天探索 Windows 底層運作原理系列 第 7

【Day 07】- 惡搞行程(Process)、鍵盤(Keyboard)大作戰之序章

Agenda

  • 資安宣言
  • 系列與規劃
  • 下期預告

資安宣言


撰寫本系列文章目的在於提升資訊安全之實務能力,
並透過實作體悟到資訊安全領域的重要性,
本系列所有文章之內容皆有一定技術水平,
不得從事非法行為、惡意攻擊等非法活動,
「一切不合法規之行為皆受法律所約束」,
為了避免造成公司、廠商或玩家之間困擾,
所有實作不會拿已上市產品、Online Game 等等來作範例學習,
且部分具有深度、價值之內容,將會提升一定閱讀門檻(不對該技術做分析、解說),
請勿透過本系列文章所學,從事任何非法活動,請不要以身試法!!!


那就開始今天的主題囉~

今天沒有主題 XD
/images/emoticon/emoticon30.gif

原本想講講惡搞鍵盤(Keyboard)的相關技術,
但是後來發現內容好像和【Day 14】幾乎是一樣的。

我又想了想,要不要乾脆講個惡搞 Process 的技術?
但這又和【Day 09 - Day 12】所要講的內容重疊。

最終決定還是把這篇當作一個新的系列主題開始的「序」好了,
之後每一個系列章節結束,都會寫一篇類似這樣的文章,
然後講講一整個系列下來所寫到的內容,做個簡單的複習與檢討。

系列與規劃

在 Day 02 我們講了 File System Mini Filter 技術,
透過向 Filter Manager 註冊 I/O Callback Routine,
過濾特定 IRP,來達到隱藏目錄、檔案的效果,過濾的 IRP 分別為:

  1. IRP_MJ_DIRECTORY_CONTROL
    • 過濾目錄、檔案資訊
  2. IRP_MJ_CREATE
    • 過濾開檔、讀檔資訊

還沒看的可以去看一下唷:
【Day 02】- 消失在系統上的目錄與文件

在 Day 03 我們講了常見的 DLL Injection 技術,
是介紹使用 Blackbone 的其中一個注入技術:
LdrLoadDll + ZwCreateThreadEx
這個 Project 還有實作了兩種厲害的注入技巧,
分別是 LdrLoadDll + APC 與 Manual map,
有興趣的要記得看一下,因為這兩種技巧也是滿重要的技術。

還沒看的可以去看一下唷:
【Day 03】- 打針!打針!從 R0 注入的那件事!

在 Day 04 我們講了基於 PEB 斷鏈隱藏 Module 的技術,
從 Process 的 EProcess 中拿到 PEB Address,
再從 PEB Address 列舉三張表,找出要隱藏的 Module,這三張表分別是:

  1. InLoadOrderModuleList
    • 按照「載入」順序排列
  2. InMemoryOrderModuleList
    • 按照「記憶體」順序排列
  3. InInitializationOrderModuleList
    • 按照「初始化」順序排列

只要找到要隱藏的 Module 位置,
再將它的上一個位置與下一個位置連起來,就能斷開要隱藏的 Module,
使 User mode 部分普通的 API 列舉不到我們的 DLL。

還沒看的可以去看一下唷:
【Day 04】- 今天來把 Module 藏起來
(基於 PEB 斷鏈,隱藏 DLL 的方法)

在 Day 05 我們講了一種對抗 PEB 斷鏈的技術,
這種技術稱之為「特徵查詢法」,
是透過在記憶體中暴力搜尋 PE Header 的方式,
從而找出隱藏在 Memory 中的 Module,
另外還有講述 Blackbone 的其中一個隱藏技術,
這項技術就是刪除 Module 的 PE Header ,
這能避免我們的 Module 被透過 PE 特徵找出來。

還沒看的可以去看一下唷:
【Day 05 】- 藏起來的 Module 還是被發現了QuO
(基於暴力搜尋 PE Header 的方法與解法)

在 Day 06 我們講了另一種隱藏 Module 的高級技術,
這項技術我稱它為「樹根斷鏈法」,VADRoot 斷鏈,
講解了什麼是 VAD,講解了如何透過 VAD 列舉出 Module,
以及幾個從 VAD 二元樹中隱藏 Module 的方法,
最終擊敗 Process Explorer,成功隱藏 Module。

還沒看的可以去看一下唷:
【Day 06 】- Module 隱藏大法,不可能再被發現了吧 / _ \
(基於 VAD 斷鏈的隱藏方法)

以上都是有關 「Module 隱藏」 的攻與防。

現在開始簡單介紹一下,接下來幾天要講到的主題系列內容:

在 Day 08 將會講述如何透過修改 EProcess 來「偽裝」成某個 Process。
標題如下:
【Day 08】- 見鬼了(っ °Д °;)っ我明明沒有啟動這支程式...

在 Day 09 將會講述一般 Rookit 是如何能夠隱藏 Process 的手法。
標題如下:
【Day 09】- 今日來創造 R3 的 Ghost Process

在 Day 10 將會講述如何找出在 Day 09 中隱藏起來的 Rookit。
【Day 10】- 藏起來的 Process 真的看不見摸不著?

在 Day 11 將會講述第二種隱藏 Process 的技術,讓 Day 10 所講的技術化作不可能,
再也不可能透過 Day 10 所講之技術找到我們所隱藏的 Process。
標題如下:
【Day 11】- 再次創造 Ghost Process,這次找不到了吧哈哈

在 Day 12 將會講述如何能找出隱藏在 Memory 中所有的 Process,
標題如下:
【Day 12】- 找出 R3 看不見也摸不著的 Process,終極辦法!

到了 Day 13 將會開始進入有趣的 Driver 實作時間,
【Day 13】- 有了這個,就沒有打得開的程式了XD
【Day 14】- 今天來實作一個鍵盤監聽器
【Day 15】- 今天來實作一個系統時鐘加速器

預計在 Day 15 後,會來講講近期幾個有趣、重大的 CVE,
詳情會在 Day 15 公布,敬請期待!

那這篇文章到這邊結束拉~~

大家若有覺得哪裡寫得不好,都留個言討論一下吧 XD
那我們下期見 o( ̄▽ ̄)ブ

下期預告


上一篇
【Day 06 】- Module 隱藏大法,不可能再被發現了吧 / _ \(基於 VAD 斷鏈的隱藏方法)
下一篇
【Day 08】- 見鬼了(っ °Д °;)っ我明明沒有啟動這支程式…
系列文
打通任督二脈奇幻之旅 - 用 30 天探索 Windows 底層運作原理15

尚未有邦友留言

立即登入留言