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.

[CB19] FileInsight-plugins: Decoding toolbox for malware analysis by 萬谷 暢崇

319 views

Published on

FileInsight-plugins は McAfee FileInsight バイナリエディタ用のプラグイン集です。
文書ファイル型のマルウェアからマルウェアの実行ファイルやおとり文書ファイルを抽出するするなど、マルウェア解析に関する様々なデコード作業に便利です。FileInsight-plugins によって追加される主な機能は以下のとおりです。

- XOR やビットローテートされた文字列、バイト列の検索
- XOR キーをインクリメント / デクリメントする XOR (いわゆる rolling XOR)
- カスタム BASE64 テーブルを使用したエンコード / デコード
- AES 等8つの暗号アルゴリズムでの暗号化と復号
- Gzip 等7つの圧縮アルゴリズムでの圧縮、展開
- ファイル内に埋め込まれた PE ファイルの抽出
- ASCII, UTF-16 文字列の抽出 (strings) と抽出した16進文字列の自動デコード
- YARA によるスキャンと YARA ルールにマッチした領域の色付け
- CyberChef、IDA、VSCode 等の他のツールでデータを開く

FileInsight-plugins は私がプライベートで開発しているツールであり、私がこれまでに所属した組織で職務上開発したものではありません。

  • Be the first to comment

