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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
1
2.5k
カスタマーサクセス業務を変革したヘルススコアの実現と学び
_hummer0724
0
690
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
200
コマンドとリード間の連携に対する脅威分析フレームワーク
pandayumi
1
450
Patterns of Patterns
denyspoltorak
0
1.4k
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
560
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
2.4k
Smart Handoff/Pickup ガイド - Claude Code セッション管理
yukiigarashi
0
130
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
200
Vibe Coding - AI 驅動的軟體開發
mickyp100
0
170
「ブロックテーマでは再現できない」は本当か?
inc2734
0
970
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
2
4.4k
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
What does AI have to do with Human Rights?
axbom
PRO
0
2k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
160
So, you think you're a good person
axbom
PRO
2
1.9k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
61
52k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.3k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
200
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.2k
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%