Fight Against Citadel in Japan by 中津留 勇

67 %
33 %
Information about Fight Against Citadel in Japan by 中津留 勇
Technology

Published on March 12, 2014

Author: codeblue_jp

Source: slideshare.net

Description

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

中津留 勇 - You Nakatsuru

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

Fight Against Citadel in Japan 2014/02/18 JPCERT/CC 分析センター 中津留 勇

Copyright©2014 JPCERT/CC All rights reserved.1 目次 背景 —日本における不正送金被害 Citadel の分析 —動作概要 —暗号化 メイキング Citadel Decryptor Citadel Decryptor —復号方法 —デモ

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/cyber/pdf/H260131_banking.pdf 標的となった金融機関は 32

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 ソースコード Web パネル ソース ビルダー ソース ビルドされ たサーバ デバッグ情 報 ブログ記事等 Sophos LEXSI

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 Config • 追加の設定 • Webパネルの URL、Web Injects、etc… • サーバからダウンロード Dynamic Config

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 鍵を生成するための パスワード

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

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 追加モジュール ファイル レポート 追加モジュール のバックアップ レジストリ 現在の設定 Dynamic Config のバックアップ

Copyright©2014 JPCERT/CC All rights reserved.25 Citadel が用いる暗号方式 • AES に XOR エンコードを組み合わせた方式 AES+ • RC4 に XOR エンコードを組み合わせた方式 RC4+ • RC4+ による復号を 2度行う RC4+ * 2 • インストール時にランダムに生成した AES 鍵を使用した AES+ Installed Data

Copyright©2014 JPCERT/CC All rights reserved.26 Citadel が扱うデータ形式 ヘッダ アイテム アイテム アイテム 暗号化 BinStrage サイズ (XOR) BinStrage 暗号化 BinStrage サイズ (XOR) 暗号化 BinStrage サイズ (XOR) StrageArray UCL 圧縮

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 インストール前の Citadel インストール後 XOR 鍵 ID, インストールパス, ランダム AES 鍵、 ランダム StrageArray 鍵 など パディング パディング

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

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['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

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): 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

Copyright©2014 JPCERT/CC All rights reserved.37 必要なパラメータ Base Config RC4 鍵 Installed Data StrageArray 鍵 ランダム AES 鍵 その他 Salt LoginKey AES XOR 鍵

Copyright©2014 JPCERT/CC All rights reserved.38 必要なパラメータの取得 re.compile(".*¥x56¥xBA(..)¥x00¥x00¥x52¥x68(....) ¥x50¥xE8....¥x8B¥x0D.*", re.DOTALL)

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(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]

Copyright©2014 JPCERT/CC All rights reserved.41 CITADEL DECRYPTOR

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

Copyright©2014 JPCERT/CC All rights reserved.43 復号に必要なデータ 復号対象 アンパックされた Citadel 本体 • ベース RC4 鍵 • AES+ 用の XOR 鍵 • RC4+ 用の XOR 鍵(LOGINKEY) • RC4+ 用の salt インストールされた後の Citadel 本体 • Installed Data • ランダムに生成された AES 鍵 • ランダムに生成された StrageArray 鍵

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 >

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 を持つ実行ファイル]

Copyright©2014 JPCERT/CC All rights reserved.46 実践

Copyright©2014 JPCERT/CC All rights reserved.47 Tips レジストリデータのバイナリ化 • regedit を用いエクスポートしたデータを FileInsight のプラグインで バイナリデータに変換 • https://github.com/nmantani/FileInsight-plugins アンパック • パッカーが呼び出す API でブレークする方法が簡単 • WriteProcessMemory • CreateProcessW • VirtualFree / VirtualFreeEx / RtlFreeHeap • 仮想メモリ上から実行ファイルそのものを取り出す • オーバーレイの 0x400 バイトを忘れずに切り取る

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

Thank You! 連絡先 aa-info@jpcert.or.jp https://www.jpcert.or.jp インシデント報告 info@jpcert.or.jp https://www.jpcert.or.jp/form/

Add a comment

Related presentations

Related pages

CODE BLUE 開催直前インタビュー「Fight Against Citadel in Japan」JPCERT ...

CODE BLUE 開催直前インタビュー「Fight Against Citadel in Japan」JPCERT/CC 中津留 勇 氏 研修・セミナー・カンファレンス ...
Read more

中津留 勇 | LinkedIn

中津留 勇さんのプロフィールをチェックしましょう。LinkedInは、中津留 ... Fight Against Citadel in Japan. 2014年2 ...
Read more

JPCERT コーディネーションセンター 講演・執筆一覧

分析センター,中津留 勇; ... 「Phishing Trends in Japan and the Counteraction as the Council of Anti ... 「Fight Against Citadel in Japan ...
Read more

Fight Against Citadel in Japan - jadocz.com

Fight Against Citadel in Japan embed) Download ...
Read more

世界トップクラスの専門家による情報セキュリティ国際会議「CODE BLUE(コードブルー)」

Fight Against Citadel in Japan 中津留 勇 - You Nakatsuru: 18:00 - 18:30:
Read more

帰ってきたバンキングトロイCitadel(2016-01-05)

... トロイCitadel. こんにちは、中津留です。私が2014年2月にCODE BLUEで「Fight Against Citadel in Japan ... したCitadel Decryptorの ...
Read more

世界トップクラスの専門家による情報セキュリティ国際会議「CODE BLUE(コードブルー)」

中津留 勇 You Nakatsuru. 千田 ... Fight Against Citadel in Japan by 中津留 ...
Read more

CODE BLUE を生んだ日本のセキュリティコミュニティの歴史 ~ CODE BLUE篠田氏、日立システムズ本川氏 ...

... IDAの脆弱性とBug Bounty」 千田 雅明 氏 CODE BLUE 開催直前インタビュー「Fight Against Citadel in Japan」JPCERT/CC 中津留 ...
Read more