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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
Automatic Grammar Agreementと Markdown Extended Attributes について
kishikawakatsumi
0
180
Data-Centric Kaggle
isax1015
2
760
余白を設計しフロントエンド開発を 加速させる
tsukuha
7
2.1k
AI Schema Enrichment for your Oracle AI Database
thatjeffsmith
0
250
CSC307 Lecture 01
javiergs
PRO
0
690
ぼくの開発環境2026
yuzneri
0
110
AI巻き込み型コードレビューのススメ
nealle
0
130
Oxlint JS plugins
kazupon
1
770
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
170
[KNOTS 2026登壇資料]AIで拡張‧交差する プロダクト開発のプロセス および携わるメンバーの役割
hisatake
0
250
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
970
CSC307 Lecture 07
javiergs
PRO
0
550
Featured
See All Featured
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
220
How to build a perfect <img>
jonoalderson
1
4.9k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
120
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
200
GitHub's CSS Performance
jonrohan
1032
470k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Docker and Python
trallard
47
3.7k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
0
100
Code Reviewing Like a Champion
maltzj
527
40k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
580
From π to Pie charts
rasagy
0
120
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%