六安信息網(wǎng)初學(xué)seo網(wǎng)站推廣需要怎么做
概述
??? 在網(wǎng)絡(luò)攻擊中,木馬病毒通常會使用監(jiān)聽某個(gè)端口的方式,或者直接連接C2地址、域名的方式來建立通信,完成命令與控制。而APT攻擊中,攻擊者為了更高級的潛伏隱蔽需求,其部署的木馬或后門,會采用對網(wǎng)卡流量進(jìn)行過濾的方式,獲得一定的通信信令才會觸發(fā)執(zhí)行實(shí)際的攻擊,這一部分的活動稱為流量激活。本文以一個(gè)正常的端口敲擊應(yīng)用Knock和ATT&CK中“Traffic Signaling”章節(jié)提到的幾類家族來了解流量激活的幾種常見方式。
正常應(yīng)用的激活流量
??? Knock是一個(gè)用于端口激活的敲門工具。為了保護(hù)SSH端口不暴露在攻擊者面前,系統(tǒng)管理會使用Knock配合防火墻來執(zhí)行SSH服務(wù)的開放策略。Knock在平常的時(shí)候關(guān)閉ssh服務(wù)和端口,外部無法掃描到端口開放。在運(yùn)維人員需要訪問SSH服務(wù)的時(shí)候,通過端口敲擊序列,Knock在特定時(shí)間內(nèi),連續(xù)收到設(shè)置的端口序列流量,則會觸發(fā)開啟SSH服務(wù),從而使得外部可以訪問。如下方截圖例子中,對TCP和UDP分別發(fā)送目的端口7000、8000、9000的敲擊流量,目的IP接收到這三個(gè)端口序列則會開啟SSH服務(wù)。這部分的流量就是SSH服務(wù)的激活流量。
圖 1 knock激活觸發(fā)
圖 2 TCP的端口激活流量
圖 3 UDP的端口激活流量
APT中的流量激活
??? ATT&CK中“Traffic Signaling”章節(jié)中提到了提到了8個(gè)家族的流量激活,分別是Chaos、Kobalos、Pandora、Penquin、Ryuk、SYNful Knock、Umbreon、Winnti for Linux。
chaos木馬
Chaos是一個(gè)linux后門木馬。木馬運(yùn)行后,會創(chuàng)建一個(gè)TCP的Socket,讀取過濾網(wǎng)卡數(shù)據(jù),校驗(yàn)數(shù)據(jù)包內(nèi)容是否與特定字符串一致。一旦傳入的數(shù)據(jù)存在特定字符串,則會向?qū)Ψ降?338端口發(fā)起通信請求,進(jìn)行下一步的密鑰協(xié)商和執(zhí)行后續(xù)動作。本次樣例中的特定字符串值為“j0DtFt1LTvbIU”??梢钥吹紺haos木馬是通過檢查TCP的傳入數(shù)據(jù),是否包含特定字符串完成的流量激活。
圖 4 Chaos木馬的激活
圖 5 TCP激活
Kobalos木馬
Kobalos是一個(gè)SSH后門。該后門在運(yùn)行后,開啟流量監(jiān)聽,等待來自源端口55201的流量,只有符合源端口為55201的SSH連接才會觸發(fā)下一階段建立與C2通信的TCP通道。
圖 6 監(jiān)聽源端口55201
圖 7 來自55201端口的激活
Panora木馬
根據(jù)TrendMicro的分析報(bào)告,Panora的每個(gè)樣本都有Token值,并存放到注冊表中,樣本執(zhí)行流量捕獲,只有當(dāng)接收到HTTP 協(xié)議格式的數(shù)據(jù),且數(shù)據(jù)與注冊表中Token值一致的時(shí)候才會執(zhí)行命令。該木馬在樣本中解析HTTP格式使用了開源的HTTP解析組件(hxxps://github.com/nodejs/http-parser)。
圖 8 Trendmicro報(bào)告提供的Token值
圖 9 HTTP激活模擬
Penquin木馬
Penquin,屬于Tular組織的木馬。在木馬啟動運(yùn)行后,開啟網(wǎng)卡監(jiān)聽,檢查網(wǎng)卡接收到的數(shù)據(jù)包TCP 包頭中的 ACK 編號,或者 UDP 協(xié)議數(shù)據(jù)包載荷中的第二個(gè)字節(jié)。
如果收到這樣的數(shù)據(jù)包并且匹配成功,則視為成功激活,執(zhí)行流程將跳轉(zhuǎn)到數(shù)據(jù)包有效負(fù)載內(nèi)容,執(zhí)行后續(xù)操作。示例如下:
Filter = (tcp[8:4] & 0xe007ffff = 0xe003bebe) or (udp[12:4] & 0xe007ffff = 0xe003bebe) |
圖 10 對TCP協(xié)議ACK值的檢查
圖 11 對UDP協(xié)議載荷部分的檢查
?Ryuk木馬
Ryuk,勒索軟件家族。該樣本具備正規(guī)的數(shù)字簽名,樣本運(yùn)行后為了擴(kuò)大勒索訪問,會訪問系統(tǒng)的ARP表。如果ARP表中存在局域網(wǎng)段列表,則Ryuk 將向ARP列表中設(shè)備的 MAC 地址發(fā)送一個(gè)網(wǎng)絡(luò)喚醒 (WoL) 數(shù)據(jù)包以啟動設(shè)備。此 WoL 請求以包含“FF FF FF FF FF FF FF FF FF”的特定數(shù)據(jù)的形式出現(xiàn)。
??? 網(wǎng)絡(luò)喚醒(Wol)是一種系統(tǒng)支持的喚醒功能,屬于正常的應(yīng)用,在此處勒索軟件使用了這種喚醒來獲得更多的失陷主機(jī),擴(kuò)大勒索范圍。
圖 12 網(wǎng)卡支持喚醒功能
圖 13 Wol數(shù)據(jù)包
SYNful Knock木馬
SYNful Knock 是路由器固件木馬,木馬運(yùn)行后接收特定的數(shù)據(jù)完成激活。該數(shù)據(jù)包為TCP SYN握手包。數(shù)據(jù)包發(fā)送到感染的路由器的端口 80上。SYN包需要滿足幾個(gè)條件:
- 序列號和ACK之間的差值必須設(shè)置為0xC123D。
- ACK 號不為0。
- TCP 選項(xiàng):“02 04 05 b4 01 01 04 02 01 03 03 05”
- 緊急指針設(shè)置為0x0001。
圖 14 SYN校驗(yàn)
Umbreon木馬
??? 反向shell連接木馬,該木馬存在一個(gè)同名的開源項(xiàng)目,以該開源項(xiàng)目為例子進(jìn)行說明。木馬接收TCP協(xié)議流量,檢查流量中的ACK和序列號,是否符合程序中硬編碼的值,下圖示例代碼SEQ=0x00C4、ACK=0xC500。只有滿足的情況下,才會開啟反向shell連接。這種驗(yàn)證激活與上述提到的SYNful Knock有點(diǎn)類似,不過顯然SYNful Knock的條件更苛刻,需要進(jìn)行運(yùn)算,且有一定變化。
圖 15 項(xiàng)目中的MAGIC定義
圖 16 TCP檢查
Winnti for Linux木馬
Winnti木馬的激活,國外安全研究員Thyssenkrupp提供了探測腳本,對其進(jìn)行分析可以看到,初始的請求TCP協(xié)議載荷由四個(gè) DWORD 組成,前三個(gè)由 Rand() 函數(shù)生成,第四個(gè)是根據(jù)第一個(gè)和第三個(gè)計(jì)算的。當(dāng)受 Winnti 感染的主機(jī)收到時(shí),它將驗(yàn)證接收到的數(shù)據(jù)包并偵聽包含任務(wù)的第二個(gè)入站請求。
第二個(gè)請求(獲取系統(tǒng)信息請求),該協(xié)議使用四字節(jié) XOR 編碼。Winnti 將在執(zhí)行任務(wù)之前驗(yàn)證第三個(gè) DWORD 是否包含特征字 0xABC18CBA。
圖 17 國外安全研究員Thyssenkrupp提供的探測包示例
總結(jié)
從以上幾個(gè)示例可以看到木馬病毒的激活具有多種方式??偨Y(jié)各類激活方式的特點(diǎn)如下:
- 影響多個(gè)平臺:包含windows、linux及各類路由器操作系統(tǒng)等。
- 激活協(xié)議多樣:包含TCP、UDP、HTTP等,除了以上舉例,在實(shí)際的分析中,也有ICMP、偽造TLS協(xié)議等。
- 激活位置多變:如協(xié)議格式、協(xié)議頭部、端口、載荷都可以是激活流量。
- 激活方法復(fù)雜:校驗(yàn)方法逐漸從簡單字段匹配發(fā)展到標(biāo)志位運(yùn)算匹配,且激活流量可以使用各類加密算法加密,使基于特征串匹配的檢測方法逐漸失效。
??? 觀成科技通過異常加密流量檢測引擎,在協(xié)議格式異常,通信端口、通信行為等方面檢測,可以有效的發(fā)現(xiàn)此類用于激活的異常流量。