
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クローンし、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
自動設定 - モジュールを実行する前に、ターゲット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
インターフェース - 攻撃者のネットワークインターフェースを選択します
linWinPwn -t <Domain_Controller_IP> -I tun0
linWinPwn -t <Domain_Controller_IP> --interface eth0
ターゲット - スキャンするターゲットを選択します(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
カスタムワードリスト - カスタムユーザーとパスワードのワードリストを選択します
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マシン、ワークステーション、ノートPC)からリモートLinuxマシン(例:ペンテストノートPC、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]
ldap3: netexec, ldapdomaindump (NTLM), Certipy, pre2k, bloodhound, ldeep, GroupPolicyBackdoor, relayking
msldap: bloodyAD
netexec, ldapdomaindump, ldeep, windapsearch, godap, pre2k, ldapnomnom
インスピレーション: S3cur3Th1sSh1t - WinPwn
ツール:
lwp_tool_integrator.pyは、新しいツールの統合を自動化します。linWinPwn.sh、install.sh、README.mdを一度にパッチします。
authenticate()をパッチinstall.shを更新README.mdに参照と認証テーブルの行を追加使用方法:
python3 lwp_tool_integrator.py <tool_config.json>
設定例についてはlwp_tool_template.jsonを参照してください。
事前の相互同意なしにlinWinPwnを使用してターゲットを攻撃することは違法です。すべての該当する地域、州、連邦法を遵守するのはエンドユーザーの責任です。開発者は一切の責任を負わず、このプログラムによって引き起こされた誤用または損害について責任を負いません。教育目的でのみ使用してください。
| ツール | Null Session | パスワード | NTLMハッシュ | Kerberosチケット | AES鍵 | 証明書 |
|---|
netexec | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Impacket | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
bloodhound-python | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
ldapdomaindump | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
enum4linux-ng | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
bloodyAD | ❌ | ✅ | ✅ | ✅ | ❌ | ✅ |
SilentHound | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
ldeep | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
windapsearch | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
LDAPWordlistHarvester | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
LDAPConsole | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
pyLDAPmonitor | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
sccmhunter | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
ldapper | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
Adalanche | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
GPOwned | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
ACED | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
breads | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
godap | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
adcheck | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
certi.py | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
Certipy | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
certsync | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
pre2k | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
orpheus | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
smbmap | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
FindUncommonShares | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
smbclient-ng | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
manspider | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
coercer | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
privexchange | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
RunFinger.py | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
mssqlrelay | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
targetedKerberoast | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
pygpoabuse | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
DonPAPI | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
hekatomb | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
ExtractBitlockerKeys | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
evilwinrm | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
mssqlpwner | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
SoaPy | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
SCCMSecrets | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
Soaphound | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
gpoParser | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
spearspray | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
GroupPolicyBackdoor | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
NetworkHound | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
ShareHound | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
DACLSearch | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
ScriptScout | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
relayking | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
ADWS Domain Dump | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
PyADRecon | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
PyADRecon-ADWS | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ |
ADPulse | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
PowerView.py | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
evil-winrm-py | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ |
参考文献: