主動式資料搜集之SMB、SMTP、SNMP枚舉

目錄

前言

主動式資料搜集之DNS枚舉與Port掃描一章我們提及針對目標機器的DNS與Port掃描來建立攻擊劇本(LOLBAS),而現代設備中不只有這兩種方法,我們將於本章說明其他可以搜集的資訊

SMB枚舉

Server資訊區塊(Server Message Block, SMB)從過去多年的經驗來看擁有許多慘烈的教訓,因為SMB本身的設計瓶頸以及實作複雜度導致安全性極低,最早Windows 2000跟XP作業系統上可以造出不需認證的SMB空session拿來利用,到許多SMB多年維護出現的許多bug以及漏洞,SMB從出現就一直遭遇到許多問題

但隨著到目前Windows的版本越來越高,SMB協定也同樣一直在嘗試更新與提升,雖然舊版SMB協定裡有一組合作的NetBIOS服務,這個服務監聽TCP port 139以及數個UDP port,雖然SMB(走TCP port 445)跟NetBIOS是兩個不同的協定,NetBIOS是獨立於session層的協定,主要允許內網裡的系統與機器可以互相溝通

新版的實作讓SMB不需要NetBIOS也可以運作,但如果內網裡有老舊的系統就還是需要支援,所以額外擴充出來NetBIOS over TCP(NBT)核心給SMB,所以我們針對目標時需要同時掃這兩個服務,nmap就可以支援該功能

用”-oG”我們可以儲存掃描的結果,紀錄找到的139與445 por結果,以及在Kali Linux內也有更特化型針對NetBIOS資訊的掃描工具”nbtscan”,我們可以利用這個工具找有效的NetBIOS服務名稱,除了TCP port還可以用”-r”參數額外找出UDP port

利用nbtscan找出兩個NetBIOS的名稱以及host資訊,這類資訊就可以讓我們更進一步的提升搜尋的範圍,尤其NetBIOS的名稱通常都會設定成非常常見的功能名稱與角色名稱,就能增加我們的攻擊層面讓後續的階段能更精確

Nmap同樣有提供有效的NSE腳本讓我們枚舉SMB服務,一樣存放在”/usr/share/nmap/scripts/”目錄底下

有興趣的讀者可以看一下這些NSE有什麼功能,像是透過SMB探索OS版本資訊以及枚舉host資訊都有在裡面,要注意的是SMB探索腳本只有在SMBv1版本的機器上才有作用,而近代Windows系統預設都不是v1版本了,然而目前許多製造業或工廠裡的系統都還在運作SMBv1服務,而我們要使用這類工具就必須針對有開SMBv1服務的機器

例如像是smb-os-discovery模組針對Windows 11

這個腳本識別出潛在的機器OS系統資訊,然而這其實不太精確,目標其實真正是運作Windows 11的系統,如同我們在Port掃描裡提到Nmap的輸出結果其實是機率性的,沒有任何演算法可以精確找出正確的版本,而跟OS指紋資訊不同,透過NSE腳本枚舉出來的資訊會參雜額外的內容

例如網域或其他跟Active Directory服務相關的資訊也會混在裡面,因為這類資訊通常不容易注意到,並且少量的流量會跑進組織內的網路行為中隱藏其中,除了從Kali Linux內使用工具進行SMB枚舉之外,在Windows裡也有可以用的工具

其中一種就是”net view”這個工具,進入到內網後針對從一層的其他機器進行枚舉,可以顯示網域、資源以及機器所屬的host,例如我們可以連進client01這台VM,列出dc01這台機器的共享資料

利用”/all”這個關鍵字我們還可以把較高權限的資源也找出來,通常要管理員權限的資源結尾是$

SMTP枚舉

除了直接的與目標機器進行溝通獲取資料,我們也可以從外部其他服務來嘗試,例如有問題的電子郵件伺服器,簡易信件傳送協定(Simple Mail Transport Protocol, SMTP)就支援幾個有趣的指令,像是VRFY以及EXPN,VRFY可以送出驗證電子郵件位址的請求給伺服器,而EXPN則可以針對郵件清單裡的使用者進行詢問

搭配這兩個指令有時可以濫用驗證電子郵件伺服器內的角色,對於滲透測試時查找資訊非常有用,例如可以用Netcat嘗試

可以看到回傳的資訊之間的差異,252 SMTP回應碼雖然不會驗證root角色是否存在,但會接受任何傳輸過去的資訊,如果回傳的是500則代表該電子郵件信箱不存在,透過自動化腳本查找一系列想知道的角色,就可以猜出有效的使用者名稱,所以我們可以用python製成腳本,利用TCP socket連接SMTP伺服器,針對一連串的使用者名稱傳送VRFY指令

利用這個python腳本,我們可以輸入想知道的使用者名稱跟對應的IP位址來做查詢

同樣的我們也可以從Windows上取得SMTP資訊

不幸的是,Test-NetConnection沒辦法完全跟SMTP服務進行溝通,不過我們還可以用Telnet更進一步的溝通