[CB19] FileInsight-plugins: Decoding toolbox for malware analysis by 萬谷 暢崇

  1. 1. Bluebox @ CODE BLUE 2019Bluebox @ CODE BLUE 2019 FileInsight-plugins: Decoding toolbox for malware analysis 萬谷 暢崇
  2. 2. Bluebox @ CODE BLUE 2019 自己紹介 • 政府職員 • 警察庁情報技術解析課サイバーテロ対策技術室(サイバーフォースセン ター)専門官 • 過去にマルウェア解析やデジタルフォレンジックに従事 • 趣味のプログラマ • 2001年から FreeBSD プロジェクトメンバー (ports committer) • オープンソースソフトウェアが大好き! 1/28
  3. 3. Bluebox @ CODE BLUE 2019 FileInsight-plugins • McAfee FileInsight バイナリエディタのプラグイン集 • 2019年10月時点で67個のプラグイン • マルウェア解析における様々なデコード作業に便利 • 2012年に開発を開始 • 個人プロジェクトで自宅で開発 (日本国政府のものではありません) • 入手はこちら https://github.com/nmantani/FileInsight-plugins 2/28
  4. 4. Bluebox @ CODE BLUE 2019 背景 • 攻撃者は解析を妨げたり意図を隠すためにマルウェア中の様々な データを難読化する • 埋め込まれた実行ファイルやおとり文書ファイル • 設定情報(C2ホスト名やポート番号) • 重要な文字列(ファイルパス、レジストリパスやコマンド) • コード • マルウェア解析者はさらなる解析のために可読化する必要がある 3/28
  5. 5. Bluebox @ CODE BLUE 2019 開発の動機 • 当初(2012年) • Microsoft Office(と Adobe Flash Player)や Adobe Reader の脆弱性がマル ウェア感染によく悪用されていた • 解析環境のソフトウェアのバージョンが exploit コードのターゲットのバー ジョンと異なっていて動的解析できないことが時々あった • そのため、C2 ホスト名をいち早く知って通信をブロックするために難読化 されて埋め込まれたマルウェアの実行ファイルを手作業で抽出したい • 現在 • ただただ無料でパワフルなバイナリエディタが欲しい!! 4/28
  6. 6. Bluebox @ CODE BLUE 2019 FileInsight • マカフィー社が開発したフリーのバイナリ エディタ • 便利な組み込み機能 • デコーダ(XOR, ビットローテート, BASE64等) • x86 逆アセンブラ • ブックマーク • データ構造ビューア(HTML, OLE と PE) • Python / JavaScript でのスクリプティング • Python プラグインで拡張可能! 5/28
  7. 7. Bluebox @ CODE BLUE 2019 FileInsight • しかし・・・2009年以降アップデートされていません • McAfee Free Tools ウェブサイトからも消えました • FileInsight のインストーラはこちらで入手可能です http://downloadcenter.mcafee.com/products/mcafee- avert/fileinsight.zip 6/28
  8. 8. Bluebox @ CODE BLUE 2019Bluebox @ CODE BLUE 2019 FileInsight-plugins の詳細 7/28
  9. 9. Bluebox @ CODE BLUE 2019 プラグインの分類 • 67 のプラグインが8つのカテゴリに分類されている (2019年10月現在) 8/28 • Basic operations • Compression operations • Crypto operations • Encoding operations • Misc operations • Parsing operations • Search operations • XOR operations
  10. 10. Bluebox @ CODE BLUE 2019 アルゴリズムとフォーマットの追加サポート 9/28 圧縮 暗号 暗号利用モード • aPLib • Bzip2 • Deflate (without zlib header) • Gzip • LZMA • LZNT1 • XZ • AES • ARC2 • ARC4 • Blowfish • ChaCha20 • DES • Salsa20 • Triple DES • ECB • CBC • CFB • OFB エンコード • Binary data <-> Hex text • Binary data <-> Binary text • Custom BASE64 • ROT13 (variable amount) • Quoted printable
  11. 11. Bluebox @ CODE BLUE 2019 追加された機能 • 選択したデータを新しいタブで開く • ハッシュ値の計算 • ファイルタイプの判別 • 埋め込まれたファイルの発見 • 正規表現を使った検索 / 置換 • XOR / ビットローテートされたデータ の検索 • 0x00 をスキップする XOR (Null-preserving XOR) • 256 バイトの XOR キー推定(キーをイン クリメント / デクリメントする XOR を使 われたデータに有効) • データを外部ツールで開く(JSON ファイ ルでカスタマイズ可能) • ファイル比較 • YARAルールでのスキャン • その他いろいろ! 10/28
  12. 12. Bluebox @ CODE BLUE 2019 必要なもの • Python 2 (x86) • FileInsight は Python 2 (x64) と Python 3 と互換性がありません • Python モジュール等 11/28 • aPLib • binwalk • PyCryptodomex • backports.lzma • python-magic • pefile • yara-python
  13. 13. Bluebox @ CODE BLUE 2019 インストール 12/28 • “plugins” フォルダを %USERPROFILE%DocumentsFileInsight にコピーします
  14. 14. Bluebox @ CODE BLUE 2019 使い方 • “Plugins” タブからカテゴリをクリックしてプラグインを選択します 13/28* Anomaly Chart, Strings と VirusTotal のプラグインは FileInsight に同梱
  15. 15. Bluebox @ CODE BLUE 2019 使い方 • 又は右クリックのメニューからカテゴリを選択します 14/28* Anomaly Chart, Strings と VirusTotal のプラグインは FileInsight に同梱
  16. 16. Bluebox @ CODE BLUE 2019 FileInsight-plugins のお友達: CyberChef • 超パワフルなデコードツール • ウェブブラウザ上で動作 • 英国政府(GCHQ)と世界中の開発者に よってアクティブに開発 • 手作業でのファイル編集は苦手 • “Send to” プラグインで CyberChef に 直接データを送り込める(12KBまで) 15/28
  17. 17. Bluebox @ CODE BLUE 2019Bluebox @ CODE BLUE 2019 デモ 16/28
  18. 18. Bluebox @ CODE BLUE 2019 デモ 1 • Microsoft Excel ファイル • マルウェアの実行ファイルが XOR とビットローテートで難読化され て埋め込まれている • 使用するプラグイン • Search operations -> XOR text search • Paring operations -> Find PE file • Misc operations -> Send to 17/28
  19. 19. Bluebox @ CODE BLUE 2019 デモ 1 18/28 可読化前: 可読化後:
  20. 20. Bluebox @ CODE BLUE 2019 デモ 2 • リッチテキストファイル • マルウェアの実行ファイルがキーをインクリメントする XOR (rolling XOR)で難読化されて埋め込まれている • 使用するプラグイン • XOR operations -> Guess 256 byte XOR keys 19/28
  21. 21. Bluebox @ CODE BLUE 2019 デモ 2 20/28 可読化前: 可読化後:
  22. 22. Bluebox @ CODE BLUE 2019 デモ 3 • PHP ウェブシェル • コードは BASE64, ROT13, Deflate 等で難読化されている • 使用するプラグイン: • Encoding operations -> ROT13 • Basic operations -> Reverse order • Encoding operations -> Custom BASE 64 decode • Compression operations -> Raw inflate • Misc operations -> Send to 21/28
  23. 23. Bluebox @ CODE BLUE 2019 デモ 3 22/28 可読化前: 可読化後:
  24. 24. Bluebox @ CODE BLUE 2019 デモ 4 • Zebrocy (Zekapab) マルウェア • いくつかの文字列が16進数にエンコードされている • 16進文字列を抽出してデコードする • この文字列に基づく YARA ルールでスキャンする • 使用するプラグイン: • Parsing operations -> Strings • Search operations -> YARA scan 23/28
  25. 25. Bluebox @ CODE BLUE 2019 デモ 4 24/28 “YARA scan” プラグインで FileInsight を YARA ルールエディタとして使用可能
  26. 26. Bluebox @ CODE BLUE 2019 デモ 5 • 隠しメッセージを含むバイナリファイル(マルウェアではありません) • CyberChef とのコンビネーション • 使用するプラグイン: • Parsing operations -> File type • Compression operation -> XZ decompress • Misc operations -> Send to 25/28
  27. 27. Bluebox @ CODE BLUE 2019 デモ 5 26/28 可読化前: 可読化後:
  28. 28. Bluebox @ CODE BLUE 2019 まとめ • FileInsight-plugins は FileInsight バイナリエディタをアイアン マンスーツのようにもっとパワフルにします • マルウェア解析における様々なデコード作業に便利 • 入手はこちら https://github.com/nmantani/FileInsight-plugins • フィードバックをお待ちしています!(プルリクエスト、 バグレポート、機能追加の要望) 27/28
  29. 29. Bluebox @ CODE BLUE 2019Bluebox @ CODE BLUE 2019 ありがとうございました! スライドは私の GitHub リポジトリからダウンロードできます: https://github.com/nmantani/FileInsight-plugins 28/28 このスライドは Twitter 社によって CC-BY 4.0 でライセンスされて いる Twemoji を使用しています。 https://twemoji.twitter.com/
  30. 30. Bluebox @ CODE BLUE 2019Bluebox @ CODE BLUE 2019 付録
  31. 31. Bluebox @ CODE BLUE 2019 FileInsight の API 関数の一覧 • getLength() • getByteAt() • setByteAt() • setBookmark() • getSelection() • getSelectionOffset() • getSelectionLength() • gotoBookmark() • download() • newDocument() • showSimpleDialog() • decode() 関数の詳細については FileInsight のヘルプをご覧ください。
  32. 32. Bluebox @ CODE BLUE 2019 FileInsight の API 関数の一覧 • getDocument() • setDocument() • getDocumentName() • getDocumentCount() • getDocumentURL() • activateDocumentAt() 関数の詳細については FileInsight のヘルプをご覧ください。
  33. 33. Bluebox @ CODE BLUE 2019 プラグインのサンプルコード # 選択した部分又はファイル全体を新しいタブで開く length = getSelectionLength() # 選択部分のサイズを取得 if length > 0: data = getSelection() # 選択部分のデータを取得 else: data = getDocument() # ファイル全体のデータを取得 newDocument(“New file”, 1) # hex view モードで新しいタブを開く setDocument(data) # データを新しいタブにコピーする

×