Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Kam1n0-Community — 複数アーキテクチャにおいて静的、動的、機械学習技術を用いてインデックス化、クローン検索、実行可能ファイル分類を行うスケーラブルなアセンブリ解析プラットフォーム。 | Kitploit
ツール/GitHubGitHub/mcgill-dmas/kam1n0-community
脆弱性分析コード分析リバースエンジニアリングファジングバイナリ解析機械学習
GitHubmcgill-dmas/kam1n0-community

Kam1n0-Community

複数アーキテクチャにおいて静的、動的、機械学習技術を用いてインデックス化、クローン検索、実行可能ファイル分類を行うスケーラブルなアセンブリ解析プラットフォーム。

リポジトリを見る
62712463年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Kam1n0 v2 とは?

image GitHub (pre-)release Github All Releases JDK PRs Welcome

Build latest development release (Windows) Test release build (Windows)

Kam1n0 v2.x は、拡張可能なアセンブリ管理・分析プラットフォームです。ユーザーはまず、(大量の)バイナリ集合を異なるリポジトリにインデックス化し、クローン検索や分類などのさまざまな分析サービスを利用できます。アプリケーション の概念を用いて、アセンブリリポジトリのマルチテナントアクセスと管理をサポートします。アプリケーションインスタンスは、独自の排他リポジトリを持ち、専門的な分析サービスを提供します。リバースエンジニアリングタスクの多様性を考慮し、Kam1n0 v2.x サーバーは現在、3種類のクローン検索アプリケーション(Asm-Clone、Sym1n0、Asm2Vec)と、Asm2Vec に基づく 実行可能ファイル分類 を提供しています。新しいアプリケーションタイプは、プラットフォームにさらに追加することができます。

ユーザーは複数のアプリケーションインスタンスを作成できます。アプリケーションインスタンスは特定のユーザーグループ間で共有できます。アプリケーションリポジトリの読み書きアクセスとオンオフ状態は、アプリケーションの所有者が制御できます。Kam1n0 v2.x サーバーは、いくつかの共有リソースプールを使用してアプリケーションを同時に提供できます。

Kam1n0 は、カナダのマギル大学データマイニング・セキュリティ研究所の Benjamin C. M. Fung 教授の指導のもと、Steven H. H. Ding と Miles Q. Li によって開発されました。これは、Hex-Rays Plug-In Contest 2015 で第2位を受賞しました。Kam1n0 が有用だと感じられた場合は、以下の論文を引用してください:

  • S. H. H. Ding, B. C. M. Fung, and P. Charland. Kam1n0: MapReduce-based Assembly Clone Search for Reverse Engineering. In Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (SIGKDD), pages 461-470, San Francisco, CA: ACM Press, August 2016.

  • S. H. H. Ding, B. C. M. Fung, and P. Charland. Asm2Vec: boosting static representation robustness for binary clone search against code obfuscation and compiler optimization. In Proceedings of the 40th IEEE Symposium on Security and Privacy (S&P), 18 pages, San Francisco, CA: IEEE Computer Society, May 2019.

Asm-Clone

Asm-Clone アプリケーションは、アセンブリ関数の効率的な部分グラフ検索問題(すなわちグラフ同型問題)を解決しようとします(230万関数に対して平均クエリ時間1.3秒未満、平均インデックス時間30ms未満)。対象関数(下図左)が与えられると、リポジトリ内の他の関数の中からクローン部分グラフ(下図右)を識別できます。

  • アプリケーションタイプ: Asm-Clone
  • Kam1n0 v1.x で使用されていたオリジナルのクローン検索サービス。
  • 現在は Meta-PC、ARM、PowerPC、TMS320c6(実験的)をサポート。
  • 特定のアセンブリコードファミリ内での部分グラフクローン検索をサポート。
    • + 結果の解釈性が高い:部分グラフに分解される。
    • + 指定されたコードファミリ内での検索に正確。
    • + 大きなバイナリのさまざまなパッチやバージョンの差分に適している。
    • - 命令セットの変更、最適化、難読化に比較的敏感。
    • - アセンブリコード言語の構文を事前に定義する必要がある。
    • - リポジトリ内に同じ選択されたファミリのアセンブリコードが必要。

