Table of Contents
In this post, we are going to dive into the most popular penetration testing framework - Metasploit. We will look at 'What is the Metasploit framework,' 'the Installation process,' and how to use it in ethical hacking. Let's get started.
What is the Metasploit Framework?
The Metasploit framework is the leading exploitation framework used by Penetration testers, Ethical hackers, and even hackers to probe and exploit vulnerabilities on systems, networks, and servers. It is an open-source utility developed by Rapid7 software company, which has also designed other security tools, including the Nexpose vulnerability scanner. For anybody aspiring to get in the security field, you need to master the Metasploit framework to prosper.
Metasploit Framework Interfaces
Metasploit is available in four (4) interfaces:
- msfcli: Commonly written as 'MSFcli.' It is a single command-line interface for the Metasploit framework.
- msfconsole: It is the most popular Metasploit interface for the Metasploit framework. It gives you an interactive shell where you can execute commands and run exploits.
- msfweb: It is the web interface of Metasploit that allows you to set up projects and carry out penetration testing tasks.
- Armitage: It is the Graphical User Interface (GUI) front-end for Metasploit developed in Java.
The msfconsole is the most popular interface for Metasploit, and it's also the interface we will be using in this post.
Why Learn and Use Metasploit?
Before tools like Metasploit came along, penetration testers had to carry out all tasks manually using various tools, some not even supported by the target system. They had to code their tools and scripts from scratch before deploying them manually on the target system or network. A term like 'Remote testing' used today was uncommon. However, that has changed with Metasploit.
This framework comes with more than 1677 exploits (regularly updated) for over 25 platforms. That includes Android, Windows, Linux, PHP, Java, Cisco, etc. It also comes with more than 500 payloads which include:
- Dynamic payloads that enable users to generate payloads and scripts that are undetectable by antiviruses.
- Command shell payloads that enable users to gain access and execute commands/ scripts on the target machine.
- Meterpreter payloads provide users with an interactive command-line shell that you can use to explore and exploit the target machine.
Minimum System Requirements for Metasploit
Metasploit is available for various platforms (thanks to open-source installers available on the Rapid7 website). The framework supports Debian-based systems, RHEL-based systems, Windows Server 2008 or 2012 R2, Windows 7 SP1+, 8.1, or 10, and more. You can also run Metasploit on Android using applications like Termux.
The minimum hardware requirements for running Metasploit are:
- 512 MB RAM if you are using a system without GUI. The higher, the better.
- 2 GB RAM if you are using a Graphical system. The higher, the better.
- 1 GB Disk space
Getting Started With the Metasploit Framework
In this post, we will run Metasploit on Kali Linux. Kali Linux is the leading penetration testing distribution and ships with more than 600 security tools. You can checkout our step-by-step guide on installing Kali Linux on VirtualBox.
1. Start the PostgreSQL Database Service
To get started Metasploit framework, you need to start the PostgreSQL database. That enables Metasploit to carry out faster searches and store information when scanning or performing an exploit. Launch the Terminal and execute the command below.
sudo service postgresql start
sudo msfdb init
2. Launch Metasploit
As discussed above, there are four interfaces available for use with the Metasploit framework. We will use the msfconsole in this post. Now, there are two ways you can use to launch msfconsole on Kali Linux.
- Command-line method
- Graphical Method
With the command-line method, execute the command below on your Terminal.
Alternatively, you can start
msfconsole from the Kali GUI by clicking on the Menu button -> Exploitation tools -> Metasploit framework.
That will open the Terminal, and you will be prompted to enter the user password before launching the msfconsole command-line shell.
After successfully launching
msfconsole, you will see a Terminal prompt with the format
msf[metasploit_version]. For example, in our case, we are getting a
msf5 > prompt, as shown below. That means we are running Metasploit version 5. If you are using a newer version, say Metasploit version 6, you will see a
msf6 > prompt.
1. help command
The first and the most basic command you should execute is the
help command. If you are lost and don't know which command to use, you can always refer to this documentation. It shows you all the commands you can run and a description of what they do.
2. search command
The other very useful command is
search. It allows you to search for a particular module among the hundreds of modules available in Metasploit. This command can take three parameters:
For example, I will use the syntax below to search for a common Unix exploit for VSFTPD version 2.3.4.
search type:exploit platform:unix vsftpd
3. use command
The other most helpful command is the
use command. It allows you to load a module that you want to use to attack or penetrate a system. These modules include exploits, payloads, auxiliaries, encoders, evasions, nops, and posts.
As a demonstration, we will use a module to exploit an existing vulnerability on VSFTPD version 2.3.4. On the msfconsole, run the
use command below to load our
If the module were successfully loaded, the prompt would change, as shown in the image above. It appends the path of the module in a different color (mostly red). If you see a similar message like "No payload configured, defaulting to...," don't worry. It means Metasploit could not automatically load the payload, and you will need to do it manually. In simple terms, a Payload is the code/ script executed through the said exploit.
4. show options command
After successfully loading a module, the following command you need to execute is the
show options command.
This command shows you the different options you can change with the module. For example, in the image above, we see this module requires us to set the RHOST and RPORT.
- RHOST: That is the IP address of the remote system that you want to exploit.
- RPORT: That is the target port you wish to use on the target system.
5. set command
The other helpful command is
set. This one allows you to set the various value displayed using the
show options command. For example, if you wish to assign values to
RPORT we would use the syntax below.
set RHOST [target_IP]
set RPORT [traget_Port]
set RHOST 192.168.1.43
set RPORT 21
If you rerun the show options command, you will notice there is a difference. The options RHOSTS and RPORT now have values assigned to them.
6. show payloads command
The other command you need to run after this step is
show payloads. This command lists all the payloads compatible with this module.
Running this command on our module only gave us one compatible payload. However, some modules will have more than ten compatible modules to choose from.
7. set payload command
To load a particular payload, use the set command as shown below.
set payload cmd/unix/interact
8. run command
After successfully loading the payload, you are now ready to run this exploit against an existing vulnerability on the target system. Execute the command below.
From the image above, you can see we successfully ran the exploit against a target system and obtained a command shell session. That means we are now inside the system, and we can now run any Linux commands from our msfconsole, and they will execute on our target system.
That's it! I believe you now have a good understanding of the Metasploit framework and how to get started. If you are setting foot in the security field, please check out our post on Setting Up a Hacking Lab with Metasploitable. That is an intentionally vulnerable machine that helps you learn Metasploit at an in-depth level, as there are so many vulnerabilities in this system that you can exploit.