Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Process Hollowing
Search
ry0kvn
December 19, 2019
Programming
0
2.5k
Process Hollowing
ry0kvn
December 19, 2019
Tweet
Share
More Decks by ry0kvn
See All by ry0kvn
Loading DLL from memory
ry0kvn
0
110
Code Injection詰め合わせ
ry0kvn
0
28
Other Decks in Programming
See All in Programming
SourceGeneratorのススメ
htkym
0
190
Fragmented Architectures
denyspoltorak
0
150
AI & Enginnering
codelynx
0
110
CSC307 Lecture 07
javiergs
PRO
0
550
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
490
CSC307 Lecture 02
javiergs
PRO
1
770
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
140
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.8k
Automatic Grammar Agreementと Markdown Extended Attributes について
kishikawakatsumi
0
180
AIと一緒にレガシーに向き合ってみた
nyafunta9858
0
170
360° Signals in Angular: Signal Forms with SignalStore & Resources @ngLondon 01/2026
manfredsteyer
PRO
0
110
AI Schema Enrichment for your Oracle AI Database
thatjeffsmith
0
250
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
28
2.4k
Tell your own story through comics
letsgokoyo
1
800
From π to Pie charts
rasagy
0
120
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
420
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
210
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Raft: Consensus for Rubyists
vanstee
141
7.3k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
380
Code Reviewing Like a Champion
maltzj
527
40k
Abbi's Birthday
coloredviolet
1
4.7k
Building an army of robots
kneath
306
46k
Transcript
Process Hollowing @ry0kvn
About Me Twitter@ry0kvn りょーくん セキュリティキャンプ2019受講生 CODE BLUE2019 学生スタッフ
今日話すこと - Process Hollowing の紹介 - プロセスやPEまわりの解説 - ベース再配置の解説 -
PoCコードの簡単な解説 - デモ - 事例
ProcessHollowingとは 悪意あるプロセスがターゲットプロセスの 実行コード領域をくり抜いた後、代替コード を注入し実行させる検知回避手法の1つ。 Malicious process target process Malicious code
target process create and unmap inject
MITRE のATT&CK Matrixではこの辺り
実装に必要な前提知識解説
Windowsにおけるプロセス操作 プロセスA プロセスB VirtualAllocEX() でメモリ領域確保 WriteProcessMemory() でデータ書き込み
ソースファイル オブジェクトファ イル 実行可能ファイ ル ロードされた イメージファイル 仮想メモリ コンパイラ リンカ
ローダー EXEファイルの生成とロード
いろいろなアドレス - ImageBase イメージファイルがロードされたアドレス - RVA(Relative Virtual Address) ImageBaseからのオフセット -
VA 仮想メモリ内オフセット Virtual Memory ImageBase RVA VA
ベース再配置 リンカが想定した 理想の配置 ローダが選択した現 実の配置 0x00400000 ロードされたイメージ ファイル マップ済み 0x00400000
0x00600000 ロードされたイメージ ファイル
ベース再配置情報の格納場所 OPTIONAL_HEADERの DataDirectory の 5番目のエントリである IMAGE_DIRECTORY_ENTRY_BASERELOCに 再配置が必要なアドレスのリストが格納される。
ベース再配置情報の格納場所
PEviewで見るとこ んな感じ
ベース再配置の求め方 Delta = (ローダによる実際のImageBase) ー (リンカによる理想のImageBase) リンカによるメモリ配置 ローダによるメモリ配置 Delta
Win32APIを使った Process Hollowing の実装
ポイントとなる関数 CraeteProcessA ReadRemotePEB ReadRemoteImage NtUnmapViewOfSeciton VirtualAllocEX マニュアルでベース再配置を計算 WriteProcessMemory ResumeThread
ポイントとなる関数 CraeteProcessA ターゲットとなるプロセスをCREATE_SUSPENDで新規作成 ReadRemotePEB ターゲットプロセスのPEB情報を取得 ReadRemoteImage ImageBaseへのアドレスを取得 NtUnmapViewOfSeciton ターゲットプロセスのImageBaseからImageViewをアンマップ VirtualAllocEX ターゲットプロセスにメモリ領域の確保 マニュアルでベース再配置を計算 WriteProcessMemory ターゲットプロセスにデータの書き込み ResumeThread ターゲットプロセスの停止解除
%demo
None
事例 EMOTETでは、System32内の正規ファイルを名前変更して手元にコピーし、パスワー ド抽出を行うNirSoftというフリーツールを実行コードとしてProcessHollowingしてい た。 「流行マルウェア「EMOTET」の内部構造を紐解く」を参考 https://www.mbsd.jp/blog/20181225_2.html
end%