做者:Willie L. Pritchett, David De Smetlinux
譯者:飛龍ios
協議:CC BY-NC-SA 4.0git
攻擊的重要階段之一就是信息收集。爲了可以實施攻擊,咱們須要收集關於目標的基本信息。咱們得到的信息越多,攻擊成功的機率就越高。github
我也強調這一階段的一個重要方面,它就是記錄。在編寫這本書的時候,最新的Kali發行版包含了一組工具用於幫助咱們覈對和組織來自目標的數據,容許咱們更好地偵查目標。相似Maltego CaseFile和 KeepNote的工具就是一個例子。web
在這個祕籍中,咱們將會展現一些服務枚舉的小技巧。枚舉是容許咱們從網絡收集信息的過程。咱們將要研究DNS枚舉和SNMP枚舉技術。DNS枚舉是定位某個組織的全部DNS服務器和DNS條目的過程。DN枚舉容許咱們收集有關該組織的重要信息,例如用戶名、計算機名稱、IP地址以及其它。爲了完成這些任務咱們會使用DNSenum。對於SNMP枚舉,咱們會使用叫作SnmpEnum的工具,它是一個強大的SNMP枚舉工具,容許咱們分析網絡上的SNMP流量。安全
讓咱們以DNS枚舉做爲開始:服務器
咱們使用DNSenum進行DNS枚舉。爲了開始DNS枚舉,打開Gnome終端,而且輸入一下命令:網絡
cd /usr/bin ./dnsenum --enum adomainnameontheinternet.com
> 請不要在不屬於你的公共網站或者不是你本身的服務器上運行這個工具。這裏咱們將`adomainnameontheinternet.com`做爲一個例子,你應該替換掉這個目標。要小心!
咱們須要獲取信息輸出,例如主機、名稱服務器、郵件服務器,若是幸運的話還能夠獲得區域轉換:dom
咱們可使用一些額外的選項來運行DNSenum,它們包括這些東西:ssh
-- threads [number]
容許你設置一次所運行的線程數量。
-r
容許你開啓遞歸查找。
-d
容許你設置在WHOIS請求之間的時間延遲,單位爲秒。
-o
容許咱們制定輸出位置。
-w
容許咱們開啓WHOIS查詢。
更多WHOIS上的例子,請見WHOIS的維基百科。
咱們可使用另外一個命令snmpwalk
來檢測Windows主機。Snmpwalk是一個使用SNMP GETNEXT請求在網絡實體中查詢信息樹的SNMP應用。在命令行中鍵入下列命令:
snmpwalk -c public 192.168.10.200 -v 2c
咱們也能夠枚舉安裝的軟件:
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"
以及使用相同工具枚舉開放的TCP端口:
snmpwalk -c public 192.168.10.200 -v 1 | grep tcpConnState | cut -d"." -f6 | sort –nu 21 25 80 443
另外一個經過SNMP收集信息的工具叫作snmpcheck
:
cd /usr/bin snmpcheck -t 192.168.10.200
爲了使用fierce(一個嘗試多種技術來尋找全部目標所用的IP地址和域名的工具)進行域名掃描,咱們能夠鍵入如下命令:
cd /usr/bin fierce -dns adomainnameontheinternet.com
> 請不要在不屬於你的公共網站或者不是你本身的服務器上運行這個工具。這裏咱們將`adomainnameontheinternet.com`做爲一個例子,你應該替換掉這個目標。要小心!
爲了以指定的詞語列表進行相同的操做,鍵入如下命令:
fierce -dns adomainnameontheinternet.com -wordlist hosts.txt -file /tmp/output.txt
爲了在SMTP服務器上啓動用戶的SMTP枚舉,鍵入如下命令:
smtp-user-enum -M VRFY -U /tmp/users.txt -t 192.168.10.200
咱們如今能夠記錄所得到的結果了。
使用上一節中咱們所收集的信息,咱們就能着眼於判斷目標網絡的IP地址範圍。在這個祕籍中咱們將要探索完成它所用的工具。
讓咱們經過打開終端窗口來開始執行判斷網絡範圍的步驟:
打開新的終端窗口,而且鍵入如下命令:
dmitry -wnspb targethost.com -o /root/Desktop/dmitry-result
完成以後,咱們應該在桌面上獲得了一個文本文件,名稱爲dmitry-result.txt
,含有收集到的目標信息:
鍵入如下命令來執行ICMP netmask請求:
netmask -s targethost.com
使用scapy,咱們就能夠執行並行路由跟蹤。鍵入如下命令來啓動它:
scapy
scapy啓動以後,咱們如今能夠輸入如下函數:
ans,unans=sr(IP(dst="www.targethost.com/30", ttl=(1,6))/TCP()
咱們能夠輸入如下函數來將結果展現爲表格:
ans.make_table( lambda (s,r): (s.dst, s.ttl, r.src) )
結果以下:
216.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.4.254 223.243.4.254 223.243.4.254 223.243.4.254 4 223.243.2.6 223.243.2.6 223.243.2.6 223.243.2.6 5 192.251.254.1 192.251.251.80 192.251.254.1 192.251.251.80
咱們須要鍵入如下函數來使用scapy得到TCP路由蹤影:
res,unans=traceroute(["www.google.com","www.Kali- linux.org","www.targethost.com"],dport=[80,443],maxttl=20, retry=-2)
咱們只須要鍵入如下函數來將結果展現爲圖片:
res.graph()
![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-2-2.jpg)
保存圖片只須要下列命令:
res.graph(target="> /tmp/graph.svg")
咱們能夠生成3D展現的圖片,經過鍵入下列函數來實現:
res.trace3D()
鍵入如下命令來退出scapy:
exit()
在得到結果以後,咱們如今能夠對其作記錄。
在步驟1中,咱們使用了dmitry
來獲取目標信息。參數-wnspub
容許咱們在域名上執行WHOIS查詢,檢索Netcraft.com
的信息,搜索可能的子域名,以及掃描TCP端口。選項-o
容許咱們將結果保存到文本文件中。在步驟3中,咱們創建了一個簡單的ICMP netmask請求,帶有-s
選項,來輸出IP地址和子網掩碼。接下來,咱們使用scapy來執行目標上的並行路由跟蹤,並在表格中展現結果。在步驟7中,咱們在不一樣主機的80和443端口上執行了TCP路由跟蹤,而且將最大TTL設置爲20來中止這個過程。在得到結果以後,咱們建立了它的圖片表示,將它保存到臨時目錄中,同時建立了相同結果的3D表示。最後,咱們退出了scapy。
在嘗試滲透以前,咱們首先須要識別目標網絡範圍內的活動主機。
一個簡單的方法就是對目標網絡執行ping
操做。固然,這能夠被主機拒絕或忽略,這不是咱們但願的。
讓咱們打開終端窗口,開始定位活動主機:
咱們可使用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
咱們也可使用Nping(Nmap組件),它提供給咱們更詳細的結果:
nping --echo-client "public" echo.nmap.org
![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-3-1.jpg)
咱們也能夠向指定端口發送一些十六進制數據:
nping -tcp -p 445 –data AF56A43D 216.27.130.162
在瞭解目標網絡範圍和活動主機以後,咱們須要執行端口掃描操做來檢索開放的TCP和UDP端口和接入點。
完成這個祕籍須要啓動Apache Web服務器。
讓咱們經過打開終端窗口,開始尋找開放端口:
運行終端窗口並輸入下列命令做爲開始:
nmap 192.168.56.101
![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-4-1.jpg)
咱們也能夠顯式指定要掃描的端口(這裏咱們指定了1000個端口):
nmap -p 1-1000 192.168.56.101
![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-4-2.jpg)
或指定Nmap來掃描某個組織全部網絡的TCP 22端口:
nmap -p 22 192.168.56.*
![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-4-3.jpg)
或者以特定格式輸出結果:
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
來啓動。
到信息收集的這個步驟,咱們應該記錄了一些IP地址,活動主機,以及所識別的目標組織的開放端口。下一步就是判斷活動主機上運行的操做系統,以便了解咱們所滲透的系統類型。
須要用到Wireshark捕獲文件來完成這個祕籍的步驟2。
讓咱們在終端窗口中進行OS指紋識別:
咱們可使用Nmap執行下列命令,帶有-O
命令來開啓OS檢測功能:
nmap -O 192.168.56.102
![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-5-1.jpg)
使用p0f
來分析Wireshark捕獲文件:
p0f -s /tmp/targethost.pcap -o p0f-result.log -l p0f - passive os fingerprinting utility, version 2.0.8 (C) M. Zalewski <lcamtuf@dione.cc>, W. Stearns <wstearns@pobox.com> p0f: listening (SYN) on 'targethost.pcap', 230 sigs (16 generic), rule: 'all'. [+] End of input file.
判斷運行在特定端口上的服務是目標網絡上成功滲透的保障。它也會排除任何由OS指紋之別產生的疑惑。
讓咱們經過開始終端窗口來進行服務指紋識別:
打開終端窗口並鍵入如下命令:
nmap -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
咱們也可使用amap
來識別運行在特定端口或端口範圍內的應用,好比下面這個例子:
amap -bq 192.168.10.200 200-300 amap v5.4 (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.9p1\n 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
在這個祕籍中,咱們將要開始使用Maltego的特殊Kali版本,它能夠在信息收集階段協助咱們,經過將得到的信息以易於理解的形式展現。Maltego是開源的風險評估工具,被設計用來演示網絡上故障單點的複雜性和嚴重性。它也具備從內部和外部來源聚合信息來提供簡潔的風險圖表的能力。
須要一個帳號來使用Maltego。訪問https://www.paterva.com/web6/community/來註冊帳號。
讓咱們從啓動Maltego開始:
訪問 Applications | Kali Linux | Information Gathering | OSINT Analysis | maltego
來啓動Maltego。窗口以下:
![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-7-1.jpg)
點擊開始嚮導的Next
來查看登陸細節:
![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-7-2.jpg)
點擊Next
來驗證咱們的登陸憑證。驗證以後,點擊Next
以繼續:
選擇transform seed設置,以後點擊Next
:
![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-7-3.jpg)
這個嚮導在跳到下個頁面以前會執行屢次操做。完成以後,選擇Open a blank graph and let me play around
並點擊Finish
。
![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-7-4.jpg)
最開始,將Domain
實體從Palette
組件拖放到New Graph
標籤頁中。
![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-7-5.jpg)
經過點擊建立的Domain
實體來設置目標域名,而且編輯Property View
中的Domain Name
屬性。
![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-7-6.jpg)
目標一旦設置好,咱們就能夠開始收集信息了。最開始,右鍵點擊建立的Domain
實體,而且選擇Run Transform
來顯示可用的選項:
![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-7-7.jpg)
咱們能夠選擇查找DNS名稱,執行WHOIS查詢,得到郵件地址,以及其它。或者咱們還能夠選擇運行下面展現的所有轉換。
![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-7-8.jpg)
咱們甚至能夠經過在連接的子節點上執行相同操做,來得到更多信息,直到咱們找到了想要的信息。
在這個祕籍中,咱們使用Maltego來映射網絡。Maltego是一個開源工具,用於信息收集和取證,由Paterva出品。咱們經過完成開始嚮導來開始這個祕籍。以後咱們使用Domain
實體,經過將它拖到咱們的圖表中。最後,咱們讓Maltego完成咱們的圖標,而且查找各類來源來完成任務。Maltego十分有用,由於咱們能夠利用這一自動化的特性來快速收集目標信息,例如收集郵件地址、服務器的信息、執行WHOIS查詢,以及其它。
社區版只容許咱們在信息收集中使用75個轉換。Maltego的完整版須要$650。
啓用和禁用轉換能夠經過Manage
標籤欄下方的Transform Manager
窗口設置:
一些轉換首先須要接受纔可使用。
使用前面幾個祕籍得到的信息,咱們就能夠建立該組織網絡的藍圖。在這一章的最後一個·祕籍中,咱們會了解如何使用Maltego CaseFile來可視化地編譯和整理所得到的信息。
CaseFile
就像開發者的網站上那樣,至關於不帶轉換的Maltego,但擁有大量特性。多數特性會在這個祕籍的「操做步驟」一節中展現。
當咱們從啓動CaseFile來開始:
訪問Applications | Kali Linux | Reporting Tools | Evidence Management | casefile
來啓動CaseFile。
點擊CaseFile應用菜單的New
來建立新的圖表:
![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-8-1.jpg)
就像Maltego那樣,咱們將每一個實體從Palette
組建拖放到圖表標籤頁中。讓咱們從拖放Domain
實體以及修改Domain Name
屬性來開始。
![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-8-2.jpg)
將鼠標指針置於實體上方,而且雙擊註解圖標來添加註解。
![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-8-3.jpg)
讓咱們拖放另外一個實體來記錄目標的DNS信息:
![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-8-4.jpg)
連接實體只須要在實體以前拖出一條線:
![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-8-5.jpg)
按需自定義連接的屬性:
![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-8-6.jpg)
重複步驟5~7來向圖中添加更多關於該組織網絡的信息。
![](https://raw.githubusercontent.com/wizardforcel/kali-linux-cookbook-zh/master/img/4-8-7.jpg)
最後咱們保存了信息圖表。圖表的記錄能夠在以後打開和編輯,若是咱們須要的話,和咱們從已知目標得到更多信息的狀況同樣。
在這個祕籍中,咱們使用Maltego CaseFile來映射網絡。CaseFile是個可視化的智能應用,能夠用於判斷數百個不一樣類型信息之間的關係和現實世界的聯繫。它的本質是離線情報,也就是說它是個手動的過程。咱們以啓動CaseFile而且建立新的圖表做爲開始。接下來,咱們使用了收集到或已知的目標網絡信息,而且開始向圖表中添加組件來作一些設置。最後一保存圖表來結束這個祕籍。
咱們也能夠加密圖表記錄,使它在公衆眼裏更安全。爲了加密圖表,須要在保存的時候選擇Encrypt (AES-128)
複選框並提供一個密碼。