Submit Search
Upload
Dll Injection
•
Download as PPTX, PDF
•
2 likes
•
3,925 views
H
Hiroaki Hata
Follow
NTT Tech conference #2, tutorial DLL Injection
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 20
Download now
Recommended
CVE、JVN番号の取得経験者になろう!
CVE、JVN番号の取得経験者になろう!
kazkiti
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda
CircleCI vs. CodePipeline
CircleCI vs. CodePipeline
HonMarkHunt
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦
Preferred Networks
心理的安全性の構造 デブサミ2019夏 structure of psychological safety
心理的安全性の構造 デブサミ2019夏 structure of psychological safety
Tokoroten Nakayama
Recommended
CVE、JVN番号の取得経験者になろう!
CVE、JVN番号の取得経験者になろう!
kazkiti
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda
CircleCI vs. CodePipeline
CircleCI vs. CodePipeline
HonMarkHunt
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦
Preferred Networks
心理的安全性の構造 デブサミ2019夏 structure of psychological safety
心理的安全性の構造 デブサミ2019夏 structure of psychological safety
Tokoroten Nakayama
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
第34回Office 365勉強会 : Microsoftサポート活用術 ~ Microsoft Azureを中心に ~
第34回Office 365勉強会 : Microsoftサポート活用術 ~ Microsoft Azureを中心に ~
Genki WATANABE
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
DeNA
Bapp Storeを調べてみたよ!
Bapp Storeを調べてみたよ!
zaki4649
ユーザーストーリー駆動開発で行こう。
ユーザーストーリー駆動開発で行こう。
toshihiro ichitani
データ収集の基本と「JapanTaxi」アプリにおける実践例
データ収集の基本と「JapanTaxi」アプリにおける実践例
Tetsutaro Watanabe
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
Keycloak拡張入門
Keycloak拡張入門
Hiroyuki Wada
機械学習モデルのサービングとは?
機械学習モデルのサービングとは?
Sho Tanaka
Istioサービスメッシュ入門
Istioサービスメッシュ入門
Yoichi Kawasaki
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTT DATA Technology & Innovation
決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話
Ryosuke Uchitate
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
kwatch
モダンオフショア開発のすすめ
モダンオフショア開発のすすめ
Arata Fujimura
初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法
kazkiti
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
Junji Nishihara
【ヒカ☆ラボ】株式会社エアー様~ETLツール活用法について~
【ヒカ☆ラボ】株式会社エアー様~ETLツール活用法について~
leverages_event
[JPCERT/CC POC Meeting] 研究紹介 + DLLハイジャックの脆弱性
[JPCERT/CC POC Meeting] 研究紹介 + DLLハイジャックの脆弱性
Asuka Nakajima
More Related Content
What's hot
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
第34回Office 365勉強会 : Microsoftサポート活用術 ~ Microsoft Azureを中心に ~
第34回Office 365勉強会 : Microsoftサポート活用術 ~ Microsoft Azureを中心に ~
Genki WATANABE
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
DeNA
Bapp Storeを調べてみたよ!
Bapp Storeを調べてみたよ!
zaki4649
ユーザーストーリー駆動開発で行こう。
ユーザーストーリー駆動開発で行こう。
toshihiro ichitani
データ収集の基本と「JapanTaxi」アプリにおける実践例
データ収集の基本と「JapanTaxi」アプリにおける実践例
Tetsutaro Watanabe
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
Keycloak拡張入門
Keycloak拡張入門
Hiroyuki Wada
機械学習モデルのサービングとは?
機械学習モデルのサービングとは?
Sho Tanaka
Istioサービスメッシュ入門
Istioサービスメッシュ入門
Yoichi Kawasaki
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTT DATA Technology & Innovation
決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話
Ryosuke Uchitate
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
kwatch
モダンオフショア開発のすすめ
モダンオフショア開発のすすめ
Arata Fujimura
初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法
kazkiti
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
Junji Nishihara
What's hot
(20)
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
第34回Office 365勉強会 : Microsoftサポート活用術 ~ Microsoft Azureを中心に ~
第34回Office 365勉強会 : Microsoftサポート活用術 ~ Microsoft Azureを中心に ~
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
Bapp Storeを調べてみたよ!
Bapp Storeを調べてみたよ!
ユーザーストーリー駆動開発で行こう。
ユーザーストーリー駆動開発で行こう。
データ収集の基本と「JapanTaxi」アプリにおける実践例
データ収集の基本と「JapanTaxi」アプリにおける実践例
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
Keycloak拡張入門
Keycloak拡張入門
機械学習モデルのサービングとは?
機械学習モデルのサービングとは?
Istioサービスメッシュ入門
Istioサービスメッシュ入門
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話
O/Rマッパーによるトラブルを未然に防ぐ
O/Rマッパーによるトラブルを未然に防ぐ
モダンオフショア開発のすすめ
モダンオフショア開発のすすめ
初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
Similar to Dll Injection
【ヒカ☆ラボ】株式会社エアー様~ETLツール活用法について~
【ヒカ☆ラボ】株式会社エアー様~ETLツール活用法について~
leverages_event
[JPCERT/CC POC Meeting] 研究紹介 + DLLハイジャックの脆弱性
[JPCERT/CC POC Meeting] 研究紹介 + DLLハイジャックの脆弱性
Asuka Nakajima
JUIZ DLK: 組込み向け Deep Learning コンパイラ
JUIZ DLK: 組込み向け Deep Learning コンパイラ
Takeo Imai
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
Tomonori Ohba
第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料
Naoki Shibata
日本語における自然言語解析とその応用 〜COTOHA VA & API〜
日本語における自然言語解析とその応用 〜COTOHA VA & API〜
ネクストスケープ
2011年10月21日
2011年10月21日
nukaemon
Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化
Fujio Kojima
ソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティング
Ryohei Kamiya
SOFTCAMP SHIELDEX SaniTrans Mail
SOFTCAMP SHIELDEX SaniTrans Mail
Softcamp Co., Ltd.
JUIZ DLK 組込み向けDeep Learningコンパイラ
JUIZ DLK 組込み向けDeep Learningコンパイラ
LeapMind Inc
まだプログラム手で書いて消耗してるの?~入出力例からプログラムを自動生成する技術~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
まだプログラム手で書いて消耗してるの?~入出力例からプログラムを自動生成する技術~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
NTT DATA Technology & Innovation
第23回「NTT DataとIBMが熱く語ります!!OpenFlow/SDNコントローラー開発秘話から 未来まで、裏話もあるよ」(2012/12/20 o...
第23回「NTT DataとIBMが熱く語ります!!OpenFlow/SDNコントローラー開発秘話から 未来まで、裏話もあるよ」(2012/12/20 o...
System x 部 (生!) : しすなま! @ Lenovo Enterprise Solutions Ltd.
OSC Hiroshima 2013
OSC Hiroshima 2013
Yuya Adachi
JAWS-UG HPC #2 LT 並列処理・MPIの第一歩
JAWS-UG HPC #2 LT 並列処理・MPIの第一歩
HPCシステムズ株式会社
Hardware control by .NET Core 3.1
Hardware control by .NET Core 3.1
Atomu Hidaka
TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?
Mr. Vengineer
ExcelとPythonによる社会インフラシステムの設定ファイルの自動生成
ExcelとPythonによる社会インフラシステムの設定ファイルの自動生成
Fuminobu TAKEYAMA
20130329 rtm3
20130329 rtm3
openrtm
Tizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native api
Naruto TAKAHASHI
Similar to Dll Injection
(20)
【ヒカ☆ラボ】株式会社エアー様~ETLツール活用法について~
【ヒカ☆ラボ】株式会社エアー様~ETLツール活用法について~
[JPCERT/CC POC Meeting] 研究紹介 + DLLハイジャックの脆弱性
[JPCERT/CC POC Meeting] 研究紹介 + DLLハイジャックの脆弱性
JUIZ DLK: 組込み向け Deep Learning コンパイラ
JUIZ DLK: 組込み向け Deep Learning コンパイラ
DelphiでWin/Macクロスコンパイル
DelphiでWin/Macクロスコンパイル
第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料
日本語における自然言語解析とその応用 〜COTOHA VA & API〜
日本語における自然言語解析とその応用 〜COTOHA VA & API〜
2011年10月21日
2011年10月21日
Visual Studio による開発環境・プログラミングの進化
Visual Studio による開発環境・プログラミングの進化
ソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティング
SOFTCAMP SHIELDEX SaniTrans Mail
SOFTCAMP SHIELDEX SaniTrans Mail
JUIZ DLK 組込み向けDeep Learningコンパイラ
JUIZ DLK 組込み向けDeep Learningコンパイラ
まだプログラム手で書いて消耗してるの?~入出力例からプログラムを自動生成する技術~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
まだプログラム手で書いて消耗してるの?~入出力例からプログラムを自動生成する技術~(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019...
第23回「NTT DataとIBMが熱く語ります!!OpenFlow/SDNコントローラー開発秘話から 未来まで、裏話もあるよ」(2012/12/20 o...
第23回「NTT DataとIBMが熱く語ります!!OpenFlow/SDNコントローラー開発秘話から 未来まで、裏話もあるよ」(2012/12/20 o...
OSC Hiroshima 2013
OSC Hiroshima 2013
JAWS-UG HPC #2 LT 並列処理・MPIの第一歩
JAWS-UG HPC #2 LT 並列処理・MPIの第一歩
Hardware control by .NET Core 3.1
Hardware control by .NET Core 3.1
TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?
ExcelとPythonによる社会インフラシステムの設定ファイルの自動生成
ExcelとPythonによる社会インフラシステムの設定ファイルの自動生成
20130329 rtm3
20130329 rtm3
Tizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native api
Dll Injection
1.
ntt.com Transform your business,
transcend expectations with our technologically advanced solutions. Copyright © NTT Communications Corporation. All rights reserved. DLLインジェクション NTTコムエンジニアリング 波多浩昭
2.
Copyright © NTT
Communications Corporation. All rights reserved. 自己紹介 名前:波多浩昭 所属:NTTコムエンジニアリング ソフトウェアツール開発センタ 入社直後の専門:組み込み系(NTTグループには生存していないと思われている種) NTTの電話局に設置される交換機という装置の内部で動作するソフトウェアの開発 モトローラ68Kプロセッサのアセンブリ言語による開発 リアルタイムOS(TRON)上でのアプリケーション開発 その後の出向:NTTPCコミュニケーション InfoSphereというISPで,ネットワーク管理系ソフトウェア開発 企業向け通信サービスで利用されるソフトウェア開発 現在NTTコミュニケーショングループでは 企業向け通信サービスで利用されるソフトウェア開発を担当 2/19
3.
Copyright © NTT
Communications Corporation. All rights reserved. DLLインジェクションとは? EXE 実行中プロセス EXE 攻撃プロセス DLL 偽DLL セキュリティ攻撃の文脈では 実行中のプロセスに悪意を持つ任意のプログラ ムを実行させる攻撃 BOFは攻撃対象プログラムの入力に,任意のプ ログラムを与えることで注入に成功する DLLインジェクションは,悪意を持つDLLを強 制的に読み込ませて,実行させる 偽DLL 1.注入 2.呼び出し先 改ざん 3/19
4.
Copyright © NTT
Communications Corporation. All rights reserved. VisualStudio Community 2017 の C++デスクトップ開発環境のインストール https://www.visualstudio.com/ja/vs/whatsnew/ からインストーラをダンロードして起動 開発環境の準備 インストーラ画面からC++ によるデスクトップ開発 をインストールする x64 Native Tool Command Promptを起動する 実行ファイルのビルド >cl A.c DLLファイルのビルド >cl B.c /LD clコマンドを投入してコンパ イラバージョンが表示され ることを確認する 64ビット版開発環境である ことを確認する インストール後 4/19https://github.com/h-hata/dllinjection 実験用ソースコードは上記よりダウンロード可能です
5.
Copyright © NTT
Communications Corporation. All rights reserved. プロセスと仮想メモリ プロセスA メモリ空間 プロセスB メモリ空間 カーネル空間 ユーザ空間 同じアドレスでもプロセス により内容は異なる 他プロセスのメモリ空間に はアクセスできない カーネル空間はすべてのあ プロセスで共有されている 5/19
6.
Copyright © NTT
Communications Corporation. All rights reserved. VirtualAllocExとWriteProcessMemory プロセスA メモリ空間 プロセスB メモリ空間 VirtualAllocEx 他プロセスのメモリ空間に,利用可能なメモリ領域を確保する WriteProcessMemory VirtualAllocExで確保されたメモリ領域に,自プロセスのメモリ内容をコピーする 6/19 通常のプロセス間通信や共 有メモリと異なり,書き込 まれたプロセスは書き込ま れた場所や書き込まれたタ イムングを検知できない VirtualAllocExと WriteProcessMemoryを使えば他 プロセスのメモリ空間にデータの 書き込みが可能.
7.
Copyright © NTT
Communications Corporation. All rights reserved. VirtualAllocExとWriteProcessMemory実験 ① ② ③ ④⑤ ⑥ 事前準備 プロセスを2つ起動するために,2つの コマンドプロンプトを起動します. testmemディレクトリのta.cとmw.cをビル ドします. $cl ta.c $cl mw.c mw.exeはta.exeのメモリを確保してデー タを書き込みます. 実験 ①ta.exeを起動します.pidが表示されることを確認します ②他画面からmw.exeでta.exeプロセスのメモリを確保して”ABCDEFG“という文字列を書き込みます ③ta.exeでは該当アドレスにデータが書き込まれていることを確認できます ④まだ未使用のエリアのメモリダンプを試みると例外が発生します(経験上次は1D0000が確保され る予感) ⑤mw.exeで,もう一度別のメモリエリアを確保して”12345678”という文字列を書き込みます.予想 通り1D0000からメモリ確保されました ⑥ta.exeで1D0000をダンプすると,今度は書き込まれたデータが確認できます 7/19
8.
Copyright © NTT
Communications Corporation. All rights reserved. プロセスとスレッド プロセスA メモリ空間 プロセスB メモリ空間 最初プロセスには1スレッ ドが存在する. CreateThread APIでサブス レッドを生成できる プロセス内スレッドは,同 じメモリ空間を共有する 8/19
9.
Copyright © NTT
Communications Corporation. All rights reserved. CreateRemoteThread プロセスA メモリ空間 プロセスB メモリ空間 他プロセスに強制的にス レッドを生成する. 9/19 CreateRemoteThread
10.
Copyright © NTT
Communications Corporation. All rights reserved. CreateRemoteThreadの実験 ①② ③ 事前準備 プロセスを2つ起動するために,2つのコマンドプロンプトを起動します. testmemディレクトリのta.cとcr.cをビルドします. $cl mw.c cr.exeはta.exeの関数DispMessageを強制的に起動します. 実験 ①taを起動します.DispMessage関数の開始アドレスが13FB41000であることが確認されます ②crを起動します.taのプロセスIDとDispMessage関数の開始アドレスを起動パラメータにします ③ta側でDispMessageが起動され,”log:”という文字列がいきなり表示されてしまいます. 9-2/19
11.
Copyright © NTT
Communications Corporation. All rights reserved. kernel32.libのロード位置 プロセスA メモリ空間 プロセスB メモリ空間 kernel32.dll kernel32.dllロード位置 function() function() 同じアドレス 同じアドレス開始位置 kernel32.dllはすべてのノーマルプロセスで同一のアドレスにロードされる kernel32.dll内の関数はすべてのプロセスで同一開始アドレスである kernel32.dll内の関数はRemoteCreateThreadを使って他プロセスで起動できる 10/19
12.
Copyright © NTT
Communications Corporation. All rights reserved. DLLの作り方と使い方 sub.c (例) main.cとsub.cから構成されmain.exeがsub.dllを利用するアプリケー ションをビルドする sub.dll sub.lib main.c #include <windows.h> __declspec(dllexport) int sub(int a,int b) {return a-b;} WINAPI DllMain(HINSTANCE h,DWORD reasin,PVOID imp) {return TRUE;} #include <windows.h> #include <stdio.h> int main(int arc,char **argv) {printf("sub=%d¥n",sub(5,3));} >main sub=2 + sub.lib+ main.exe >cl /LD sub.c >cl main.c sub.lib sub.c main.c 実行結果ビルド時にlibファイルが必要 実行時にはlibファイルは不要dllのみ必要 DllMainはロードされた時に実行される(通常何もしない) 11/19
13.
Copyright © NTT
Communications Corporation. All rights reserved. 実行可能ファイルがDLLを呼び出す仕組み #include <windows.h> #include <stdio.h> typedef int(*T)(int,int); int main(int arc,char **argv){ T f; HMODULE hm; hm=LoadLibrary(”add.dll"); if(hm==NULL){ printf("Load Error¥n"); return 1; } f=(T)GetProcAddress(hm,”myadd"); printf(”add=%d¥n",f(5,3)); } libファイルがなくてもDLLの持つ関数の シグネチャーを知っていれば利用可能 main.exe add.dll ・ ・ ・ myadd() ・ ・ ・ myadd(){ } LoadLibrary 起動 GetProcAddress 実行時にDLLをロードしてから関数のアドレスを探し出して呼び出すこともできる 12/19
14.
Copyright © NTT
Communications Corporation. All rights reserved. EXEとDLLを結びつける仕組み IATとEAT B.DLL EAT b() ⇨ RVA of b C.DLL EAT c() ⇨ RVA of c A.EXE B.DLL b() ⇨ B Base +RVA C.DLL c() ⇨ C Base +RVA IAT B Base + C Base + 13/19
15.
Copyright © NTT
Communications Corporation. All rights reserved. IATテーブルの取得実験 C:Usershatasrcdllinjection>cl dumpmain.c add.lib /nologo dumpmain.c C:¥Users¥hata¥src¥dllinjection>dumpmain myadd=-1 dumpIAT DLL:add.dll AddressOfData:00019F30 myadd => F1BA1000 DLL:imagehlp.dll AddressOfData:00019F40 ImageDirectoryEntryToDataEx => FFBD21C0 DLL:KERNEL32.dll AddressOfData:0001A258 TerminateProcess => 7796C140 AddressOfData:0001A454 WriteConsoleW => 779331E0 AddressOfData:0001A446 CreateFileW => 77930D10 AddressOfData:0001A438 CloseHandle => 77941910 AddressOfData:00019F6C GetModuleHandleA => 77935A80 add.dllのIAT / myadd関数のアドレス imagehlp.dllのIAT kernel32.dll のIAT 14/19
16.
Copyright © NTT
Communications Corporation. All rights reserved. (1)攻撃対象のプロセス内メモリに偽DLLのファイル名を書き込む ・VirtualAllocExとWriteProcessMemoryを使う (2)偽DLLを攻撃対象のプロセスに読み込ませる ・CreateRemoteThread を使う. 起動パラメータは, LoadLibraryと上記で書き込んだリモートアドレス (3)攻撃対象のプロセスのIATの,ターゲット関数のアドレスを偽DLLの関数アドレスで上書き ・偽DLLのDllMain関数で実行 DLLインジェクションの手順 15/19
17.
Copyright © NTT
Communications Corporation. All rights reserved. イメージ図 main.exe add.dll prtintf(“a+b=%d“,add(15,3)); Create RemoteThread ⇨LoadLibrary 起動 IAT add.dll add => X add(){ return a-b; } X inj.exe newadd.dll main.exe add.dll newadd.dllZ newproc(){ return a+b; } DllMain(){ IAT書き換え } Z 16/19
18.
Copyright © NTT
Communications Corporation. All rights reserved. DLLインジェクション実験 ① ② ③ ④ ①ターゲットプロセスを起動 main.exe ②ターゲットプロセスのプロセスIDを調査 ③DLLインジェクション実行 ④ターゲットプロセスのバグが修正された 17/19
19.
Copyright © NTT
Communications Corporation. All rights reserved. APIフック アプリケーション WinAPI kernel32.dll DLLインジェクション で挿入したkernel32.dll の偽物 呼ばれたパラメータをそのまま 使って本物のAPIを呼ぶ APIコールのログ収集 18/19
20.
Copyright © NTT
Communications Corporation. All rights reserved. 告知 技術書典#3 日時 2017/10/22 (日) 11:00〜 17:00 場所 アキバ・スクエア 主催 TechBooster/達人出版会 一般参加 無料 技術系同人誌即売会 出展案内 サークル名:おかか通研 書名:公開鍵暗号計算演習書 予価:500円 (ご注意)17時までやっていますが,半数のサークルは 14時頃に売り切れ閉店します.入場時に並びますが,な るべく午前中にお越しください.
Download now