滲透測試之進行資訊收集方法
- 2019 年 11 月 5 日
- 筆記
滲透測試之進行資訊收集方法
攻擊的重要階段之一就是資訊收集。為了能夠實施攻擊,我們需要收集關於目標的基本資訊。我們獲得的資訊越多,攻擊成功的概率就越高。
1.1 服務枚舉
在這個中,我們將會展示一些服務枚舉的小技巧。枚舉是我們從網路收集資訊的過程。
我們將要研究DNS枚舉和SNMP枚舉技術。DNS枚舉是定位某個組織的所有DNS伺服器和DNS條目的過程。DNS枚舉允許我們收集有關該組織的重要資訊,例如用戶名、電腦名稱、IP地址以及其它。為了完成這些任務我們會使用DNSenum。對於SNMP枚舉,我們會使用叫做SnmpEnum的工具,它是一個強大的SNMP枚舉工具,允許我們分析網路上的SNMP流量。
操作步驟
讓我們以DNS枚舉作為開始:
1. 我們使用DNSenum進行DNS枚舉。為了開始DNS枚舉,打開Gnome終端,並且輸入以
下命令:
cd /usr/bin
./dnsenum –enum adomainnameontheinternet.com
請不要在不屬於你的公共網站或者不是你自己的伺服器上運行這個工具。這裡我們
將 adomainnameontheinternet.com 作為一個例子,你應該替換掉這個目標。要當心!
2. 我們需要獲取資訊輸出,例如主機、名稱伺服器、郵件伺服器,如果幸運的話還可以得
到區域轉換:
3. 我們可以使用一些額外的選項來運行DNSenum,它們包括這些東西:
— threads [number] 允許你設置一次所運行的執行緒數量。
-r 允許你開啟遞歸查找。
-d 允許你設置在WHOIS請求之間的時間延遲,單位為秒。
-o 允許我們制定輸出位置。
-w 允許我們開啟WHOIS查詢。
更多WHOIS上的例子,請見WHOIS的維基百科。
4. 我們可以使用另一個命令 snmpwalk 來檢測Windows主機。Snmpwalk是一個使用SNMP
GETNEXT請求在網路實體中查詢資訊樹的SNMP應用。在命令行中鍵入下列命令:
snmpwalk -c public 192.168.10.200 -v 2c
5. 我們也可以枚舉安裝的軟體:
snmpwalk -c public 192.168.10.200 -v 1 | grep hrSWInstalledName
HOST-RESOURCES-MIB::hrSWInstalledName.1 = STRING: “VMware Tools”
HOST-RESOURCES-MIB::hrSWInstalledName.2 = STRING: “WebFldrs”
6. 以及使用相同工具枚舉開放的TCP埠:
58snmpwalk -c public 192.168.10.200 -v 1 | grep tcpConnState | cut -d”.” -f6 | sort
–nu 21 25 80 443
7. 另一個通過SNMP收集資訊的工具叫做 snmpcheck :
cd /usr/bin
snmpcheck -t 192.168.10.200
8. 為了使用fierce(一個嘗試多種技術來尋找所有目標所用的IP地址和域名的工具)進行域
名掃描,我們可以鍵入以下命令:
cd /usr/bin
fierce -dns adomainnameontheinternet.com
請不要在不屬於你的公共網站或者不是你自己的伺服器上運行這個工具。這裡我們
將 adomainnameontheinternet.com 作為一個例子,你應該替換掉這個目標。要當心!
9. 為了以指定的詞語列表進行相同的操作,鍵入以下命令:
fierce -dns adomainnameontheinternet.com -wordlist hosts.txt -file /tmp/output.tx
t
10. 為了在SMTP伺服器上啟動用戶的SMTP枚舉,鍵入以下命令:
smtp-user-enum -M VRFY -U /tmp/users.txt -t 192.168.10.200
11. 我們現在可以記錄所獲得的結果了。
1.2 判斷網路範圍
使用上一節中我們所收集的資訊,我們就能著眼於判斷目標網路的IP地址範圍。在這個中我們將要探索完成它所用的工具。操作步驟
讓我們通過打開終端窗口來開始判斷網路範圍:
1. 打開新的終端窗口,並且鍵入以下命令:
59dmitry -wnspb targethost.com -o /root/Desktop/dmitry-result
2. 完成之後,我們應該在桌面上得到了一個文本文件,名稱為 dmitry-result.txt ,含有收
集到的目標資訊:
3. 鍵入以下命令來執行ICMP netmask請求:
netmask -s targethost.com
4. 使用scapy,我們就可以執行並行路由跟蹤。鍵入以下命令來啟動它:
scapy
5. scapy啟動之後,我們現在可以輸入以下函數:
ans,unans=sr(IP(dst=”www.targethost.com/30″, ttl=(1,6))/TCP()
6. 我們可以輸入以下函數來將結果展示為表格:
ans.make_table( lambda (s,r): (s.dst, s.ttl, r.src) )
結果如下:
60216.27.130.162 216.27.130.163 216.27.130.164 216.27.130.165
1 192.168.10.1 192.168.10.1 192.168.10.1 192.168.10.1
2 51.37.219.254 51.37.219.254 51.37.219.254 51.37.219.254
3 223.243.1.254 223.243.1.254 223.243.1.254 223.243.1.254
4 223.243.2.6 223.243.2.6 223.243.2.6 223.243.2.6
5 192.251.251.1 192.251.251.80 192.251.251.1 192.251.251.80
7. 我們需要鍵入以下函數來使用scapy獲得TCP路由蹤跡:
res,unans=traceroute([“www.google.com”,”www.Kali- linux.org”,”www.targethost.com”]
,dport=[80,443],maxttl=20, retry=-2)
8. 我們只需要鍵入以下函數來將結果展示為圖片:
res.graph()
9. 保存圖片只需要下列命令:
res.graph(target=”> /tmp/graph.svg”)
10. 我們可以生成3D展示的圖片,通過鍵入下列函數來實現:
res.trace3D()
11. 鍵入以下命令來退出scapy:
exit()
12. 在獲得結果之後,我們現在可以對其做記錄。
工作原理
在步驟1中,我們使用了 dmitry 來獲取目標資訊。參數 -wnspub 允許我們在域名上執行
WHOIS查詢,檢索 Netcraft.com 的資訊,搜索可能的子域名,以及掃描TCP埠。選
項 -o 允許我們將結果保存到文本文件中。在步驟3中,我們建立了一個簡單的ICMP netmask請求,帶有 -s 選項,來輸出IP地址和子網掩碼。接下來,我們使用scapy來執行目標上的並行路由跟蹤,並在表格中展示結果。在步驟7中,我們在不同主機的80和443埠上執行了61TCP路由跟蹤,並且將最大TTL設置為20來停止這個過程。在獲得結果之後,我們創建了它的圖片表示,將它保存到臨時目錄中,同時創建了相同結果的3D表示。最後,我們退出了scapy。
1.3 識別活動主機
在嘗試滲透之前,我們首先需要識別目標網路範圍內的活動主機。一個簡單的方法就是對目標網路執行 ping 操作。當然,這可以被主機拒絕或忽略,這不是我
們希望的。操作步驟讓我們打開終端窗口,開始定位活動主機:
1. 我們可以使用Nmap來判斷某個主機是否打開或關閉,像下面這樣:
nmap -sP 216.27.130.162
Starting Nmap 5.61TEST4 ( http://nmap.org ) at 2012-04-27 23:30 CDT
Nmap scan report for test-target.net (216.27.130.162)
Host is up (0.00058s latency).
Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds
2. 我們也可以使用Nping(Nmap組件),它提供給我們更詳細的結果:
nping –echo-client “public” echo.nmap.org
3. 我們也可以向指定埠發送一些十六進位數據:
nping -tcp -p 445 –data AF56A43D 216.27.130.162
1.1 尋找開放埠
在了解目標網路範圍和活動主機之後,我們需要執行埠掃描操作來檢索開放的TCP和UDP
埠和接入點。
準備完成這個需要啟動Apache Web伺服器。
操作步驟
讓我們通過打開終端窗口,開始尋找開放埠:
1. 運行終端窗口並輸入下列命令作為開始:
nmap 192.168.56.101
2. 我們也可以顯式指定要掃描的埠(這裡我們指定了1000個埠):
nmap -p 1-1000 192.168.56.101
3. 或指定Nmap來掃描某個組織所有網路的TCP 22埠:
nmap -p 22 192.168.56.*
1. 或者以特定格式輸出結果:
nmap -p 22 192.168.10.* -oG /tmp/nmap-targethost-tcp445.tx
工作原理
這個中,我們使用Nmap來掃描我們網路上的目標主機,並判斷開放了哪個埠。
更多
Nmap的GUI版本叫做Zenmap,它可以通過在終端上執行 zenmap 命令,或者訪
問 Applications | Kali Linux | Information Gathering | Network Scanners | zenmap 來啟動。1.5 作業系統指紋識別
到資訊收集的這個步驟,我們應該記錄了一些IP地址,活動主機,以及所識別的目標組織的開放埠。下一步就是判斷活動主機上運行的作業系統,以便了解我們所滲透的系統類型。
準備需要用到Wireshark捕獲文件來完成這個的步驟2。
操作步驟
讓我們在終端窗口中進行OS指紋識別:
1. 我們可以使用Nmap執行下列命令,帶有 -O 命令來開啟OS檢測功能:
nmap -O 192.168.56.102
2. 使用 p0f 來分析Wireshark捕獲文件:
p0f -s /tmp/targethost.pcap -o p0f-result.log -l
p0f – passive os fingerprinting utility, version 2.0.8
(C) M. Zalewski <[email protected]>, W. Stearns
p0f: listening (SYN) on ‘targethost.pcap’, 230 sigs (16 generic), rule: ‘all’.
[+] End of input file.
1.6 服務指紋識別
判斷運行在特定埠上的服務是目標網路上成功滲透的保障。它也會排除任何由OS指紋之別產生的疑惑。
操作步驟
讓我們通過開始終端窗口來進行服務指紋識別:
1. 打開終端窗口並鍵入以下命令:
68nmap -sV 192.168.10.200
Starting Nmap 5.61TEST4 ( http://nmap.org ) at 2012-03-28 05:10 CDT
Interesting ports on 192.168.10.200:
Not shown: 1665 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp Microsoft ftpd 5.0
25/tcp open smtp Microsoft ESMTP 5.0.2195.6713
80/tcp open http Microsoft IIS webserver 5.0
119/tcp open nntp Microsoft NNTP Service 5.0.2195.6702 (posting ok)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn
443/tcp open https?
445/tcp open microsoft-ds Microsoft Windows 2000 microsoft-ds
1025/tcp open mstask Microsoft mstask
1026/tcp open msrpc Microsoft Windows RPC
1027/tcp open msrpc Microsoft Windows RPC
1755/tcp open wms?
3372/tcp open msdtc?
6666/tcp open nsunicast Microsoft Windows Media Unicast Service (nsum.exe)
MAC Address: 00:50:56:C6:00:01 (VMware)
Service Info: Host: DC; OS: Windows
Nmap finished: 1 IP address (1 host up) scanned in 63.311 seconds
2. 我們也可以使用 amap 來識別運行在特定埠或埠範圍內的應用,比如下面這個例子:
amap -bq 192.168.10.200 200-300
amap v5.1 (www.thc.org/thc-amap) started at 2012-03-28 06:05:30 – MAPPING mode
Protocol on 127.0.0.1:212/tcp matches ssh – banner: SSH-2.0- OpenSSH_3.9p1n
Protocol on 127.0.0.1:212/tcp matches ssh-openssh – banner: SSH-2.0-OpenSSH_3.9p1
n
amap v5.0 finished at 2005-07-14 23:02:11
1.7 Maltego 風險評估
在這個中,我們將要開始使用Maltego的特殊Kali版本,它可以在資訊收集階段協助我
們,通過將獲得的資訊以易於理解的形式展示。Maltego是開源的風險評估工具,被設計用來
演示網路上故障單點的複雜性和嚴重性。它也具有從內部和外部來源聚合資訊來提供簡潔的
風險圖表的能力。
準備需要一個帳號來使用Maltego。訪問https://www.paterva.com/web6/community/來註冊帳號。
操作步驟
讓我們從啟動Maltego開始:
1. 訪問 Applications | Kali Linux | Information Gathering | OSINT Analysis | maltego 來
啟動Maltego。
2. 點擊開始嚮導的 Next 來查看登錄細節:
3. 點擊 Next 來驗證我們的登錄憑證。驗證之後,點擊 Next 以繼續:
4. 選擇transform seed設置,之後點擊 Next
5. 這個嚮導在跳到下個頁面之前會執行多次操作。完成之後,選
擇 Open a blank graph and let me play around 並點擊 Finish 。
6. 最開始,將 Domain 實體從 Palette 組件拖放到 New Graph 標籤頁中。
7. 通過點擊創建的 Domain 實體來設置目標域名,並且編輯 Property View 中
的 Domain Name 屬性。
8. 目標一旦設置好,我們就可以開始收集資訊了。最開始,右鍵點擊創建的 Domain 實體,
並且選擇 Run Transform 來顯示可用的選項:
9. 我們可以選擇查找DNS名稱,執行WHOIS查詢,獲得郵件地址,以及其它。或者我們還
可以選擇運行下面展示的全部轉換。
10. 我們甚至可以通過在鏈接的子節點上執行相同操作,來獲得更多資訊,直到我們找到了
想要的資訊。
工作原理
在這個中,我們使用Maltego來映射網路。Maltego是一個開源工具,用於資訊收集和取證,由Paterva出品。我們通過完成開始嚮導來開始這個。之後我們使用 Domain 實體,通過將它拖到我們的圖表中。最後,我們讓Maltego完成我們的圖表,並且查找各種來源來完成任務。Maltego十分有用,因為我們可以利用這一自動化的特性來快速收集目標資訊,例如收集郵件地址、伺服器的資訊、執行WHOIS查詢,以及其它。社區版只允許我們在資訊收集中使用75個轉換。Maltego的完整版需要$650。
更多啟用和禁用轉換可以通過 Manage 標籤欄下方的 Transform Manager 窗口設置:
一些轉換首先需要接受才可以使用。
1.8 映射網路
使用前面幾個獲得的資訊,我們就可以創建該組織網路的藍圖。在這一章的最後一個·秘
籍中,我們會了解如何使用Maltego CaseFile來可視化地編譯和整理所獲得的資訊。
CaseFile 就像開發者的網站上那樣,相當於不帶轉換的Maltego,但擁有大量特性。多數特性會在這個的“操作步驟”一節中展示。
操作步驟當我們從啟動CaseFile來開始:
1. 訪問 Applications | Kali Linux | Reporting Tools | Evidence Management | casefile 來
啟動CaseFile。
2. 點擊CaseFile應用菜單的 New 來創建新的圖表:
3. 就像Maltego那樣,我們將每個實體從 Palette 組建拖放到圖表標籤頁中。讓我們從拖
放 Domain 實體以及修改 Domain Name 屬性來開始。
4. 將滑鼠指針置於實體上方,並且雙擊註解圖標來添加註解。
5. 讓我們拖放另一個實體來記錄目標的DNS資訊:
6. 鏈接實體只需要在實體之前拖出一條線:
7. 按需自定義鏈接的屬性:
8. 重複步驟5~7來向圖中添加更多關於該組織網路的資訊。
9. 最後我們保存了資訊圖表。圖表的記錄可以在之後打開和編輯,如果我們需要的話,和我們從已知目標獲得更多資訊的情況一樣。工作原理
我們使用Maltego CaseFile來映射網路。CaseFile是個可視化的智慧應用,可
以用於判斷數百個不同類型資訊之間的關係和現實世界的聯繫。它的本質是離線情報,也就
是說它是個手動的過程。我們以啟動CaseFile並且創建新的圖表作為開始。接下來,我們使用了收集到或已知的目標網路資訊,並且開始向圖表中添加組件來做一些設置。最後保存圖表來結束這個。更多我們也可以加密圖表記錄,使它在公眾眼裡更安全。為了加密圖表,需要在保存的時候選擇 Encrypt (AES-128) 複選框並提供一個密碼。