セキュリティアカデミー勉強会
セキュリティアカデミー勉強会
アンチ・フォレンジック
アンチ・フォレンジック
2005
2005年
年
2
2
月
月
13
13
日
日
塩月
塩月
誠人
誠人
<[email protected]>
<[email protected]>
アンチ・フォレンジックとは
アンチ・フォレンジックとは
n
n
フォレンジックの証拠となるセキュリティ侵
フォレンジックの証拠となるセキュリティ侵
害の痕跡を残さない、隠す、あるいは消し
害の痕跡を残さない、隠す、あるいは消し
去る行為
去る行為
–
–
暗号化
暗号化
–
–
Rootkit
Rootkit
–
–
ファイルの隠匿・ワイプ
ファイルの隠匿・ワイプ
–
–
痕跡の消去
痕跡の消去
–
–
ステガノグラフィ
ステガノグラフィ
–
–
ネットワーク通信の隠蔽
ネットワーク通信の隠蔽
暗号化
暗号化
n
n
暗号化は両刃の剣
暗号化は両刃の剣
–
–
良い目的
良い目的
...
...
情報の保護
情報の保護
–
–
悪い目的
悪い目的
...
...
攻撃ツールの秘匿
攻撃ツールの秘匿
n
n
鍵がなければお手上げ
鍵がなければお手上げ
n
n
何があるかは分からないが、何かがあるこ
何があるかは分からないが、何かがあるこ
とは分かる
とは分かる
n
n
GPG
GPG
n
n
EFS
EFS
(
(
Windows
Windows
標準装備)
標準装備)
アカウントのパスワードが分かれば復号可
Rootkit
Rootkit
n
n
ファイル、プロセス、ネットワーク接続等を
ファイル、プロセス、ネットワーク接続等を
隠す(
隠す(
+
+
ログ書き換え、バックドア等)
ログ書き換え、バックドア等)
–
–
プログラム置換タイプ
プログラム置換タイプ
n
n
ifconfig, ps, ls, login等を不正なものに置き換え
ifconfig, ps, ls, login
等を不正なものに置き換え
n
n
シェアードライブラリを不正なものに書き換え
シェアードライブラリを不正なものに書き換え
n
n
インテグリティ・チェッカで検出可(
インテグリティ・チェッカで検出可(
Tripwire
Tripwire
等)
等)
–
–
システムコール等をフックするタイプ
システムコール等をフックするタイプ
n
n
各種
各種
lkm
lkm
-
-
rootkit
rootkit
n
n
NT Rootkit, AFX Rootkit
NT Rootkit, AFX Rootkit
n
ファイルの隠匿
ファイルの隠匿
n
n
HD
HD
上のスラックスペースに隠す
上のスラックスペースに隠す
–
–
スラックスペース
スラックスペース
...
...
ファイルの末端からクラス
ファイルの末端からクラス
タ末端までの空き領域
タ末端までの空き領域
n
n
NTFS
NTFS
の
の
ADS
ADS
に隠す
に隠す
–
–
Alternate Data Stream ...
Alternate Data Stream ...
ファイルやディレク
ファイルやディレク
トリに追加的なデータを持たせる
トリに追加的なデータを持たせる
NTFS
NTFS
の機能
の機能
n
n
いずれも通常のファイルアクセスでは検出
いずれも通常のファイルアクセスでは検出
できない(
できない(
HD
HD
のオフライン解析で検出)
のオフライン解析で検出)
n
n
HD
HD
に書かないようにして攻撃する手も
に書かないようにして攻撃する手も
...
...
ファイルのワイプ
ファイルのワイプ
n
n
ファイルを
ファイルを
HD
HD
上から完全に抹消する
上から完全に抹消する
–
–
良い目的
良い目的
...
...
機密情報の漏洩防止
機密情報の漏洩防止
–
–
悪い目的
悪い目的
...
...
悪事の痕跡を消す
悪事の痕跡を消す
n
n
ヌル値やランダムなバイト列などでファイル
ヌル値やランダムなバイト列などでファイル
を上書きすることによりワイプ
を上書きすることによりワイプ
n
n
NTFS
NTFS
の
の
ADS
ADS
まではワイプしないものが多い
まではワイプしないものが多い
?
?
–
–
http://www.seifried.org/security/advisories/
http://www.seifried.org/security/advisories/
kssa
kssa
-
-
003.html
003.html
痕跡の消去
痕跡の消去
n
n
PC
PC
上に残される各種の行動の痕跡を消去
上に残される各種の行動の痕跡を消去
–
–
テンポラリファイル、ゴミ箱、イベントログ、アク
テンポラリファイル、ゴミ箱、イベントログ、アク
セスしたファイルの記録、
セスしたファイルの記録、
Cookie
Cookie
、
、
...
...
n
n
Evidence Eliminator
Evidence Eliminator
–
–
http://www.evidence
http://www.evidence
-
-eliminator.com/product.d2w
eliminator.com/product.d2w
–
–
「
「
In tests, Evidence Eliminator
In tests, Evidence Eliminator
™
™
defeats
defeats
EnCase
EnCase
and other Forensic Analysis
and other Forensic Analysis
equipment as used by investigators, police
equipment as used by investigators, police
and government agencies.
ステガノグラフィ
ステガノグラフィ
n
n
イメージデータやサウンドデータの中に、情
イメージデータやサウンドデータの中に、情
報やファイルを隠す技術
報やファイルを隠す技術
n
n
一般的に検出は困難
一般的に検出は困難
?
?
–
–
商用検出ツール
商用検出ツール
... Stego Suite
... Stego Suite
Secret
ネットワーク通信の隠蔽
ネットワーク通信の隠蔽
n
n
暗号化による通信
暗号化による通信
–
–
SSH
SSH
、
、
SSL
SSL
、
、
...
...
n
n
アブノーマルなパケットによる通信
アブノーマルなパケットによる通信
–
–
通信記録を残させない
通信記録を残させない
–
–
ICMP
ICMP
パケット
パケット
–
–
TCP
TCP
の
の
ACK
ACK
パケット
パケット
–
–
フラグメントパケット
フラグメントパケット
–
–
各種のトンネリング
各種のトンネリング
–
その他
その他
n
n
論理爆弾
論理爆弾
–
–
ログオンすると爆発
ログオンすると爆発
–
–
シャットダウンすると爆発
シャットダウンすると爆発
n
n
物理爆弾
物理爆弾
–
–
三回ログオン失敗すると(本当に)爆発(
三回ログオン失敗すると(本当に)爆発(
!?
!?
)
)
–
–
ハードディスクを取り出すと(本当に)爆発(
ハードディスクを取り出すと(本当に)爆発(
!?
!?
)
)
n
n
他人に罪を着せる攻撃
他人に罪を着せる攻撃
J
J
–
–
人の
人の
PC
PC
を乗っ取る
を乗っ取る
–
–
人の
人の
PC
PC
に怪しげなファイルを送りつける
に怪しげなファイルを送りつける
システム管理者にできること
システム管理者にできること
n
n
ユーザ
ユーザ
PC
PC
–
–
必要外のプログラムの導入・実行をさせないよ
必要外のプログラムの導入・実行をさせないよ
うな仕組み
うな仕組み
–
–
管理者権限を与えない・奪われない
管理者権限を与えない・奪われない
n
n
サーバマシン
サーバマシン
–
–
侵入の初期段階で検知する
侵入の初期段階で検知する
–
–
HIDS
HIDS
、整合性チェッカの導入
、整合性チェッカの導入
–
–
ログのリモート管理
ログのリモート管理
一旦、まとめ
一旦、まとめ
n
n
結局は知恵比べ
結局は知恵比べ
n
n
Know Your Enemy!!
Know Your Enemy!!
–
–
攻撃手法と、その痕跡のパターン
攻撃手法と、その痕跡のパターン
–
–
攻撃検知回避手法
攻撃検知回避手法
–
–
アンチ・フォレンジック手法
アンチ・フォレンジック手法
n
n
想像し、想定し、準備する
想像し、想定し、準備する
Windows Rootkits
Windows Rootkits
Windows Rootkit
Windows Rootkit
の分類
の分類
n
n
User
User
-
-
Mode Rootkit
Mode Rootkit
–
–
exe / dll
exe / dll
の置き換え(
の置き換え(
WFP
WFP
の停止)
の停止)
–
–
FakeGINA
FakeGINA
タイプ
タイプ
–
–
DLL Injection & API Hooking
DLL Injection & API Hooking
n
n
Kernel
Kernel
-
-
Mode Rootkit
Mode Rootkit
–
–
IDT/SDT/SSDT Hooking
IDT/SDT/SSDT Hooking
–
–
Direct Kernel Object Manipulation
Direct Kernel Object Manipulation
–
SDT (Service Descriptor
Table)
System Service Dispatcher
KiSystemService
()
0x2ENtWriteFile()
0xEDcall WriteFile() ...
User Application
IAT (Import Address Table )
kernel32.dll
ntdll.dll
WriteFile()
ZwWriteFile()
Int 0x2E
User Mode
Kernel Mode
DLL Injection & API Hooking
DLL Injection & API Hooking
call WriteFile() ...
User Application
IAT (Import Address Table )
kernel32.dll
ntdll.dll
WriteFile()
ZwWriteFile()
Int 0x2E
User Mode
hook.dll
ZwWriteFile()
DLL Injection
API Hooking
AFX Rootkit 2004
AFX Rootkit 2004
n
n
DLL
DLL
インジェクション
インジェクション
& API
& API
フック型
フック型
rootkit
rootkit
n
n
http://iamaphex.net/downloads/
http://iamaphex.net/downloads/
n
n
インストールディレクトリに入れたプログラ
インストールディレクトリに入れたプログラ
ムの実行、ネットワーク接続、そのディレク
ムの実行、ネットワーク接続、そのディレク
トリ名で始まるレジストリなどを隠す
トリ名で始まるレジストリなどを隠す
n
n
サービスとして登録され、リブート後も起動
サービスとして登録され、リブート後も起動
n
n
モジュール:
モジュール:
–
AFX Rootkit 2004
AFX Rootkit 2004
(つづき)
(つづき)
C:¥>c:¥temp¥afx¥root.exe /i → "afx"というサービスが登録 C:¥>dir ¥temp ドライブ C のボリューム ラベルがありません。 ボリューム シリアル番号は 80CF-BC06 です C:¥temp のディレクトリ 2005/02/12 19:21 <DIR> . 2005/02/12 19:21 <DIR> .. 0 個のファイル 0 バイト 2 個のディレクトリ 483,842,048 バイトの空き領域 C:¥>start ¥temp¥afx¥nc.exe -d -L -p 9999 -e cmd.exe→ netstat/fport/openportsやpulist/pslist/tlist等から隠蔽
C:¥>sc stop afx
NT Rootkit
NT Rootkit
n
n
Kernel API
Kernel API
フック型の
フック型の
Rootkit
Rootkit
n
n
https://www.rootkit.com/vault/hoglund/r
https://www.rootkit.com/vault/hoglund/r
k_044.zip
k_044.zip
n
n
_root_
_root_
で始まるファイル
で始まるファイル
/
/
ディレクトリ、プロ
ディレクトリ、プロ
セス、レジストリを隠蔽
セス、レジストリを隠蔽
n
n
IP
IP
:
:
10.0.0.166
10.0.0.166
でバックドア、キーロガー(
でバックドア、キーロガー(
現
現
在は
在は
disable
disable
されている)等
されている)等
n
NT Rootkit
NT Rootkit
(つづき)
(つづき)
C:¥WINNT¥system32¥drivers>deploy.exe → _root_.sysドライバが登録 C:¥>dir temp ドライブ C のボリューム ラベルがありません。 ボリューム シリアル番号は 80CF-BC06 です C:¥temp のディレクトリ 2005/02/12 20:38 <DIR> . 2005/02/12 20:38 <DIR> .. 0 個のファイル 0 バイト 2 個のディレクトリ 483,164,160 バイトの空き領域 C:¥>start ¥temp¥_root_¥_root_nc.exe -d -L -p 9999 -e cmd.exe→ pulist/pslist/tlist等から隠蔽(ポート情報は隠さない)
C:¥>sc stop _root_
Hacker defender
Hacker defender
n
n
API
API
フック型の
フック型の
Rootkit
Rootkit
n
n
http://rootkit.host.sk/
http://rootkit.host.sk/
n
n
ini
ini
ファイルの記述に従い、プロセス、ポート、
ファイルの記述に従い、プロセス、ポート、
サービス、レジストリ、等を隠蔽
サービス、レジストリ、等を隠蔽
n
n
既存オープンポートでのバックドア
既存オープンポートでのバックドア
n
n
サービスおよびドライバとして登録(デフォ
サービスおよびドライバとして登録(デフォ
ルト)
ルト)
n
n
モジュール:
モジュール:
hxdef100.exe, hxdefdrv.sys,
hxdef100.exe, hxdefdrv.sys,
bdcli100.exe
Hacker defender
Hacker defender
(つづき)
(つづき)
C:¥temp¥hxdef100>hxdef100 → hxdefdrv.sysドライバが登録 "HackerDefender100"というサービスが登録 C:¥>dir ¥temp ドライブ C のボリューム ラベルがありません。 ボリューム シリアル番号は 80CF-BC06 です C:¥temp のディレクトリ 2005/02/12 23:47 <DIR> . 2005/02/12 23:47 <DIR> .. 0 個のファイル 0 バイト 2 個のディレクトリ 482,371,584 バイトの空き領域 C:¥>start ¥temp¥hxdef100¥nc.exe -d -L -p 9999 -e cmd.exe→ netstat/fport/openportsやpulist/pslist/tlist等から隠蔽 (iniファイルに記述しておく)
C:¥>sc stop HackerDefender100
Direct Kernel Object
Direct Kernel Object
Manipulation (DKOM)
Manipulation (DKOM)
n
n
カーネルのデータ構造を直接操作する
カーネルのデータ構造を直接操作する
n
n
FU Rootkit
FU Rootkit
→
→
プロセスデータのリンクをは
プロセスデータのリンクをは
ずすことで、プロセスの存在を隠す
ずすことで、プロセスの存在を隠す
EPROCESS
FLINK
BLINK
EPROCESS
FLINK
BLINK
EPROCESS
FLINK
BLINK
process to hideFU Rootkit
FU Rootkit
n
n
DKOM
DKOM
テクニックを使用した
テクニックを使用した
Rootkit
Rootkit
n
n
https://www.rootkit.com/vault/fuzen_op
https://www.rootkit.com/vault/fuzen_op
/FU_Rootkit.zip
/FU_Rootkit.zip
n
n
プロセス隠蔽、ドライバ隠蔽、プロセスへの
プロセス隠蔽、ドライバ隠蔽、プロセスへの
権限の追加、
権限の追加、
SID
SID
の追加等
の追加等
n
n
モジュール:
モジュール:
fu.exe, msdirectx.sys
fu.exe, msdirectx.sys
–
FU Rootkit
FU Rootkit
(つづき)
(つづき)
C:¥temp¥fu>fu Usage: fu
[-pl] #number to list the first #number of processes [-ph] #PID to hide the process with #PID
[-pld] to list the named drivers in DbgView [-phd] DRIVER_NAME to hide the named driver
[-pas] #PID to set the AUTH_ID to SYSTEM on process #PID [-prl] to list the available privileges
[-prs] #PID #privilege_name to set privileges on process #PID
[-pss] #PID #account_name to add #account_name SID to process #PID token C:¥temp¥fu>fu -ph 480 → msdirectx.sysドライバが登録、プロセスID:480を隠蔽
C:¥temp¥fu>fu -phd msdirectx.sys → msdirectx.sysドライバを隠蔽
Windows Rootkit
Windows Rootkit
の検出
の検出
n
n
基本的には「
基本的には「
ライブ」
ライブ」
で検出したい
で検出したい
–
–
何が起こっているか、どうやって起こったか
何が起こっているか、どうやって起こったか
n
n
止めてしまうとわからなくなる
止めてしまうとわからなくなる
–
–
生きたまま診断し、手術し、回復させたい
生きたまま診断し、手術し、回復させたい
n
n
可能な限り止めたくない、止められない
可能な限り止めたくない、止められない
n
n
HD
HD
調査の限界(
調査の限界(
?
?
)
)
–
–
HDD
HDD
大容量化、
大容量化、
RAID
RAID
–
–
MAC
MAC
タイムの改竄
タイムの改竄
–
–
コードパターンの変更(
コードパターンの変更(
Morphine
Morphine
)
)
ベースラインをとっていれば良いが
ベースラインをとっていれば良いが
...
...
VICE
VICE
n
n
http://www.rootkit.com/vault/fuzen_op/vice.zip
http://www.rootkit.com/vault/fuzen_op/vice.zip
n
n
rootkit
rootkit
が行う
が行う
Win32 API
Win32 API
やシステムコールのフック
やシステムコールのフック
を検出
KProcCheck
KProcCheck
n
n
http://www.security.org.sg/code/kprocc
http://www.security.org.sg/code/kprocc
heck.html
heck.html
n
n
プロセスやドライバの状態、ポインタ状態な
プロセスやドライバの状態、ポインタ状態な
どをさまざまな方法で調査し、隠されたプロ
どをさまざまな方法で調査し、隠されたプロ
セス、ドライバ、フックされた
セス、ドライバ、フックされた
API
API
を出力
を出力
n
n
KProcCheck
KProcCheck
自身、カーネルドライバとして
自身、カーネルドライバとして
実装
実装
n
n
たまにブルースクリーン
たまにブルースクリーン
L
L
KProcCheck
KProcCheck
(つづき)
(つづき)
n
n
-
-
p
p
オプション
オプション
...
...
カーネルのプロセスリンク
カーネルのプロセスリンク
を調べる(
を調べる(
API
API
フックタイプのものを検出)
フックタイプのものを検出)
n
n
-
-
s
s
オプション
オプション
...
...
スレッドリストからプロセス
スレッドリストからプロセス
を調べる(
を調べる(
FU
FU
を検出)
を検出)
n
n
-
-
d
d
オプション
オプション
...
...
ロードされているドライバを
ロードされているドライバを
調べる
調べる
n
n
-
-
t
t
オプション
オプション
... SSDT
... SSDT
のエントリを調べる
のエントリを調べる
n
n
-
-
g
g
オプション
オプション
... ???
... ???
KProcCheck
KProcCheck
(つづき)
(つづき)
C:¥>kproccheck -p
KProcCheck Version 0.1 Proof-of-Concept by SIG^2 (www.security.org.sg) Process list by traversal of ActiveProcessLinks
8 - System 140 - smss.exe 168 - csrss.exe 188 - winlogon.exe ... 1032 - internat.exe 1040 - KProcCheck.exe 1060 - cmd.exe 1072 - imejpmgr.exe 1076 - nc.exe --[Hidden]-- <--+ 1080 - conime.exe │-- AFXにより隠されたプロセス 1092 - svchost.exe │ 1116 - root.exe --[Hidden]-- <--+
KProcCheck
KProcCheck
(つづき)
(つづき)
C:¥>kproccheck -s
KProcCheck Version 0.1 Proof-of-Concept by SIG^2 (www.security.org.sg) Process list by traversal of KiWaitInListHead and KiWaitOutListHead 8 - System 140 - smss.exe 168 - csrss.exe 188 - winlogon.exe 216 - services.exe 228 - lsass.exe 332 - mshta.exe 400 - svchost.exe 448 - SPOOLSV.EXE 476 - msdtc.exe
480 - cmd.exe --[Hidden]-- <--- FUにより隠されたプロセス
576 - svchost.exe ...
KProcCheck
KProcCheck
(つづき)
(つづき)
C:¥>kproccheck -t
KProcCheck Version 0.1 Proof-of-Concept by SIG^2 (www.security.org.sg) Checks SDT for Hooked Native APIs +--- NT Rootkitによるフック
V
ZwClose 18 ¥??¥C:¥WINNT¥system32¥drivers¥_root_.sys [FD5C130D] ZwCreateFile 20 ¥??¥C:¥WINNT¥system32¥drivers¥_root_.sys [FD5C0381] ZwCreateKey 23 ¥??¥C:¥WINNT¥system32¥drivers¥_root_.sys [FD5C0ED4] ZwCreateSection 2B ¥??¥C:¥WINNT¥system32¥drivers¥_root_.sys [FD5BD6D8] ZwDeleteKey 35 ¥??¥C:¥WINNT¥system32¥drivers¥_root_.sys [FD5C0D04] ZwDeleteValueKey 37 ¥??¥C:¥WINNT¥system32¥drivers¥_root_.sys [FD5C0F8D] ZwEnumerateKey 3C ¥??¥C:¥WINNT¥system32¥drivers¥_root_.sys [FD5C0B93] ZwEnumerateValueKey 3D ¥??¥C:¥WINNT¥system32¥drivers¥_root_.sys [FD5C0948] ZwFlushKey 43 ¥??¥C:¥WINNT¥system32¥drivers¥_root_.sys [FD5C0D93] ZwOpenFile 64 ¥??¥C:¥WINNT¥system32¥drivers¥_root_.sys [FD5C026B] ZwOpenKey 67 ¥??¥C:¥WINNT¥system32¥drivers¥_root_.sys [FD5C04A0] ZwQueryDirectoryFile 7D ¥??¥C:¥WINNT¥system32¥drivers¥_root_.sys [FD5C0050] ZwQueryKey 8B ¥??¥C:¥WINNT¥system32¥drivers¥_root_.sys [FD5C0618] ZwQuerySystemInformation 97 ¥??¥C:¥WINNT¥system32¥drivers¥_root_.sys [FD5C1080] ZwQueryValueKey 9B ¥??¥C:¥WINNT¥system32¥drivers¥_root_.sys [FD5C077C] ZwSetValueKey D7 ¥??¥C:¥WINNT¥system32¥drivers¥_root_.sys [FD5C0E2A]
その他
その他
n
n
Klister
Klister
–
–
KProcCheck
KProcCheck
と同様のツール(
と同様のツール(
?
?
)
)
n
n
PatchFinder
PatchFinder
–
–
Execution Path Analysis
Execution Path Analysis
(
(
EPA
EPA
)に基づいた
)に基づいた
rootkit
rootkit
検出ツール
検出ツール
n
n
リモートからの
リモートからの
sc
sc
–
–
ローカルで見えないサービス
ローカルで見えないサービス
/
/
ドライバも検出で
ドライバも検出で
きる場合アリ
きる場合アリ
n
n
リモートマウント
リモートマウント
参考
参考
n
n
Windows Forensics and Incident Recovery
Windows Forensics and Incident Recovery
–
–
Harlan Carvey, Addison
Harlan Carvey, Addison
-
-
Wesley, ISBN:0321200985
Wesley, ISBN:0321200985
n
n
Exploiting Software : How to Break Code
Exploiting Software : How to Break Code
–
–
Greg Hoglund & Gary McGraw, Addison
Greg Hoglund & Gary McGraw, Addison
-
-
Wesley, ISBN:0201786958
Wesley, ISBN:0201786958
n
n
Malware: Fighting Malicious Code
Malware: Fighting Malicious Code
–
–
Ed Skoudis
Ed Skoudis
&
&
Lenny Zeltser
Lenny Zeltser
,
,
Prentice Hall PTR
Prentice Hall PTR
,
,
ISBN:0131014056
ISBN:0131014056
n
n
VICE
VICE
-
-
Catch the hookers!
Catch the hookers!
–
–
http://www.blackhat.com/presentations/bh
http://www.blackhat.com/presentations/bh
-
-
usa
usa
-
-
04/bh
04/bh
-
-
us
us
-
-
04
04
-
-butler/bh
butler/bh
-
-
us
us
-
-
04
04
-
-
butler.pdf
butler.pdf
n
n
Advanced Windows 2000 Rootkit Detection
Advanced Windows 2000 Rootkit Detection
(Execution Path Analysis)
(Execution Path Analysis)
–
–
http://www.blackhat.com/presentations/bh
http://www.blackhat.com/presentations/bh
-
-
usa
usa
-
-
03/bh
03/bh
-
-
us
us
-
-
03
03
-
-rutkowski/bh
rutkowski/bh
-
-
us
us
-
-
03
03
-
-
rutkowski
rutkowski
-
-
paper.pdf
paper.pdf
n
n