
拡張可能なエクスプロイトフレームワークで、モジュール式マルチタスクアーキテクチャ上で提供されます。
モジュール式で高度に拡張可能なマルチタスクおよびマルチプロセッシングアーキテクチャ上で提供される教育用エクスプロイテーションフレームワーク。
バージョン1をお探しですか?このリポジトリのブランチを参照してください。
BrutusはPythonで書かれた教育用エクスプロイテーションフレームワークです。ネットワークベースのプリコネクションおよびポストコネクションエクスプロイトと、Webベースの偵察を自動化します。軽量フレームワークとして、Brutusはサードパーティの依存関係への依存を最小限に抑えることを目指しています。Kali Linux向けに最適化されていますが、macOSやほとんどのLinuxディストリビューションとも互換性があり、完全にインタラクティブなコマンドラインインターフェースと多用途のプラグインシステムを備えています。
Brutusは高度に拡張可能なモジュール式アーキテクチャを特徴としています。含まれているエクスプロイト(プラグインレイヤー)は、スレッドプールとスレッドセーフな非同期キュー(各モジュールに最も適した方)で構成される「タスキングレイヤー」上で実行される、いくつかの分離されたモジュールで構成されています。メインスレッドは、アプリケーションコンテキストを管理し、新しいプロセスをディスパッチしてタスクをバックグラウンドや別のシェルなどで実行できるようにするマルチプロセッシングプールの上で動作します。
UIレイヤーも分離されており、拡張可能です。デフォルトでは、BrutusはメニューベースのコマンドラインインターフェースUIを備えていますが、GUI、引数パーサー、さらにはHTTP APIやリモートプロシージャコール用のアダプターを追加することを妨げるものはありません。
最後に、Brutusにはファイルシステム操作、シェル(ターミナルエミュレータ)管理、永続化方法、システムメタデータのための共通機能を備えたユーティリティレイヤーがあります。
Pythonハッキングに興味があるだけなら、スクリプトを直接取得してください - 各モジュールは単独で呼び出すことができます。
Webスキャンとペイロードコンパイルのデモ:mp4を見る

以下の依存関係が必要になるでしょう:
BrutusはKali Linux向けに最適化されています。Kali Linuxを仮想マシンで実行する方法については、オンラインに多くの情報があります。
インストール方法:
pipenv install
実行:
pipenv run brutus
テスト:
pipenv run test
リント:
pipenv run lint
開発用Gitフックのセットアップ:
pipenv run setup
機能提案やバグ修正などを含むPRを自由に作成してください。このプロジェクトの多くはまだ進行中であることに注意してください。ベースは整っており、あなたがそれを基に構築できる準備ができています。
Brutusには、ネットワークベース、Webベース、ペイロードの3つのマクロカテゴリに一般化できるいくつかのモジュールが含まれています。最後のカテゴリはコンパイラとそれに付随するペイロードのライブラリです。ペイロードはBrutusのインタラクティブなコマンドラインメニューを介してコンパイルでき、コンパイルされたペイロードはその後、Brutusの該当するネットワークベースのモジュールの多くにロードできます。
Brutusのベースレイヤーは、POSIXスレッドを使用して並行マルチタスクを実現しています。一部のモジュール(つまり、本質的にI/Oバウンドが高いもの)は、代わりにPythonの非同期I/Oライブラリを利用し、Pythonのデフォルトのイベントループ上の抽象化で実行されます。
含まれるユーティリティ/スクリプト
注:このツールは48ビットMAC用で、デフォルトのバイトフォーマットは%02xです。
MAC(Media Access Control)は、デバイスメーカーによってネットワークインターフェースに割り当てられる、永続的で物理的かつ一意のアドレスです。つまり、例えばワイヤレスカードにも独自のMACアドレスがあるということです。
MACアドレスは、インターネット上のIPアドレスに類似しており、ネットワーク内でリソースやデータ(パケット)の適切な配信を容易にするために使用されます。通常、インタラクションは送信元MACと宛先MACで構成されます。MACアドレスは、ユーザーを識別したり、フィルタリングされたり、アクセス制限の対象となったりする可能性があります。
重要なのは、これらの一意のアドレスは一時的なものではなく、永続的であり、ユーザーがデバイスを別のマシンにインストールしてもそのデバイスに関連付けられたままになることです。しかし、両者が必ずしも不可分に結びついている必要はありません...
このモジュールは、ユーザー入力として任意のワイヤレスデバイスと、そのデバイスに再割り当てしたい任意の有効なMACアドレスを受け付けます。プログラムは非常にシンプルで、さらに説明する必要はほとんどありません。subprocessモジュールを使用して、ワイヤレスインターフェースをダウンさせ、MACを再割り当てし、再初期化する一連のシェルコマンドを自動化します。
MACアドレスを積極的に変更している場合、1)ワイヤレスデバイスが存在すること、2)ワイヤレスデバイスがMACアドレスに対応していること、3)ユーザー入力のMACアドレスが有効な形式であること、4)ワイヤレスデバイスのMACアドレスが正常に更新されたことを確認するための何らかの検証構造や高次メソッドを持つことが賢明かもしれません。このツールはこれらの機能を自動化します。
特定のMACアドレスの代わりに「generate」オプションを選択すると、プログラムはIEEEの仕様に従って有効なMACアドレスを生成します。完全にランダム(かつ有効な)MACアドレスだけでなく、特定のベンダープレフィックス(OUI)で始まるMACアドレスや、マルチキャストおよび/またはUAAオプションを指定して生成されたMACアドレスを生成する拡張機能を実装したことを嬉しく思います。これらのオプションは、IEEEの仕様に従って拡張されたジェネレータメソッド内のバイトコードロジックをトリガーします。MACアドレスの詳細については、こちらをご覧ください。
ネットワークスキャナも非常に便利なツールであり、前述のMACチェンジャーと組み合わせると強力です。このスキャナはARPリクエスト機能を利用し、ユーザー入力として有効なIPv4またはIPv6 IPアドレスと、付随する(ただしオプションの)サブネット範囲を受け付けます。
プログラムは指定されたIPおよび/または範囲を取得し、IEEEの仕様に従って検証します(繰り返しますが、この検証はIPv4およびIPv6の標準に対して実行されます)。最後に、指定されたIPと生成されたイーサネットフレームを使用してブロードキャストオブジェクトがインスタンス化され、特定のネットワーク内のすべての接続デバイスのリストとその範囲が返され、IPがそれぞれのMACアドレスにマッピングされます。
プログラムはこれらの関連付けを示すテーブルを出力します。状況に応じて、これはMACチェンジャーへの入力として使用される可能性があります。
ARPスプーフモジュールを使用すると、特定のターゲットクライアントとそのネットワークのゲートウェイのARPテーブルを同時に操作することで、特定のネットワーク内のパケットの流れをリダイレクトできます。このモジュールは、このプロセス中にポートフォワーディングを自動的に有効にし、ARPパケットを動的に構築して送信します。
ユーザーがモジュールを終了すると、ターゲットのARPテーブルはリセットされます。これにより、管理者が不安定な状況に陥るのを防ぎます(さらに、それは親切な行為でもあります)。
このプロセスにより、管理者はクライアントとAP間のパケットフローの途中に配置されるため、管理者はすべてのデータフローにアクセスできます(データの暗号化の可能性への対処は別のスクリプトのタスクです)。ここから、自動化と正規表現によるコードの代理、強制リダイレクト、リモートアクセスなど、パケットフローオーケストレーションの無数のオプションが容易に利用可能になります。幸いなことに、Brutusはこれも自動化できます。
パケットスニファはARPスプーファを実行した後に使用する優れたモジュールです。傍受したすべてのHTTPパケットのデータ(URLまたは可能性のあるユーザー資格情報を含む)のデータフローを作成します。
このスクリプトは拡張可能であり、利用可能な多くのフィルターのいずれかでリスナーオブジェクトをインスタンス化することで、さまざまなプロトコルに対応できます。Brutusは自動的にHTTPSをダウングレードするため、HSTSが関与しない限り、データフローは偵察に使用可能です。
免責事項:本ソフトウェアおよびその中のすべてのコンテンツは研究目的のみで作成されました。私は、このソフトウェアを悪意のあるまたは違法な方法で使用しようとする者の行動について、いかなる形でも容認せず、責任を負いません。