利用 Flash 遠(yuǎn)程檢測客戶端安裝的殺軟

責(zé)任編輯:editor005

2017-02-08 14:29:23

摘自:51CTO

本文將提供一種檢測用戶已安裝的殺軟的可能的方法。2)Flash連接到我們的服務(wù)器的一個(gè)端口(如443,465等等)并且發(fā)送了一個(gè)“Client Hello”的TLS數(shù)據(jù)包。5)Flash接收到了上一步中(已經(jīng)被殺軟處理過)的TLS數(shù)據(jù)包,之后再發(fā)送給我們的服務(wù)器。

本文將提供一種檢測用戶已安裝的殺軟的可能的方法。如果我們想對(duì)用戶發(fā)起攻擊,那么獲取該用戶已安裝的殺軟信息是非常有用的。

本文所提供的方法主要基于以下兩點(diǎn):

1.現(xiàn)在的主流AV在檢測惡意軟件時(shí)會(huì)進(jìn)行網(wǎng)絡(luò)流量的分析。

通常情況下,http 和 smtp/pop3/imap 這類協(xié)議已經(jīng)被分析了。然而,隨著 TLS 加密傳輸越來越被廣泛的使用,因此,殺軟要分析被加密的網(wǎng)絡(luò)傳輸信息,就需要針對(duì)用戶的應(yīng)用程序和遠(yuǎn)程服務(wù)器執(zhí)行類似中間人攻擊(MITM)的行為。為了繞過證書鏈的檢測,殺軟需要安裝它自己的根證書到用戶電腦上。之后,對(duì)加密的網(wǎng)絡(luò)傳輸信息進(jìn)行攔截,解密和分析。

如下圖所示:

http://p2.qhimg.com/t0157ba8b465ca06838.png

  2. Flash 支持原始的TCP套接字。

事實(shí)上,內(nèi)嵌在瀏覽器網(wǎng)頁中的swf文件即Flash 可以接受或發(fā)送任意TCP數(shù)據(jù)包到一個(gè)遠(yuǎn)程服務(wù)器的任何一個(gè)端口。但是為了安全起見,F(xiàn)lash socket 也支持跨域策略。如果一個(gè)Flash想要通過 socket 連接到一臺(tái)服務(wù)器時(shí),它會(huì)連接遠(yuǎn)程服務(wù)器的 843 端口并且發(fā)送一個(gè)請(qǐng)求,這個(gè)請(qǐng)求的目的是獲取 跨域策略對(duì)應(yīng)的xml文件,即crossdomain.xml也就是我們所說的“主策略文件”。這個(gè)xml文件包含了安全策略的具體信息,比如:哪些域名才能連接該服務(wù)器的哪些端口等等。

Flash socket crossdomain.xml文件示例:

 

 

 

利用以上兩點(diǎn),就可以產(chǎn)生奇妙的結(jié)果。當(dāng)我們利用一個(gè)Flash文件發(fā)起TLS連接,連接請(qǐng)求到遠(yuǎn)程服務(wù)器的指定端口(如:443,587等等),之后殺軟將會(huì)攔截該請(qǐng)求。因此,F(xiàn)lash就會(huì)接受到一個(gè)由殺軟生成的TLS證書,那么,通過根證書的名稱就可以判斷出用戶安裝了何種殺軟。

整個(gè)攻擊流程如下:

0) 用戶訪問我們的網(wǎng)站,用戶的瀏覽器加載了網(wǎng)站中的惡意swf文件。

1)Flash通過socket連接我們的服務(wù)器的843端口請(qǐng)求crossdomain.xml文件的內(nèi)容并獲取請(qǐng)求權(quán)限。

2)Flash連接到我們的服務(wù)器的一個(gè)端口(如443,465等等)并且發(fā)送了一個(gè)“Client Hello”的TLS數(shù)據(jù)包。

3)服務(wù)器發(fā)送“Server Hello”的TLS響應(yīng)數(shù)據(jù)包,該數(shù)據(jù)包攜帶有服務(wù)器的證書信息。

4)殺軟攔截了此次傳輸,生成了新的證書并且利用殺軟自己的根證書進(jìn)行了簽名。

5)Flash接收到了上一步中(已經(jīng)被殺軟處理過)的TLS數(shù)據(jù)包,之后再發(fā)送給我們的服務(wù)器。

6)通過解析TLS數(shù)據(jù)包獲取根證書的名稱,名稱中包含了殺軟的名稱。

POC

我創(chuàng)建了一個(gè)POC (https://github.com/GrrrDog/FlashAV)可能離實(shí)際的攻擊效果相差很遠(yuǎn),POC包含了一個(gè)特定的Flash和一個(gè)Python編寫的 Socket Server。swf 發(fā)送原始的TLS請(qǐng)求(SSLv3),并且發(fā)送被殺軟處理過的響應(yīng)數(shù)據(jù)包到Python Socket Server。Python Socket Server 被用于解析數(shù)據(jù)包的證書名稱以及構(gòu)建crossdomain.xml文件內(nèi)容。

我最初利用 Avast 殺軟進(jìn)行了測試,IE 和 Chrome 可以測試成功,但是Firefox卻不行,在火狐瀏覽器中 Avast 并未對(duì)Flash連接443端口的請(qǐng)求做攔截。但是,在火狐瀏覽器中的Flash連接遠(yuǎn)程服務(wù)器的465或者587,993等端口時(shí)殺軟則會(huì)攔截并且也能成功獲取到用戶安裝的殺軟名稱。

http://p2.qhimg.com/t013086b6299c31f77c.png

之后我測試了卡巴斯基,但是并沒有成功,卡巴斯基雖然會(huì)對(duì)瀏覽器的請(qǐng)求做攔截,但是并未攔截Flash的連接請(qǐng)求。

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號(hào)-6京公網(wǎng)安備 11010502049343號(hào)