不過要注意安裝Telnet必須要有管理員權限,如果我們入侵時只有低權限的帳號就很難完成,但另一條思路就是到其他台機器裡共享Telnet binary “C:\windows\system32\telnet.exe”利用該機器底下的權限啟動,一旦開啟的Telnet服務後,便可以連接目標機器來做枚舉

如此就可以在Kali Linux無法運作時利用肉雞Windows環境進行目標機器的枚舉動作

SNMP枚舉

好多年來有許多的新進網管都沒有清楚的了解簡易網路管理協定(Simple Network Management Protocol, SNMP)這項服務,導致許多的SNMP服務都有錯誤設定的結果,造成嚴重的資訊洩漏,SNMP值基於UDP上,屬於一個簡易、無狀態的協定,且相當容易的受到IP誘騙(spoofing)以及重送攻擊(Replay Attacks)所影響

另外SNMP協定v1、v2及v2c版並不支援流量加密,代表在內網中很容易撈到SNMP資訊以及credential,舊版的SNMP協定只有很弱的驗證機制,甚至經常保留預設的公共設定,以及一些私人社群的字串設定,即便是SNMPv3版也只有提供DES-56的驗證及加密方法

這比DES-128還弱,DES-192bits都說不上安全了,56bit攻擊者靠暴力破解就可以解密回來了,在更新一點的版本終於支援了AES-256來加密了,由於SNMP是管理網路的協定,所以也是枚舉協定的好目標,在基本理解SNMP的用途後,我們可以來看其中一個最重要的功能“SNMP MIB樹”

SNMP資訊管理庫(SNMP Management Information Base, MIB)將所以網路管理相關的資訊儲存至資料庫中,該資料庫是樹的結構,代表會用許多節點表示各個不同的組織以及網路的功能,樹葉存放的是特定的變數值,這些樹葉可以讓外部使用者來進行存取

舉例來說,MIB值所對應到特定的微軟Windows SNMP參數,比基本網路資訊包含更多的內容

1.3.6.1.2.1.25.1.6.0System Processes
1.3.6.1.2.1.25.4.2.1.2Running Programs
1.3.6.1.2.1.25.4.2.1.4Processes Path
1.3.6.1.2.1.25.2.3.1.4Storage Units
1.3.6.1.2.1.25.6.3.1.2Software Name
1.3.6.1.4.1.77.1.2.25User Accounts
1.3.6.1.2.1.6.13.1.3TCP Local Ports
Windows SNMP MIB值

我們用Nmap來掃描SNMP port,利用”-sU”參數選擇UDP掃描,以及”–open”參數把只有打開的port顯示出來

另外我們可以用一個叫做”onesixtyone”的工具針對一連串的IP位址進行暴力破解攻擊,首先我們得先建一個文字檔,裡面要存放社群字串以及我們想要搜尋的IP目標

一旦我們發現了SNMP服務,我們就可以針對特定的MIB資料進行搜尋,探索SNMP值可以使用一個叫做”snmpwalk”的工具,找出SNMP中唯獨的社群字串,通常是公開的屬性資料,我們可以用上表裡的MIB值進行相對應的枚舉,如果有一台Windows執行SNMP服務,那我們可以針對該目標的公開社群字串進行查詢

利用snmpwalk可以搜索整個MIB樹,而用”-c”的參數可以選擇指哪個社群字串,”-v”則是指定SNMP的版本號,再加上”-t 10″讓10秒作為timeout的上限

根據得到的資訊我們可以獲得目標的電子郵件位址,後續就能夠拿來用在社交工程攻擊上,我們另外針對Windows目標也來嘗試SNMP枚舉,利用snmpwalk指令可以指定某個MIB樹的分支,或通常我們簡稱”OID”,針對”dc01″的機器嘗試枚舉的話

針對特定的MIB子樹進行枚舉可以找到所有相對應的使用者帳號名稱,甚至我們可以找出現在正在執行的服務

這項指令回傳了一連串的資訊,每一個都是目前正在執行的服務或process,這些資訊非常有價值,可以顯示目標機器上是否存在有漏洞的服務,或者甚至指出目標正在啟用的是哪一款防毒軟體,不過既然process都可以顯示了,自然也有辦法把目標機器上的已安裝軟體也揭露出來

只要跟先前取得正在執行的process資訊做結合,就可以變身成為超級有價值的雙向確認清單,能讓攻擊者完全的了解目標機器上安裝的軟體是不是執行中的版本

另外SNMP枚舉也可以列出目前所使用的TCP port

回傳的整數值都是目標機器上目前使用的的TCP port,這個資訊也超級有用,點出了目前有用到的port,並且也揭露出之前工具沒找到的port

以上就是主動式資料搜集的其他種工具方法,包括SMB、SMTP以及SNMP協定進行枚舉探索,找出更多的資訊讓攻擊者再下一輪的偵查中能縮小更多範圍

Reference

[1] IBM, “Management Information Base”, https://www.ibm.com/docs/en/aix/7.1.0?topic=management-information-base

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *