
Active Directory 도구를 래핑하여 LDAP, RPC, Kerberos 및 SMB를 통해 자동화된 열거, 취약점 점검, 익스플로잇 및 비밀번호 덤프를 수행하는 Bash 스크립트.
linWinPwn은 열거(LDAP, RPC, ADCS, MSSQL, Kerberos, SCCM), 취약점 검사(noPac, ZeroLogon, MS17-010, MS14-068), 개체 수정(암호 변경, 사용자를 그룹에 추가, RBCD, Shadow Credentials) 및 암호 덤프(secretsdump, lsassy, nanodump, DonPAPI)를 위해 여러 Active Directory 도구를 래핑하는 bash 스크립트입니다. 이 스크립트는 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
Kerberos 인증 강제 - 가능한 경우 NTLM 대신 Kerberos 인증 강제 사용
linWinPwn -t <Domain_Controller_IP> --force-kerb
상세 - 모든 상세 및 디버그 출력 활성화
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 머신, 워크스테이션 또는 노트북)에서 원격 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]
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 세션 | 암호 | 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 | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ |
참고 자료: