Metasploit 滲透測試手冊第三版 第二章 資訊收集與掃描(翻譯)

合天網安實驗室發表於2019-04-15

第二章 資訊收集和掃描

在本章中,我們將學習以下內容

使用Metasploit被動收集資訊

使用Metasploit主動收集資訊

使用Nmap進行埠掃描

使用db_nmap方式進行埠掃描

使用ARP進行主機發現

UDP服務探測

SMB掃描和列舉

SSH版本掃描

FTP掃描

SMTP列舉

SNMP列舉

HTTP掃描

WinRM掃描和爆破

Nessus結合使用

NeXpose結合使用

OpenVAS結合使用

簡介

資訊收集是滲透測試中首先要做的重要事項之一,目的是儘可能多的查詢關於目標的資訊,我們掌握的資訊越多,滲透成功的機會越大。在資訊收集階段,我們主要任務是收集關於目標機器的一切資訊,比如IP地址,開放的服務,開放的埠。這些資訊在滲透測試過程中啟到了至關重要的作用。為了實現這一目的,我們將在本章學習各種掃描技術、如SMB掃描、SSH服務掃描,FTP掃描、SNMP列舉、HTTP掃描以及WinRM掃描和暴力破解。

收集資訊的方式主要有三種:

1、被動資訊收集:這種方式是指在不物理連線或訪問目標的時候,獲取目標的相關資訊,這意味著我們需要使用其他資訊來源獲得目標資訊。比如查詢whois資訊。假設我們的目標是一個線上的Web服務,那麼通過whois查詢可以獲得它的ip地址,域名資訊,子域資訊,伺服器位置資訊等。

2、主動資訊收集:這種方式是指與目標建立邏輯連線獲取資訊,這種方式可以進一步的為我們提供目標資訊,讓我們對目標的安全性進一步理解。在埠掃描中,使用最常用的主動掃描技術,探測目標開放的埠和服務。

3、社會工程學:這種方式類似於被動資訊收集,主要是針對人為錯誤,資訊以列印輸出、電話交談、電子郵件等形式洩露。使用這種方法的技術有很多,收集資訊的方式也不盡相同,因此,社會工程學本身就是一個技術範疇。

社會工程的受害者被誘騙釋出他們沒有意識到會被用來攻擊企業網路的資訊。例如,企業中的員工可能會被騙向假裝是她信任的人透露員工的身份號碼。儘管該員工編號對員工來說似乎沒有價值,這使得他在一開始就更容易洩露資訊,但社會工程師可以將該員工編號與收集到的其他資訊一起使用,以便更快的找到進入企業網路的方法。

1、使用Metasploit進行被動資訊收集

在本章中,我們將詳細學習資訊收集的各種被動和主動技術。首先,我們將學習分析最常用和最容易被忽視的被動資訊收集技術,然後,我們將重點關注通過埠掃描獲取資訊。Metasploit 具有多種內建掃描功能,以及一些與之整合的第三方工具,以進一步增強埠掃描功能。我們將學習使用內建的掃描器,以及一些與Metasploit 框架結合使用的第三方掃描工具。讓我們開始吧。

準備工作

我們將從公司域名開始收集資訊,獲取公司有關資訊,收集子域名,檢測蜜罐、收集電子郵件地址等。

怎麼做

Metasploit中有好幾個資訊收集模組,在本節中,我們將學習使用其中的一些模組,建議你自行探索學習所有的資訊收集模組。

DNS記錄掃描和列舉

DNS掃描和列舉模組可用於從給定的DNS伺服器收集有關域名的資訊,執行各種DNS查詢(如域傳送,反向查詢,SRV記錄等)

1、程式位於auxiliary模組中,進入msfconsole後,我們可以使用use命令呼叫我們想要的模組,我們要使用的auxiliary/gather/enum_dns模組。使用use auxiliary/gather/enum_dns 進入模組,輸入info可以檢視模組的資訊,包括作者,描述,基本配置資訊等。

msf5 > use auxiliary/gather/enum_dns //切換到 enum_dns模組
msf5 auxiliary(gather/enum_dns) > info //檢視模組資訊

       Name: DNS Record Scanner and Enumerator
     Module: auxiliary/gather/enum_dns
    License: Metasploit Framework License (BSD)
       Rank: Normal

Provided by:
  Carlos Perez <carlos_perez@darkoperator.com>
  Nixawk

Check supported:
  No

Basic options:
  Name         Current Setting                                              Required  Description
  ----         ---------------                                              --------  -----------
  DOMAIN                                                                    yes       The target domain
  ENUM_A       true                                                         yes       Enumerate DNS A record
  ENUM_AXFR    true                                                         yes       Initiate a zone transfer against each NS record
  ENUM_BRT     false                                                        yes       Brute force subdomains and hostnames via the supplied wordlist
  ENUM_CNAME   true                                                         yes       Enumerate DNS CNAME record
  ENUM_MX      true                                                         yes       Enumerate DNS MX record
  ENUM_NS      true                                                         yes       Enumerate DNS NS record
  ENUM_RVL     false                                                        yes       Reverse lookup a range of IP addresses
  ENUM_SOA     true                                                         yes       Enumerate DNS SOA record
  ENUM_SRV     true                                                         yes       Enumerate the most common SRV records
  ENUM_TLD     false                                                        yes       Perform a TLD expansion by replacing the TLD with the IANA TLD list
  ENUM_TXT     true                                                         yes       Enumerate DNS TXT record
  IPRANGE                                                                   no        The target address range or CIDR identifier
  NS                                                                        no        Specify the nameserver to use for queries (default is system DNS)
  STOP_WLDCRD  false                                                        yes       Stops bruteforce enumeration if wildcard resolution is detected
  THREADS      1                                                            no        Threads for ENUM_BRT
  WORDLIST     /usr/share/metasploit-framework/data/wordlists/namelist.txt  no        Wordlist of subdomains

Description:
  This module can be used to gather information about a domain from a
  given DNS server by performing various DNS queries such as zone
  transfers, reverse lookups, SRV record brute forcing, and other
  techniques.

References:
  https://cvedetails.com/cve/CVE-1999-0532/
  OSVDB (492)

msf5 auxiliary(gather/enum_dns) >
複製程式碼

2、設定需要查詢的域名,設定執行緒數量,然後執行它

msf5 auxiliary(gather/enum_dns) > set DOMAIN packtpub.com  //設定需要查詢的域名
DOMAIN => packtpub.com
msf5 auxiliary(gather/enum_dns) > set THREADS 10 //設定執行緒數
THREADS => 10
msf5 auxiliary(gather/enum_dns) > run

[*] querying DNS NS records for packtpub.com                                                       
[+] packtpub.com NS: dns3.easydns.org.                                                             
[+] packtpub.com NS: dns4.easydns.info.                                                          
[+] packtpub.com NS: dns1.easydns.com.  
[+] packtpub.com NS: dns2.easydns.net.                
...                                                         
[*] Auxiliary module execution completed                                                                                                                 
msf5 auxiliary(gather/enum_dns) >                  
複製程式碼

從輸出資訊中可以看到獲取的DNS記錄

Metasploit 滲透測試手冊第三版 第二章 資訊收集與掃描(翻譯)

更多

dns掃描和列舉模組也可以用於主動資訊收集,通過爆破的方式,設定ENUM_BRTtrue,可以通過字典暴力列舉子域名和主機名。WORDLIST選項可以設定字典檔案。

CorpWatch 公司名稱資訊收集

收集公司資訊也是必不可少的,我們可以使用 CorpWatch公司名稱資訊搜尋模組:auxiliary/gather/corpwatch_lookup_name,通過該模組可以收集公司的名稱,地址,部門和行業資訊。該模組與CorpWatch API連線,以獲取給定公司名稱的公開可用資訊。

API申請:api.corpwatch.org

切換到auxiliary/gather/corpwatch_lookup_name模組,設定好公司名字,設定資訊顯示的數量

msf5 > use auxiliary/gather/corpwatch_lookup_name 
msf5 auxiliary(gather/corpwatch_lookup_name) > set COMPANY_NAME Microsoft
COMPANY_NAME => Microsoft
msf5 auxiliary(gather/corpwatch_lookup_name) > set LIMIT 1
LIMIT => 1
msf5 auxiliary(gather/corpwatch_lookup_name) > run

