第四章 信息收集
作者:Willie L. Pritchett, David De Smet
譯者:飛龍
協(xié)議:CC BY-NC-SA 4.0
簡介
攻擊的重要階段之一就是信息收集涉枫。為了能夠?qū)嵤┕簦覀冃枰占P(guān)于目標(biāo)的基本信息鹰溜。我們獲得的信息越多盒使,攻擊成功的概率就越高。
我也強調(diào)這一階段的一個重要方面故源,它就是記錄。在編寫這本書的時候,最新的Kali發(fā)行版包含了一組工具用于幫助我們核對和組織來自目標(biāo)的數(shù)據(jù)沐鼠,允許我們更好地偵查目標(biāo)。類似Maltego CaseFile和 KeepNote的工具就是一個例子叹谁。
4.1 服務(wù)枚舉
在這個秘籍中饲梭,我們將會展示一些服務(wù)枚舉的小技巧。枚舉是允許我們從網(wǎng)絡(luò)收集信息的過程焰檩。我們將要研究DNS枚舉和SNMP枚舉技術(shù)憔涉。DNS枚舉是定位某個組織的所有DNS服務(wù)器和DNS條目的過程。DN枚舉允許我們收集有關(guān)該組織的重要信息析苫,例如用戶名兜叨、計算機名稱、IP地址以及其它衩侥。為了完成這些任務(wù)我們會使用DNSenum国旷。對于SNMP枚舉,我們會使用叫做SnmpEnum的工具茫死,它是一個強大的SNMP枚舉工具跪但,允許我們分析網(wǎng)絡(luò)上的SNMP流量。
操作步驟
讓我們以DNS枚舉作為開始:
-
我們使用DNSenum進行DNS枚舉峦萎。為了開始DNS枚舉屡久,打開Gnome終端,并且輸入一下命令:
cd /usr/bin ./dnsenum --enum adomainnameontheinternet.com
請不要在不屬于你的公共網(wǎng)站或者不是你自己的服務(wù)器上運行這個工具爱榔。這里我們將
adomainnameontheinternet.com
作為一個例子被环,你應(yīng)該替換掉這個目標(biāo)。要當(dāng)心搓蚪! -
我們需要獲取信息輸出蛤售,例如主機、名稱服務(wù)器、郵件服務(wù)器悴能,如果幸運的話還可以得到區(qū)域轉(zhuǎn)換:
-
我們可以使用一些額外的選項來運行DNSenum揣钦,它們包括這些東西:
-
-- threads [number]
允許你設(shè)置一次所運行的線程數(shù)量。 -
-r
允許你開啟遞歸查找漠酿。 -
-d
允許你設(shè)置在WHOIS請求之間的時間延遲冯凹,單位為秒。 -
-o
允許我們制定輸出位置炒嘲。 -
-w
允許我們開啟WHOIS查詢宇姚。
更多WHOIS上的例子,請見WHOIS的維基百科夫凸。
-
-
我們可以使用另一個命令
snmpwalk
來檢測Windows主機浑劳。Snmpwalk是一個使用SNMP GETNEXT請求在網(wǎng)絡(luò)實體中查詢信息樹的SNMP應(yīng)用。在命令行中鍵入下列命令: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(一個嘗試多種技術(shù)來尋找所有目標(biāo)所用的IP地址和域名的工具)進行域名掃描夭拌,我們可以鍵入以下命令:
cd /usr/bin fierce -dns adomainnameontheinternet.com
請不要在不屬于你的公共網(wǎng)站或者不是你自己的服務(wù)器上運行這個工具魔熏。這里我們將
adomainnameontheinternet.com
作為一個例子,你應(yīng)該替換掉這個目標(biāo)鸽扁。要當(dāng)心蒜绽! -
為了以指定的詞語列表進行相同的操作,鍵入以下命令:
fierce -dns adomainnameontheinternet.com -wordlist hosts.txt -file /tmp/output.txt
-
為了在SMTP服務(wù)器上啟動用戶的SMTP枚舉桶现,鍵入以下命令:
smtp-user-enum -M VRFY -U /tmp/users.txt -t 192.168.10.200
我們現(xiàn)在可以記錄所獲得的結(jié)果了躲雅。
4.2 判斷網(wǎng)絡(luò)范圍
使用上一節(jié)中我們所收集的信息,我們就能著眼于判斷目標(biāo)網(wǎng)絡(luò)的IP地址范圍骡和。在這個秘籍中我們將要探索完成它所用的工具相赁。
操作步驟
讓我們通過打開終端窗口來開始執(zhí)行判斷網(wǎng)絡(luò)范圍的步驟:
-
打開新的終端窗口,并且鍵入以下命令:
dmitry -wnspb targethost.com -o /root/Desktop/dmitry-result
-
完成之后即横,我們應(yīng)該在桌面上得到了一個文本文件噪生,名稱為
dmitry-result.txt
,含有收集到的目標(biāo)信息: -
鍵入以下命令來執(zhí)行ICMP netmask請求:
netmask -s targethost.com
-
使用scapy东囚,我們就可以執(zhí)行并行路由跟蹤跺嗽。鍵入以下命令來啟動它:
scapy
-
scapy啟動之后,我們現(xiàn)在可以輸入以下函數(shù):
ans,unans=sr(IP(dst="www.targethost.com/30", ttl=(1,6))/TCP()
-
我們可以輸入以下函數(shù)來將結(jié)果展示為表格:
ans.make_table( lambda (s,r): (s.dst, s.ttl, r.src) )
結(jié)果如下:
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
-
我們需要鍵入以下函數(shù)來使用scapy獲得TCP路由蹤跡:
res,unans=traceroute(["www.google.com","www.Kali- linux.org","www.targethost.com"],dport=[80,443],maxttl=20, retry=-2)
-
我們只需要鍵入以下函數(shù)來將結(jié)果展示為圖片:
res.graph()
-
保存圖片只需要下列命令:
res.graph(target="> /tmp/graph.svg")
-
我們可以生成3D展示的圖片页藻,通過鍵入下列函數(shù)來實現(xiàn):
res.trace3D()
-
鍵入以下命令來退出scapy:
exit()
在獲得結(jié)果之后桨嫁,我們現(xiàn)在可以對其做記錄。
工作原理
在步驟1中份帐,我們使用了dmitry
來獲取目標(biāo)信息璃吧。參數(shù)-wnspub
允許我們在域名上執(zhí)行WHOIS查詢,檢索Netcraft.com
的信息废境,搜索可能的子域名畜挨,以及掃描TCP端口筒繁。選項-o
允許我們將結(jié)果保存到文本文件中。在步驟3中巴元,我們建立了一個簡單的ICMP netmask請求毡咏,帶有-s
選項,來輸出IP地址和子網(wǎng)掩碼逮刨。接下來呕缭,我們使用scapy來執(zhí)行目標(biāo)上的并行路由跟蹤,并在表格中展示結(jié)果修己。在步驟7中恢总,我們在不同主機的80和443端口上執(zhí)行了TCP路由跟蹤,并且將最大TTL設(shè)置為20來停止這個過程睬愤。在獲得結(jié)果之后片仿,我們創(chuàng)建了它的圖片表示,將它保存到臨時目錄中戴涝,同時創(chuàng)建了相同結(jié)果的3D表示滋戳。最后钻蔑,我們退出了scapy啥刻。
4.3 識別活動主機
在嘗試滲透之前,我們首先需要識別目標(biāo)網(wǎng)絡(luò)范圍內(nèi)的活動主機咪笑。
一個簡單的方法就是對目標(biāo)網(wǎng)絡(luò)執(zhí)行ping
操作可帽。當(dāng)然,這可以被主機拒絕或忽略窗怒,這不是我們希望的映跟。
操作步驟
讓我們打開終端窗口,開始定位活動主機:
-
我們可以使用Nmap來尋找某個主機打開或關(guān)閉扬虚,像下面這樣:
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組件)努隙,它提供給我們更詳細(xì)的結(jié)果:
nping --echo-client "public" echo.nmap.org
-
我們也可以向指定端口發(fā)送一些十六進制數(shù)據(jù):
nping -tcp -p 445 –data AF56A43D 216.27.130.162
4.4 尋找開放端口
在了解目標(biāo)網(wǎng)絡(luò)范圍和活動主機之后,我們需要執(zhí)行端口掃描操作來檢索開放的TCP和UDP端口和接入點辜昵。
準(zhǔn)備
完成這個秘籍需要啟動Apache Web服務(wù)器荸镊。
操作步驟
讓我們通過打開終端窗口,開始尋找開放端口:
-
運行終端窗口并輸入下列命令作為開始:
nmap 192.168.56.101
-
我們也可以顯式指定要掃描的端口(這里我們指定了1000個端口):
nmap -p 1-1000 192.168.56.101
-
或指定Nmap來掃描某個組織所有網(wǎng)絡(luò)的TCP 22端口:
nmap -p 22 192.168.56.*
-
或者以特定格式輸出結(jié)果:
nmap -p 22 192.168.10.* -oG /tmp/nmap-targethost-tcp445.tx
工作原理
這個秘籍中堪置,我們使用Nmap來掃描我們網(wǎng)絡(luò)上的目標(biāo)主機躬存,并判斷開放了哪個端口。
更多
Nmap的GUI版本叫做Zenmap舀锨,它可以在終端上執(zhí)行zenmap
命令岭洲,或者訪問Applications | Kali Linux | Information Gathering | Network Scanners | zenmap
來啟動。
4.5 操作系統(tǒng)指紋識別
到信息收集的這個步驟坎匿,我們應(yīng)該記錄了一些IP地址盾剩,活動主機雷激,以及所識別的目標(biāo)組織的開放端口。下一步就是判斷活動主機上運行的操作系統(tǒng)告私,以便了解我們所滲透的系統(tǒng)類型侥锦。
準(zhǔn)備
需要用到Wireshark捕獲文件來完成這個秘籍的步驟2。
操作步驟
讓我們在終端窗口中進行OS指紋識別:
-
我們可以使用Nmap執(zhí)行下列命令德挣,帶有
-O
命令來開啟OS檢測功能:nmap -O 192.168.56.102
-
使用
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.
4.6 服務(wù)指紋識別
判斷運行在特定端口上的服務(wù)是目標(biāo)網(wǎng)絡(luò)上成功滲透的保障恭垦。它也會排除任何由OS指紋之別產(chǎn)生的疑惑。
操作步驟
讓我們通過開始終端窗口來進行服務(wù)指紋識別:
-
打開終端窗口并鍵入以下命令:
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
來識別運行在特定端口或端口范圍內(nèi)的應(yīng)用格嗅,比如下面這個例子: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
4.7 Maltego 風(fēng)險評估
在這個秘籍中番挺,我們將要開始使用Maltego的特殊Kali版本,它可以在信息收集階段協(xié)助我們屯掖,通過將獲得的信息以易于理解的形式展示玄柏。Maltego是開源的風(fēng)險評估工具,被設(shè)計用來演示網(wǎng)絡(luò)上故障單點的復(fù)雜性和嚴(yán)重性贴铜。它也具有從內(nèi)部和外部來源聚合信息來提供簡潔的風(fēng)險圖表的能力粪摘。
準(zhǔn)備
需要一個賬號來使用Maltego。訪問https://www.paterva.com/web6/community/來注冊賬號绍坝。
操作步驟
讓我們從啟動Maltego開始:
-
訪問
Applications | Kali Linux | Information Gathering | OSINT Analysis | maltego
來啟動Maltego徘意。窗口如下: -
點擊開始向?qū)У?code>Next來查看登錄細(xì)節(jié):
點擊
Next
來驗證我們的登錄憑證。驗證之后轩褐,點擊Next
以繼續(xù):-
選擇transform seed設(shè)置椎咧,之后點擊
Next
: -
這個向?qū)г谔较聜€頁面之前會執(zhí)行多次操作。完成之后把介,選擇
Open a blank graph and let me play around
并點擊Finish
勤讽。 -
最開始,將
Domain
實體從Palette
組件拖放到New Graph
標(biāo)簽頁中拗踢。 -
通過點擊創(chuàng)建的
Domain
實體來設(shè)置目標(biāo)域名脚牍,并且編輯Property View
中的Domain Name
屬性。 -
目標(biāo)一旦設(shè)置好巢墅,我們就可以開始收集信息了诸狭。最開始,右鍵點擊創(chuàng)建的
Domain
實體砂缩,并且選擇Run Transform
來顯示可用的選項: -
我們可以選擇查找DNS名稱作谚,執(zhí)行WHOIS查詢,獲得郵件地址庵芭,以及其它妹懒。或者我們還可以選擇運行下面展示的全部轉(zhuǎn)換双吆。
我們甚至可以通過在鏈接的子節(jié)點上執(zhí)行相同操作眨唬,來獲得更多信息会前,直到我們找到了想要的信息。
工作原理
在這個秘籍中匾竿,我們使用Maltego來映射網(wǎng)絡(luò)瓦宜。Maltego是一個開源工具,用于信息收集和取證岭妖,由Paterva出品临庇。我們通過完成開始向?qū)黹_始這個秘籍。之后我們使用Domain
實體昵慌,通過將它拖到我們的圖表中假夺。最后,我們讓Maltego完成我們的圖標(biāo)斋攀,并且查找各種來源來完成任務(wù)已卷。Maltego十分有用,因為我們可以利用這一自動化的特性來快速收集目標(biāo)信息淳蔼,例如收集郵件地址侧蘸、服務(wù)器的信息、執(zhí)行WHOIS查詢鹉梨,以及其它讳癌。
社區(qū)版只允許我們在信息收集中使用75個轉(zhuǎn)換。Maltego的完整版需要$650俯画。
更多
啟用和禁用轉(zhuǎn)換可以通過Manage
標(biāo)簽欄下方的Transform Manager
窗口設(shè)置:
一些轉(zhuǎn)換首先需要接受才可以使用析桥。
4.8 映射網(wǎng)絡(luò)
使用前面幾個秘籍獲得的信息,我們就可以創(chuàng)建該組織網(wǎng)絡(luò)的藍圖艰垂。在這一章的最后一個·秘籍中,我們會了解如何使用Maltego CaseFile來可視化地編譯和整理所獲得的信息埋虹。
CaseFile
就像開發(fā)者的網(wǎng)站上那樣猜憎,相當(dāng)于不帶轉(zhuǎn)換的Maltego,但擁有大量特性搔课。多數(shù)特性會在這個秘籍的“操作步驟”一節(jié)中展示胰柑。
操作步驟
當(dāng)我們從啟動CaseFile來開始:
訪問
Applications | Kali Linux | Reporting Tools | Evidence Management | casefile
來啟動CaseFile。-
點擊CaseFile應(yīng)用菜單的
New
來創(chuàng)建新的圖表: -
就像Maltego那樣爬泥,我們將每個實體從
Palette
組建拖放到圖表標(biāo)簽頁中柬讨。讓我們從拖放Domain
實體以及修改Domain Name
屬性來開始。 -
將鼠標(biāo)指針置于實體上方袍啡,并且雙擊注解圖標(biāo)來添加注解踩官。
-
讓我們拖放另一個實體來記錄目標(biāo)的DNS信息:
-
鏈接實體只需要在實體之前拖出一條線:
-
按需自定義鏈接的屬性:
-
重復(fù)步驟5~7來向圖中添加更多關(guān)于該組織網(wǎng)絡(luò)的信息。
最后我們保存了信息圖表境输。圖表的記錄可以在之后打開和編輯蔗牡,如果我們需要的話颖系,和我們從已知目標(biāo)獲得更多信息的情況一樣。
工作原理
在這個秘籍中辩越,我們使用Maltego CaseFile來映射網(wǎng)絡(luò)嘁扼。CaseFile是個可視化的智能應(yīng)用,可以用于判斷數(shù)百個不同類型信息之間的關(guān)系和現(xiàn)實世界的聯(lián)系黔攒。它的本質(zhì)是離線情報趁啸,也就是說它是個手動的過程。我們以啟動CaseFile并且創(chuàng)建新的圖表作為開始督惰。接下來莲绰,我們使用了收集到或已知的目標(biāo)網(wǎng)絡(luò)信息,并且開始向圖表中添加組件來做一些設(shè)置姑丑。最后一保存圖表來結(jié)束這個秘籍蛤签。
更多
我們也可以加密圖表記錄,使它在公眾眼里更安全栅哀。為了加密圖表震肮,需要在保存的時候選擇Encrypt (AES-128)
復(fù)選框并提供一個密碼。