被動與主動偵察
在計算機系統和網路出現之前,孫子兵法在孫子兵法中教導說:“知己知彼,必勝不疑。” 如果您扮演攻擊者的角色,則需要收集有關目標系統的資訊。如果你扮演防禦者的角色,你需要知道你的對手會發現你的系統和網路的什麼
偵察(recon)可以定義為收集有關目標資訊的初步調查。這是統一殺傷鏈在系統上獲得初步立足點的第一步。我們將偵察分為:
- 被動偵察
- 主動偵察
在被動偵察中,您依賴於公開可用的知識。您無需直接與目標接觸即可從公開可用資源中獲取這些知識。把它想象成你從遠處看著目標領土,而不是踏上那個領土
被動偵察活動包括許多活動,例如:
- 從公共 DNS 伺服器查詢域的DNS記錄
- 檢查與目標網站相關的招聘廣告
- 閱讀有關目標公司的新聞文章
另一方面,主動偵察無法如此謹慎地實現。它需要與目標直接接觸。把它想象成你檢查門窗上的鎖,以及其他潛在的入口點
主動偵察活動的例子包括:
- 連線到公司伺服器之一,例如HTTP、FTP 和 SMTP
- 致電公司試圖獲取資訊(社會工程學)
- 冒充修理工進入公司場所
考慮到主動偵察的侵入性,除非獲得適當的法律授權,否則很快就會陷入法律困境
被動偵查
我們將學習三個命令列工具:
whois
查詢 WHOIS 伺服器
nslookup
查詢DNS伺服器
dig
查詢DNS伺服器
我們使用whois
查詢 WHOIS 記錄,而我們使用nslookup
和dig
查詢DNS資料庫記錄。這些都是公開可用的記錄,因此不會提醒目標。
我們還將學習兩種線上服務的用法:
- DNSDumpster
- Shodan.io
這兩個線上服務使我們能夠在不直接連線到目標的情況下收集有關目標的資訊
Whois
WHOIS 是遵循RFC 3912規範的請求和響應協議。WHOIS 伺服器在TCP埠 43 上偵聽傳入請求。域名註冊商負責維護其租用域名的 WHOIS 記錄。WHOIS 伺服器回覆與所請求域相關的各種資訊。特別感興趣的是,我們可以學習:
- 註冊商:域名是透過哪個註冊商註冊的?
- 註冊人聯絡方式:姓名、單位、地址、電話等。(除非透過隱私服務隱藏)
- 建立、更新和到期日期:域名首次註冊的時間是什麼時候?最後一次更新是什麼時候?什麼時候需要更新?
- 名稱伺服器:請求哪個伺服器來解析域名?
要獲取這些資訊,我們需要使用whois
客戶端或線上服務。許多線上服務提供whois
資訊;但是,使用本地 whois
客戶端通常更快、更方便
語法是whois DOMAIN_NAME
,其中DOMAIN_NAME
是您嘗試獲取更多資訊的域。考慮以下示例執行whois tryhackme.com
user@TryHackMe$ whois tryhackme.com
[Querying whois.verisign-grs.com]
[Redirected to whois.namecheap.com]
[Querying whois.namecheap.com]
[whois.namecheap.com]
Domain name: tryhackme.com
Registry Domain ID: 2282723194_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.namecheap.com
Registrar URL: http://www.namecheap.com
Updated Date: 2021-05-01T19:43:23.31Z
Creation Date: 2018-07-05T19:46:15.00Z
Registrar Registration Expiration Date: 2027-07-05T19:46:15.00Z
Registrar: NAMECHEAP INC
Registrar IANA ID: 1068
Registrar Abuse Contact Email: abuse@namecheap.com
Registrar Abuse Contact Phone: +1.6613102107
Reseller: NAMECHEAP INC
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Registry Registrant ID:
Registrant Name: Withheld for Privacy Purposes
Registrant Organization: Privacy service provided by Withheld for Privacy ehf
[...]
URL of the ICANN WHOIS Data Problem Reporting System: http://wdprs.internic.net/
>>> Last update of WHOIS database: 2021-08-25T14:58:29.57Z <<<
For more information on Whois status codes, please visit https://icann.org/epp
我們可以看到很多資訊;我們將按照顯示的順序檢查它們。首先,我們注意到我們被重定向到whois.namecheap.com
以獲取我們的資訊。在這種情況下,目前namecheap.com
正在維護該域名的 WHOIS 記錄。此外,我們可以看到建立日期以及最後更新日期和到期日期。
接下來,我們獲取有關注冊服務商和註冊人的資訊。我們可以找到註冊人的姓名和聯絡資訊,除非他們使用某些隱私服務。雖然上面沒有顯示,但我們得到了這個域的管理員和技術聯絡人。最後,如果我們有任何DNS記錄要查詢,我們會看到我們應該查詢的域名伺服器。
可以檢查收集到的資訊以發現新的攻擊面,例如社會工程或技術攻擊。例如,根據滲透測試的範圍,您可能會考慮對管理員使用者的電子郵件伺服器或 DNS 伺服器進行攻擊,假設它們歸您的客戶所有並且在滲透測試的範圍內。
需要注意的是,由於自動化工具濫用 WHOIS 查詢來收集電子郵件地址,許多 WHOIS 服務都對此採取了措施。例如,他們可能會編輯電子郵件地址。此外,許多註冊人訂閱了隱私服務,以避免他們的電子郵件地址被垃圾郵件傳送者收集並保護他們的資訊的私密性
nslookup 和 dig
在前面的任務中,我們使用 WHOIS 協議來獲取有關我們正在查詢的域名的各種資訊。特別是,我們能夠從註冊商那裡獲得DNS伺服器。
使用 查詢域名的 IP 地址nslookup
,代表名稱伺服器查詢。您需要發出命令nslookup DOMAIN_NAME
,例如,nslookup tryhackme.com
。或者,更一般地說,您可以使用nslookup OPTIONS DOMAIN_NAME SERVER
. 這三個主要引數是:
- OPTIONS 包含查詢型別,如下表所示。例如,您可以使用
A
IPv4 地址和AAAA
IPv6 地址。 - DOMAIN_NAME 是您正在查詢的域名。
- SERVER 是您要查詢的DNS伺服器。您可以選擇任何本地或公共 DNS 伺服器進行查詢。Cloudflare 提供
1.1.1.1
和1.0.0.1
,Google 提供8.8.8.8
和8.8.4.4
,Quad9 提供9.9.9.9
和149.112.112.112
。如果您想要 ISP 的 DNS 伺服器的替代方案,您可以選擇更多的公共DNS伺服器
查詢型別 | 結果 |
---|---|
A | IPv4 地址 |
AAAA級 | IPv6 地址 |
別名 | 規範名稱 |
MX | 郵件伺服器 |
面向服務架構 | 授權開始 |
TXT | TXT記錄 |
例如,nslookup -type=A tryhackme.com 1.1.1.1
(或者nslookup -type=a tryhackme.com 1.1.1.1
因為它不區分大小寫)可用於返回 tryhackme.com 使用的所有 IPv4 地址
user@TryHackMe$ nslookup -type=A tryhackme.com 1.1.1.1
Server: 1.1.1.1
Address: 1.1.1.1#53
Non-authoritative answer:
Name: tryhackme.com
Address: 172.67.69.208
Name: tryhackme.com
Address: 104.26.11.229
Name: tryhackme.com
Address: 104.26.10.229
A 和 AAAA 記錄分別用於返回 IPv4 和 IPv6 地址。這種查詢有助於從滲透測試的角度瞭解。在上面的示例中,我們從一個域名開始,並獲得了三個 IPv4 地址。如果這些 IP 地址在滲透測試的範圍內,則可以進一步檢查每個 IP 地址的不安全性
假設您想了解特定域的電子郵件伺服器和配置。你可以發出nslookup -type=MX tryhackme.com
. 這是一個例子:
user@TryHackMe$ nslookup -type=MX tryhackme.com
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
tryhackme.com mail exchanger = 5 alt1.aspmx.l.google.com.
tryhackme.com mail exchanger = 1 aspmx.l.google.com.
tryhackme.com mail exchanger = 10 alt4.aspmx.l.google.com.
tryhackme.com mail exchanger = 10 alt3.aspmx.l.google.com.
tryhackme.com mail exchanger = 5 alt2.aspmx.l.google.com.
我們可以看到tryhackme.com當前的郵箱配置使用的是谷歌。由於 MX
正在查詢郵件交換伺服器,我們注意到當郵件伺服器嘗試傳送電子郵件時@tryhackme.com
,它將嘗試連線到aspmx.l.google.com
順序為 1 的 。如果它繁忙或不可用,郵件伺服器將嘗試連線到下一個順序郵件交換伺服器,alt1.aspmx.l.google.com
或alt2.aspmx.l.google.com
Google 提供列出的郵件伺服器;因此,我們不應期望郵件伺服器執行易受攻擊的伺服器版本。但是,在其他情況下,我們可能會發現郵件伺服器沒有得到足夠的保護或修補
當您繼續對目標進行被動偵察時,這些資訊可能會被證明是有價值的。您可以對其他域名重複類似的查詢並嘗試不同的型別,例如-type=txt
. 誰知道您會在途中發現什麼樣的資訊!
對於更高階的DNSdig
查詢和其他功能,如果您好奇的話,可以使用“Domain Information Groper”的首字母縮寫詞。讓我們使用dig
來查詢 MX
記錄並將它們與nslookup
. 我們可以使用dig DOMAIN_NAME
,但要指定記錄型別,我們會使用dig DOMAIN_NAME TYPE
。(可選)我們可以使用選擇我們想要查詢的伺服器dig @SERVER DOMAIN_NAME TYPE
。
- SERVER 是您要查詢的DNS伺服器。
- DOMAIN_NAME 是您正在查詢的域名。
- TYPE 包含DNS記錄型別,如前面提供的表中所示。
user@TryHackMe$ dig tryhackme.com MX
; <<>> DiG 9.16.19-RH <<>> tryhackme.com MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<
nslookup
和的輸出之間的快速比較dig
表明dig
返回了更多資訊,例如預設情況下的 TTL(生存時間)。可以使用DNS伺服器1.1.1.1
命令就是dig @1.1.1.1 tryhackme.com MX
DNSDumpster
nslookup
和 dig
等DNS查詢工具無法自行查詢子域。您正在檢查的域可能包含一個不同的子域,該子域可以揭示有關目標的大量資訊。例如,如果 tryhackme.com
有子域 wiki.tryhackme.com
和 webmail.tryhackme.com
,你想了解更多關於這兩個的資訊,因為它們可以儲存關於你的目標的大量資訊。有可能這些子域之一已經設定並且沒有定期更新。缺乏適當的定期更新通常會導致易受攻擊的服務。但是我們怎麼知道這樣的子域存在呢?
我們可以考慮使用多個搜尋引擎來編制一個公開的子域列表。一個搜尋引擎是不夠的;此外,我們應該期望至少瀏覽數十個結果才能找到有趣的資料。畢竟,您正在尋找未明確公佈的子域,因此沒有必要使其進入搜尋結果的第一頁。另一種發現此類子域的方法是依靠暴力查詢來查詢哪些子域具有DNS記錄。
為避免這種耗時的搜尋,可以使用提供DNS查詢詳細答案的線上服務,例如DNSDumpster。如果我們在 DNSDumpster 中搜尋,我們將發現典型DNStryhackme.com
查詢無法提供的子域。此外,DNSDumpster 將以易於閱讀的表格和圖表的形式返回收集到的 DNS 資訊。DNSDumpster 還將提供有關偵聽伺服器的所有收集資訊。blog.tryhackme.com
我們將在DNS Dumpster上搜尋,讓您大致瞭解預期的輸出。在結果中,我們得到了我們正在查詢的域的 DNS 伺服器列表。DNSDumpster 還將域名解析為 IP 地址,甚至嘗試對它們進行地理定位。我們還可以看到MX記錄;DNSDumpster 將所有五個郵件交換伺服器解析為各自的 IP 地址,並提供有關所有者和位置的更多資訊。最後,我們可以看到TXT記錄。實際上,單個查詢就足以檢索所有這些資訊tryhackme.com
DNS Dumpster 還將以圖形方式表示收集到的資訊。DNSDumpster 將之前表格中的資料顯示為圖表。您可以看到 DNS**** 和 MX 分支到各自的伺服器並顯示 IP 地址
Shodan.io
Shodan.io這樣的服務可以幫助您瞭解有關客戶端網路的各種資訊,而無需主動連線到它。此外,在防禦方面,您可以使用 Shodan.io 的不同服務來了解屬於您組織的已連線和暴露的裝置
Shodan.io 試圖連線到每一個可線上訪問的裝置,以構建一個連線“事物”的搜尋引擎,而不是網頁搜尋引擎。一旦得到響應,它就會收集與該服務相關的所有資訊並將其儲存在資料庫中以便於搜尋。考慮其中一個 tryhackme.com
伺服器的儲存記錄
這條記錄顯示了一個網路伺服器;然而,如前所述,Shodan.io 收集與它可以找到的任何線上連線裝置相關的資訊。在 Shodan.io 上搜尋,tryhackme.com至少會顯示上圖所示的記錄。透過這個 Shodan.io 搜尋結果,我們可以瞭解到與我們的搜尋相關的幾件事,例如:
- IP地址
- 託管公司
- 地理位置
- 伺服器型別和版本
您也可以嘗試搜尋從DNS查詢中獲得的 IP 地址。當然,這些更容易發生變化。在他們的幫助頁面上,您可以瞭解 Shodan.io 上可用的所有搜尋選項,我們鼓勵您加入 TryHackMe
的Shodan.io
概括
在這個房間裡,我們專注於被動偵察。特別是,我們介紹了命令列工具whois
、nslookup
和dig
。我們還討論了兩個公開可用的服務DNSDumpster和Shodan.io。此類工具的強大之處在於,您可以在不直接連線目標的情況下收集有關目標的資訊。此外,一旦您掌握了搜尋選項並習慣閱讀結果,使用此類工具可能會發現大量資訊
目的 | 命令列示例 |
---|---|
查詢 WHOIS 記錄 | whois tryhackme.com |
查詢DNS A 記錄 | nslookup -type=A tryhackme.com |
在 DNS 伺服器上查詢DNS MX 記錄 | nslookup -type=MX tryhackme.com 1.1.1.1 |
查詢DNS TXT 記錄 | nslookup -type=TXT tryhackme.com |
查詢DNS A 記錄 | dig tryhackme.com A |
在 DNS 伺服器上查詢DNS MX 記錄 | dig @1.1.1.1 tryhackme.com MX |
查詢DNS TXT 記錄 | dig tryhackme.com TXT |
主動偵察
我們專注於主動偵察和與之相關的基本工具。我們學習使用網路瀏覽器來收集有關目標的更多資訊。ping
此外,我們還討論了使用traceroute
、telnet
和 等簡單工具nc
來收集有關網路、系統和服務的資訊
正如我們在上一個房間中瞭解到的那樣,被動偵察可以讓您在沒有任何直接參與或聯絡的情況下收集有關目標的資訊。您正在遠距離觀看或檢視公開資訊。
主動偵察要求您與目標進行某種接觸。這種聯絡可以是打電話或拜訪目標公司,藉口是收集更多資訊,通常是社會工程的一部分。或者,它可以直接連線到目標系統,無論是訪問他們的網站還是檢查他們的防火牆是否開啟了SSH埠。把它想象成你正在仔細檢查窗戶和門鎖。因此,必須記住,在獲得客戶簽署的合法授權之前,不要從事主動偵察工作
在這個房間裡,我們專注於主動偵察。主動偵察始於與目標機器的直接連線。任何此類連線都可能在日誌中留下資訊,顯示客戶端 IP 地址、連線時間和連線持續時間等。但是,並非所有連線都是可疑的。可以讓您的主動偵察顯示為常規客戶活動。考慮網頁瀏覽;在數百名其他合法使用者中,沒有人會懷疑瀏覽器連線到目標網路伺服器。作為紅隊(攻擊者)的一部分工作時,您可以使用這些技術來發揮自己的優勢,並且不想驚動藍隊(防禦者)。
在這個房間裡,我們將介紹通常與大多數作業系統捆綁在一起或很容易獲得的各種工具。我們從 Web 瀏覽器及其內建的開發人員工具開始;此外,我們還向您展示瞭如何“武裝”網路瀏覽器以使其成為高效的偵察框架。之後,我們討論其他良性工具,例如ping
、traceroute
和telnet
。所有這些程式都需要與目標建立聯絡,因此我們的活動將受到主動偵察。
任何想要熟悉基本工具並瞭解如何在主動偵察中使用它們的人都會對這個房間感興趣。Web 瀏覽器開發人員工具可能需要一些努力才能熟悉,儘管它提供了圖形使用者介面。所涵蓋的命令列工具使用起來相對簡單
Web瀏覽器
Web 瀏覽器可以是一個方便的工具,特別是它在所有系統上都很容易使用。您可以透過多種方式使用 Web 瀏覽器收集有關目標的資訊。
在傳輸層,瀏覽器連線到:
- 透過 HTTP 訪問網站時,預設使用TCP埠 80
- 透過 HTTPS 訪問網站時預設使用TCP埠 443
由於 80 和 443 是HTTP和 HTTPS 的預設埠,因此 Web 瀏覽器不會在位址列中顯示它們。但是,可以使用自定義埠來訪問服務。例如,https://127.0.0.1:8834/ 將透過 HTTPS 協議在埠 8834 連線到 127.0.0.1(本地主機)。如果有 HTTPS 伺服器偵聽該埠,我們將收到一個網頁
在瀏覽網頁時,您可以Ctrl+Shift+I在 PC 上按 或在 Mac 上按Option + Command + I( ) 以開啟 Firefox 上的開發者工具。⌥ + ⌘ + I類似的快捷方式也可以讓您開始使用 Google Chrome 或 Chromium。開發人員工具可讓您檢查瀏覽器已接收並與遠端伺服器交換的許多內容。例如,您可以檢視甚至修改 JavaScript (JS) 檔案、檢查系統上設定的 cookie 並發現站點內容的資料夾結構。
下面是 Firefox 開發者工具的截圖。Chrome DevTools 非常相似
還有很多適用於 Firefox 和 Chrome 的附加元件可以幫助進行滲透測試。這裡有一些例子:
-
FoxyProxy可讓您快速更改用於訪問目標網站的代理伺服器。當您使用 Burp Suite 等工具或需要定期切換代理伺服器時,此瀏覽器擴充套件非常方便
-
User-Agent Switcher and Manager,您能夠假裝從不同的作業系統或不同的 Web 瀏覽器訪問網頁。換句話說,您可以假裝使用 iPhone 瀏覽網站,而實際上您是從 Mozilla Firefox 訪問它
-
Wappalyzer提供有關所訪問網站所用技術的見解。這種擴充套件很方便,主要是當您像任何其他使用者一樣在瀏覽網站時收集所有這些資訊時。Wappalyzer 的螢幕截圖如下所示
概括
後面的也懶得搬運了
在這個房間裡,我們介紹了許多不同的工具。很容易透過 shell 指令碼將它們中的幾個放在一起來構建一個原始的網路和系統掃描器。您可以使用traceroute對映到目標的路徑,ping檢查目標系統是否響應 ICMP Echo,並telnet透過嘗試連線來檢查哪些埠是開放的和可訪問的。可用的掃描器在更先進和複雜的水平上執行此操作,沒有說道Nmap
,最主要還是使用Nmap
命令 | 例子 |
---|---|
ping | ping -c 10 MACHINE_IP在Linux或 macOS上 |
ping | ping -n 10 MACHINE_IP在 Windows 上 |
traceroute | traceroute MACHINE_IP在Linux或 macOS上 |
tracert | tracert MACHINE_IP在 Windows 上 |
telnet | telnet MACHINE_IP PORT_NUMBER |
netcat 作為客戶端 | nc MACHINE_IP PORT_NUMBER |
netcat 作為伺服器 | nc -lvnp PORT_NUMBER |
儘管這些是基本工具,但它們在大多數系統上都很容易獲得。特別是,幾乎每臺計算機和智慧手機上都安裝了 Web 瀏覽器,它可以成為您武器庫中的重要工具,用於在不發出警報的情況下進行偵察
作業系統 | 開發者工具快捷方式 |
---|---|
Linux或 MS Windows | Ctrl+Shift+I |
蘋果系統 | Option + Command + I |