天天看點

SMB掃描

ServerMessage Block

SMB協定大家應該都有所了解,畢竟2017年的MS17-010血洗整個網際網路,加上之前的MS08-067 漏洞,這些都是SMB協定上出現過的著名漏洞

SMB 主要完成的工作主要就是檔案共享,假如同一個工作組使用smb 互相傳輸檔案

SMB 協定還可以被用在sql注入的帶外通道上,我曾經遇到的一個CTF的題目就是考察這個考點·,遺憾的是當時沒有公網IP,後來發現很多網站已經內建了接收SMB資訊的功能

端口

139,445

直至Windows10,微軟才預設SMB服務關閉狀态(即使很多人根本就沒有感覺)

版本資訊

SMB1 win2000/xp/win2003

SMB2 winvista sp1/win2008

SMB2.1 win7/win2008 r2

SMB3 win8/win2012

SMB最初版本的時候存在一個空會話通路的問題,這可以說是一個很古老的漏洞了,如果你看08年左右的書應該會看到IPC$ 空會話連接配接等攻擊手段,我在兩年前嘗試過複現這個漏洞,由于當時技術差也沒有複現成功,如果現在再進行複現也沒有太大的意義了

空會話通路我們可以擷取到的資訊

密碼政策

使用者名

組名

機器名

使用者群組的 sid

這些資訊都是對于我們十分重要的,就拿一個不起眼的密碼政策來說明吧!

密碼政策規則規定了密碼的最基本條件,比如至少多少位,包含幾種字元,很多時候我們在提權建立賬号時候就因為不滿足密碼政策而失敗,失敗之後還一頭霧水

由于Windows使用者衆多,而且SMB協定也是經常使用的一個協定,是以Linux也自己實作了一個類似的Samba服務,這個服務也是這兩個端口,并且可以與windows 上的SMB服務對接

關于RID

windows系統中用來區分使用者的就是RID

administrator500

Guest 501

自己建立的 1000+

關于SID

SID是由計算機的一些不确定的因素産生的一個随機字元

一般SID+RID成為一個完整的SID

SMB 和SAMBA 都是工作在ISO七層模型中的第五層:會話層

關于Netbios

Network basic input output system

netbios是原來TCP/IP協定未推廣時期工作在會話層的一個協定,TCP/IP協定推行後也相容netbios

netbios實作檔案共享主要識别主機靠的就是netbios名稱,每一個主機都有,一般都是取主機名的前15個字元

在windows的cmd下可以使用

c:/>hostname 檢視主機名

c:/>nbtstat -A 192.168.1.1 檢視netbios資訊,其中192.168.1.1是自己的IP

可以檢視主機的netbios名稱

如果netbios的字元不足15個,netbios會添加空格補齊15個

準确得說netbios的名稱是16個,最後一個字元是一個16進制數,用來标明服務類型 20表示檔案伺服器

TCP/IP成為事實協定标準後,内網中也開始使用dns做域名解析,TCP/IP作為傳輸協定,NetBT負責将netbios的名稱解析成IP位址,以供Netbios正常工作,這個也叫做 NetBios over TCP/IP (簡稱NetBT)

NetBIOS提供标準網絡通信接口

就是說程式員在設計的時候基于netbios的程式不需要在考率TCP/IP怎麼樣,隻需要實作這個接口就行了

UDPport 137 (name services) 名稱服務(名稱解析,名稱注冊)

UDPport 138 (datagram services) 資料段,資料封包服務,通過這個段闊傳輸資料

TCPport 139 (session services) 會話服務,保證傳輸的會話。(用戶端向139提出TCP連接配接請求,之後基于這個連接配接進行檔案共享的會話)

名稱唯一

節點類型

B(廣播)、P(點對點)、M(混合)、H(超級)

如何關閉這些端口呢?

在windows的網絡連接配接裡面 Internet協定版本4裡面的屬性中進階可以看到wins,直接禁用就會關閉了

檢測

Nmap

掃描内網使用smb 或者samba 服務的主機

SMB掃描

這個是一台沒有打更新檔的win7 主機

我們來看一下smb的腳本有哪些

SMB掃描

首先來查詢一下作業系統吧

SMB掃描

可以看到清晰的識别出了是win7 旗艦版,比我們之前擷取到的資訊要詳細得多

如果我們有賬号和密碼能夠擷取更加詳細的資訊

--script-args=smbuser=administrator,smbpass=123456

SMB掃描

這些枚舉資訊的腳本我就不一個一個嘗試了,一起來吧

SMB掃描

漏洞檢測

之前 nmap 有 smb-check-vulns 這個腳本,這個腳本會自動測試幾個漏洞是否存在,不過後來被官方去掉了,換成了smb-vuln-conficker、smb-vuln-cve2009-3103、smb-vuln-ms06-025、smb-vuln-ms07-029、smb-vuln-regsvc-dos、smb-vuln-ms08-067等等幾個腳本,我沒有看官方的說明,也不知道為什麼會這樣,不過我猜測可能是因為漏洞之間會互相影響(比如如果先檢測一個DoS類型的漏洞,可能直接主機就當機了,導緻其他的檢測出現問題),當然隻是我的猜測。

nmap -p139,445 192.168.1.108 –script=smb-vuln-*.nse--script-args=safe=1

safe=1 這個參數是保證掃描過程中不會導緻主機當機,進而影響正常使用

SMB掃描

可以看到存在ms17-010 漏洞,危害等級高,RCE漏洞

還有很多腳本大家可以自行學習一下,當然可以同時使用所有的關于smb的腳本

nmap -p139,445 192.168.1.108 --script=smb-*.nse

當然這種方式是不推薦的,畢竟會産生大量的資料包

nbtscan

nbtscan -r 192.168.60.0/24

這個工具可以掃描不同的網段,就比如你在192.168.1.x,你可以掃描192.168.2.x

enum4linux

enum4linux –a –u administrator –p 123456192.168.60.108

不允許進行整個網段的掃描

【使用方法】

Linux SAMBA服務枚舉

enum4linux1.1.1.1

Windows系統枚舉

這個工具最開始設計時候比較早,主要是針對2000和xp進行設計的,是以對于win2003等做了一定預設安全配置的伺服器其實并不能查詢到資訊,隻有當我們已經有一個賬号以後,根據賬号密碼進行查詢

一下這些查詢的參數需要放在前面,指定使用者名密碼和目标IP放在後面

-U 使用者清單

-S 共享清單

-P 密碼政策

-G 組賬号

-d 詳細資訊

-u 指定使用者

-p 指定使用者密碼

-a (-U -S -G -P -r -o -n -i)全都用上

-r 循環枚舉RID

-R 自定義範圍循環枚舉RID -R 600-650

-l 通過TCP/389端口枚舉域資訊

-kuser 查詢已知使用者SID

-sfile 爆破共享名

-o 作業系統資訊

5.02000

5.1xp

5.22003

-i 列印機資訊

enum4linux -U -d -u administrator -p 123 192.168.2.1

關于SMB協定的掃描也就介紹這些,不過關于SMB的漏洞還有很多,由于SMB協定本身就有漏洞,沒有打更新檔的主機就可以直接擷取shell,結合msf可以很簡單的就完成。