4.1. 概述
在情報收集階段,你需要采用各種可能的方法來收集將要攻擊的客戶組織的所有信息,包括使用社交網絡、Google Hacking技術、目標系統踩點等等。
而作為滲透測試者,你最為重要的一項技能就是對目標系統的探查能力,包括獲知它的行為模式、運行機理,以及最終可以如何被攻擊。
對目標系統所搜集到的信息將幫助你準確的掌握目標系統所部署的安全控制措施。
- 搜集哪些內容
* 第一步 * 目標系統IP地址范圍* 詳細的注冊信息* DNS服務器位置* 電話號段* 網絡、或安全管理員及其聯系方式* 外部網絡拓撲結構* 而后* 目標網絡中活躍主機* 操作系統類型* 開放的端口* 端口后面運行的網絡服務* 是否存在已公開的披露的安全漏洞* 最后(對初步選擇的攻擊目標服務實施更細致的信息探查)* 像用戶賬號* 共享資源* 網絡服務類型與版本號* 服務配置信息
通過收集這些信息, 攻擊者可以大致判斷目標系統的安全狀況, 從而尋求有效的入侵途徑與方法。
- 搜集方法
- 踩點 footprinting
- web搜索與挖掘
- DNS和IP查詢
- 網絡拓撲偵查
- 掃描 scanning
- 主機掃描
- 端口掃描
- 系統類型探查
- 漏洞掃描
- 查點 enumeration
- Flag抓取
- 網絡服務查點
- 踩點 footprinting
4.2. 踩點
踩點就是對目標組織()進行有計劃、有組織的信息收集,以得到目標完整剖析圖的過程
4.2.1. Web信息搜索-google
- 子域名收集 site:xxxx.com
Goole Hacker(谷歌黑客)_360搜索
?
4.2.2. DNS查詢-- dnsenum
DNSenum是一款非常強大的域名信息收集工具。
它能夠通過谷歌或者字典文件猜測可能存在的域名,并對一個網段進行反向查詢。它不僅可以查詢網站的主機地址信息、域名服務器和郵件交換記錄,還可以在域名服務器上執行axfr請求,然后通過谷歌腳本得到擴展域名信息,提取子域名并查詢,最后計算C類地址并執行whois查詢,執行反向查詢,把地址段寫入文件。
本小節將介紹使用DNSenum工具檢查DNS枚舉。在終端執行如下所示的命令:
root@Kali-Panda:~# dnsenum --enum example.com
Smartmatch is experimental at /usr/bin/dnsenum line 698.
Smartmatch is experimental at /usr/bin/dnsenum line 698.
dnsenum VERSION:1.2.4
Warning: can't load Net::Whois::IP module, whois queries disabled.
Warning: can't load WWW::Mechanize module, Google scraping desabled.----- example.com -----Host's addresses:
__________________example.com. 36912 IN A 93.184.216.34Name Servers:
______________a.iana-servers.net. 73 IN A 199.43.135.53
b.iana-servers.net. 73 IN A 199.43.133.53Mail (MX) Servers:
___________________Trying Zone Transfers and getting Bind Versions:
_________________________________________________Trying Zone Transfer for example.com on a.iana-servers.net ...
AXFR record query failed: NOTAUTHTrying Zone Transfer for example.com on b.iana-servers.net ...
AXFR record query failed: REFUSEDbrute force file not specified, bay.
root@Kali-Panda:~#
dnsenum
?可以收集DNS的信息分為下述幾類:
- 主機IP地址
- 該域的DNS服務器
-
該域的MX記錄
-
可通過?
dnsenum -h
?獲取幫助信息
root@Kali-Panda:~# dnsenum -h
- 補充nslook
$ nslookup baidu.com
4.2.3. DNS信息獲取-whois
whois(讀作“Who is”,非縮寫)是用來查詢域名的IP以及所有者等信息的傳輸協議。簡單說,whois就是一個用來查詢域名是否已經被注冊,以及注冊域名的詳細信息的數據庫(如域名所有人、域名注冊商)
- 典型用法
itcast@itcast $ whois baidu.com
4.2.4. 路由信息
獲取dns信息之后,盡可能獲取目標網絡的拓撲結構。 好找準攻擊點
- 基本用法?
traceroute host
root@Kali-Panda:~# traceroute www.example.com
traceroute to www.example.com (93.184.216.34), 30 hops max, 60 byte packets1 localhost (192.168.0.1) 8.207 ms 8.908 ms 10.830 ms2 localhost (192.168.1.1) 10.732 ms 16.626 ms 16.735 ms3 * * *4 61.51.246.197 (61.51.246.197) 24.228 ms 25.782 ms 29.403 ms5 bt-230-081.bta.net.cn (202.106.230.81) 31.423 ms 219.232.11.29 (219.232.11.29) 29.724 ms 29.650 ms6 202.96.12.1 (202.96.12.1) 30.249 ms 124.65.194.25 (124.65.194.25) 9.982 ms 124.65.194.21 (124.65.194.21) 6.976 ms7 219.158.18.66 (219.158.18.66) 12.332 ms 219.158.5.146 (219.158.5.146) 10.793 ms 219.158.5.150 (219.158.5.150) 12.163 ms8 219.158.3.138 (219.158.3.138) 12.077 ms 219.158.16.82 (219.158.16.82) 20.989 ms 20.926 ms9 219.158.107.118 (219.158.107.118) 214.112 ms 214.534 ms 214.461 ms
10 219.158.33.194 (219.158.33.194) 251.167 ms 312.330 ms 312.398 ms
11 ffm-bb4-link.telia.net (62.115.142.194) 255.167 ms 251.091 ms ffm-bb3-link.telia.net (62.115.142.204) 310.773 ms
12 prs-bb3-link.telia.net (62.115.123.13) 324.318 ms prs-bb4-link.telia.net (62.115.122.138) 316.212 ms prs-bb3-link.telia.net (62.115.123.13) 315.887 ms
13 ash-bb3-link.telia.net (80.91.251.243) 247.043 ms ash-bb4-link.telia.net (62.115.122.159) 237.803 ms 238.235 ms
14 ash-b1-link.telia.net (80.91.248.157) 243.919 ms 306.199 ms 306.720 ms
15 verizon-ic-315151-ash-b1.c.telia.net (213.248.83.117) 311.853 ms 314.697 ms 249.671 ms
16 152.195.64.133 (152.195.64.133) 249.688 ms 152.195.65.133 (152.195.65.133) 325.343 ms 328.961 ms
17 93.184.216.34 (93.184.216.34) 252.255 ms 261.291 ms 253.151 ms
root@Kali-Panda:~#
-
補充內容:?實現原理
-
每個網絡包都有其存活期TTL(Time To Live), 單位是“下一跳”
- 當網絡包經過一個路由器時, TTL-1
-
當TTL減為0時, 則該網絡包被丟棄, 并回復源IP一個“ICMP Time exceeded”報文, 且該ICMP包攜帶丟棄網絡包的那個“主機”(路由器)的IP地址
-
traceroute送出一個TTL是1的IP datagram(包括源地址,目的地址和包發出的時間標簽)到目的地
- 當路徑上的第一個路由器(router)收到這個datagram時,它將TTL減1。此時,TTL變為0了,所以該路由器會將此datagram丟掉,并送回一個「ICMP time exceeded」消息(包括發IP包的源地址,IP包的所有內容及路由器的IP地址)
- traceroute 收到這個消息后,便知道這個路由器存在于這個路徑上,
- 接著traceroute 再送出另一個TTL是2 的datagram,發現第2 個路由器...
- traceroute 每次將送出的datagram的TTL 加1來發現另一個路由器,這個重復的動作一直持續到某個datagram 抵達目的地
- Traceroute在送出UDP datagrams到目的地時,它所選擇送達的port number 是一個一般應用程序都不會用的號碼(30000 以上),所以當此UDP datagram 到達目的地后該主機會送回一個「ICMP port unreachable」的消息,而當traceroute 收到這個消息時,便知道目的地已經到達了。
4.3. 掃描
如果把踩點比喻為實施盜竊前,偵查外圍環境以確定目標大樓,那掃描就是從中找出有人居住的房間,找出可供嵌入的門窗。。。。
4.3.1. 目標主機在線存活--ping
在檢查主機是否在線的工具中, ping可能是最著名的工具了。
-
基本用法:?
ping [option] destination
- -c count: 發送 ”echo request“ 數據包總量
- -I interface address: 設置源地址或網絡接口
- -s packet size: 每個數據包的大小, 默認56, 在加上IPv4中8個字節的ICMP包頭,總計64.
-
示例
root@Kali-Panda:~# ping -c 2 www.baidu.com
PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data.
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=1 ttl=56 time=5.12 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=2 ttl=56 time=5.81 ms--- www.a.shifen.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 5.123/5.469/5.816/0.354 ms
root@Kali-Panda:~#
root@Kali-Panda:~# ping -c 3 -s 128 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 128(156) bytes of data.
136 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=2.79 ms
136 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=2.09 ms
136 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=3.56 ms--- 192.168.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 2.091/2.817/3.566/0.602 ms
root@Kali-Panda:~#
4.3.2. 目標主機在線存活-- nmap
Nmap是一個免費開放的網絡掃描和嗅探工具包,也叫網絡映射器(Network Mapper)。該工具其基本功能有三個,
- 一是探測一組主機是否在線;
- 其次是掃描主機端口,嗅探所提供的網絡服務;
-
三是可以推斷主機所用的操作系統。
通常,用戶利用Nmap來進行網絡系統安全的評估,而黑客則用于掃描網絡。例如,通過向遠程主機發送探測數據包,獲取主機的響應,并根據主機的端口開放情況得到網絡的安全狀態。從中尋找存在漏洞的目標主機,從而實施下一步的攻擊。
測試一個網絡中活躍的主機。使用方法如下所示。
- 使用Nmap查看一個主機是否在線。執行命令如下所示:
root@Kali-Panda:~# nmap -sP 192.168.0.110
Starting Nmap 7.70 ( https://nmap.org ) at 2018-07-24 09:25 CST
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn
Nmap done: 1 IP address (0 hosts up) scanned in 0.52 seconds
root@Kali-Panda:~# nmap -sP 192.168.0.106
Starting Nmap 7.70 ( https://nmap.org ) at 2018-07-24 09:26 CST
Nmap scan report for localhost (192.168.0.106)
Host is up (0.00024s latency).
MAC Address: FC:F8:AE:06:92:2B (Intel Corporate)
Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds
root@Kali-Panda:~#
- 使用nmap查看當前網絡中,活躍的主機
root@Kali-Panda:~# nmap -sP 192.168.0.0/24
Starting Nmap 7.70 ( https://nmap.org ) at 2018-07-24 09:27 CST
Nmap scan report for localhost (192.168.0.1)
Host is up (0.0076s latency).
MAC Address: 14:75:90:50:57:DB (Tp-link Technologies)
Nmap scan report for localhost (192.168.0.100)
Host is up (0.068s latency).
MAC Address: EC:F3:42:CF:97:F3 (Guangdong Oppo Mobile Telecommunications)
Nmap scan report for localhost (192.168.0.101)
Host is up (0.12s latency).
MAC Address: 78:A8:73:CF:66:B2 (Samsung Electronics)
Nmap scan report for localhost (192.168.0.102)
Host is up (0.12s latency).
MAC Address: 60:A4:D0:A3:47:D2 (Samsung Electronics)
Nmap scan report for localhost (192.168.0.106)
Host is up (0.00018s latency).
MAC Address: FC:F8:AE:06:92:2B (Intel Corporate)
Nmap scan report for localhost (192.168.0.107)
Host is up (0.063s latency).
MAC Address: 2C:D9:74:20:D1:09 (Unknown)
Nmap scan report for localhost (192.168.0.111)
Host is up.
Nmap done: 256 IP addresses (7 hosts up) scanned in 1.87 seconds
root@Kali-Panda:~#
4.3.3. 系統指紋信息 --nmap
本節通過主動方式,收集目標系統指紋信息,獲取操作系統的類型
使用Nmap命令的-O選項,啟用操作系統測試功能。(注意,是大寫字母O,不是數字0)
執行命令如下所示:
root@Kali-Panda:~# nmap -O 192.168.1.1
Starting Nmap 7.70 ( https://nmap.org ) at 2018-07-24 11:36 CST
Nmap scan report for localhost (192.168.1.1)
Host is up (0.0062s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
21/tcp filtered ftp
22/tcp filtered ssh
23/tcp filtered telnet
53/tcp open domain
80/tcp open http
MAC Address: D4:F9:A1:70:6B:25 (Huawei Technologies)
Device type: general purpose
Running: Linux 3.X
OS CPE: cpe:/o:linux:linux_kernel:3.5
OS details: Linux 3.5
Network Distance: 1 hopOS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 3.09 seconds
root@Kali-Panda:~#
4.3.4. 系統指紋信息 -- p0f
p0f 采用被動式探測目標主機的操作系統類型
root@Kali-Panda:~# p0f -i eth0 -f /etc/p0f/p0f.fp
--- p0f 3.09b by Michal Zalewski <lcamtuf@coredump.cx> ---[+] Closed 1 file descriptor.
[+] Loaded 322 signatures from '/etc/p0f/p0f.fp'.
[+] Intercepting traffic on default interface 'eth0'.
[+] Default packet filtering configured [+VLAN].
[+] Entered main event loop..-[ 192.168.1.228/33014 -> 192.168.1.170/22 (syn) ]-
|
| client = 192.168.1.228/33014
| os = Linux 3.11 and newer
| dist = 0
| params = none
| raw_sig = 4:64+0:0:1460:mss*20,7:mss,sok,ts,nop,ws:df,id+:0
|
`----
-
小結
-
nmap 是主動式識別工具
- 優點: 探測速度快
- 缺點: 目標主機可能會發現我們探測操作系統的行為
- p0f 為被動式識別工具
- 優點: 不易被目標主機發現我們的探測行為
- 缺點: 比主動式識別方法的識別速度慢
對一個大范圍的網絡或活躍的主機進行滲透測試,必須要了解這些主機上所打開的端口號。 也就是目標主機上所提供的服務。
4.3.5. 端口掃描 -- nmap
使用nmap工具查看192.168.1.1 主機上正在運行的服務。執行命令如下所示:
root@Kali-Panda:~# nmap 192.168.1.1
Starting Nmap 7.70 ( https://nmap.org ) at 2018-07-24 14:36 CST
Nmap scan report for localhost (192.168.1.1)
Host is up (0.0085s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
21/tcp filtered ftp
22/tcp filtered ssh
23/tcp filtered telnet
53/tcp open domain
80/tcp open http
MAC Address: D4:F9:A1:70:6B:25 (Huawei Technologies)Nmap done: 1 IP address (1 host up) scanned in 3.12 seconds
root@Kali-Panda:~#
從命令結果可以看出, 目標主機192.168.1.1 提供了ftp、ssh、telnet、http等服務。
常用參數
- 掃描特定端口?
-p port
- -sT : tcp connect掃描防護
- -sU : udp掃描方式
- -sS : syn掃描
掃描特定端口22
root@Kali-Panda:~# nmap -p 22 192.168.1.1
Starting Nmap 7.70 ( https://nmap.org ) at 2018-07-24 14:40 CST
Nmap scan report for localhost (192.168.1.1)
Host is up (0.0059s latency).PORT STATE SERVICE
22/tcp filtered ssh
MAC Address: D4:F9:A1:70:6B:25 (Huawei Technologies)Nmap done: 1 IP address (1 host up) scanned in 0.32 seconds
root@Kali-Panda:~#
-
指定掃描端口范圍?
-p m-n
掃描從1到32之間的端口
root@Kali-Panda:~# nmap -p 1-32 192.168.1.1
Starting Nmap 7.70 ( https://nmap.org ) at 2018-07-24 14:40 CST
Nmap scan report for localhost (192.168.1.1)
Host is up (0.027s latency).
Not shown: 29 closed ports
PORT STATE SERVICE
21/tcp filtered ftp
22/tcp filtered ssh
23/tcp filtered telnet
MAC Address: D4:F9:A1:70:6B:25 (Huawei Technologies)Nmap done: 1 IP address (1 host up) scanned in 1.29 seconds
4.3.6. 端口服務指紋識別--nmap
為了確保有一個成功的滲透測試,必須需要知道目標系統中服務的指紋信息。服務指紋信息包括服務端口、服務名和版本等。
使用Nmap工具查看192.168.41.136服務上正在運行的端口。執行命令如下所示:
root@Kali-Panda:~# nmap -sV -p 22 192.168.1.228
Starting Nmap 7.70 ( https://nmap.org ) at 2018-07-24 14:52 CST
Nmap scan report for localhost (192.168.1.228)
Host is up (0.00016s latency).PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.4p1 Debian 10+deb9u3 (protocol 2.0)
MAC Address: FC:F8:AE:06:92:2B (Intel Corporate)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernelService detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 0.47 seconds
此處使用,一般會用-p 指定端口,效率更高。 此處獲取ssh的版本信息。
4.3.7. 漏洞掃描
4.3.7.1. Nessus介紹
Nessus 國外流行的漏洞掃描工具。多用來發現系統漏洞。
- 官網:?Tenable? - 風險暴露管理公司
Nessus 是目前全世界最多人使用的系統漏洞掃描與分析軟件。總共有超過75,000個機構使用Nessus 作為掃描該機構電腦系統的軟件。
1998年, Nessus 的創辦人 Renaud Deraison 展開了一項名為 "Nessus"的計劃,其計劃目的是希望能為因特網社群提供一個免費、威力強大、更新頻繁并簡易使用的遠端系統安全掃描程序。經過了數年的發展, 包括 CERT 與 SANS 等著名的網絡安全相關機構皆認同此工具軟件的功能與可用性。
2002年時, Renaud 與 Ron Gula, Jack Huffard 創辦了一個名為 Tenable Network Security 的機構。在第三版的Nessus 發布之時, 該機構收回了 Nessus 的版權與程序源代碼 (原本為開放源代碼), 并注冊成為該機構的網站。 目前此機構位于美國馬里蘭州的哥倫比亞。
4.3.7.2. Nessus 漏洞掃描
使用Nessus進行漏洞掃描是我們需要了解的重點。
-
打開瀏覽器, 輸入IP:https://xx.xx.xx.xx:8834?,
-
用戶名: root, 口令: itcast
-
顯示如下登錄界面:
-
- 選擇新建
New Scan
?掃描
在界面中,選擇Advanced Scan
- 填寫掃描信息
* `Name`: 給本次掃描起個名字,(按自己心意即可, 我一般用IP,網段, 主機名)
* `Description` : 描述,根據情況編寫
* `Folder` : 一種歸類手段, 默認即可
* `Targets`: 重要, 192.168.0.4
?填寫完成, 下方點擊?Save
?保存
4.3.7.3. 漏掃報告解讀
以國內廠商的漏掃報告,我們一起看一下。
看一下報告首頁。
?
我們一起看一下。
4.3.7.4. 對于漏掃報告的整改措施
發現漏洞(vulnerabilities, 有學術用脆弱性來翻譯)后, 一般要求廠家進行安全整改。
整改措施大致可分為三類:
-
安全升級
- 對存有漏洞的軟件包進行升級
-
禁用某些服務,(某些服務自身缺陷)
- 如,使用telnet登錄,telnet協議明文傳輸,
- 遠程桌面。。。
-
主機防火墻加固 *對于服務本身有缺陷, 而又必須使用的場景, 采用主機防火墻限制鏈接數量,縮小攻擊面。
4.4. 查點
踩點是確定目標主機, 掃描是確定主機有多少服務(端口), 那么查點,就是對識別的服務進行更加針對性的探查, 來尋找真正可以攻擊的入口。。。以及攻擊過程中可能用到的數據。。。
4.4.1. 簡單的旗標抓取 -- telnet
網絡服務旗標抓取, 利用客戶端工具連接遠程服務,并觀察輸出(或通過嗅探)以收集關鍵信息的技術手段。一般限于明文傳輸的網絡服務。
- telnet 抓取 ssh旗標
itcast@itcast $ telnet 127.0.0.1 22
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.4p1 Debian-10+deb9u4
注意輸出中的SSH-2.0-OpenSSH_7.4p1 Debian-10+deb9u4, 使用ssh協議2.0, openssh版本7.4p1, 系統可能為debian。。。