msfvenom — это инструмент, входящий в состав Metasploit Framework. С помощью этого инструмента вы можете создавать пользовательские полезные нагрузки, адаптированные к конкретным целям и требованиям. Кроме того, вы можете прикреплять полезные данные к другим файлам, которые сделают вашу полезную нагрузку менее подозрительной. Вы также можете отредактировать коды своих полезных нагрузок и изменить их, чтобы избежать обнаружения системами обнаружения угроз.
Чтобы увидеть все варианты создания полезной нагрузки, вы можете перечислить модули, используя флаг -l
, за которым следует тип модуля. На выходе получается длинный список полезной нагрузки. Вы можете использовать команду grep
, чтобы сузить результат по своему вкусу. Вот пример для показа полезных нагрузок для Android устройств:
┌──(k1ber㉿kali)-[~]
└─$ msfvenom -l payloads | grep android
android/meterpreter/reverse_http Run a meterpreter server in Android. Tunnel communication over HTTP
android/meterpreter/reverse_https Run a meterpreter server in Android. Tunnel communication over HTTPS
android/meterpreter/reverse_tcp Run a meterpreter server in Android. Connect back stager
android/meterpreter_reverse_http Connect back to attacker and spawn a Meterpreter shell
android/meterpreter_reverse_https Connect back to attacker and spawn a Meterpreter shell
android/meterpreter_reverse_tcp Connect back to the attacker and spawn a Meterpreter shell
android/shell/reverse_http Spawn a piped command shell (sh). Tunnel communication over HTTP
android/shell/reverse_https Spawn a piped command shell (sh). Tunnel communication over HTTPS
android/shell/reverse_tcp Spawn a piped command shell (sh). Connect back stager
Что бы узнать, какие параметры необходимы для конкретной полезной нагрузки, используйте параметр --list-options
.
┌──(k1ber㉿kali)-[~]
└─$ msfvenom -p android/shell/reverse_https --list-options
Options for payload/android/shell/reverse_https:
=========================
Name: Command Shell, Android Reverse HTTPS Stager
Module: payload/android/shell/reverse_https
Platform: Android
Arch: dalvik
Needs Admin: No
Total size: 10399
Rank: Normal
Provided by:
mihi
egypt <[email protected]>
anwarelmakrahy
OJ Reeves
Basic options:
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST yes The local listener hostname
LPORT 8443 yes The local listener port
LURI no The HTTP Path
Description:
Spawn a piped command shell (sh). Tunnel communication over HTTPS
Advanced options for payload/android/shell/reverse_https:
=========================
Name Current Setting Required Description
---- --------------- -------- -----------
AndroidHideAppIcon false no Hide the application icon automatically after launch
AndroidMeterpreterDebug false no Run the payload in debug mode, with logging enabled
AndroidWakelock true no Acquire a wakelock before starting the payload
AutoRunScript no A script to run automatically on session creation.
AutoVerifySession true yes Automatically verify and drop invalid sessions
CommandShellCleanupCommand no A command to run before the session is closed
CreateSession true no Create a new session for every successful login
EnableStageEncoding false no Encode the second stage payload
HandlerSSLCert no Path to a SSL certificate in unified PEM format
HttpCookie no An optional value to use for the Cookie HTTP header
HttpHostHeader no An optional value to use for the Host HTTP header
HttpReferer no An optional value to use for the Referer HTTP header
HttpServerName Apache no The server header that the handler will send in response to requests
HttpUnknownRequestResponse <html><body><h1>It works!</h1></body></html> no The returned HTML response body when the handler receives a request that is not from a payload
HttpUserAgent Mozilla/5.0 (Macintosh; Intel Mac OS X 13_1) AppleWebKit/605.1.15 no The user-agent that the payload should use for communication Max parameter length: 255 characters
(KHTML, like Gecko) Version/16.1 Safari/605.1.15
IgnoreUnknownPayloads false no Whether to drop connections from payloads using unknown UUIDs
InitialAutoRunScript no An initial script to run on session creation (before AutoRunScript)
OverrideLHOST no When OverrideRequestHost is set, use this value as the host name for secondary requests
OverrideLPORT no When OverrideRequestHost is set, use this value as the port number for secondary requests
OverrideRequestHost false no Forces a specific host and port instead of using what the client requests, defaults to LHOST:LPORT
OverrideScheme no When OverrideRequestHost is set, use this value as the scheme for secondary requests, e.g http or https
PayloadUUIDName no A human-friendly name to reference this unique payload (requires tracking)
PayloadUUIDRaw no A hex string representing the raw 8-byte PUID value for the UUID
PayloadUUIDSeed no A string to use when generating the payload UUID (deterministic)
PayloadUUIDTracking false yes Whether or not to automatically register generated UUIDs
PingbackRetries 0 yes How many additional successful pingbacks
PingbackSleep 30 yes Time (in seconds) to sleep between pingbacks
ReverseAllowProxy false yes Allow reverse tcp even with Proxies specified. Connect back will NOT go through proxy but directly to LHOST
ReverseListenerBindAddress no The specific IP address to bind to on the local system
ReverseListenerBindPort no The port to bind to on the local system if different from LPORT
ReverseListenerComm no The specific communication channel to use for this listener
SSLVersion Auto yes Specify the version of SSL/TLS to be used (Auto, TLS and SSL23 are auto-negotiate) (Accepted: Auto, TLS, SSL23, SSL3, TLS1,
TLS1.1, TLS1.2)
StageEncoder no Encoder to use if EnableStageEncoding is set
StageEncoderSaveRegisters no Additional registers to preserve in the staged payload if EnableStageEncoding is set
StageEncodingFallback true no Fallback to no encoding if the selected StageEncoder is not compatible
StagerVerifySSLCert false no Whether to verify the SSL certificate in Meterpreter
VERBOSE false no Enable detailed status messages
WORKSPACE no Specify the workspace for this module
Evasion options for payload/android/shell/reverse_https:
=========================
Name Current Setting Required Description
---- --------------- -------- -----------
Как видите, параметров для этого эксплоита довольно много. Они делятся на две категории. Основные(Basic) параметры и дополнительные(Advanced) параметры. Вы можете создать полезную нагрузку, настроив как минимум основные параметры. Тем не менее, дополнительные параметры также очень важны. Они предлагают настройку, а также играют решающую роль в обходе систем обнаружения угроз.
В Metasploit Framework есть три разных типа модулей полезной нагрузки: Singles, Stagers и Stages. Эти различные типы обеспечивают большую гибкость и могут быть полезны в различных сценариях.
Что бы понять, является ли нагрузка поэтапной или нет, она представлена символом «/» в имени полезной нагрузки. Например, windows/shell_bind_tcp
— это одна полезная нагрузка без стадии**(Single)**, тогда как windows/shell/bind_tcp
состоит из стейджа(bind_tcp) и стейджера (оболочки).
Создание поэтапной полезной нагрузки позволяет атакующему разделить атаку на несколько этапов, чтобы увеличить вероятность ее успешного выполнения. Обычно первая стадия (stage 1) полезной нагрузки создает небольшой код, который загружает и выполняет более сложную стадию (stage 2) на целевой системе. Это может быть полезно в сценариях, где доступность или ограничения памяти на целевой системе могут затруднить выполнение полной полезной нагрузки сразу.