Sym1n0

差別化ファジングテストと制約解決によるセマンティッククローン検索。効率的でスケーラブルな動的-静的ハイブリッドアプローチ(150万関数に対して平均クエリ時間1秒未満、平均インデックス時間100ms未満)。対象関数(下図左)が与えられると、リポジトリ内の他の関数の中からクローン部分グラフ(下図右)を識別できます。抽象構文グラフの可視化をサポート。

  • アプリケーションタイプ: Sym1n0(v2のみ)
  • シンボリック実行と具体的実行の両方によるクローン検索。
  • 異なるI/O動作に基づいて関数を区別。
  • Vex IR(LibVex 搭載)から構築された抽象構文グラフ上でクローン検索を実行。
    • + 異なるアセンブリコードファミリ間でのクローン検索。
      • 例えば、x86 バイナリをインデックス化しているが、クエリは ARM コード。
    • + 部分グラフクローン検索。
    • + LibVex を通じて幅広いファミリをサポート。
      • x86、AMD64、MIPS32、MIPS64、PowerPC32、PowerPC64、ARM32、ARM64。
    • + 効率的な動的-静的ハイブリッドアプローチ。
    • + 異なるプロセッサ向けにコンパイルされたファームウェアの分析に最適。
    • - グラフの大規模な操作(完全平坦化など)に敏感。
    • - 基本ブロックの完全性の大規模な破壊に敏感。

Asm2Vec

Asm2Vec は表現学習を活用します。アセンブリコードの語彙意味関係を理解します。例えば、xmm* レジスタは addps などのベクトル操作と意味的に関連しています。memcpy は strcpy と類似しています。以下のグラフは、libgmp 内の同じソースコード gmpz_tdiv_r_2exp からコンパイルされた異なるアセンブリ関数を示しています。左から右へ、アセンブリ関数は GCC O0 オプション、GCC O3 オプション、O-LLVM 難読化コントロールフローグラフ平坦化オプション、LLVM 難読化 Bogus Control Flow Graph オプションでコンパイルされています。Asm2Vec はそれらを 静的に クローンとして識別できます。

  • 表現学習を活用。
  • アセンブリコードの語彙意味関係を理解。
    • + 高度なコード難読化技術に対するクローン検索の最先端。
      • (O-LLVM で適用されたすべてのオプションに対して>0.8の精度、複数反復)。
    • + コード最適化に対するクローン検索の最先端。
      • (O0 と O3 間で>0.8の精度、O2 と O3 間で>0.94の精度)。
    • + 最新の動的アプローチよりも優れた結果。
    • + 最近の動的アプローチよりもはるかに効率的。
    • + アーキテクチャを定義する必要がない。大量のコードを読むことで自己学習する。
    • + 静的アプローチ:効率的でスケーラブル。
    • - サブグラフはなし。
    • - アセンブリコードが同じプロセッサファミリから来ていることを前提とする。
    • - 静的アプローチ:ジャンプテーブルなどを認識できない。

実行可能ファイル分類

このアプリケーションでは、ユーザーは機能的な関連性に基づいた一連のソフトウェアクラスを定義し、各クラスに属するバイナリを提供します。その後、システムは自動的に関数をクラスタにグループ化し、その中で関数はクローン関係によって直接的または間接的に接続されます。分類に識別力のあるクラスタが保持され、それらのクラスのシグネチャとして機能します。対象のバイナリが与えられると、システムは各ソフトウェアクラスに属する度合いを示します。

  • 関数類似度計算モデルとして Asm2Vec を使用。

    • + 解釈可能な分類結果を提供。
    • + 各クラスの共通特性(関数クラスタ)を学習。
    • + 通常の機械学習モデルよりも小さく不均衡なデータセットを処理可能。
    • - 制限として、同じクラスのバイナリがいくつかの共通関数を共有するという前提がシステムの動作に必要。

プラットフォーム概要

下図は、Kam1n0 v2.x の主要なUIコンポーネントと機能を示しています。マテリアルデザインを採用しています。一般的に、各ユーザーはアプリケーションリスト、実行中ジョブリスト、結果ファイルリストを持ちます。

  • アプリケーションリストは、ユーザーが所有するアプリケーションインスタンスと、他のユーザーと共有しているものを表示します。
  • 実行中ジョブリストは、大規模なクエリ(chrome.dll など)やインデックス手順の進行状況を表示します。
  • 結果ファイルリストは、保存された結果を表示します。 UIデザインの詳細については、詳細なチュートリアルを参照してください。

インストール手順

現在の Kam1n0 のリリースは、コアサーバーと IDA Pro プラグインの2つのインストーラで構成されています。

インストーラ含まれるコンポーネント説明
Kam1n0-Server.msiコアエンジンインデックス化と検索のためのサービスを提供するメインエンジン。
ワークベンチリポジトリと実行中のサービスを管理するためのユーザーインターフェース。
Webユーザーインターフェースバイナリファイルとアセンブリ関数の検索/インデックス化のためのWebユーザーインターフェース。
Visual C++ 再頒布可能パッケージ(VS 15 用)z3 の依存関係。
Kam1n0-IDA-Plugin.msiプラグインコネクタとユーザーインターフェース。
Cefpython 用 PyPI ホイールユーザーインターフェースのレンダリングエンジン。
PyPI および依存ホイールPython のパッケージ管理。IDA 6.8 および 6.9 に含まれています。

Kam1n0 サーバーのインストール

Kam1n0 コアエンジンは純粋に Java で書かれています。次の依存関係が必要です:

  • [必須] Oracle から最新の x64 11.x JRE/JDK ディストリビューション。
  • [オプション] idapython プラグインがインストールされた最新バージョンの IDA Pro。Python プラグインとランタイムは通常 IDA Pro にすでにインストールされています。必要に応じて IDA Pro を再インストールしてください。

リリースページ から Kam1n0-Server.msi ファイルをダウンロードします。指示に従ってサーバーをインストールします。インストールパスを選択するように求められます。サーバーが逆アセンブルを処理する必要がない場合、IDA Pro はオプションです。言い換えれば、クライアント側は Kam1n0 プラグインを IDA Pro 用に使用します。Kam1n0 サーバーと一緒に IDA Pro をインストールすることを強くお勧めします。Kam1n0 サーバーは、.i64 ファイルを開くために使用するデフォルトアプリケーションを探すことで、IDA Pro を自動的に検出します。

IDA Pro プラグインのインストール

Kam1n0 IDA Pro プラグインは、ロジック部分が Python、レンダリング部分が HTML/JavaScript で書かれています。インストールには次の依存関係が必要です:

  • [必須] idapython プラグインがインストールされた IDA Pro (>6.7)。Python プラグインとランタイムは通常 IDA Pro にすでにインストールされています。必要に応じて IDA Pro を再インストールしてください。

次に、リリースページ から Kam1n0-IDA-Plugin.msi インストーラをダウンロードします。指示に従ってプラグインとランタイムをインストールします。プラグインは、$IDA_PRO_PATH$/plugins にある IDA Pro プラグインフォルダにインストールする必要があることに注意してください。例えば、Windows では、パスは C:/Program Files (x86)/IDA 6.95/plugins になる場合があります。インストーラはパスを検出して検証します。

Ubuntu/Debian ベースのシステムでの Kam1n0 のセットアップ

  • Oracle バージョンの Java 11 がインストールされていることを確認してください。(apt の default-jdk ではありません)。

    • Oracle の PPA を追加し、パッケージリポジトリを更新します: sudo add-apt-repository ppa:webupd8team/java
      • エラーが発生した場合(~webupd8team not found など)、プロキシを使用している場合は、http_proxy および https_proxy 環境変数を設定してエクスポートし、-E オプションを付けて sudo で再試行してください。また、'add-apt repository command not found' エラーが発生した場合は、sudo apt install -y software-properties-common を試してください。
    • その後: sudo apt-get update、および sudo apt-get install oracle-java8-installer
      • java -version で Java バージョンを確認してください。必要に応じて、JAVA_HOME 環境変数を手動で設定する必要がある場合があります(/etc/environment 内)、JAVA_HOME=/usr/lib/jvm/java-11-oracle
  • Kam1n0-Community から Linux 用の最新リリース(Kam1n0-IDA-Plugin.tar.gz および Kam1n0-Server.tar.gz)をダウンロードします。

  • 2つの tarball を展開します(例:tar –xvzf Kam1n0-IDA-Plugin.tar.gz および tar –xvzf Kam1n0-Server.tar.gz)。

  • Kam1n0-Server.tar.gz ファイルは server ディレクトリを作成します。

  • server ディレクトリ内に、kam1n0.properties というファイルがあるはずです。ここで kam1n0 のさまざまな設定を行います。これは非常に重要です。

  • kam1n0.data.path を、kam1n0 関連データを書き込む場所に設定します。server と同じ場所に置くことをお勧めします。kam1n0.ida.home は、IDA のインストール場所を指します。IDA を持っておらず、逆アセンブルに kam1n0 を使用する予定がない場合は、この行(および次の kam1n0.ida.batch)をコメントアウトしてください。kam1n0.properties ファイルの詳細(正確な情報)については、kam1n0.properties.explained ファイルを参照してください。

  • kam1n0-server-workbench を実行します: java -jar kam1n0-server-workbench.jar。これにより、ウィンドウが表示され、kam1n0 を実際に起動するよう促されます。または、kam1n0-server を実行します: java -jar kam1n0-server.jar --start。これにより、コンソールからウィンドウなしでサーバーが起動します。

  • 接続して使用するには、ブラウザで 127.0.0.1:8571(デフォルトの kam1n0 リッスンポートは 8571 ですが、kam1n0.properties で変更可能)にアクセスします。美しい kam1n0 Web UI が表示されます。そこから、Kam1n0-Community リポジトリのチュートリアルに従って、kam1n0 の使い方を学んでください。

下位互換性

以前のバージョン(<2.0.0)で使用されていたアセンブリコードリポジトリと設定ファイルは、最新バージョンではサポートされなくなりました。古いリポジトリの移行が必要な場合は、お問い合わせください。

ドキュメント

  • Kam1n0 サーバーチュートリアル
    • 設定とエンジン起動
    • アカウント登録とログイン
    • アプリケーションの作成
    • アプリケーションの共有とアクセス制御
    • データの準備
    • IDA Pro プラグイン用のアプリケーションURL
    • バイナリファイルのインデックス化
    • アセンブリ関数による検索
      • フローグラフビュー
      • テキスト差分ビュー
      • クローングループビュー
    • バイナリファイルによる検索
    • クローン検索結果の閲覧
      • サマリーボックス
      • 詳細
  • IDA Pro プラグインチュートリアル
    • 機能
    • ウォークスルー例
      • データの準備
      • エンジン起動とアプリケーションURL
      • 接続設定
      • プラグインからのインデックス化
      • 関数検索
      • 構成分析
      • アセンブリ断片検索
      • 検索ボックス
    • プラグインの仕組み
      • ユーザーインターフェース
      • 同期
      • 双方向通信

開発