[*] Company Information
---------------------------------
[*] CorpWatch (cw) ID): cw_4803
[*] Company Name: MICROSOFT CORP
[*] Address: ONE MICROSOFT WAY, REDMOND WA 98052-6399
[*] Sector: Business services
[*] Industry: Services-prepackaged software
[*] Auxiliary module execution completed
msf5 auxiliary(gather/corpwatch_lookup_name) > 
複製程式碼

Tip:此網站被Q,需要配置代理才能使用這個服務。

搜尋引擎子域名蒐集器

收集子域名是尋找新目標的好辦法,我們可以使用搜尋引擎子域名收集模組。

模組名:auxiliary/gather/searchengine_subdomains_collector

YahooBing收集域名的子域資訊

切換到這個模組,設定好要要查詢的域名,然後執行

msf5 > use auxiliary/gather/searchengine_subdomains_collector
msf5 auxiliary(gather/searchengine_subdomains_collector) > set TARGET packtpub.com
TARGET => packtpub.com
msf5 auxiliary(gather/searchengine_subdomains_collector) > run

[*] Searching Bing for subdomains from domain:packtpub.com
[*] Searching Yahoo for subdomains from domain:packtpub.com
[+] domain:packtpub.com subdomain: subscription.packtpub.com
[*] Searching Bing for subdomains from ip:54.171.32.62
[*] Searching Yahoo for subdomains from ip:54.171.32.62
[+] ip:54.171.32.62 subdomain: niobase.com
[+] ip:54.171.32.62 subdomain: demandpeoples.vote
[*] Searching Bing for subdomains from ip:34.240.217.226
[-] ip:34.240.217.226 - getaddrinfo: Name or service not known
[*] Searching Yahoo for subdomains from ip:34.240.217.226
[+] ip:34.240.217.226 subdomain: www.snp.org
[+] ip:34.240.217.226 subdomain: answerthepublic.com
[*] Searching Bing for subdomains from ip:34.243.45.171
[-] ip:34.243.45.171 - getaddrinfo: Name or service not known
[*] Searching Yahoo for subdomains from ip:34.243.45.171
[*] Searching Bing for subdomains from ip:34.248.41.77
[*] Searching Yahoo for subdomains from ip:34.248.41.77
[+] ip:34.248.41.77 subdomain: www.buzzi.space
[+] ip:34.248.41.77 subdomain: www.bookishfirst.com
[+] ip:34.248.41.77 subdomain: www.vizlib.com
[+] ip:34.248.41.77 subdomain: www.alphacodeincubate.club
[+] ip:34.248.41.77 subdomain: www.appliedmldays.org
[+] ip:34.248.41.77 subdomain: www.accessable.co.uk
[*] Searching Bing for subdomains from ip:34.254.137.88
[-] ip:34.254.137.88 - getaddrinfo: Name or service not known
[*] Searching Yahoo for subdomains from ip:34.254.137.88
複製程式碼

通過這個模組,我們收集到了一些新的目標。

我們已經學習了一些基礎模組的使用,讓我們來學習使用一些更強大的工具吧。

Censys 搜尋

Censys是一個網際網路裝置搜尋引擎,Censys每日通過ZMapZGrab掃描網際網路上的主機和網站,持續監控網際網路上所有可訪問的伺服器和裝置。

我們可以使用Censys搜尋模組,通過Censys REST API進行資訊查詢。可以檢索超過100W的網站和裝置資訊。

Tip:如果需要使用Censys搜尋模組,需要去https://censys.io註冊獲得API和金鑰

msf5 > use auxiliary/gather/censys_search
msf5 auxiliary(gather/censys_search) > set CENSYS_DORK packtpub.com //設定目標站點
CENSYS_DORK => packtpub.com
msf5 auxiliary(gather/censys_search) > set CENSYS_SEARCHTYPE ipv4 //設定搜尋型別
CENSYS_SEARCHTYPE => ipv4
msf5 auxiliary(gather/censys_search) > set CENSYS_SECRET l5xZ******Z4xzVmIPZ0P //設定censys金鑰
CENSYS_SECRET => l5xZa0zJ*******VlCZ4xzVmIPZ0P
msf5 auxiliary(gather/censys_search) > set CENSYS_UID 24d813a********c1b3e80c9e //設定 API_ID
CENSYS_UID => 24d813a******2-89c1b3e80c9e
msf5 auxiliary(gather/censys_search) > run

[+] 109.234.207.108 - 443/https,80/http
[+] 109.234.207.108 - 443/https,80/http
[+] 34.253.81.66 - 443/https,80/http
[+] 34.253.81.66 - 443/https,80/http
[+] 123.252.235.122 - 443/https
[+] 109.234.200.116 - 443/https
[+] 83.166.169.240 - 443/https,22/ssh,80/http
......
[+] 67.198.37.17 - 443/https,80/http,25/smtp,53/dns
[+] 67.198.37.17 - 443/https,80/http,25/smtp,53/dns
[+] 67.198.37.17 - 443/https,80/http,25/smtp,53/dns
[+] 67.198.37.17 - 443/https,80/http,25/smtp,53/dns
[+] 172.104.243.217 - 80/http
[+] 66.42.34.69 - 443/https,80/http
[+] 66.42.34.69 - 443/https,80/http
[*] Auxiliary module execution completed
msf5 auxiliary(gather/censys_search) > 
複製程式碼

收集到了非常多的IP資訊和埠資訊

Shodan 搜尋引擎

Shodan搜尋引擎是一個付費的網際網路裝置搜尋引擎,Shodan執行你搜尋網站的Banners資訊,裝置的後設資料,比如裝置的位置,主機名,作業系統等。

Tip:同樣要使用Shodan搜尋模組,需要先去Shodan官網( www.shodan.io)註冊獲取API Key。

msf5 > use auxiliary/gather/shodan_search 
msf5 auxiliary(gather/shodan_search) > set QUERY hostname:packtpub.com //設定目標機器
QUERY => hostname:packtpub.com
msf5 auxiliary(gather/shodan_search) > set SHODAN_APIKEY SDaE*******ABKTxJ3 //設定shodan api key
SHODAN_APIKEY => SDaEijF******dudxCABKTxJ3
msf5 auxiliary(gather/shodan_search) > run

[*] Total: 3 on 1 pages. Showing: 1 page(s)
[*] Collecting data, please wait...

Search Results
==============

 IP:Port             City        Country         Hostname
 -------             ----        -------         --------
 83.166.169.228:80   Nottingham  United Kingdom  packtpub.com
 83.166.169.248:443  Nottingham  United Kingdom  imap.packtpub.com
 83.166.169.248:80   Nottingham  United Kingdom  imap.packtpub.com

[*] Auxiliary module execution completed
複製程式碼

通過Shodan搜尋模組可以找到更多目標的資訊,比如 IP 地址,開放的埠,位置資訊等。

Shodan 蜜罐檢查

檢測目標是否為蜜罐,避免浪費時間或因為試圖攻擊蜜罐而被封鎖。使用Shodan Honeyscore Client模組,可以利用Shodan搜尋引擎檢測目標是否為蜜罐。結果返回為01的評級分數,如果是1,則是一個蜜罐。

msf5 > use auxiliary/gather/shodan_honeyscore 
msf5 auxiliary(gather/shodan_honeyscore) > set SHODAN_APIKEY SDa******CABKTxJ3
SHODAN_APIKEY => SDaEij*****xCABKTxJ3
msf5 auxiliary(gather/shodan_honeyscore) > set TARGET 83.166.169.248
TARGET => 83.166.169.248
msf5 auxiliary(gather/shodan_honeyscore) > run

[*] Scanning 83.166.169.248
[-] 83.166.169.248 is not a honeypot
[*] 83.166.169.248 honeyscore: 0.0/1.0
[*] Auxiliary module execution completed
msf5 auxiliary(gather/shodan_honeyscore) > 
複製程式碼
郵箱資訊收集

收集郵箱資訊是滲透測試中常見的部分,它可以讓我們瞭解網際網路上目標的痕跡,以便用於後續的暴力攻擊以及網路釣魚等活動。

我們可以使用auxiliary/gather/search_email_collector模組,該模組是利用搜尋引擎獲取與目標有關的電子郵件資訊。

msf5 > use auxiliary/gather/search_email_collector 
msf5 auxiliary(gather/search_email_collector) > set DOMAIN packtpub.com
DOMAIN => packtpub.com
msf5 auxiliary(gather/search_email_collector) > run

