
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 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 이벤트, 디스크에 생성된 파일)를 줄이고 특정 Anti-Virus 또는 EDR을 우회할 목적으로 Windows에서의 열거 도구 사용을 대체할 수 있습니다. 이는 Windows 호스트(예: VDI 머신 또는 워크스테이션 또는 노트북)에서 원격 Linux 머신(예: Pentest 노트북 또는 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]