最新の安定ブランチをクローンします(--recursive を忘れずに!):```bash git clone --recursive -b master2.x --single-branch https://github.com/McGill-DMaS/Kam1n0-Community

root@kitploit:~
## プロジェクトのインポート
IntelliJ: ルート /kam1n0/kam1n0/ を maven プロジェクトとしてインポートします。すべてのサブモジュールがそれに応じて読み込まれます。
EclipseEE: クローンした Git リポジトリを Git ビューに追加します。Git リポジトリからすべての maven プロジェクトをインポートします。
エラーに対処するために、クラスパスを変更する必要があるかもしれません。
IDE 内で実行する場合、すべてのリソースパスは動的に変更されます(kam1n0-resources サブモジュールを介して)。

プロジェクトをビルドするには:```
cd /kam1n0/kam1n0
mvn -DskipTests clean package
mvn -DskipTests package

生成されたバイナリは /kam1n0/build-bins/ にあります。

テストコードを実行するには、まず http://chromedriver.chromium.org/ から chromedriver.exe をダウンロードし、その絶対パスを webdriver.chrome.driver という環境変数に追加する必要があります。また、システムにChromeブラウザがインストールされている必要があります。テストコードはブラウザインスタンスを起動してUIインターフェースをテストします。テスト手順全体には約3時間かかります。``` cd /kam1n0/kam1n0 mvn -DskipTests clean package # you can skip this one if you already built the package mvn -DskipTests package # you can skip this one if you already built the package mvn -DforkMode=never test

root@kitploit:~
これらのコマンドは、libvexとz3のプリコンパイル済みホイールを使用してJavaのみをコンパイルします。そのまま動作します。
libvexとz3のビルドはプラットフォームに依存します。Angrのlibvexのフォークを使用しています。
より本格的なビルドスクリプトやWindows/Linux用のインストーラは、/kam1n0-builds/ にあります。

* kam1n0: サーバーのソースコード。
* kam1n0-builds: インストーラのソースコードと配布物をビルドするスクリプト。
* kam1n0-clients: クライアントのソースコード。

## バイナリリリース

継続的な開発とデリバリーのためにJenkinサーバーを運用しています。最新の安定リリースはこちらに掲載されます。定期的に、内部の実験ブランチとこのリポジトリを同期します。

## ライセンス

本ソフトウェアは、カナダの[McGill Data Mining and Security Lab](http://dmas.lab.mcgill.ca/)および[Queen's L1NNA Research Laboratory](https://l1nna.com/)において、[Steven H. H. Ding](http://stevending.net/)、[Miles Q. Li](http://milesqli.github.io/)、[Benjamin C. M. Fung](http://dmas.lab.mcgill.ca/fung/)によって開発されました。Apache License Version 2.0の下で配布されています。詳細は[LICENSE.txt](https://github.com/mcgill-dmas/kam1n0-community/blob/master2.x/LICENSE.txt)を参照してください。

Copyright 2014-2021 McGill Universityおよび研究者。全著作権所有。

## 謝辞

![image](https://img.shields.io/badge/Proudly%20Funded%20by-Defence%20Research%20&%20Development%20Canada%20(DRDC)-orange.svg?style=for-the-badge)

![image](https://img.shields.io/badge/Proudly%20Funded%20by-NSERC%20Canada%20Research%20%20Chairs%20Program-blue.svg?style=for-the-badge)

![image](https://img.shields.io/badge/Special%20thanks%20to-Philippe%20Charland,%20DRDC-orange.svg?style=for-the-badge)

![image](https://img.shields.io/badge/Acknowledgement-NVIDIA%20Corporation%20for%20donating%20the%20Titan%20Xp%20used%20for%20this%20research-blue.svg?style=for-the-badge)

![image](https://img.shields.io/badge/Built%20in-Data%20Mining%20and%20Security%20Lab,%20SIS,%20McGill%20Univrsity-red.svg?style=for-the-badge)

![image](https://img.shields.io/badge/Built%20in-L1NNA%20Research%20Laboratory,%20CS,%20Queen%27s%20Univrsity-red.svg?style=for-the-badge)
ツールをダウンロード