SlideShare a Scribd company logo
1 of 21
Download to read offline
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
事例
EMOTETでは、System32内の正規ファイルを名前変更して手元にコピーし、パスワー
ド抽出を行うNirSoftというフリーツールを実行コードとしてProcessHollowingしてい
た。
「流行マルウェア「EMOTET」の内部構造を紐解く」を参考
https://www.mbsd.jp/blog/20181225_2.html
end%

More Related Content

What's hot

徳丸本ができるまで
徳丸本ができるまで徳丸本ができるまで
徳丸本ができるまで
Hiroshi Tokumaru
 
이승재, 마비노기 듀얼: 분산 데이터베이스 트랜잭션 설계와 구현, NDC2015
이승재, 마비노기 듀얼: 분산 데이터베이스 트랜잭션 설계와 구현, NDC2015이승재, 마비노기 듀얼: 분산 데이터베이스 트랜잭션 설계와 구현, NDC2015
이승재, 마비노기 듀얼: 분산 데이터베이스 트랜잭션 설계와 구현, NDC2015
devCAT Studio, NEXON
 

What's hot (20)

なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?
 
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
Ormとの付き合い方
Ormとの付き合い方Ormとの付き合い方
Ormとの付き合い方
 
C言語なWebSocketの遊び方。
C言語なWebSocketの遊び方。C言語なWebSocketの遊び方。
C言語なWebSocketの遊び方。
 
FlutterでGraphQLを扱う
FlutterでGraphQLを扱うFlutterでGraphQLを扱う
FlutterでGraphQLを扱う
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴
SQLアンチパターン - 開発者を待ち受ける25の落とし穴SQLアンチパターン - 開発者を待ち受ける25の落とし穴
SQLアンチパターン - 開発者を待ち受ける25の落とし穴
 
徳丸本ができるまで
徳丸本ができるまで徳丸本ができるまで
徳丸本ができるまで
 
Keycloakのステップアップ認証について
Keycloakのステップアップ認証についてKeycloakのステップアップ認証について
Keycloakのステップアップ認証について
 
Digdagによる大規模データ処理の自動化とエラー処理
Digdagによる大規模データ処理の自動化とエラー処理Digdagによる大規模データ処理の自動化とエラー処理
Digdagによる大規模データ処理の自動化とエラー処理
 
Rest ful api設計入門
Rest ful api設計入門Rest ful api設計入門
Rest ful api設計入門
 
ReST API Security
ReST API SecurityReST API Security
ReST API Security
 
MBSD Cybersecurity Challenges 2018
MBSD Cybersecurity Challenges 2018MBSD Cybersecurity Challenges 2018
MBSD Cybersecurity Challenges 2018
 
이승재, 마비노기 듀얼: 분산 데이터베이스 트랜잭션 설계와 구현, NDC2015
이승재, 마비노기 듀얼: 분산 데이터베이스 트랜잭션 설계와 구현, NDC2015이승재, 마비노기 듀얼: 분산 데이터베이스 트랜잭션 설계와 구현, NDC2015
이승재, 마비노기 듀얼: 분산 데이터베이스 트랜잭션 설계와 구현, NDC2015
 
RDBでのツリー表現入門
RDBでのツリー表現入門RDBでのツリー表現入門
RDBでのツリー表現入門
 
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
 
IL2CPPに関する軽い話
IL2CPPに関する軽い話IL2CPPに関する軽い話
IL2CPPに関する軽い話
 

Similar to Process hollowing

ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
 

Similar to Process hollowing (20)

6_マイクロサービスに必要なセキュリティ_NGINX_UserGroup_220415.pptx
6_マイクロサービスに必要なセキュリティ_NGINX_UserGroup_220415.pptx6_マイクロサービスに必要なセキュリティ_NGINX_UserGroup_220415.pptx
6_マイクロサービスに必要なセキュリティ_NGINX_UserGroup_220415.pptx
 
[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Intermediate 01] イントロダクション / Bitcoin を動作させる[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Intermediate 01] イントロダクション / Bitcoin を動作させる
 
Code injection
Code injectionCode injection
Code injection
 
オープンソースカンファレンス osc 2014 関西@京都 ownCloud性能検証
オープンソースカンファレンス osc 2014 関西@京都 ownCloud性能検証オープンソースカンファレンス osc 2014 関西@京都 ownCloud性能検証
オープンソースカンファレンス osc 2014 関西@京都 ownCloud性能検証
 
[SC09] パッチ待ちはもう古い!Windows 10 最新セキュリティ技術とゼロデイ攻撃攻防の実例
[SC09] パッチ待ちはもう古い!Windows 10 最新セキュリティ技術とゼロデイ攻撃攻防の実例[SC09] パッチ待ちはもう古い!Windows 10 最新セキュリティ技術とゼロデイ攻撃攻防の実例
[SC09] パッチ待ちはもう古い!Windows 10 最新セキュリティ技術とゼロデイ攻撃攻防の実例
 
機械学習 (AI/ML) 勉強会 #1 基本編
機械学習 (AI/ML) 勉強会 #1 基本編機械学習 (AI/ML) 勉強会 #1 基本編
機械学習 (AI/ML) 勉強会 #1 基本編
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
 
世界をすこしだけ前に進めるということ
世界をすこしだけ前に進めるということ世界をすこしだけ前に進めるということ
世界をすこしだけ前に進めるということ
 
Cloud Identity Summit 2012 TOI
Cloud Identity Summit 2012 TOICloud Identity Summit 2012 TOI
Cloud Identity Summit 2012 TOI
 
バグ0の資産を積み上げるための証明駆動開発入門
バグ0の資産を積み上げるための証明駆動開発入門バグ0の資産を積み上げるための証明駆動開発入門
バグ0の資産を積み上げるための証明駆動開発入門
 
Hyperledgerのチュートリアルで理解する基幹システム向けブロックチェーンハンズオン
Hyperledgerのチュートリアルで理解する基幹システム向けブロックチェーンハンズオンHyperledgerのチュートリアルで理解する基幹システム向けブロックチェーンハンズオン
Hyperledgerのチュートリアルで理解する基幹システム向けブロックチェーンハンズオン
 
HTML5最新動向
HTML5最新動向HTML5最新動向
HTML5最新動向
 
True Cloud Native Batch Workflow for .NET with MicroBatchFramework
True Cloud Native Batch Workflow for .NET with MicroBatchFrameworkTrue Cloud Native Batch Workflow for .NET with MicroBatchFramework
True Cloud Native Batch Workflow for .NET with MicroBatchFramework
 
Qiita x Microsoft - 機械学習セミナー Microsoft AI Platform
Qiita x Microsoft - 機械学習セミナー Microsoft AI PlatformQiita x Microsoft - 機械学習セミナー Microsoft AI Platform
Qiita x Microsoft - 機械学習セミナー Microsoft AI Platform
 
第3回web技術勉強会 暗号技術編その1
第3回web技術勉強会 暗号技術編その1第3回web技術勉強会 暗号技術編その1
第3回web技術勉強会 暗号技術編その1
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
 
Mobile Openid
Mobile OpenidMobile Openid
Mobile Openid
 
Pakena #9
Pakena #9Pakena #9
Pakena #9
 
クラウドアプリケーション開発に必要なセキュリティ
クラウドアプリケーション開発に必要なセキュリティ クラウドアプリケーション開発に必要なセキュリティ
クラウドアプリケーション開発に必要なセキュリティ
 
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
MinChain – Bitcoin ライクな最小限のブロックチェーン実装MinChain – Bitcoin ライクな最小限のブロックチェーン実装
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
 

Process hollowing