アピスコート
このプロジェクトは、Windows APIのインポートリカバリを簡素化することを目的としています。入力として、既知の環境の任意のメモリダンプを処理できます(注:Apiscout/DB_Builderを使用して、最初にDBを構築する必要があります)。
出力は、いくつかのメタ情報を含む識別されたWindows API参照の順序付けられたリストと、Apivectorの指紋です。
- Scout.py-ライブラリとの連携方法について良い概要を説明する必要があります。
- ida_scout.py-は、IDA Proで使用する便利なGUIラッパーです。
- Ghidrascout.java-は、ApiscoutのGhidraプラグインです( @Mari-Mariによる寄稿)。
- Match.py -Apivectorsが互いにどのように一致し、指紋のコレクションがどのように一致するかを示します。
- collect.py-一致に使用できるWinapiフィンガープリント(Apivectors)のデータベースを構築します。
- Export.py-アピベクトを視覚化するAPIQR図を生成します。
- update.py -Malpediaから最新のApivector DBを引いてください(Malpediaアカウント / APIトークンが必要です)。
コードは、Python 2および3と完全に互換性がある必要があります。
Apiscoutを詳細に説明するブログ投稿があります:http://byte-atlas.blogspot.com/2017/04/apiscout.html。
また、Apivectorsの構築と保存方法を説明する別のブログ投稿:https://byte-atlas.blogspot.com/2018/04/apivectors.html。
また、マルディアの評価を含む、アピスコウトの方法論について詳細な説明を説明する論文を発表しました:https://journal.cecyf.fr/ojs/index.php/cybin/article/view/20/23
バージョン履歴
- 2023-03-27:v2.0.2- @7a6570(thx !!)によって寄稿されたセットのIdascoutと処理用のBugfix
- 2023-01-02:V2.0.1- @Malware-Kitten(THX !!)によって寄稿されたPython 3.10を含むLiefベースの輸入テーブルのBugfix
- 2022-08-01:V1.2.0- @Mari-Mari(THX !!)が寄稿したGhidraのプラグインを追加しました
- 2022-09-20:V2.0.0-(潜在的に破壊)クロール結果は、特定のWinapiの呼び出し参照セットを備えた追加の出力フィールドになりました。これは、 @renzhexigua(thx !!)が寄稿した
scout.pyのJSON出力にも含まれています。 - 2022-08-01:V1.2.0- @Mari-Mari(THX !!)が寄稿したGhidraのプラグインを追加しました
- 2022-01-17:
ida_scout.pyを修正して、ApiscoutがPythonパッケージとしてインストールされている場合にIDA 7.5+を使用しました。 - 2021-10-04:V1.1.8- @BlattM(THX!)が提供する観測に基づくWinAPIコンテキストの拡張。
- 2021-08-30:v1.1.7- numpyによって提起されたAPIQRの非推奨警告を修正しました。
- 2021-07-31:v1.1.6-固定liefバージョンを維持する必要はなくなりました。 (thxから @cccs-rs!)
- 2021-01-10:V1.1.5-Python3 Liefパッケージはバージョン0.10.1に固定されています(Thxから@akhribfarouk!)
- 2020-12-09:V1.1.4-Python3 DatabaseBuilder(thxから @dump-guy!)の修正!)
- 2020-07-13:v1.1.3-依存関係がインストールされていることを確認するために、setup.pyに「install_requires」を追加しました。
- 2020-06-30:V1.1.0-現在、輸入テーブルの解析にLiefを使用しています。インポートテーブルの解析を使用するときにアピベクターを生成しないバグを修正しました。 Apiscoutは現在、Pypiからも利用できます。
- 2020-03-03:最新のApivector DBをMalpedia(Malpediaアカウント / APIトークンが必要)を引くためのスクリプトを追加しました。
- 2020-03-02:IDA 7.4(Thxから@jenfrie)に移植されました。
- 2020-02-18:DB Builderは、Python 3.7(THXから@Elanfer)まで互換性があります。
- 2019-10-08:IDA 7.3のAPIビューの壊れたフィルタリングの回避策(これを指摘するためのthxから@enzokへ)。
- 2019-08-22:IDAのタイプ情報が欠落しているバグがクラッシュにつながるバグを修正しました(代わりにエラーメッセージが表示されます)。
- 2019-08-20:API参照として誤って扱われる可能性のあるメモリイメージを所有するポインターを排除するためのセルフフィルターを追加しました。
- 2019-06-06:IDA Proの注釈付きAPIの適切なタイプ再構成のサポートを追加しました(THXから @FLXP0C)
- 2019-05-15:ベクター計算のNumpyサポートを追加しました(@garanews-thx!によって提供される実装に基づいて!)
- 2019-05-15:セクションサイズの誤解のためにバッファーが短縮されるPEマッパーのバグを修正しました。
- 2019-01-23:QOLの改善:自動データフォルダーの展開モジュール、ロガー初期化(thxから@jdval)として使用する場合
- 2018-08-23:PEヘッダーが(空の)セクションデータによって上書きされるPEマッパーのバグを修正しました。
- 2018-08-21:参照のためにクロールする代わりにテーブル情報をインポートできるようにする機能が追加されました。
- 2018-07-31:テストカバレッジが追加された、リストやdictsからのベクトルを作成/エクスポートするための便利な関数を修正しました。
- 2018-07-23:警告:Apivector形式の変更 - さらにスペース効率の良いソートされたアピベクターを導入しました(20%+)。
- 2018-06-25:IDA Pro 7.0+(thxから@nazywam!)との非互換性を修正しました!)
- 2018-05-23:さらにセマンティックコンテキストグループを追加しました(thxからquoscient.io)
- 2018-03-27:Windows APIリファレンスカウントのヒューリスティック推定が追加されました
- 2018-03-06:APIQRベクター結果の視覚化(C-1024)
- 2017-11-28:結果情報を濃縮するために独自のインポートテーブルパーサーを追加しました
- 2017-08-24:IDA Proでのマルチセグメントサポート(thxから@nazywam!)
- 2017-05-31:Windows7 SP1 64ビットインポートDB(マルディアと互換性)を追加しました
クレジット
このアイデアは、このリファクタリングリリースに到達するまで、以前に複数の反復を経験しました。
Thorsten JenkeとSteffen Endersが以前の努力とこの方法の概念実証を評価してくれたことに感謝します。
Steffen EndersがAPIQR図の視覚化に関する作業に感謝します。
また、PefileのEro CarreraとIda Python AskusingFormテンプレートのElias Bachaalanyにも感謝します。 :)
さらに、Andrea Garavagliaが適用されたマッチングで劇的なスピードアップにつながる彼のパフォーマンスベンチマークに感謝します!
リクエストをプル歓迎! :)