
Active Directory ネットワーク内で GSSAPI の悪用が可能なホストを列挙するためのツール
gssapi-abuse は、私の DEF CON 31 の講演の一環として公開されました。この悪用ベクトルに関する完全な記事はこちらにあります: A Broken Marriage: Abusing Mixed Vendor Kerberos Stacks
このツールには2つの機能があります。 1つ目は、Active Directory に参加しており、SSH で GSSAPI 認証を提供する非 Windows ホストを列挙する機能です。
2つ目の機能は、正しい前方および/または逆引き DNS エントリを持たない GSSAPI 悪用可能ホストに対して、動的 DNS 更新を実行する機能です。 GSSAPI ベースの認証はサービスプリンシパルの一致に関して厳格であるため、DNS エントリはホスト名と IP アドレスの両方でサービスプリンシパル名と一致する必要があります。
gssapi-abuse は、正しく設定された krb5.conf とともに、動作する krb5 スタックを必要とします。
Windows ホストでは、requirements.txt にリストされている Python モジュールに加えて、MIT Kerberos ソフトウェアがインストールされている必要があります。これは MIT Kerberos Distribution Page から入手できます。 Windows の krb5.conf は C:\ProgramData\MIT\Kerberos5\krb5.conf にあります。
Python の要件をインストールする前に、libkrb5-dev パッケージをインストールする必要があります。
要件が満たされたら、pip/pip3 ツールを使用して Python の依存関係をインストールできます。
pip install -r requirements.txt
列挙モードは Active Directory に接続し、オペレーティングシステム属性に Windows という単語が含まれていないすべてのコンピュータを LDAP 検索します。
非 Windows マシンのリストが取得されたら、gssapi-abuse は SSH を介して各ホストに接続し、GSSAPI ベースの認証が許可されているかどうかを判断します。
python .\gssapi-abuse.py -d ad.ginge.com enum -u john.doe -p SuperSecret!
[=] Found 2 non Windows machines registered within AD
[!] Host ubuntu.ad.ginge.com does not have GSSAPI enabled over SSH, ignoring
[+] Host centos.ad.ginge.com has GSSAPI enabled over SSH
DNS モードは、Kerberos と dnspython を利用して、DNS-TSIG プロトコルを使用してポート 53 上で認証された DNS 更新を実行します。 現在のところ、dns モードは、有効な TGT または特定のドメインコントローラ(例: DNS/dc1.victim.local)を対象とした DNS サービスチケットを持つ、動作する krb5 設定に依存しています。
ホスト ahost.ad.ginge.com の DNS A レコードを追加する
python .\gssapi-abuse.py -d ad.ginge.com dns -t ahost -a add --type A --data 192.168.128.50
[+] Successfully authenticated to DNS server win-af8ki8e5414.ad.ginge.com
[=] Adding A record for target ahost using data 192.168.128.50
[+] Applied 1 updates successfully
ホスト ahost.ad.ginge.com の逆引き PTR レコードを追加する。 data 引数が . で終了していることに注意してください。これは重要であり、そうしないとレコードがゾーンに対する相対レコードとなり、望ましくない動作になります。 また、PTR レコードは A レコードとは異なるゾーンに保存されるため、更新するターゲットゾーンを指定する必要があります。
python .\gssapi-abuse.py -d ad.ginge.com dns --zone 128.168.192.in-addr.arpa -t 50 -a add --type PTR --data ahost.ad.ginge.com.
[+] Successfully authenticated to DNS server win-af8ki8e5414.ad.ginge.com
[=] Adding PTR record for target 50 using data ahost.ad.ginge.com.
[+] Applied 1 updates successfully
実行後の前方および逆引き DNS ルックアップ結果
nslookup ahost.ad.ginge.com
Server: WIN-AF8KI8E5414.ad.ginge.com
Address: 192.168.128.1
Name: ahost.ad.ginge.com
Address: 192.168.128.50
nslookup 192.168.128.50
Server: WIN-AF8KI8E5414.ad.ginge.com
Address: 192.168.128.1
Name: ahost.ad.ginge.com
Address: 192.168.128.50