[*] Harvesting emails .....
[*] Searching Google for email addresses from packtpub.com
[*] Extracting emails from Google search results...
[*] Searching Bing email addresses from packtpub.com
[*] Extracting emails from Bing search results...
[*] Searching Yahoo for email addresses from packtpub.com
[*] Extracting emails from Yahoo search results...
[*] Located 3 email addresses for packtpub.com
....
[*] Auxiliary module execution completed
複製程式碼

從輸出資訊來看,可以看到該模組利用GoogleBingYohoo搜尋目標有關的電子郵件地址。

2、使用Metasploit進行主動資訊收集

通常來說,通過掃描進行主動資訊收集,從這一步開始,我們將直接與目標進行邏輯連線。

埠掃描是一個有趣的資訊收集過程,它涉及對目標系統更深入的搜尋,但是由於主動埠掃描涉及對目標系統直接訪問,可能會被防火牆和入侵檢測系統檢測到。

怎麼做

Metasploit框架中,有各種各樣的埠掃描模組可供我們使用,從而允許我們準確的對目標系統進行探測。我們可以通過search portscan 命令檢視這些模組。

msf5 > search portscan

Matching Modules
================

   #  Name                                              Disclosure Date  Rank    Check  Description
   -  ----                                              ---------------  ----    -----  -----------
   1  auxiliary/scanner/http/wordpress_pingback_access                   normal  Yes    Wordpress Pingback Locator
   2  auxiliary/scanner/natpmp/natpmp_portscan                           normal  Yes    NAT-PMP External Port Scanner
   3  auxiliary/scanner/portscan/ack                                     normal  Yes    TCP ACK Firewall Scanner
   4  auxiliary/scanner/portscan/ftpbounce                               normal  Yes    FTP Bounce Port Scanner
   5  auxiliary/scanner/portscan/syn                                     normal  Yes    TCP SYN Port Scanner
   6  auxiliary/scanner/portscan/tcp                                     normal  Yes    TCP Port Scanner
   7  auxiliary/scanner/portscan/xmas                                    normal  Yes    TCP "XMas" Port Scanner
   8  auxiliary/scanner/sap/sap_router_portscanner                       normal  No     SAPRouter Port Scanner
複製程式碼
TCP 埠掃描

讓我們從TCP埠掃描模組開始,看看我們能獲取目標的哪些資訊?

我們要使用的模組是use auxiliary/scanner/portscan/tcp

Tip:我們將利用此模組掃描滲透測試實驗環境的網路,請遵守當地法律法規,請勿直接掃描網際網路裝置。

msf5 > use auxiliary/scanner/portscan/tcp
msf5 auxiliary(scanner/portscan/tcp) > set RHOSTS 192.168.177.0/24 //設定目標網路
RHOSTS => 192.168.177.0/24
msf5 auxiliary(scanner/portscan/tcp) > set THREADS 100 //設定執行緒數
THREADS => 100
msf5 auxiliary(scanner/portscan/tcp) > run

[+] 192.168.177.1:        - 192.168.177.1:22 - TCP OPEN
[+] 192.168.177.1:        - 192.168.177.1:21 - TCP OPEN
複製程式碼

Tip:掃描器模組一般使用RHOSTS,表示掃描整個網路,而不是RHOST(單機)

當我們使用Metasploit模組的時候,可以使用show options檢視所有可配置的選項,使用show missing檢視必須要配置的選項。

msf5 auxiliary(scanner/portscan/tcp) > show options

Module options (auxiliary/scanner/portscan/tcp):

   Name         Current Setting  Required  Description
   ----         ---------------  --------  -----------
   CONCURRENCY  10               yes       The number of concurrent ports to check per host
   DELAY        0                yes       The delay between connections, per thread, in milliseconds
   JITTER       0                yes       The delay jitter factor (maximum value by which to +/- DELAY) in milliseconds.
   PORTS        1-10000          yes       Ports to scan (e.g. 22-25,80,110-900)
   RHOSTS                        yes       The target address range or CIDR identifier
   THREADS      1                yes       The number of concurrent threads
   TIMEOUT      1000             yes       The socket connect timeout in milliseconds

msf5 auxiliary(scanner/portscan/tcp) > show missing

Module options (auxiliary/scanner/portscan/tcp):

   Name    Current Setting  Required  Description
   ----    ---------------  --------  -----------
   RHOSTS                   yes       The target address range or CIDR identifier

msf5 auxiliary(scanner/portscan/tcp) > 
複製程式碼
TCP SYN 掃描

相對普通的TCP掃描來說,SYN掃描速度更快,因為它不會完成TCP三次握手,而且可以在一定程度上躲避防火牆和入侵檢測系統的檢測。

使用的模組是auxiliary/scanner/portscan/syn,使用該模組,需要指定埠範圍。

msf5 > use auxiliary/scanner/portscan/syn
msf5 auxiliary(scanner/portscan/syn) > set INTERFACE eth0 //設定網路卡
INTERFACE => eth0
msf5 auxiliary(scanner/portscan/syn) > set PORTS 1-10000 //設定埠範圍
PORTS => 1-10000
msf5 auxiliary(scanner/portscan/syn) > set THREADS 256 //設定執行緒數
THREADS => 256
msf5 auxiliary(scanner/portscan/syn) > set RHOSTS 192.168.177.0/24 //設定目標網路
RHOSTS => 192.168.177.0/24
msf5 auxiliary(scanner/portscan/syn) > run
複製程式碼

3、埠掃描:Nmap 方式

Nmap是安全人員首選的強大網路掃描工具,我們將從初級到高階,詳細分析Nmap的各種掃描技術。

準備工作

你可以直接在msfconsole中執行Nmap,但是如果要將結果匯入到Metasploit資料庫中,需要使用-oX選項匯出XML格式的報告檔案,然後使用db_import命令將結果匯入進來。

怎麼做

1、啟動msfconsole,然後輸入nmap

msf5 > nmap
[*] exec: nmap

Nmap 7.70 ( https://nmap.org )
Usage: nmap [Scan Type(s)] [Options] {target specification}
TARGET SPECIFICATION:
  Can pass hostnames, IP addresses, networks, etc.
  Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
  -iL <inputfilename>: Input from list of hosts/networks
  -iR <num hosts>: Choose random targets
  --exclude <host1[,host2][,host3],...>: Exclude hosts/networks
  --excludefile <exclude_file>: Exclude list from file
HOST DISCOVERY:
  -sL: List Scan - simply list targets to scan
  -sn: Ping Scan - disable port scan
  -Pn: Treat all hosts as online -- skip host discovery
  -PS/PA/PU/PY[portlist]: TCP SYN/ACK, UDP or SCTP discovery to given ports
  -PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes
  -PO[protocol list]: IP Protocol Ping
複製程式碼

2、進行TCP掃描,使用-sT 引數,這是預設和最基本的掃描方式,它會完成TCP三次握手來檢測目標機器上的埠。

msf5 > nmap -sT 192.168.177.144                                              
[*] exec: nmap -sT 192.168.177.144                                           
                                                                             
Starting Nmap 7.70 ( https://nmap.org ) at 2019-04-12 12:20 CST              
Nmap scan report for 192.168.177.144                                         
Host is up (0.00044s latency).                                               
Not shown: 990 filtered ports                                                
PORT      STATE SERVICE                                                      
21/tcp    open  ftp                                                          
22/tcp    open  ssh                                                          
80/tcp    open  http                                                         
4848/tcp  open  appserv-http                                                 
8022/tcp  open  oa-system                                                    
8080/tcp  open  http-proxy                                                   
8383/tcp  open  m2mservices                                                  
9200/tcp  open  wap-wsp                                                      
49153/tcp open  unknown                                                      
49154/tcp open  unknown                                                      
MAC Address: 00:0C:29:D7:02:F6 (VMware)                                      
                                                                             
Nmap done: 1 IP address (1 host up) scanned in 5.31 seconds                  
msf5 >                                                                       
複製程式碼

Tip:當未指定埠範圍的時候,nmap預設掃描常見的1000個埠。

3、進行TCP SYN掃描,使用-sS引數,SYN掃描不會建立完整的TCP三次握手過程,也稱半開連線掃描,SYN掃描被認為是一種比較隱蔽的掃描技術。

msf5 > nmap -sS 192.168.177.144 -p 22-5000
[*] exec: nmap -sS 192.168.177.144 -p 22-5000

Starting Nmap 7.70 ( https://nmap.org ) at 2019-04-12 12:29 CST
Nmap scan report for 192.168.177.144
Host is up (0.00037s latency).
Not shown: 4975 filtered ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
1617/tcp open  nimrod-agent
4848/tcp open  appserv-http
MAC Address: 00:0C:29:D7:02:F6 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 14.45 seconds
msf5 >
複製程式碼

大多數情況下,TCP連線掃描和SYN掃描輸出結果是相似的,唯一的區別是,SYN更難被防火牆和IDS檢測到。當然現代的防火牆幾乎都能捕獲SYN掃描,-p引數設定我們想要掃描的埠範圍。

4、UDP掃描使用-sU引數,用於識別目標機器上開放的UDP埠掃描技術,UDP掃描會傳送空的(沒有資料)UDP報頭到目標埠,僅通過ICMP訊息來判斷目標埠是否開放。

msf5 > nmap -sU 192.168.177.144
[*] exec: nmap -sU 192.168.177.144

Starting Nmap 7.70 ( https://nmap.org ) at 2019-04-12 12:36 CST
Nmap scan report for 192.168.177.144
Host is up (0.00035s latency).
Not shown: 999 open|filtered ports
PORT    STATE SERVICE
137/udp open  netbios-ns
MAC Address: 00:0C:29:D7:02:F6 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 16.36 seconds
msf5 >
複製程式碼

TIp:不指定埠範圍的情況下,預設掃描常見的1000個UDP

它是如何工作的

我們分析了三種不同型別的nmap掃描,它們在滲透測試中非常有用。Nmap提供了許多種不同的掃描方是,這裡我們只重點討論這三種,即TCP連線掃描、SYN隱蔽掃描和UDP掃描。可以將Nmap的不同掃描選項組合到一起使用,已便對目標進行更高階和更復雜的掃描。

在滲透測試中,掃描過程可以提供很多有用的結果。掃描中收集的資訊構成了後續滲透測試的基礎,因此強烈建議你掌握掃描型別的相關知識,讓我們更深入瞭解下我們剛剛學習的這些掃描技術。

TCP連線掃描是最基本的掃描技術,此掃描過程會與目標建立完整的TCP連線。它使用作業系統網路功能建立連線,掃描程式向目標傳送SYN資料包,如果埠開放,目標會返回ACK訊息。然後掃描程式向目標傳送ACK報文,成功建立連線,這就是所謂的三次握手過程。連線開啟後立即終止,這種技術有它的優點,但很容易被防火牆和IDS檢測到。

SYN掃描是另一種型別的TCP掃描,但它不會與目標建立完整的連線。 它不使用作業系統的網路功能,而上生成原始IP包並監視響應報文。如果目標埠是開放的,目標會響應ACK訊息,然後掃描程式會傳送RST結束連線。因此又稱為半開掃描。這也被認為是一種隱蔽掃描技術,可以避免被一些防火牆和IDS檢測到。

UDP掃描是一種無連線掃描技術,因此,無論目標是否收到資料包,都不會返回資訊給掃描程式。如果目標埠關閉,則掃描程式會收到ICMP埠不可達的訊息。如果沒有訊息,掃描器會認為埠是開放的。由於防火牆會阻止資料包,此方法會返回錯誤結果,因此不會生成響應訊息,掃描器會報告埠為開啟狀態。

更多

讓我們進一步探索Nmap掃描,學習如何將不同掃描型別組合到一起

作業系統和版本檢測

除了埠掃描之外,Nmap還提供一些高階的選項,這些選項可以幫助我們獲取目標的更多資訊。其他使用最廣泛的選項之一是作業系統識別選項:-O。可以幫助我們識別目標計算機的作業系統型別。

以下是作業系統識別掃描結果:

msf5 > nmap -O 192.168.177.144
[*] exec: nmap -O 192.168.177.144

Starting Nmap 7.70 ( https://nmap.org ) at 2019-04-12 13:12 CST
Nmap scan report for 192.168.177.144
Host is up (0.00035s latency).
Not shown: 990 filtered ports
PORT      STATE SERVICE
21/tcp    open  ftp
22/tcp    open  ssh
80/tcp    open  http
4848/tcp  open  appserv-http
8022/tcp  open  oa-system
8080/tcp  open  http-proxy
8383/tcp  open  m2mservices
9200/tcp  open  wap-wsp
49153/tcp open  unknown
49154/tcp open  unknown
MAC Address: 00:0C:29:D7:02:F6 (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose|specialized|phone
Running: Microsoft Windows 2008|8.1|7|Phone|Vista
OS CPE: cpe:/o:microsoft:windows_server_2008:r2 cpe:/o:microsoft:windows_8.1 cpe:/o:microsoft:windows_7::-:professional cpe:/o:microsoft:windows_8 cpe:/o:microsoft:windows_7 cpe:/o:microsoft:windows cpe:/o:microsoft:windows_vista::- cpe:/o:microsoft:windows_vista::sp1
OS details: Microsoft Windows Server 2008 R2 or Windows 8.1, Microsoft Windows 7 Professional or Windows 8, Microsoft Windows Embedded Standard 7, Microsoft Windows Phone 7.5 or 8.0, Microsoft Windows Vista SP0 or SP1, Windows Server 2008 SP1, or Windows 7, Microsoft Windows Vista SP2, Windows 7 SP1, or Windows Server 2008
Network Distance: 1 hop

OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 14.51 seconds
複製程式碼

如你所見,Nmap成功識別了目標機器的作業系統型別。

另外一種廣泛使用的高階選項是對開放埠服務的版本檢測,引數是-sV。它可以與之前的掃描引數結合使用。

msf5 > nmap -sV 192.168.177.144
[*] exec: nmap -sV 192.168.177.144

Starting Nmap 7.70 ( https://nmap.org ) at 2019-04-12 13:17 CST
Nmap scan report for 192.168.177.144
Host is up (0.00043s latency).
Not shown: 990 filtered ports
PORT      STATE SERVICE           VERSION
21/tcp    open  ftp               Microsoft ftpd
22/tcp    open  ssh               OpenSSH 7.1 (protocol 2.0)
80/tcp    open  http              Microsoft IIS httpd 7.5
4848/tcp  open  ssl/appserv-http?
8022/tcp  open  http              Apache Tomcat/Coyote JSP engine 1.1
8080/tcp  open  http              Sun GlassFish Open Source Edition  4.0
8383/tcp  open  ssl/http          Apache httpd
9200/tcp  open  http              Elasticsearch REST API 1.1.1 (name: Turac; Lucene 4.7)
49153/tcp open  msrpc             Microsoft Windows RPC
49154/tcp open  msrpc             Microsoft Windows RPC
MAC Address: 00:0C:29:D7:02:F6 (VMware)
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 82.54 seconds
msf5 >
複製程式碼
隱蔽掃描

有時候必須以隱蔽方式進行掃描,預設情況下,防火牆和IDS日誌會記錄你的IP,nmap中提供了-D選項來增加迷惑性。

此選項並不能阻止防火牆和IDS記錄你的IP,只是增加迷惑性,它會通過新增其他IP地址,讓目標以為是多個IP在攻擊。比如,你新增了兩個誘導IP,防火牆或IDS日誌會顯示資料包是從三個不同的IP地址傳送的,一個是你的,其他兩個是你新增的虛假地址。

msf5 > nmap -sT 192.168.177.144 -D 192.168.177.34,192.168.177.56
複製程式碼

這個例子中-D後面的IP地址是虛假的IP地址,它會和原始IP地址一同出現在目標機器的網路日誌檔案中,這會迷惑對方的網路管理員,讓他們以為這三個IP都是偽造的。但不能新增太多虛假IP地址,不然會影響掃描結果。因此,只要使用一定數量的地址就行。

4、埠掃描:db_nmap 方式

使用db_nmap的好處在於可以將結果直接儲存到Metasploit資料庫中,而不再需要db_import進行匯入。

準備工作

db_nmap命令是msfconsole中的一部分,所以只需要啟動msfconsole並使用就好了。引數就和在命令列中單獨使用nmap一樣。

怎麼做

在第一章中,我們已經學習了db_nmap的一些基本用法,所以現在我們將瞭解一些更高階的特性。在下面的例子中,你將學習如何使用其中的一些特性。

msf5 > db_nmap -Pn -sTV -T4 --open --min-parallelism 64 --version-all 192.168.177.144 -p -
複製程式碼

-Pn:跳過主機發現過程

-sTV:TCP掃描和檢測開放埠服務版本資訊

-T4:設定時間模板,加速掃描

--open:只顯示開放埠

--min-parallelism:探測報文的併發數

--version-all:嘗試每個探測,保證對每個埠嘗試每個探測報文,獲取服務更具體的版本

-p -:表示掃描所有的埠(1-65535)

輸出結果如下:

msf5 > db_nmap -Pn -sTV -T4 --open --min-parallelism 64 --version-all 192.168.177.144 -p -
[*] Nmap: Starting Nmap 7.70 ( https://nmap.org ) at 2019-04-12 13:41 CST
[*] Nmap: Nmap scan report for 192.168.177.144
[*] Nmap: Host is up (0.00059s latency).
[*] Nmap: Not shown: 65516 filtered ports
[*] Nmap: Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
[*] Nmap: PORT      STATE SERVICE           VERSION
[*] Nmap: 21/tcp    open  ftp               Microsoft ftpd
[*] Nmap: 22/tcp    open  ssh               OpenSSH 7.1 (protocol 2.0)
[*] Nmap: 80/tcp    open  http              Microsoft IIS httpd 7.5
[*] Nmap: 1617/tcp  open  rmiregistry       Java RMI
[*] Nmap: 4848/tcp  open  ssl/appserv-http?
[*] Nmap: 5985/tcp  open  http              Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
[*] Nmap: 8020/tcp  open  http              Apache httpd
[*] Nmap: 8022/tcp  open  http              Apache Tomcat/Coyote JSP engine 1.1
[*] Nmap: 8027/tcp  open  unknown
[*] Nmap: 8080/tcp  open  http              Sun GlassFish Open Source Edition  4.0
[*] Nmap: 8282/tcp  open  http              Apache Tomcat/Coyote JSP engine 1.1
[*] Nmap: 8383/tcp  open  ssl/http          Apache httpd
[*] Nmap: 8484/tcp  open  http              Jetty winstone-2.8
[*] Nmap: 8585/tcp  open  http              Apache httpd 2.2.21 ((Win64) PHP/5.3.10 DAV/2)
[*] Nmap: 9200/tcp  open  http              Elasticsearch REST API 1.1.1 (name: Turac; Lucene 4.7)
[*] Nmap: 49153/tcp open  msrpc             Microsoft Windows RPC
[*] Nmap: 49154/tcp open  msrpc             Microsoft Windows RPC
[*] Nmap: 49207/tcp open  rmiregistry       Java RMI
[*] Nmap: 49209/tcp open  tcpwrapped
[*] Nmap: Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
[*] Nmap: Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
[*] Nmap: Nmap done: 1 IP address (1 host up) scanned in 593.00 seconds
msf5 >
複製程式碼
Nmap 指令碼引擎

Nmap指令碼引擎(NSE)是Nmap最強大和最靈活的特性之一,它可以將Nmap轉為漏洞掃描器使用。NSE有超過600個指令碼,分為好幾類,有非侵入式的,也有侵入式的,比如暴力破解,漏洞利用和拒絕服務攻擊。你可以在Kali/user/share/nmap/scripts目錄中找到這些指令碼。或者用locate搜尋*.nse也可以找到。

root@osboxes:~# locate *.nse
/usr/share/nmap/scripts/targets-xml.nse
/usr/share/nmap/scripts/teamspeak2-version.nse
/usr/share/nmap/scripts/telnet-brute.nse
/usr/share/nmap/scripts/telnet-encryption.nse
/usr/share/nmap/scripts/telnet-ntlm-info.nse
/usr/share/nmap/scripts/tftp-enum.nse
/usr/share/nmap/scripts/tls-alpn.nse
/usr/share/nmap/scripts/tls-nextprotoneg.nse
/usr/share/nmap/scripts/tls-ticketbleed.nse
/usr/share/nmap/scripts/tn3270-screen.nse
/usr/share/nmap/scripts/tor-consensus-checker.nse
/usr/share/nmap/scripts/traceroute-geolocation.nse
/usr/share/nmap/scripts/tso-brute.nse
/usr/share/nmap/scripts/tso-enum.nse
/usr/share/nmap/scripts/unittest.nse
/usr/share/nmap/scripts/unusual-port.nse
複製程式碼

它的用法如下:

nmap --script <scriptname> <host ip>
複製程式碼

db_nmap中同樣可以使用,我們試試用NSE指令碼來查詢目標的HTTP/HTTPS漏洞

msf5 > db_nmap --open -sTV -Pn -p 80,8020,8022,8080,8282,8383,8484,8585,9200 --script=http-vhosts,http-userdir-enum,http-apache-negotiation,http-backup- 
finder,http-config-backup,http-default-accounts,http-methods,http-method-tamper,http-passwd,http-robots.txt,ssl-poodle,ssl-heartbleed,http-webdav-scan,h 
ttp-iis-webdav-vuln 192.168.177.144           
[*] Nmap: Starting Nmap 7.70 ( https://nmap.org ) at 2019-04-12 14:03 CST                           
[*] Nmap: Nmap scan report for 192.168.177.144
[*] Nmap: Host is up (0.00052s latency).  
[*] Nmap: PORT     STATE SERVICE  VERSION  
[*] Nmap: 80/tcp   open  http     Microsoft IIS httpd 7.5 
[*] Nmap: | http-methods:   
[*] Nmap: |   Supported Methods: OPTIONS TRACE GET HEAD POST                                        [*] Nmap: |_  Potentially risky methods: TRACE                                                      [*] Nmap: |_http-server-header: Microsoft-IIS/7.5                                                    [*] Nmap: | http-vhosts:                                                                            [*] Nmap: |_127 names had status 200                                                                [*] Nmap: 8020/tcp open  http     Apache httpd                                                     
[*] Nmap: |_http-iis-webdav-vuln: WebDAV is DISABLED. Server is not currently vulnerable.           
[*] Nmap: | http-methods:                                                                            [*] Nmap: |   Supported Methods: GET HEAD POST PUT DELETE OPTIONS                                   
[*] Nmap: |_  Potentially risky methods: PUT DELETE                                                 
[*] Nmap: |_http-server-header: Apache                                                             
[*] Nmap: | http-vhosts:                       
複製程式碼

從輸出結果看到,目標主機的HTTP/HTTPS服務啟用了一些危險的方法,比如DELETE/PUT等。

5、基於ARP的主機發現

通過ARP請求可以列舉本地網路中的存活主機,為我們提供了一種簡單而快速識別目標方法。

準備工作

當攻擊者和目標機器處於同一個區域網時,可以通過執行ARP掃描發現主機

怎麼做

1、使用ARP掃描模組(auxiliary/scanner/discovery/arp_sweep),設定目標地址範圍和併發執行緒,然後執行。

msf5 > use auxiliary/scanner/discovery/arp_sweep
msf5 auxiliary(scanner/discovery/arp_sweep) > set RHOSTS 192.168.177.0/24
RHOSTS => 192.168.177.0/24
msf5 auxiliary(scanner/discovery/arp_sweep) > set THREADS 256
THREADS => 256
msf5 auxiliary(scanner/discovery/arp_sweep) > run

[+] 192.168.177.1 appears to be up (VMware, Inc.).
[+] 192.168.177.2 appears to be up (VMware, Inc.).
[+] 192.168.177.144 appears to be up (VMware, Inc.).
[+] 192.168.177.254 appears to be up (VMware, Inc.).
[+] 192.168.177.2 appears to be up (VMware, Inc.).
[+] 192.168.177.254 appears to be up (VMware, Inc.).
[*] Scanned 256 of 256 hosts (100% complete)
[*] Auxiliary module execution completed
msf5 auxiliary(scanner/discovery/arp_sweep) >
複製程式碼

2、如果啟動了資料庫,結果將儲存在Metasploit資料庫中,可以使用hosts顯示已經發現的主機。

msf5 auxiliary(scanner/discovery/arp_sweep) > hosts

Hosts
=====

address          mac                name  os_name  os_flavor  os_sp  purpose  info  comments
-------          ---                ----  -------  ---------  -----  -------  ----  --------
34.240.217.226
34.248.41.77
54.171.32.62
192.168.177.1    00:50:56:c0:00:08        Unknown                    device
192.168.177.2    00:50:56:fa:c4:65
192.168.177.139  00:0c:29:c6:a9:e5        Unknown                    device
192.168.177.142  00:0c:29:92:63:8c        Linux               2.6.X  server
192.168.177.144  00:0c:29:d7:02:f6        Unknown                    device
192.168.177.254  00:50:56:ec:3c:cf

複製程式碼

6、UDP 服務識別

UDP服務掃描模組執行我們檢測模板系統的UDP服務。由於UDP是一個無連線協議(不面向連線),所以探測比TCP困難。使用UDP服務探測模組可以幫助我們找到一些有用的資訊。

怎麼做

選擇auxiliary/scanner/discovery/udp_sweep模組,設定目標範圍,然後執行掃描即可

msf5 > use auxiliary/scanner/discovery/udp_sweep
msf5 auxiliary(scanner/discovery/udp_sweep) > set RHOSTS 192.168.177.0/24
RHOSTS => 192.168.177.144/24
msf5 auxiliary(scanner/discovery/udp_sweep) > run

[*] Sending 13 probes to 192.168.177.0->192.168.177.255 (256 hosts)
[*] Discovered NetBIOS on 192.168.177.144:137 (METASPLOITABLE3:<20>:U :METASPLOITABLE3:<00>:U :WORKGROUP:<00>:G :00:0c:29:d7:02:f6)
[*] Discovered SNMP on 192.168.177.144:161 (Hardware: Intel64 Family 6 Model 94 Stepping 3 AT/AT COMPATIBLE - Software: Windows Version 6.1 (Build 7601 Multiprocessor Free))
[*] Scanned 256 of 256 hosts (100% complete)
[*] Auxiliary module execution completed
msf5 auxiliary(scanner/discovery/udp_sweep) >
複製程式碼

7、SMB掃描和列舉

多年來,SMB協議(一種在 Microsoft Windows系統中使用網路檔案共享的協議)已被證明是最容易被攻擊的協議之一,它允許攻擊者列舉目標檔案和使用者,甚至遠端程式碼執行。

怎麼做

使用無需身份驗證的SMB共享列舉模組,可以幫助我們收集一些有價值的資訊,比如共享名稱,作業系統版本等。

模組名:auxiliary/scanner/smb/smb_enumshares

msf5 > use auxiliary/scanner/smb/smb_enumshares
msf5 auxiliary(scanner/smb/smb_enumshares) > set RHOSTS 192.168.177.144
RHOSTS => 192.168.177.144
msf5 auxiliary(scanner/smb/smb_enumshares) > run

[-] 192.168.177.144:139   - Login Failed: Unable to Negotiate with remote host
[*] 192.168.177.144:      - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
複製程式碼

SMB共享列舉模組在後續的攻擊階段也非常有用,通過提供憑據,可以輕鬆的列舉共享和檔案列表

msf5 auxiliary(scanner/smb/smb_enumshares) > set SMBUSER vagrant
SMBUSER => vagrant
msf5 auxiliary(scanner/smb/smb_enumshares) > set SMBPASS vagrant
SMBPASS => vagrant
msf5 auxiliary(scanner/smb/smb_enumshares) > set RHOSTS 192.168.177.144
RHOSTS => 192.168.177.144
msf5 auxiliary(scanner/smb/smb_enumshares) > set ShowFiles true
ShowFiles => true
msf5 auxiliary(scanner/smb/smb_enumshares) > set SpiderShares true
SpiderShares => true
msf5 auxiliary(scanner/smb/smb_enumshares) > run

[-] 192.168.177.144:139   - Login Failed: Unable to Negotiate with remote host
[+] 192.168.177.144:445   - ADMIN$ - (DS) Remote Admin
[+] 192.168.177.144:445   - C$ - (DS) Default share
[+] 192.168.177.144:445   - IPC$ - (I) Remote IPC
[*] 192.168.177.144:      - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf5 auxiliary(scanner/smb/smb_enumshares) >
複製程式碼

Metasploit還提供其他的一些SMB掃描模組,讓我們看看其他模組的用法。

3、SMB版本檢測模組可以檢測SMB的版本

msf5 > use auxiliary/scanner/smb/smb_version
msf5 auxiliary(scanner/smb/smb_version) > set RHOSTS 192.168.177.144
RHOSTS => 192.168.177.144
msf5 auxiliary(scanner/smb/smb_version) > run

[+] 192.168.177.144:445   - Host is running Windows 2008 R2 Standard SP1 (build:7601) (name:METASPLOITABLE3) (workgroup:WORKGROUP )
[*] 192.168.177.144:445   - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
複製程式碼

4、使用者列舉模組可以通過SAM RPC服務列舉哪些使用者存在

msf5 > use auxiliary/scanner/smb/smb_enumusers
msf5 auxiliary(scanner/smb/smb_enumusers) > set SMBUSER vagrant
SMBUSER => vagrant
msf5 auxiliary(scanner/smb/smb_enumusers) > set SMBPASS vagrant
SMBPASS => vagrant
msf5 auxiliary(scanner/smb/smb_enumusers) > set RHOSTS 192.168.177.144
RHOSTS => 192.168.177.144
msf5 auxiliary(scanner/smb/smb_enumusers) > run

[+] 192.168.177.144:445   - METASPLOITABLE3 [ Administrator, anakin_skywalker, artoo_detoo, ben_kenobi, boba_fett, chewbacca, c_three_pio, darth_vader, greedo, Guest, han_solo, jabba_hutt, jarjar_binks, kylo_ren, lando_calrissian, leah_organa, luke_skywalker, sshd, sshd_server, vagrant ] ( LockoutTries=0 PasswordMin=0 )
[*] 192.168.177.144:      - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf5 auxiliary(scanner/smb/smb_enumusers) >
複製程式碼

5、SMB登入檢測模組可以測試SMB登入

msf5 > use auxiliary/scanner/smb/smb_login
msf5 auxiliary(scanner/smb/smb_login) > set RHOSTS 192.168.177.144
RHOSTS => 192.168.177.144
msf5 auxiliary(scanner/smb/smb_login) > set SMBUSER vagrant
SMBUSER => vagrant
msf5 auxiliary(scanner/smb/smb_login) > set PASS_FILE /root/password.lst
PASS_FILE => /root/password.lst
msf5 auxiliary(scanner/smb/smb_login) > run

[*] 192.168.177.144:445   - 192.168.177.144:445 - Starting SMB login bruteforce
[-] 192.168.177.144:445   - 192.168.177.144:445 - Failed: '.\vagrant:admin',
[-] 192.168.177.144:445   - 192.168.177.144:445 - Failed: '.\vagrant:admin123',
[+] 192.168.177.144:445   - 192.168.177.144:445 - Success: '.\vagrant:vagrant' Administrator
[*] 192.168.177.144:445   - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf5 auxiliary(scanner/smb/smb_login) >
複製程式碼

6、MS17-0101永恆之藍漏洞檢測模組

msf5 > use auxiliary/scanner/smb/smb_ms17_010
msf5 auxiliary(scanner/smb/smb_ms17_010) > set RHOSTS 192.168.177.144
RHOSTS => 192.168.177.144
msf5 auxiliary(scanner/smb/smb_ms17_010) > run

[+] 192.168.177.144:445   - Host is likely VULNERABLE to MS17-010! - Windows Server 2008 R2 Standard 7601 Service Pack 1 x64 (64-bit)
[*] 192.168.177.144:445   - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf5 auxiliary(scanner/smb/smb_ms17_010) >
複製程式碼

7、其他的模組,都在 auxiliary/scanner/smb/中,可以敲 TAB鍵檢視,你可以一個個學習,這裡就不一一舉例講解。

msf5 > use auxiliary/scanner/smb/
use auxiliary/scanner/smb/impacket/dcomexec      
use auxiliary/scanner/smb/smb1                   
use auxiliary/scanner/smb/smb_login
.....         
複製程式碼

8、SSH 版本掃描和檢測

SSH是一個廣泛使用的遠端登入程式。它使用強大的加密提供身份認證和保證機密性。在本節中,我們將通過SSH版本掃描模組,確定目標使用的SSH版本,確定是否為易受攻擊的SSH版本,如果是,我們可以利用它。

準備工作

在之前的掃描中,我們發現目標機器開放了TCP 22埠,這也是SSH的預設埠,我們用SSH版本探測模組來獲取目標系統上執行的SSH版本資訊。

怎麼做

1、模組名稱:auxiliary/scanner/ssh/ssh_version

msf5 > use auxiliary/scanner/ssh/ssh_version
msf5 auxiliary(scanner/ssh/ssh_version) > set RHOSTS 192.168.177.144
RHOSTS => 192.168.177.144
msf5 auxiliary(scanner/ssh/ssh_version) > run

[+] 192.168.177.144:22    - SSH server version: SSH-2.0-OpenSSH_7.1 ( service.version=7.1 service.vendor=OpenBSD service.family=OpenSSH service.product=OpenSSH service.cpe23=cpe:/a:openbsd:openssh:7.1 service.protocol=ssh fingerprint_db=ssh.banner )
[*] 192.168.177.144:22    - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf5 auxiliary(scanner/ssh/ssh_version) >
複製程式碼

當然這裡的RHOSTS 選項也可以指定為網路地址,從而掃描整個網段。

獲取版本資訊之後,我們就可以搜尋該版本的漏洞。

2、測試常用口令登入SSH,可以使用SSH登入測試模組

msf5 > use auxiliary/scanner/ssh/ssh_login
msf5 auxiliary(scanner/ssh/ssh_login) > set RHOSTS 192.168.177.144
RHOSTS => 192.168.177.144
msf5 auxiliary(scanner/ssh/ssh_login) > set USERNAME user
USERNAME => user
msf5 auxiliary(scanner/ssh/ssh_login) > set PASS_FILE /root/password.lst
PASS_FILE => /root/password.lst
msf5 auxiliary(scanner/ssh/ssh_login) > run

[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
複製程式碼

3、如果登入成功了,可以用sessions 檢視會話和與目標進行會話互動

msf5 auxiliary(scanner/ssh/ssh_login) > sessions

Active sessions
===============

No active sessions.

複製程式碼

9、FTP掃描

使用FTP掃描模組對網路中所有的FTP服務進行版本掃描

準備工作

FTP版本掃描模組執行我們檢測正在執行的FTP版本

怎麼做

1、使用auxiliary/scanner/ftp/ftp_version模組,設定好掃描範圍和執行緒,就可以執行掃描了。

msf5 > use auxiliary/scanner/ftp/ftp_version
msf5 auxiliary(scanner/ftp/ftp_version) > set RHOSTS 192.168.177.0/24
RHOSTS => 192.168.177.0/24
msf5 auxiliary(scanner/ftp/ftp_version) > set THREADS 256
THREADS => 256
msf5 auxiliary(scanner/ftp/ftp_version) > run

[+] 192.168.177.1:21      - FTP Banner: '220 Serv-U FTP Server v15.0 ready...\x0d\x0a'
[+] 192.168.177.144:21    - FTP Banner: '220 Microsoft FTP Service\x0d\x0a'
[*] 192.168.177.0/24:21   - Scanned  78 of 256 hosts (30% complete)
[*] 192.168.177.0/24:21   - Scanned 123 of 256 hosts (48% complete)
[*] 192.168.177.0/24:21   - Scanned 125 of 256 hosts (48% complete)
[*] 192.168.177.0/24:21   - Scanned 129 of 256 hosts (50% complete)
[*] 192.168.177.0/24:21   - Scanned 130 of 256 hosts (50% complete)
[*] 192.168.177.0/24:21   - Scanned 255 of 256 hosts (99% complete)
[*] 192.168.177.0/24:21   - Scanned 256 of 256 hosts (100% complete)
[*] Auxiliary module execution completed
msf5 auxiliary(scanner/ftp/ftp_version) >
複製程式碼

2、與之前的掃描一樣,掃描結果會儲存到資料庫中,可以使用services命令檢視已經檢測的服務資訊。

msf5 auxiliary(scanner/ftp/ftp_version) > services                                                     
Services                                                                                               
========                                                                                           
host             port   proto  name              state  info                                           
----             ----   -----  ----              -----  ----                                           
192.168.177.1    21     tcp    ftp               open   220 Serv-U FTP Server v15.0 ready...\x0d\x0a   
192.168.177.144  21     tcp    ftp               open   220 Microsoft FTP Service\x0d\x0a           
192.168.177.144  22     tcp    ssh               open   SSH-2.0-OpenSSH_7.1                         
192.168.177.144  80     tcp    http              open   Microsoft IIS httpd 7.5                     
複製程式碼

10、SMTP列舉

SMTP服務偶兩個允許列舉使用者的內部命令:VRFY(確認有效使用者名稱)和EXPN(顯示使用者的實際地址,別名和郵件列表)

準備工作

SMTP使用者列舉模組通過實現這些SMTP命令從而列舉有效的使用者列表

怎麼做

預設情況下,SMTP列舉模組使用unix_users.txt(檔案位於: /usr/share/metasploit- framework/data/wordlists/)檔案作為字典,你也可以指定自己的字典檔案。切換到auxiliary/scanner/smtp/smtp_enum模組,設定好目標和執行緒,然後開始。

msf5 > use auxiliary/scanner/smtp/smtp_enum                                                        
msf5 auxiliary(scanner/smtp/smtp_enum) > set RHOSTS 192.168.177.145                               
RHOSTS => 192.168.177.145                         
msf5 auxiliary(scanner/smtp/smtp_enum) > set THREADS 256  
THREADS => 256                                      
msf5 auxiliary(scanner/smtp/smtp_enum) > run        
[*] 192.168.177.145:25    - 192.168.177.145:25 Banner: 220 metasploitable.localdomain ESMTP Postfix (Ubuntu)                                             
[+] 192.168.177.145:25    - 192.168.177.145:25 Users found: , backup, bin, daemon, distccd, ftp, games, gnats, irc, libuuid, list, lp, mail, man, news, nobody, postgres, postmaster, proxy, service, sshd, sync, sys, syslog, user, uucp, www-data   
[*] 192.168.177.145:25    - Scanned 1 of 1 hosts (100% complete)       
[*] Auxiliary module execution completed             
msf5 auxiliary(scanner/smtp/smtp_enum) >  
複製程式碼

輸出結果中顯示了目標Metasploitable 2中有效的SMTP使用者

11、SNMP列舉

簡單網路管理協議(SNMP)是用於管理網路裝置的協議,比如監控裝置的狀態資訊,介面資訊,網路介面的資料吞吐量等。通過SNMP掃描器可以找到特定系統的大量資訊。本節中,我們將學習如何使用它。

準備工作

Metasploit有一個專門用於掃描 SNMP 裝置的內建輔助模組。在進行攻擊之前必須先了解它。首先,團體字串(只讀/讀寫)在可以在裝置本身上挖掘或修改的資訊型別中起著重要作用。管理資訊庫 (MIB) 介面允許我們查詢裝置和提取資訊。

Tip:如果目標系統為Windows且配置了SNMP(通常是RO/RW團體字串),我們可以提取系統重啟時間,系統上的使用者名稱,系統網路資訊,執行的服務等各種有價值的資訊。

當通過SNMP查詢時候,可以通過MIB API進行裝置資訊提取。Metasploit在其資料庫中載入預設MIB列表,它們用於查詢裝置獲取更多資訊。

怎麼做

1、通過SNMP登入模組可以通過公共團體名登入到目標系統。

msf5 > use auxiliary/scanner/snmp/snmp_login
msf5 auxiliary(scanner/snmp/snmp_login) > set RHOSTS 192.168.177.144,145
RHOSTS => 192.168.177.144,145
msf5 auxiliary(scanner/snmp/snmp_login) > run

[+] 192.168.177.144:161 - Login Successful: public (Access level: read-only); Proof (sysDescr.0): Hardware: Intel64 Family 6 Model 94 Stepping 3 AT/AT COMPATIBLE - Software: Windows Version 6.1 (Build 7601 Multiprocessor Free)
[*] Scanned 1 of 2 hosts (50% complete)
[*] Scanned 2 of 2 hosts (100% complete)
[*] Auxiliary module execution completed
msf5 auxiliary(scanner/snmp/snmp_login) >
複製程式碼

2、通過SNMP掃描模組收集資訊,比如埠,服務,主機名,程式等資訊。

msf5 > use auxiliary/scanner/snmp/snmp_enum                                                                                                             
msf5 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 192.168.177.144                                                                                     
RHOSTS => 192.168.177.144                                                                                                                               
msf5 auxiliary(scanner/snmp/snmp_enum) > run                                                                                                            
[+] 192.168.177.144, Connected.                                                                                                                         
[*] System information:                                                                                                                                 
Host IP                       : 192.168.177.144     
Hostname                      : metasploitable3     
Description                   : Hardware: Intel64 Family 6 Model 94 Stepping 3 AT/AT COMPATIBLE - Software: Windows Version 6.1 (Build 7601 Multiprocess
r Free)                                                                                                                                                
Contact                       : -                  
Location                      : -                   
Uptime snmp                   : 01:18:04.40         
Uptime system                 : 01:16:09.69         
System date                   : 2019-4-12 16:44:05.7                                                                                                    
[*] User accounts:                                                                                                                                     
["sshd"]                                             
["Guest"]                                         
["greedo"]                                           
["vagrant"]                                         
["han_solo"]                                         
["kylo_ren"]                                         
["boba_fett"]                                     
["chewbacca"]                                       
["ben_kenobi"]                                                                                     .....                                               
[*] Network information:                            
IP forwarding enabled         : no                   
Default TTL                   : 128                
TCP segments received         : 70121              
TCP segments sent             : 70024               
TCP segments retrans          : 23                   
Input datagrams               : 634                
Delivered datagrams           : 825   
....
[*] Network interfaces:

Interface                     : [ up ] Software Loopback Interface 1
Id                            : 1
Mac Address                   : :::::
....
複製程式碼

12、HTTP掃描

超文字傳輸協議(HTTP)是一個應用層協議,它是全球資訊網通訊的基礎。它被眾多的應用程式使用,從物聯網(IoT)裝置到移動應用程式。它也是搜尋漏洞的好地方。

準備工作

HTTP SSL證照檢測模組可以檢測Web伺服器的證照。

Robots.txt內容檢測模組可以搜尋robots.txt檔案並分析裡面的內容。

如果服務端允許未授權的PUT請求方法,則可以將任意的Web頁面插入到網站目錄中,從而導致執行破壞性的程式碼或者往伺服器填充垃圾資料,從而造成拒絕服務攻擊。

Jenkins-CI HTTP掃描模組可以列舉未授權的Jenkins-CI服務。

怎麼做

1、檢測目標的HTTP SSL證照

msf5 > use auxiliary/scanner/http/cert
msf5 auxiliary(scanner/http/cert) > set RHOSTS 192.168.177.144
RHOSTS => 192.168.177.144
msf5 auxiliary(scanner/http/cert) > set RPORT 8383
RPORT => 8383
msf5 auxiliary(scanner/http/cert) > run

[*] 192.168.177.144:8383  - 192.168.177.144 - 'Desktop Central' : '2010-09-08 12:24:44 UTC' - '2020-09-05 12:24:44 UTC'
[*] 192.168.177.144:8383  - Scanned 1 of 1 hosts (100% complete)
複製程式碼

2、檢測robots.txt檔案

msf5 > use auxiliary/scanner/http/robots_txt
msf5 auxiliary(scanner/http/robots_txt) > set PATH /mutillidae
PATH => /mutillidae
msf5 auxiliary(scanner/http/robots_txt) > set RHOSTS 192.168.177.145
RHOSTS => 192.168.177.145
msf5 auxiliary(scanner/http/robots_txt) > run

[*] [192.168.177.145] /mutillidae/robots.txt found
[+] Contents of Robots.txt:
User-agent: *
Disallow: ./passwords/
Disallow: ./config.inc
Disallow: ./classes/
Disallow: ./javascript/
Disallow: ./owasp-esapi-php/
Disallow: ./documentation/
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf5 auxiliary(scanner/http/robots_txt) >
複製程式碼

3、HTTP可寫路徑 PUT/DELETE 檔案訪問模組可以通過PUTDELETE請求上傳和刪除Web伺服器上的內容。

msf5 > use auxiliary/scanner/http/http_put
msf5 auxiliary(scanner/http/http_put) > set PATH /uploads
PATH => /uploads
msf5 auxiliary(scanner/http/http_put) > set RHOSTS 192.168.177.144
RHOSTS => 192.168.177.144
msf5 auxiliary(scanner/http/http_put) > set RPORT 8585
RPORT => 8585
msf5 auxiliary(scanner/http/http_put) > run

[+] File uploaded: http://192.168.177.144:8585/uploads/msf_http_put_test.txt
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf5 auxiliary(scanner/http/http_put) >
複製程式碼

4、Jenkins-CI掃描模組

msf5 > use auxiliary/scanner/http/jenkins_enum
msf5 auxiliary(scanner/http/jenkins_enum) > set RHOSTS 192.168.177.144
RHOSTS => 192.168.177.144
msf5 auxiliary(scanner/http/jenkins_enum) > set RPORT 8484
RPORT => 8484
msf5 auxiliary(scanner/http/jenkins_enum) > set TARGETURI /
TARGETURI => /
msf5 auxiliary(scanner/http/jenkins_enum) > run

[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
複製程式碼

13、WinRM掃描和爆破

Windows遠端管理(WinRM)是WS-Management協議的Microsoft實現。該協議是基於簡單物件訪問協議(SOAP)的、防火牆友好的標準協議,使來自不同供應商的硬體和作業系統能夠互相互動。

準備工作

WinRM身份認證方法檢測模組通過向目標發現HTTP/HTTPS請求,檢測是否為WinRM服務,如果是,將會檢測支援的身份認證方法。

通過SMB_login模組可以檢索目標的登入憑證。我們可以用WinRM命令執行模組測試是否可以通過WinRM服務執行Windows命令。

怎麼做

1、WinRM身份認證檢測

msf5 > use auxiliary/scanner/winrm/winrm_auth_methods
msf5 auxiliary(scanner/winrm/winrm_auth_methods) > set RHOSTS 192.168.177.144
RHOSTS => 192.168.177.144
msf5 auxiliary(scanner/winrm/winrm_auth_methods) > run

[+] 192.168.177.144:5985: Negotiate protocol supported
[+] 192.168.177.144:5985: Basic protocol supported
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf5 auxiliary(scanner/winrm/winrm_auth_methods) >
複製程式碼

2、使用WinRM命令執行模組

msf5 > use auxiliary/scanner/winrm/winrm_cmd
msf5 auxiliary(scanner/winrm/winrm_cmd) > set CMD hostname
CMD => hostname
msf5 auxiliary(scanner/winrm/winrm_cmd) > set RHOSTS 192.168.177.144
RHOSTS => 192.168.177.144
msf5 auxiliary(scanner/winrm/winrm_cmd) > set USERNAME Administrator
USER => Administrator
msf5 auxiliary(scanner/winrm/winrm_cmd) > set PASSWORD vagrant
PASSWORD => vagrant
msf5 auxiliary(scanner/winrm/winrm_cmd) > run

[+] 192.168.177.144:5985 : metasploitable3

[+] Results saved to /root/.msf4/loot/20190412172543_default_192.168.177.144_winrm.cmd_result_858044.txt
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf5 auxiliary(scanner/winrm/winrm_cmd) >
複製程式碼

可以看到,我們成功在目標機上執行了命令。

到目前為止,我們已經瞭解了埠掃描的基礎知識,以及學會了Nmap的使用。通過其他一些工具的許欸,進一步提高了掃描和資訊收集的技術。在接下來的小節中,我們將介紹其他幾種掃描目標可用服務和埠的工具,這些工具還可以幫助我們確定特定服務和埠可能存在的漏洞型別。

剩下的三小節,關於三種漏洞掃描器與Metasploit結合使用的技術和方法將在下一篇文章中講解,敬請期待

14、與Nessus結合使用

15、與NeXpose結合使用

16、與OpenVAS結合使用

第二章 資訊收集與掃描-續

說明

原書:《Metasploit Penetration Testing Cookbook - Third Edition》

www.packtpub.com/networking-…

本文由合天網安實驗室編譯,轉載請註明來源。

關於合天網安實驗室

合天網安實驗室(www.hetianlab.com)-國內領先的實操型網路安全線上教育平臺

真實環境,線上實操學網路安全 ; 實驗內容涵蓋:系統安全,軟體安全,網路安全,Web安全,移動安全,CTF,取證分析,滲透測試,網安意識教育等。

相關文章