
Active Directory Federation Services (ADFS) に対する認証情報をテストするスクリプトです。組織の ADFS URL を計算し、パスワードスプレー攻撃やブルートフォース攻撃を可能にします。
主なアイデアは、各テスト間にランダムかつ長い遅延を設け、プロキシリストまたは Tor を使用して、ブルーチームによる検出をより困難にしながらパスワードスプレー攻撃を行うことです。ブルートフォース攻撃や、username:password 形式の認証情報(例:Pwndb から取得したもの)のテストも可能です。テスト済みのログインはログファイルに保存され、重複してテストされることを防ぎます。
./adfsbrute.py -t TARGET [-u USER] [-U USER_LIST] [-p PASSWORD] [-P PASSWORD_LIST] [-UL userpassword_list]
[-m MIN_TIME] [-M MAX_TIME] [-tp TOR_PASSWORD] [-pl PROXY_LIST] [-n NUMBER_OF_REQUESTS_PER_IP]
[-s STOP_ON_SUCCESS] [-r RANDOM_COMBINATIONS] [-d DEBUG] [-l LOG_FILE]
攻撃パラメータ:
* -t: 対象ドメイン。例: test.com
* -u: 単一のユーザー名。例: [email protected]
* -U: ユーザー名リストを含むファイル。例: users.txt
* -p: 単一のパスワード。例: Company123
* -P: パスワードリストを含むファイル。例: passwords.txt
* -UP: "username:password" 形式の認証情報リストを含むファイル。例: userpass.txt
* -m : 各テスト間の最小ランダム待機秒数。デフォルト: 30
* -M : 各テスト間の最大ランダム待機秒数。デフォルト: 60
* -tp: Tor パスワード(Tor を使用して IP アドレスを変更)
* -pl: プロキシリストを使用(プロキシ IP のリストを使用して IP アドレスを変更)
* -n: IP アドレスを変更するまでのリクエスト数(-tp または -pl と併用)。デフォルト: 1
* -s: 正しい認証情報が 1 つ見つかったら停止。デフォルト: False
* -r: ユーザーとパスワードの組み合わせをランダム化。デフォルト: True
* -d: デバッグメッセージを表示。デフォルト: True
* -l: テスト済み認証情報のログファイルの場所。デフォルト: tested.txt
パスワード "Company123" を使用したパスワードスプレー、Tor パスワードは "test123"、3 リクエストごとに IP を変更:
python3 adfsbrute.py -t company.com -U users.txt -p Company123 -tp test123 -n 3
パスワード "Company123" を使用したパスワードスプレー、Tor パスワードは "test123"、リクエストごとに IP を変更、ランダムな遅延時間は 10 秒から 20 秒、ユーザーの順序をランダム化しない:
python3 adfsbrute.py -t company.com -U users.txt -p Company123 -tp test123 -m 10 -M 20 -r False
ADFS URL の検出:
python3 adfsbrute.py -t company.com
リクエストごとに IP を変更するために Tor を使用するには、パスワードをハッシュ化する必要があります:
tor --hash-password test123
ファイル /etc/tor/torrc で、変数 ControlPort と変数 HashedControlPassword のコメントを解除し、後者にハッシュを追加します:
ControlPort 9051
HashedControlPassword 16:7F314CAB402A81F860B3EE449B743AEC0DED9F27FA41831737E2F08F87
Tor サービスを再起動し、このパスワードをスクリプトの引数として使用します("-tp test123" または "--tor_password 123")
service tor restart
このスクリプトはセキュリティ監査でのテスト用に実装されています。ADFS を所有する企業の適切な許可なしに使用しないでください。アカウントがロックされる可能性があります。