SlideShare uma empresa Scribd logo
1 de 48
Baixar para ler offline
セキュアなソフトウェアをつくるために……
DLL読み込みの問題を読み解く
JPCERT コーディネーションセンター
情報流通対策グループ リードアナリスト
⼾⽥ 洋三
2017年8⽉5⽇(⼟)
Copyright ©2017 JPCERT/CC All rights reserved.
本⽇の話題
ü ⾃⼰紹介
ü 「DLL読み込みの脆弱性」って?
ü 過去を振り返る -- 2010年ころ
ü 最近の届け出
ü ユーザが⾏うべき対策、開発者が⾏うべき対策
ü まとめ
ü 参考情報など
2
Copyright ©2017 JPCERT/CC All rights reserved.
http://www.tomo.gr.jp/root/e9706.html
JPCERT/CC
情報流通対策グループ
リードアナリスト ⼾⽥ 洋三
脆弱性情報分析, セキュアコーディ
ング普及啓発活動……
に努めています
3
⾃⼰紹介
Copyright ©2017 JPCERT/CC All rights reserved.
JPCERT Coordination Center
日本における情報セキュリティ対策
活動の向上に取り組んでいる組織
4
Copyright ©2017 JPCERT/CC All rights reserved.
過去のOSC参加履歴 (セミナーを⾏ったもの)
5
•OSC2017@Osaka
•SEI CERT コーディングスタンダードのご紹介
•OSC2016@Hokkaido
•OWASP ASVS と Cheat Sheet(日本語版)のご紹介
•OSC2015@Hokkaido
•CSRF 脆弱性とその対策について
•OSC2014@Fukuoka
•Lessons (to be) Learned from Handling OpenSSL Vulnerabilities
•OSC2013@Kyoto
•~ヒトの振り見て我が振り直せ~脆弱性事例に学ぶJavaセキュアコーディング
•OSC2012@Fukuoka
•Androidセキュアコーディング~安全なAndroidアプリ開発のための心得~
•OSC2011@Nagoya: セキュアコーディングノススメ(JAVA編)
•OSC2010@Hokkaido: あなたのコードにセキュアコーディングスタンダード
•OSC2009@Fukuoka: セキュアコーディングノススメ
•OSC2008@Tokyo/Spring: セキュアコーディングノススメ
•OSC2007@Fukuoka: セキュアコーディングノススメ
•OSC2007@Niigata: ソフトウェア脆弱性を取り巻く状況と対策
•OSC2007@Kansai: ソフトウェア脆弱性情報流通のこれまでとこれから
•OSC2005@Tokyo/Fall: ソフトウェア脆弱性情報流通への取り組み
Copyright ©2017 JPCERT/CC All rights reserved.
JPCERT/CC の活動
重要インフラ、重要情報インフラ事業者等の特定組織向け情報発信早期警戒情報
海外のNational-CSIRTや企業内のセキュリティ対応組織の構築・運⽤⽀援CSIRT構築⽀援
脆弱性情報ハンドリング
Ø 未公開の脆弱性関連情報を製品開発者へ提供し、
対応依頼
Ø 関係機関と連携し、国際的に情報公開⽇を調整
Ø セキュアなコーディング⼿法の普及
Ø 制御システムに関する脆弱性関連情報の適切な
流通
マルウエア(不正プログラム)等の攻撃⼿法の分析、解析アーティファクト分析
各種業務を円滑に⾏うための海外関係機関との連携国際連携
インシデントの予測と捕捉インシデント予防 発⽣したインシデントへの対応
制御システムに関するインシデントハンドリング、情報収集・分析発信制御システムセキュリティ
⽇本シーサート協議会、フィッシング対策協議会の事務局運営等国内外関係者との連携
Ø マルウエアの接続先等の攻撃関連サイト等の閉
鎖等による被害最⼩化
Ø 攻撃⼿法の分析⽀援による被害可能性の確認、
拡散抑⽌
Ø 再発防⽌に向けた関係各関の情報交換及び情報
共有
インシデントハンドリング
(インシデント対応調整⽀援)
情報収集・分析・発信
定点観測(TSUBAME)
Ø ネットワークトラフィック情報の収集分析
Ø セキュリティ上の脅威情報の収集、分析、必要
とする組織への提供
6
Copyright ©2017 JPCERT/CC All rights reserved.
JPCERT/CC セキュアコーディングのコンテンツ
7
www.jpcert.or.jp/securecoding/
Copyright ©2017 JPCERT/CC All rights reserved.
slideshare にも講演資料やセミナコンテンツ置いてます
8
www.slideshare.net/jpcert_securecoding/presentations
Copyright ©2017 JPCERT/CC All rights reserved.
「DLL読み込みの脆弱性」って?
9
Copyright ©2017 JPCERT/CC All rights reserved.
JVNに掲載されているDLL読み込み案件
10
Copyright ©2017 JPCERT/CC All rights reserved.
JVNに掲載されているDLL読み込み案件
11
Copyright ©2017 JPCERT/CC All rights reserved.
そもそも DLL ってなんだっけ?
12
ダイナミック リンク ライブラリ (DLL) は、関数とリソースの共有ラ
イブラリとして機能する実行可能ファイルです。
……
オペレーティング システムは、実行可能ファイルの読み込み時、
または実行時に必要に応じて、DLL を実行可能ファイルのメモリ
領域に読み込むことができます。 また、DLL は、実行可能ファイ
ル間で関数とリソースを共有しやすくします。 メモリ内の DLL の
内容には、同時に複数のアプリケーションがアクセスできます。
https://msdn.microsoft.com/ja-jp/library/1ez7dh12.aspx
•Windows 標準の DLL(Kernel32.dll, User32.dll, GDI32.dll, …)
•アプリ固有の DLL
Copyright ©2017 JPCERT/CC All rights reserved.
DLL の読み込み
13
• (C などの)スタートアップルーチンの初期化の一環として
必要な DLL を読み込み
• アプリの中で LoadLibrary() などを使って読み込み
1. 実⾏ファイルがあるディレクトリ (アプリケーションディレクトリ)
2. Windows システムディレクトリ
3. Windows ディレクトリ
4. カレントディレクトリ
5. 環境変数 PATH
0. “KnownDLLs” に登録されているかどうか
Windows デスクトップアプリが使用する DLL 検索パス
(cf. https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx)
Copyright ©2017 JPCERT/CC All rights reserved.
DLL 読み込みの様⼦を⾒る
14
•Sysinternals に含まれている Process Monitor (procmon)
• DLL 読み込みをはじめ、Win32 API 呼び出しの様⼦などの調査に
役⽴つ
•Dependency Walker
• DLL の読み込み順序、依存関係を調べる
定番のツール2つ
Copyright ©2017 JPCERT/CC All rights reserved.
Sysinternals Process Monitor (procmon)
ファイル関連の操作やレジス
トリ操作などのイベントを記
録できる
⼤量のイベントログのなかか
ら、プロセス名、パス名、操
作内容などによるフィルタを
かけて必要な部分のみを抽出
できる
15
https://docs.microsoft.com/en-us/sysinternals/downloads/procmon
Copyright ©2017 JPCERT/CC All rights reserved.
procmon を使った挙動確認
üprocmon.exe を実⾏ (イベント記録開始)
üプログラム起動, ひととおり操作
üprocmon.exe でフィルタ設定
üフィルタ後のログ内容を精査
ü必要に応じてログ保存
16
Copyright ©2017 JPCERT/CC All rights reserved.
procmon の実⾏には管理者権限が必要
起動すると, UAC(ユーザ
アカウント制御)で実⾏許
可を求められます.
17
こんなやつ
Copyright ©2017 JPCERT/CC All rights reserved.
procmon が起動したところ(1)
18
Copyright ©2017 JPCERT/CC All rights reserved.
procmon が起動したところ(2)
19
プロセス名
操作するファイルのパス名
操作結果
Copyright ©2017 JPCERT/CC All rights reserved.20
Procmon のフィルタ設定(0)
Copyright ©2017 JPCERT/CC All rights reserved.21
プロセス名, パス名など “begins with”,
“contains” など “include”, “exclude”
「プロセス名」が「firefox」で「始まる」ものを選択
Procmon のフィルタ設定(1)
“Add” ボタンを押す
Copyright ©2017 JPCERT/CC All rights reserved.22
フィルタで使うルールが⼀つ登録された
Procmon のフィルタ設定(2)
Copyright ©2017 JPCERT/CC All rights reserved.23
“Apply” ボタンを
押す
フィルタ内容の更新完了.
以下同様にして、必要なだけルールを追加していく.
Procmon のフィルタ設定(3)
Copyright ©2017 JPCERT/CC All rights reserved.
Teraterm 0.94 インストーラ実⾏時
24
“process name” と
“Path” でフィルタを
かけたところ.
Copyright ©2017 JPCERT/CC All rights reserved.
Teraterm 0.94 インストーラ実⾏時
25
Copyright ©2017 JPCERT/CC All rights reserved.
Teraterm 0.95 インストーラ実⾏時
26
Copyright ©2017 JPCERT/CC All rights reserved.
過去を振り返る -- 2010年ころ
27
Copyright ©2017 JPCERT/CC All rights reserved.
2010年ころの状況(1)
28
• セキュリティベンダから, DLL 読み込みの脆弱性に対する攻撃
⼿法が公開され, 注⽬を集める
• CERT/CC VU#707943 や US-CERT Technical Alert TA10-238A
公開
• Microsoft からアドバイザリや開発者向けガイダンス⽂書公開
• セキュリティアドバイザリ 2269637
• 「DLLプリロード問題の対策ガイダンス」
[参考]
WindowsのDLLだけが危ないのか?DLL hijacking vulnerability概説(前編)
https://codezine.jp/article/detail/5441
https://www.jpcert.or.jp/sc-magazine/codezine02-8.html
WindowsのDLLだけが危ないのか?DLL hijacking vulnerability概説(後編)
https://codezine.jp/article/detail/5442
https://www.jpcert.or.jp/sc-magazine/codezine02-9.html
Copyright ©2017 JPCERT/CC All rights reserved.
2010年ころの状況(2)
29
https://www.jpcert.or.jp/sc-magazine/codezine02-8.html
Copyright ©2017 JPCERT/CC All rights reserved.
不正な DLL を読み込ませる攻撃とは…
30
- (攻撃者が)ドキュメントファイルと一緒に細工した DLL を置く
- 細工した DLL をドキュメントファイルと一緒にダウンロードさ
せそのまま実行させる
1. ドキュメントファイルと一緒に細工
した DLL を置く
2. ドキュメントファイルに関連づけら
れたアプリを起動
3. カレントディレクトリにある DLL を
使ってしまう
https://www.jpcert.or.jp/sc-magazine/codezine02-8.html
Copyright ©2017 JPCERT/CC All rights reserved.
「カレントディレクトリ」からの DLL 読み込み
31
1. 実⾏ファイルがあるディレクトリ (アプリケーションディレクトリ)
2. Windows システムディレクトリ
3. Windows ディレクトリ
4. カレントディレクトリ
5. 環境変数 PATH
0. “KnownDLLs” に登録されているかどうか
Windows デスクトップアプリが使用する DLL 検索パス
(cf. https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx)
これ
対策として検索順位が下がった
Copyright ©2017 JPCERT/CC All rights reserved.
最近の変化
32
Copyright ©2017 JPCERT/CC All rights reserved.
DLL読み込みの届け出の増加
33
• 2016年ころから DLL 読
み込みの脆弱性の届け出
が増加
• 対象のほとんどは
「インストーラ」
「⾃⼰解凍書庫」
2016Q4
2017Q1
2017Q2
「JPCERT/CC 活動概要」から
(https://www.jpcert.or.jp/pr/)
Copyright ©2017 JPCERT/CC All rights reserved.
2010年ころの届出との違い
34
テキストファイルを開く際に…
インストーラと同⼀のディレクト
リに存在するDLLを…
Copyright ©2017 JPCERT/CC All rights reserved.
不正な DLL を読み込ませる攻撃とは (旧)
35
- (攻撃者が)ドキュメントファイルと一緒に細工した DLL を置く
- 細工した DLL をドキュメントファイルと一緒にダウンロードさ
せそのまま実行させる
1. ドキュメントファイルと一緒に細工
した DLL を置く
2. ドキュメントファイルに関連づけら
れたアプリを起動
3. カレントディレクトリにある DLL を
使ってしまう
https://www.jpcert.or.jp/sc-magazine/codezine02-8.html
Copyright ©2017 JPCERT/CC All rights reserved.
不正な DLL を読み込ませる攻撃とは (新)
36
- (攻撃者が)インストーラと一緒に細工した DLL を置く
- 細工した DLL をインストーラと一緒にダウンロードさせその
まま実行させる
1. インストーラと一緒に細工した
DLL を置く
2. インストーラを起動
3. 同一ディレクトリにある DLL を
使ってしまう
脆弱性のある
インストーラ
Copyright ©2017 JPCERT/CC All rights reserved.
DLL 読み込み: 通常の動作
プログラム起動!
プログラムと同じディレクトリから DLL を探し出そうとする
通常は DLL が⾒つからず(NOT FOUND)、次の場所に探しに
⾏く
システムディレクトリにある DLL を発⾒して使⽤
37
Copyright ©2017 JPCERT/CC All rights reserved.
プログラム起動!
プログラムと同じディレクトリから DLL を探し出そうとする
通常は DLL が⾒つからず(NOT FOUND)、次の場所に探しに
⾏く
システムディレクトリにある DLL を発⾒して使⽤
38
DLL を⾒つけ、ロードする
細⼯した DLL をプログラムと同じディレクトリに置く
DLL 読み込み: 問題が発⽣するケース
Copyright ©2017 JPCERT/CC All rights reserved.
「アプリケーションディレクトリ」からの DLL 読み込み
39
1. 実⾏ファイルがあるディレクトリ (アプリケーションディレクトリ)
2. Windows システムディレクトリ
3. Windows ディレクトリ
4. カレントディレクトリ
5. 環境変数 PATH
0. “KnownDLLs” に登録されているかどうか
Windows デスクトップアプリが使用する DLL 検索パス
(cf. https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx)
Copyright ©2017 JPCERT/CC All rights reserved.
システムの保護、アプリのセキュリティ
40
• “Windows” や ”Program Files” といったシステム領域
• アプリ側ではなくシステム側が保護
• 細工された DLL が置かれるといった状況はシステム側の責任
• (もちろんユーザが適切な形で使用している前提)
• ユーザディレクトリ
• 管理はユーザ側の責任
• フィッシングや水飲み場攻撃など, 世の中はユーザを騙す攻撃がいっぱい
• どこまでユーザの責任にする?
システム領域外で動作するアプリには,
よりセキュアな実装を求めたい
インストーラ, 自己解凍書庫, ポータブルアプリなど
Copyright ©2017 JPCERT/CC All rights reserved.
ユーザが⾏うべき対策
開発者が⾏うべき対策
41
Copyright ©2017 JPCERT/CC All rights reserved.
ユーザが⾏うべき対策
42
• あやしいファイルを放置しない
• インストーラや自己解凍書庫を安全な形で実行する
安全な形で実行
1. (インストーラをダウンロード)
2. 新規にディレクトリを作成
3. 作成したディレクトリにインストーラを移動
4. インストーラを起動
Copyright ©2017 JPCERT/CC All rights reserved.
開発者が⾏うべき対策
43
ØDLL の読み込み方法に注意する
Øアプリ/インストーラの挙動についてユーザに説明し,
注意を促す
DLLの読み込み
• SetDefaultDllDirectories() や SetDllDirectory() でアプリ
ケーションディレクトリを排除
• DLL 読み込みは可能な限り絶対パスで
• インストーラ作成ツールによるインストーラ作成やアーカイ
バによる自己解凍書庫作成時にはツールの対応状況を
確認
Copyright ©2017 JPCERT/CC All rights reserved.
開発者が対処しきれないケース
44
vアプリのスタートアップ部分で勝手にロード
vWindows 標準 DLL が独自に他 DLL をロード
vWindows 標準機能 (DLL forwarding, OS 互換機能
の発動など)
v動作監視ソフトの影響
vなど
DLL の読み込み⽅法
ガンバりたいヒトには, 遅延読み込み指定とフック関数を活⽤して⾃前の読み込みという⼿段もある
(それでも100%解決できるわけではないけど)
[参考]
(https://docs.microsoft.com/en-us/cpp/build/reference/linker-support-for-delay-loaded-dlls)
(http://www.ponsoftware.com/archiver/bug.htm)
(http://micco.mars.jp/vul/2017/mhsvi20170515_01.htm)
(https://ipmsg.org/dllpreload/dllpreload_attack.html)
など…
Copyright ©2017 JPCERT/CC All rights reserved.
まとめ
45
DLL 読み込み案件の扱いに苦労しています
ユーザがとるべき対策: 安全な形で実⾏
開発者がとるべき対策:
—どのくらいアプリ側でがんばるか決める
—使⽤上の注意をきちんとユーザに説明する
DLL読み込みと合わせてコマンド呼び
出しについても注意!!
Copyright ©2017 JPCERT/CC All rights reserved.
関連情報(1)
46
JVNTA#91240916: Windows アプリケーションによる DLL 読み込みやコマンド実
行に関する問題
(https://jvn.jp/ta/JVNTA91240916/)
JVNVU#707943: Windows プログラムの DLL 読み込みに脆弱性
(https://jvn.jp/vu/JVNVU707943/)
任意のDLL/実行ファイル読み込みに関する脆弱性の注意喚起
(https://www.ipa.go.jp/about/press/20101111.html)
Dynamic-Link Library Security
(https://msdn.microsoft.com/en-us/library/windows/desktop/ff919712(v=vs.85).aspx)
Copyright ©2017 JPCERT/CC All rights reserved.47
Windows DLLプリロード攻撃の新しいパターンと防御法
(https://ipmsg.org/dllpreload/dllpreload_attack.html)
UNLHA32.DLL で作成された自己解凍書庫における任意の DLL 読み込
みに関する脆弱性
(http://micco.mars.jp/vul/2017/mhsvi20170515_01.htm)
UNLHA32.DLL における任意の DLL 読み込みに関する脆弱性
(http://micco.mars.jp/vul/2017/mhsvi20170515_02.htm)
Microsoft Windows における DLL 読み込みに関する脆弱性
(http://www.ponsoftware.com/archiver/bug.htm#load_lib)
関連情報(2)
Copyright ©2017 JPCERT/CC All rights reserved.
セキュアコーディングに関するお問合せ、インシデント対応のご依頼は
48
JPCERTコーディネーションセンター
̶Tel:03-3518-4600
̶https://www.jpcert.or.jp/
セキュアコーディングに関するお問い合わせ
̶Email:secure-coding@jpcert.or.jp
̶https://www.jpcert.or.jp/securecoding/
インシデントの報告
̶Email:info@jpcert.or.jp
̶https://www.jpcert.or.jp/form/

Mais conteúdo relacionado

Mais procurados

オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
 

Mais procurados (20)

PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
 
.NET 7期待の新機能
.NET 7期待の新機能.NET 7期待の新機能
.NET 7期待の新機能
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things
 
位置データもPythonで!!!
位置データもPythonで!!!位置データもPythonで!!!
位置データもPythonで!!!
 
入門!Jenkins
入門!Jenkins入門!Jenkins
入門!Jenkins
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
 
Spring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のことSpring Bootをはじめる時にやるべき10のこと
Spring Bootをはじめる時にやるべき10のこと
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 

Semelhante a DLL読み込みの問題を読み解く

攻撃者の行動を追跡せよ -行動パターンに基づく横断的侵害の把握と調査- by 朝長 秀誠, 六田 佳祐
攻撃者の行動を追跡せよ -行動パターンに基づく横断的侵害の把握と調査- by 朝長 秀誠, 六田 佳祐攻撃者の行動を追跡せよ -行動パターンに基づく横断的侵害の把握と調査- by 朝長 秀誠, 六田 佳祐
攻撃者の行動を追跡せよ -行動パターンに基づく横断的侵害の把握と調査- by 朝長 秀誠, 六田 佳祐
CODE BLUE
 
日本の組織をターゲットにした攻撃キャンペーンの詳細 by 朝長 秀誠 & 中村 祐 - CODE BLUE 2015
日本の組織をターゲットにした攻撃キャンペーンの詳細 by 朝長 秀誠 & 中村 祐  - CODE BLUE 2015日本の組織をターゲットにした攻撃キャンペーンの詳細 by 朝長 秀誠 & 中村 祐  - CODE BLUE 2015
日本の組織をターゲットにした攻撃キャンペーンの詳細 by 朝長 秀誠 & 中村 祐 - CODE BLUE 2015
CODE BLUE
 
System Center 2012, Endpoint Protectionの運用
System Center 2012, Endpoint Protectionの運用System Center 2012, Endpoint Protectionの運用
System Center 2012, Endpoint Protectionの運用
Suguru Kunii
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンス
Kaoru NAKAMURA
 
Mr201302 mitb in_android_2
Mr201302 mitb in_android_2Mr201302 mitb in_android_2
Mr201302 mitb in_android_2
FFRI, Inc.
 

Semelhante a DLL読み込みの問題を読み解く (20)

細工された製品が突然牙をむく「サプライチェーン攻撃」の脅威
細工された製品が突然牙をむく「サプライチェーン攻撃」の脅威細工された製品が突然牙をむく「サプライチェーン攻撃」の脅威
細工された製品が突然牙をむく「サプライチェーン攻撃」の脅威
 
[JPCERT/CC POC Meeting] 研究紹介 + DLLハイジャックの脆弱性
[JPCERT/CC POC Meeting] 研究紹介 + DLLハイジャックの脆弱性[JPCERT/CC POC Meeting] 研究紹介 + DLLハイジャックの脆弱性
[JPCERT/CC POC Meeting] 研究紹介 + DLLハイジャックの脆弱性
 
攻撃者の行動を追跡せよ -行動パターンに基づく横断的侵害の把握と調査- by 朝長 秀誠, 六田 佳祐
攻撃者の行動を追跡せよ -行動パターンに基づく横断的侵害の把握と調査- by 朝長 秀誠, 六田 佳祐攻撃者の行動を追跡せよ -行動パターンに基づく横断的侵害の把握と調査- by 朝長 秀誠, 六田 佳祐
攻撃者の行動を追跡せよ -行動パターンに基づく横断的侵害の把握と調査- by 朝長 秀誠, 六田 佳祐
 
[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見
 
日本の組織をターゲットにした攻撃キャンペーンの詳細 by 朝長 秀誠 & 中村 祐 - CODE BLUE 2015
日本の組織をターゲットにした攻撃キャンペーンの詳細 by 朝長 秀誠 & 中村 祐  - CODE BLUE 2015日本の組織をターゲットにした攻撃キャンペーンの詳細 by 朝長 秀誠 & 中村 祐  - CODE BLUE 2015
日本の組織をターゲットにした攻撃キャンペーンの詳細 by 朝長 秀誠 & 中村 祐 - CODE BLUE 2015
 
Agileツール適合化分科会(変更管理・バージョン管理)
Agileツール適合化分科会(変更管理・バージョン管理)Agileツール適合化分科会(変更管理・バージョン管理)
Agileツール適合化分科会(変更管理・バージョン管理)
 
Rancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げるRancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げる
 
安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017)
安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017)安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017)
安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017)
 
闘うITエンジニアのためのLinuxセキュリティ講座
闘うITエンジニアのためのLinuxセキュリティ講座闘うITエンジニアのためのLinuxセキュリティ講座
闘うITエンジニアのためのLinuxセキュリティ講座
 
[data security showcase Sapporo 2015] D22:今求められるセキュリティレベルとFireEye適応型防御 by ファイ...
[data security showcase Sapporo 2015] D22:今求められるセキュリティレベルとFireEye適応型防御 by ファイ...[data security showcase Sapporo 2015] D22:今求められるセキュリティレベルとFireEye適応型防御 by ファイ...
[data security showcase Sapporo 2015] D22:今求められるセキュリティレベルとFireEye適応型防御 by ファイ...
 
TeamFileご提案資料
TeamFileご提案資料TeamFileご提案資料
TeamFileご提案資料
 
2017年のセキュリティ 傾向と対策講座
2017年のセキュリティ 傾向と対策講座2017年のセキュリティ 傾向と対策講座
2017年のセキュリティ 傾向と対策講座
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
System Center 2012, Endpoint Protectionの運用
System Center 2012, Endpoint Protectionの運用System Center 2012, Endpoint Protectionの運用
System Center 2012, Endpoint Protectionの運用
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンス
 
Mr201302 mitb in_android_2
Mr201302 mitb in_android_2Mr201302 mitb in_android_2
Mr201302 mitb in_android_2
 
OSSで作る機械学習を用いたペネトレーションテストツール
OSSで作る機械学習を用いたペネトレーションテストツールOSSで作る機械学習を用いたペネトレーションテストツール
OSSで作る機械学習を用いたペネトレーションテストツール
 
ユーザ・デザイナーから見たPlone CMSのアピールポイント
ユーザ・デザイナーから見たPlone CMSのアピールポイントユーザ・デザイナーから見たPlone CMSのアピールポイント
ユーザ・デザイナーから見たPlone CMSのアピールポイント
 
CERT コーディングスタンダードご紹介 (OSC2017@Osaka)
CERT コーディングスタンダードご紹介 (OSC2017@Osaka)CERT コーディングスタンダードご紹介 (OSC2017@Osaka)
CERT コーディングスタンダードご紹介 (OSC2017@Osaka)
 
Zabbixをもっと便利に!安全に!
Zabbixをもっと便利に!安全に!Zabbixをもっと便利に!安全に!
Zabbixをもっと便利に!安全に!
 

Mais de JPCERT Coordination Center

デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
JPCERT Coordination Center
 
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
JPCERT Coordination Center
 
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
JPCERT Coordination Center
 
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
JPCERT Coordination Center
 
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
JPCERT Coordination Center
 
JBoss Application Server におけるディレクトリトラバーサルの脆弱性
JBoss Application Server におけるディレクトリトラバーサルの脆弱性JBoss Application Server におけるディレクトリトラバーサルの脆弱性
JBoss Application Server におけるディレクトリトラバーサルの脆弱性
JPCERT Coordination Center
 

Mais de JPCERT Coordination Center (20)

いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~
いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~
いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~
 
WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』
WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』
WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』
 
脆弱性情報はこうしてやってくる
脆弱性情報はこうしてやってくる脆弱性情報はこうしてやってくる
脆弱性情報はこうしてやってくる
 
OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)
OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)
OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)
 
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性
 
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
 
クロスサイトリクエストフォージェリ(CSRF)とその対策
クロスサイトリクエストフォージェリ(CSRF)とその対策クロスサイトリクエストフォージェリ(CSRF)とその対策
クロスサイトリクエストフォージェリ(CSRF)とその対策
 
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
 
デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
 
ソフトウェアセキュリティ保証成熟度モデル
ソフトウェアセキュリティ保証成熟度モデルソフトウェアセキュリティ保証成熟度モデル
ソフトウェアセキュリティ保証成熟度モデル
 
Lessons (to be) Learned from Handling OpenSSL Vulnerabilities
Lessons (to be) Learned from Handling OpenSSL VulnerabilitiesLessons (to be) Learned from Handling OpenSSL Vulnerabilities
Lessons (to be) Learned from Handling OpenSSL Vulnerabilities
 
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)
 
Android Secure Coding
Android Secure CodingAndroid Secure Coding
Android Secure Coding
 
JRE標準ライブラリの脆弱性事例を理解する (AtomicReferenceArrayクラス と Type Confusion)
JRE標準ライブラリの脆弱性事例を理解する (AtomicReferenceArrayクラス と Type Confusion)JRE標準ライブラリの脆弱性事例を理解する (AtomicReferenceArrayクラス と Type Confusion)
JRE標準ライブラリの脆弱性事例を理解する (AtomicReferenceArrayクラス と Type Confusion)
 
Apache Axis2におけるXML署名検証不備
Apache Axis2におけるXML署名検証不備Apache Axis2におけるXML署名検証不備
Apache Axis2におけるXML署名検証不備
 
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
 
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
 
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
 
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
Apache ActiveMQにおける認証処理不備の脆弱性(AMQ-1272)
 
JBoss Application Server におけるディレクトリトラバーサルの脆弱性
JBoss Application Server におけるディレクトリトラバーサルの脆弱性JBoss Application Server におけるディレクトリトラバーサルの脆弱性
JBoss Application Server におけるディレクトリトラバーサルの脆弱性
 

DLL読み込みの問題を読み解く

  • 2. Copyright ©2017 JPCERT/CC All rights reserved. 本⽇の話題 ü ⾃⼰紹介 ü 「DLL読み込みの脆弱性」って? ü 過去を振り返る -- 2010年ころ ü 最近の届け出 ü ユーザが⾏うべき対策、開発者が⾏うべき対策 ü まとめ ü 参考情報など 2
  • 3. Copyright ©2017 JPCERT/CC All rights reserved. http://www.tomo.gr.jp/root/e9706.html JPCERT/CC 情報流通対策グループ リードアナリスト ⼾⽥ 洋三 脆弱性情報分析, セキュアコーディ ング普及啓発活動…… に努めています 3 ⾃⼰紹介
  • 4. Copyright ©2017 JPCERT/CC All rights reserved. JPCERT Coordination Center 日本における情報セキュリティ対策 活動の向上に取り組んでいる組織 4
  • 5. Copyright ©2017 JPCERT/CC All rights reserved. 過去のOSC参加履歴 (セミナーを⾏ったもの) 5 •OSC2017@Osaka •SEI CERT コーディングスタンダードのご紹介 •OSC2016@Hokkaido •OWASP ASVS と Cheat Sheet(日本語版)のご紹介 •OSC2015@Hokkaido •CSRF 脆弱性とその対策について •OSC2014@Fukuoka •Lessons (to be) Learned from Handling OpenSSL Vulnerabilities •OSC2013@Kyoto •~ヒトの振り見て我が振り直せ~脆弱性事例に学ぶJavaセキュアコーディング •OSC2012@Fukuoka •Androidセキュアコーディング~安全なAndroidアプリ開発のための心得~ •OSC2011@Nagoya: セキュアコーディングノススメ(JAVA編) •OSC2010@Hokkaido: あなたのコードにセキュアコーディングスタンダード •OSC2009@Fukuoka: セキュアコーディングノススメ •OSC2008@Tokyo/Spring: セキュアコーディングノススメ •OSC2007@Fukuoka: セキュアコーディングノススメ •OSC2007@Niigata: ソフトウェア脆弱性を取り巻く状況と対策 •OSC2007@Kansai: ソフトウェア脆弱性情報流通のこれまでとこれから •OSC2005@Tokyo/Fall: ソフトウェア脆弱性情報流通への取り組み
  • 6. Copyright ©2017 JPCERT/CC All rights reserved. JPCERT/CC の活動 重要インフラ、重要情報インフラ事業者等の特定組織向け情報発信早期警戒情報 海外のNational-CSIRTや企業内のセキュリティ対応組織の構築・運⽤⽀援CSIRT構築⽀援 脆弱性情報ハンドリング Ø 未公開の脆弱性関連情報を製品開発者へ提供し、 対応依頼 Ø 関係機関と連携し、国際的に情報公開⽇を調整 Ø セキュアなコーディング⼿法の普及 Ø 制御システムに関する脆弱性関連情報の適切な 流通 マルウエア(不正プログラム)等の攻撃⼿法の分析、解析アーティファクト分析 各種業務を円滑に⾏うための海外関係機関との連携国際連携 インシデントの予測と捕捉インシデント予防 発⽣したインシデントへの対応 制御システムに関するインシデントハンドリング、情報収集・分析発信制御システムセキュリティ ⽇本シーサート協議会、フィッシング対策協議会の事務局運営等国内外関係者との連携 Ø マルウエアの接続先等の攻撃関連サイト等の閉 鎖等による被害最⼩化 Ø 攻撃⼿法の分析⽀援による被害可能性の確認、 拡散抑⽌ Ø 再発防⽌に向けた関係各関の情報交換及び情報 共有 インシデントハンドリング (インシデント対応調整⽀援) 情報収集・分析・発信 定点観測(TSUBAME) Ø ネットワークトラフィック情報の収集分析 Ø セキュリティ上の脅威情報の収集、分析、必要 とする組織への提供 6
  • 7. Copyright ©2017 JPCERT/CC All rights reserved. JPCERT/CC セキュアコーディングのコンテンツ 7 www.jpcert.or.jp/securecoding/
  • 8. Copyright ©2017 JPCERT/CC All rights reserved. slideshare にも講演資料やセミナコンテンツ置いてます 8 www.slideshare.net/jpcert_securecoding/presentations
  • 9. Copyright ©2017 JPCERT/CC All rights reserved. 「DLL読み込みの脆弱性」って? 9
  • 10. Copyright ©2017 JPCERT/CC All rights reserved. JVNに掲載されているDLL読み込み案件 10
  • 11. Copyright ©2017 JPCERT/CC All rights reserved. JVNに掲載されているDLL読み込み案件 11
  • 12. Copyright ©2017 JPCERT/CC All rights reserved. そもそも DLL ってなんだっけ? 12 ダイナミック リンク ライブラリ (DLL) は、関数とリソースの共有ラ イブラリとして機能する実行可能ファイルです。 …… オペレーティング システムは、実行可能ファイルの読み込み時、 または実行時に必要に応じて、DLL を実行可能ファイルのメモリ 領域に読み込むことができます。 また、DLL は、実行可能ファイ ル間で関数とリソースを共有しやすくします。 メモリ内の DLL の 内容には、同時に複数のアプリケーションがアクセスできます。 https://msdn.microsoft.com/ja-jp/library/1ez7dh12.aspx •Windows 標準の DLL(Kernel32.dll, User32.dll, GDI32.dll, …) •アプリ固有の DLL
  • 13. Copyright ©2017 JPCERT/CC All rights reserved. DLL の読み込み 13 • (C などの)スタートアップルーチンの初期化の一環として 必要な DLL を読み込み • アプリの中で LoadLibrary() などを使って読み込み 1. 実⾏ファイルがあるディレクトリ (アプリケーションディレクトリ) 2. Windows システムディレクトリ 3. Windows ディレクトリ 4. カレントディレクトリ 5. 環境変数 PATH 0. “KnownDLLs” に登録されているかどうか Windows デスクトップアプリが使用する DLL 検索パス (cf. https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx)
  • 14. Copyright ©2017 JPCERT/CC All rights reserved. DLL 読み込みの様⼦を⾒る 14 •Sysinternals に含まれている Process Monitor (procmon) • DLL 読み込みをはじめ、Win32 API 呼び出しの様⼦などの調査に 役⽴つ •Dependency Walker • DLL の読み込み順序、依存関係を調べる 定番のツール2つ
  • 15. Copyright ©2017 JPCERT/CC All rights reserved. Sysinternals Process Monitor (procmon) ファイル関連の操作やレジス トリ操作などのイベントを記 録できる ⼤量のイベントログのなかか ら、プロセス名、パス名、操 作内容などによるフィルタを かけて必要な部分のみを抽出 できる 15 https://docs.microsoft.com/en-us/sysinternals/downloads/procmon
  • 16. Copyright ©2017 JPCERT/CC All rights reserved. procmon を使った挙動確認 üprocmon.exe を実⾏ (イベント記録開始) üプログラム起動, ひととおり操作 üprocmon.exe でフィルタ設定 üフィルタ後のログ内容を精査 ü必要に応じてログ保存 16
  • 17. Copyright ©2017 JPCERT/CC All rights reserved. procmon の実⾏には管理者権限が必要 起動すると, UAC(ユーザ アカウント制御)で実⾏許 可を求められます. 17 こんなやつ
  • 18. Copyright ©2017 JPCERT/CC All rights reserved. procmon が起動したところ(1) 18
  • 19. Copyright ©2017 JPCERT/CC All rights reserved. procmon が起動したところ(2) 19 プロセス名 操作するファイルのパス名 操作結果
  • 20. Copyright ©2017 JPCERT/CC All rights reserved.20 Procmon のフィルタ設定(0)
  • 21. Copyright ©2017 JPCERT/CC All rights reserved.21 プロセス名, パス名など “begins with”, “contains” など “include”, “exclude” 「プロセス名」が「firefox」で「始まる」ものを選択 Procmon のフィルタ設定(1) “Add” ボタンを押す
  • 22. Copyright ©2017 JPCERT/CC All rights reserved.22 フィルタで使うルールが⼀つ登録された Procmon のフィルタ設定(2)
  • 23. Copyright ©2017 JPCERT/CC All rights reserved.23 “Apply” ボタンを 押す フィルタ内容の更新完了. 以下同様にして、必要なだけルールを追加していく. Procmon のフィルタ設定(3)
  • 24. Copyright ©2017 JPCERT/CC All rights reserved. Teraterm 0.94 インストーラ実⾏時 24 “process name” と “Path” でフィルタを かけたところ.
  • 25. Copyright ©2017 JPCERT/CC All rights reserved. Teraterm 0.94 インストーラ実⾏時 25
  • 26. Copyright ©2017 JPCERT/CC All rights reserved. Teraterm 0.95 インストーラ実⾏時 26
  • 27. Copyright ©2017 JPCERT/CC All rights reserved. 過去を振り返る -- 2010年ころ 27
  • 28. Copyright ©2017 JPCERT/CC All rights reserved. 2010年ころの状況(1) 28 • セキュリティベンダから, DLL 読み込みの脆弱性に対する攻撃 ⼿法が公開され, 注⽬を集める • CERT/CC VU#707943 や US-CERT Technical Alert TA10-238A 公開 • Microsoft からアドバイザリや開発者向けガイダンス⽂書公開 • セキュリティアドバイザリ 2269637 • 「DLLプリロード問題の対策ガイダンス」 [参考] WindowsのDLLだけが危ないのか?DLL hijacking vulnerability概説(前編) https://codezine.jp/article/detail/5441 https://www.jpcert.or.jp/sc-magazine/codezine02-8.html WindowsのDLLだけが危ないのか?DLL hijacking vulnerability概説(後編) https://codezine.jp/article/detail/5442 https://www.jpcert.or.jp/sc-magazine/codezine02-9.html
  • 29. Copyright ©2017 JPCERT/CC All rights reserved. 2010年ころの状況(2) 29 https://www.jpcert.or.jp/sc-magazine/codezine02-8.html
  • 30. Copyright ©2017 JPCERT/CC All rights reserved. 不正な DLL を読み込ませる攻撃とは… 30 - (攻撃者が)ドキュメントファイルと一緒に細工した DLL を置く - 細工した DLL をドキュメントファイルと一緒にダウンロードさ せそのまま実行させる 1. ドキュメントファイルと一緒に細工 した DLL を置く 2. ドキュメントファイルに関連づけら れたアプリを起動 3. カレントディレクトリにある DLL を 使ってしまう https://www.jpcert.or.jp/sc-magazine/codezine02-8.html
  • 31. Copyright ©2017 JPCERT/CC All rights reserved. 「カレントディレクトリ」からの DLL 読み込み 31 1. 実⾏ファイルがあるディレクトリ (アプリケーションディレクトリ) 2. Windows システムディレクトリ 3. Windows ディレクトリ 4. カレントディレクトリ 5. 環境変数 PATH 0. “KnownDLLs” に登録されているかどうか Windows デスクトップアプリが使用する DLL 検索パス (cf. https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx) これ 対策として検索順位が下がった
  • 32. Copyright ©2017 JPCERT/CC All rights reserved. 最近の変化 32
  • 33. Copyright ©2017 JPCERT/CC All rights reserved. DLL読み込みの届け出の増加 33 • 2016年ころから DLL 読 み込みの脆弱性の届け出 が増加 • 対象のほとんどは 「インストーラ」 「⾃⼰解凍書庫」 2016Q4 2017Q1 2017Q2 「JPCERT/CC 活動概要」から (https://www.jpcert.or.jp/pr/)
  • 34. Copyright ©2017 JPCERT/CC All rights reserved. 2010年ころの届出との違い 34 テキストファイルを開く際に… インストーラと同⼀のディレクト リに存在するDLLを…
  • 35. Copyright ©2017 JPCERT/CC All rights reserved. 不正な DLL を読み込ませる攻撃とは (旧) 35 - (攻撃者が)ドキュメントファイルと一緒に細工した DLL を置く - 細工した DLL をドキュメントファイルと一緒にダウンロードさ せそのまま実行させる 1. ドキュメントファイルと一緒に細工 した DLL を置く 2. ドキュメントファイルに関連づけら れたアプリを起動 3. カレントディレクトリにある DLL を 使ってしまう https://www.jpcert.or.jp/sc-magazine/codezine02-8.html
  • 36. Copyright ©2017 JPCERT/CC All rights reserved. 不正な DLL を読み込ませる攻撃とは (新) 36 - (攻撃者が)インストーラと一緒に細工した DLL を置く - 細工した DLL をインストーラと一緒にダウンロードさせその まま実行させる 1. インストーラと一緒に細工した DLL を置く 2. インストーラを起動 3. 同一ディレクトリにある DLL を 使ってしまう 脆弱性のある インストーラ
  • 37. Copyright ©2017 JPCERT/CC All rights reserved. DLL 読み込み: 通常の動作 プログラム起動! プログラムと同じディレクトリから DLL を探し出そうとする 通常は DLL が⾒つからず(NOT FOUND)、次の場所に探しに ⾏く システムディレクトリにある DLL を発⾒して使⽤ 37
  • 38. Copyright ©2017 JPCERT/CC All rights reserved. プログラム起動! プログラムと同じディレクトリから DLL を探し出そうとする 通常は DLL が⾒つからず(NOT FOUND)、次の場所に探しに ⾏く システムディレクトリにある DLL を発⾒して使⽤ 38 DLL を⾒つけ、ロードする 細⼯した DLL をプログラムと同じディレクトリに置く DLL 読み込み: 問題が発⽣するケース
  • 39. Copyright ©2017 JPCERT/CC All rights reserved. 「アプリケーションディレクトリ」からの DLL 読み込み 39 1. 実⾏ファイルがあるディレクトリ (アプリケーションディレクトリ) 2. Windows システムディレクトリ 3. Windows ディレクトリ 4. カレントディレクトリ 5. 環境変数 PATH 0. “KnownDLLs” に登録されているかどうか Windows デスクトップアプリが使用する DLL 検索パス (cf. https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx)
  • 40. Copyright ©2017 JPCERT/CC All rights reserved. システムの保護、アプリのセキュリティ 40 • “Windows” や ”Program Files” といったシステム領域 • アプリ側ではなくシステム側が保護 • 細工された DLL が置かれるといった状況はシステム側の責任 • (もちろんユーザが適切な形で使用している前提) • ユーザディレクトリ • 管理はユーザ側の責任 • フィッシングや水飲み場攻撃など, 世の中はユーザを騙す攻撃がいっぱい • どこまでユーザの責任にする? システム領域外で動作するアプリには, よりセキュアな実装を求めたい インストーラ, 自己解凍書庫, ポータブルアプリなど
  • 41. Copyright ©2017 JPCERT/CC All rights reserved. ユーザが⾏うべき対策 開発者が⾏うべき対策 41
  • 42. Copyright ©2017 JPCERT/CC All rights reserved. ユーザが⾏うべき対策 42 • あやしいファイルを放置しない • インストーラや自己解凍書庫を安全な形で実行する 安全な形で実行 1. (インストーラをダウンロード) 2. 新規にディレクトリを作成 3. 作成したディレクトリにインストーラを移動 4. インストーラを起動
  • 43. Copyright ©2017 JPCERT/CC All rights reserved. 開発者が⾏うべき対策 43 ØDLL の読み込み方法に注意する Øアプリ/インストーラの挙動についてユーザに説明し, 注意を促す DLLの読み込み • SetDefaultDllDirectories() や SetDllDirectory() でアプリ ケーションディレクトリを排除 • DLL 読み込みは可能な限り絶対パスで • インストーラ作成ツールによるインストーラ作成やアーカイ バによる自己解凍書庫作成時にはツールの対応状況を 確認
  • 44. Copyright ©2017 JPCERT/CC All rights reserved. 開発者が対処しきれないケース 44 vアプリのスタートアップ部分で勝手にロード vWindows 標準 DLL が独自に他 DLL をロード vWindows 標準機能 (DLL forwarding, OS 互換機能 の発動など) v動作監視ソフトの影響 vなど DLL の読み込み⽅法 ガンバりたいヒトには, 遅延読み込み指定とフック関数を活⽤して⾃前の読み込みという⼿段もある (それでも100%解決できるわけではないけど) [参考] (https://docs.microsoft.com/en-us/cpp/build/reference/linker-support-for-delay-loaded-dlls) (http://www.ponsoftware.com/archiver/bug.htm) (http://micco.mars.jp/vul/2017/mhsvi20170515_01.htm) (https://ipmsg.org/dllpreload/dllpreload_attack.html) など…
  • 45. Copyright ©2017 JPCERT/CC All rights reserved. まとめ 45 DLL 読み込み案件の扱いに苦労しています ユーザがとるべき対策: 安全な形で実⾏ 開発者がとるべき対策: —どのくらいアプリ側でがんばるか決める —使⽤上の注意をきちんとユーザに説明する DLL読み込みと合わせてコマンド呼び 出しについても注意!!
  • 46. Copyright ©2017 JPCERT/CC All rights reserved. 関連情報(1) 46 JVNTA#91240916: Windows アプリケーションによる DLL 読み込みやコマンド実 行に関する問題 (https://jvn.jp/ta/JVNTA91240916/) JVNVU#707943: Windows プログラムの DLL 読み込みに脆弱性 (https://jvn.jp/vu/JVNVU707943/) 任意のDLL/実行ファイル読み込みに関する脆弱性の注意喚起 (https://www.ipa.go.jp/about/press/20101111.html) Dynamic-Link Library Security (https://msdn.microsoft.com/en-us/library/windows/desktop/ff919712(v=vs.85).aspx)
  • 47. Copyright ©2017 JPCERT/CC All rights reserved.47 Windows DLLプリロード攻撃の新しいパターンと防御法 (https://ipmsg.org/dllpreload/dllpreload_attack.html) UNLHA32.DLL で作成された自己解凍書庫における任意の DLL 読み込 みに関する脆弱性 (http://micco.mars.jp/vul/2017/mhsvi20170515_01.htm) UNLHA32.DLL における任意の DLL 読み込みに関する脆弱性 (http://micco.mars.jp/vul/2017/mhsvi20170515_02.htm) Microsoft Windows における DLL 読み込みに関する脆弱性 (http://www.ponsoftware.com/archiver/bug.htm#load_lib) 関連情報(2)
  • 48. Copyright ©2017 JPCERT/CC All rights reserved. セキュアコーディングに関するお問合せ、インシデント対応のご依頼は 48 JPCERTコーディネーションセンター ̶Tel:03-3518-4600 ̶https://www.jpcert.or.jp/ セキュアコーディングに関するお問い合わせ ̶Email:secure-coding@jpcert.or.jp ̶https://www.jpcert.or.jp/securecoding/ インシデントの報告 ̶Email:info@jpcert.or.jp ̶https://www.jpcert.or.jp/form/