Villegas first pacsec_2016-jp

18
Angel M. Villegas Research Engineer はリバースエンジニアリングの 時間をどのように短縮するのか

Transcript of Villegas first pacsec_2016-jp

Angel M. Villegas Research Engineer

        はリバースエンジニアリングの 時間をどのように短縮するのか

2016

背景

•  現在のリバースエンジニアリングのプロセス –  検体を入手し、検体を分析

•  次の検体を入手し、検体を分析 –  次の検体を入手し、検体を分析

»  洗浄と繰り返し…

•  分析作業の重複が生まれる –  アナリストとその他の人のために

2016

• FIRST: Function Identification and Recovery Signature Tool • ストリームラインコードの分析

• 重複してしまう無駄な努力を防ぐ • 分析時間の改善

• 柔軟性 • 拡張のためのモジュラーフレームワーク

IDA Pro

2016

IDA Pro

メタデータのチェック 56 6A 0C 6A 01 E8 64 AB 00 00 …

ファンクションメタデータの追加 名前 / プロパティ / コメント

ファンクションメタデータの更新 最新バージョンで実装

システム概要

2016

必要なもの Python Requests Module https://pypi.python.org/pypi/requests オプション: Requests-kerberos (もしkerberos認証が必要ならば)

プラグインの入手 以下からPythonプラグインをダウンロード https://git.com/vrtadmin/FIRST-plugin-ida

IDA Proのpluginsフォルダにプラグインをコピー IDA Proを実行

pip install requests

インストール

2016

Server: 10.7.1.9 Port: 3389 Protocol: HTTP

設定

オプション 1 初期画面で設定を入力 (FIRSTが未設定の場合のみ表示される)

オプション 2 • IDA ProのView画面

• IDA Proのメニュー

• Configurationを選択

‘1’を押す

Edit > Plugins > FIRST Server: first-plugin.us Port: 80 Protocol: HTTP

2016

sub_401000 -------------------------------------------------- 56 6a 0c 6a 01 e8 64 ab 00 00 8b f0 8b 44 24 10 89 46 04 8b 44 24 14 89 46 08 a1 08 b4 47 00 85 c0 59 59 74 12 83 3d 00 b4 47 00 00 75 09 ff 35 0c b4 47 00 ff d0 59 a1 04 b4 47 00 85 c0 74 04 89 30 eb 06 89 35 00 b4 47 00 89 35 04 b4 47 00 83 26 00 5e c3

どのようにプラグインは動くのか 一度に関数や多くの情報を確認

プラグインは、関数によって呼び出されたオペコード、アーキテクチャ、およびAPIをサーバーに送信する

2016

一度に関数や多くの情報を追加 プラグインは、関数によって呼び出されたオペコード、アーキテクチャ、APIと、メタデータ(関数名、プロトタイプ、および繰り返し可能なコメント)をサーバーに送信する

どのようにプラグインは動くのか

sub_401000 int __cdecl (int, int) main_function -------------------------------------------------- 56 6a 0c 6a 01 e8 64 ab 00 00 8b f0 8b 44 24 10 89 46 04 8b 44 24 14 89 46 08 a1 08 b4 47 00 85 c0 59 59 74 12 83 3d 00 b4 47 00 00 75 09 ff 35 0c b4 47 00 ff d0 59 a1 04 b4 47 00 85 c0 74 04 89 30 eb 06 89 35 00 b4 47 00 89 35 04 b4 47 00 83 26 00 5e c3

2016

適用されたメタデータの更新

どのようにプラグインは動くのか

プラグインは、関数のメタデータの更新分を要求する

sub_401000 : <ID> ... sub_403500 : <ID>

2016

メタデータの履歴の確認 FIRSTから関数を右クリックするとメタデータの履歴が表示 各ユーザーの各関数のために時間をかけてメタデータの変更を追跡

どのようにプラグインは動くのか

2016

あなたが作成したメタデータの削除 メタデータを右クリックし削除を選択、またはメタデータを選択しDELETEキーを押す

どのようにプラグインは動くのか

2016

サーバーはフレームワークになっている

•  Python、Django、およびMongoDBを利用

•  拡張可能なモジュラーフレームワーク

•  モジュール •  認証

BETAでは、GoogleのOAuth2を活用 •  検出エンジン

完全一致、ニーモニックハッシング、および基本的なマスキング

•  バックエンドデータベース BETAではmongoDBを活用

どのようにサーバーが動くのか

2016

IDA ProEngine

Manager

完全一致

ニーモニックハッシュ

基本的なマスキング

DB Manager

どのようにサーバーは動くのか

2016

データ

•  OpenSSL •  7zip •  aPLib •  ucl •  LinreSSL 2.3.1 •  Mimikatz •  aPackage •  UPX •  ClamWin

•  Alina Spark •  Dexter •  Grum •  Pony •  Zeus •  HackingTeam RCS •  …

デモ

2016

コードの入手 https://git.com/vrtadmin/FIRST

問題の提出: https://git.com/vrtadmin/FIRST/issues/new

FIRSTの利用登録 http://first-plugin.us

ドキュメントを読む https://first-plugin.us/docs

質問

talosintel.com blogs.cisco.com/talos

@talossecurity