亚洲日本免费-啊轻点灬太粗太长了三男一女-麻豆av电影在线观看-日韩一级片毛片|www.grbbt.com

新興DDoS Botnet家族Ripper正在持續(xù)進(jìn)化

概述

2023 年 7月初,我們捕獲到了一個(gè)未知 DDoS Botnet 家族樣本,該樣本諸多基礎(chǔ)函數(shù)從 Mirai 源碼移植而來(lái),但在主機(jī)行為、網(wǎng)絡(luò)控制協(xié)議方面又做了很大改動(dòng)。樣本中的多個(gè)核心函數(shù)由 “ripper_” 開(kāi)頭,所以我們把這個(gè)家族命名為Ripper

我們對(duì)其樣本和 C&C 的關(guān)聯(lián)分析,發(fā)現(xiàn)該家族已經(jīng)傳播了數(shù)月時(shí)間,只不過(guò)之前的樣本與現(xiàn)在的樣本變化比較大。經(jīng)過(guò)梳理,我們暫時(shí)把 Ripper 家族的樣本分為 3 個(gè)版本:V0、V1 和 最新的 V2。

Ripper 的傳播機(jī)制借鑒自 Mirai:樣本中內(nèi)置 Telnet 弱口令掃描模塊,掃描模塊會(huì)把掃描結(jié)果上報(bào)給 Report Server,攻擊者會(huì)根據(jù)上報(bào)的掃描結(jié)果,控制 Loader 向失陷主機(jī)植入 Ripper 的木馬文件。最新的 Ripper V2 中,C&C 還會(huì)通過(guò)特定的指令動(dòng)態(tài)更新樣本掃描用到的弱口令字典。從我們的威脅監(jiān)控系統(tǒng)中可以看到,Ripper V2 最近在 7.4 日到 7.6 日有一波積極傳播:

樣本關(guān)鍵行為分析

以如下 Ripper V2 樣本為例,我們對(duì)樣本關(guān)鍵特性進(jìn)行分析:

文件名 文件類型 文件大小 文件MD5
loki.arm6 ELF 32-bit LSB executable, ARM 105760 bytes c244f9422006848e3893d0b8b8fc6b8f

初始化準(zhǔn)備工作

首先,樣本會(huì)嘗試用以下命令重置 iptables 規(guī)則:

iptables-P INPUT ACCEPTiptables-P FORWARD ACCEPTiptables-P OUTPUT ACCEPTiptables-t NAT -Fiptables-t mangle -Fiptables-t NAT -Fiptables-Fiptable-X

緊接著,Ripper V2 會(huì)在控制臺(tái)輸出 “exec\\r\\n”,從 Mirai 移植的 rand_init() 做隨機(jī)函數(shù)初始化,然后通過(guò) init_load_address() 函數(shù)設(shè)定樣本工作需要用到的 C&C 服務(wù)器地址和端口,最后在本地開(kāi)啟一個(gè) Socks5 服務(wù),端口為63254,可以用作 Socks5 代理節(jié)點(diǎn)。Socks5 服務(wù)開(kāi)啟成功后,在控制臺(tái)輸出 “START-S5\\n“。

Ripper V2 設(shè)定了 3 組工作用的 C&C 服務(wù)器,其中地址相同,只是端口不同:

  • util_srv_addr: 自己搭建的域名解析服務(wù)地址,在攻擊指令解析環(huán)節(jié)和 Socks5 代理服務(wù)中用來(lái)解析目標(biāo)域名,端口 15757
  • cnc_srv_addr: C&C 控制的服務(wù)器地址,端口 15636
  • report_srv_addr: 掃描結(jié)果上報(bào)的服務(wù)器地址,端口 20216

Ripper V2 的 C&C 地址字符串經(jīng)過(guò)自定義編碼邏輯進(jìn)行變形,要經(jīng)過(guò) lets_encrypt() 函數(shù)經(jīng)過(guò)解碼。對(duì)于內(nèi)置的 C&C “15.217.144.198” 來(lái)說(shuō),解碼的結(jié)果就是把首位字符和末位字符對(duì)調(diào)位置,得出 “85.217.144.191” 就是其 C&C IP。

C&C 通信

首先是連接 C&C 服務(wù)器,Ripper V2 用UDP 協(xié)議與 C&C 通信:

上線

Ripper V2 的 Bot 向 C&C 發(fā)送的數(shù)據(jù)包有 3 種:

指令代碼 說(shuō)明
0x55 上線
0x29 上報(bào) Socks5 服務(wù)端口
0x36 Pong

成功連接 C&C 之后,樣本會(huì)立即向 C&C 發(fā)送上線包。上線包的內(nèi)容中第一個(gè)字節(jié)是上線包的指令代碼0x55,后面緊接著就是樣本的啟動(dòng)參數(shù)(bot_tag)。拼接好之后交給cnc_send() 函數(shù)來(lái)發(fā)送:

cnc_send() 函數(shù)會(huì)給需要發(fā)送的數(shù)據(jù)加上前綴和后綴,作為數(shù)據(jù)起始和結(jié)尾的標(biāo)志:

  • 前綴: “\\x00\\x01\\x02
  • 后綴: “\\x02\\x01\\x00

這樣一來(lái),假如樣本啟動(dòng)路徑為 “/tmp/loki”,那么最終發(fā)送出去的上線包數(shù)據(jù)如下:

00000000000102552f746d702f6c6f6b69020100 |...U/tmp/loki...|00000010

如果前面成功啟動(dòng)了 Socks5 服務(wù),緊接著 Ripper V2 還會(huì)把 Socks5 服務(wù)的端口(63254)上報(bào)給 C&C 服務(wù)器。上報(bào) Socks5 服務(wù)的指令代碼為0x29,同樣也是交給cnc_send() 函數(shù)發(fā)送上報(bào)數(shù)據(jù),數(shù)據(jù)包如下:

指令解析

Ripper V2 的樣本目前支持以下控制指令:

指令代碼 說(shuō)明 備注
0x33 啟動(dòng)掃描任務(wù) 如果 recv data length>2,代表同時(shí)下發(fā)了弱口令字典
0xde 重發(fā)上線包
0xdf Kill Bot
0xed 停止 DDoS 攻擊
0xef 發(fā)起 DDoS 攻擊
Ping 無(wú)指令碼(”\\x00\\x01\\x02\\PING\\x02\\x01\\x00\\x00″)

C&C 發(fā)給 Bot 的指令,也都會(huì)附帶一個(gè)前綴和后綴字節(jié)串,并且與 Bot 發(fā)給 C&C 的不同,此處的前綴是 “\\x00\\x01\\x02“,后綴是 “\\x02\\x01\\x00\\x00“。Bot 樣本收到 C&C 發(fā)來(lái)的數(shù)據(jù)后,會(huì)通過(guò)檢測(cè)前綴和后綴來(lái)確定一個(gè)完整的指令數(shù)據(jù)包,先剔除前綴和后綴的字節(jié)串,再對(duì)指令內(nèi)容做解析。

樣本上線成功后,C&C 一般會(huì)先下發(fā)指令啟動(dòng)掃描任務(wù),并附帶一組掃描用到的弱口令,數(shù)據(jù)包如下:

注意弱口令列表的數(shù)據(jù),每一對(duì)弱口令之間會(huì)用 “0xFF” 來(lái)做間隔字符,后面會(huì)調(diào)用一個(gè)util_tokenize() 函數(shù)來(lái)解析這些用 “0xFF” 來(lái)隔開(kāi)的多組弱口令:

當(dāng) cmd_code 為 0xef 時(shí),Ripper V2 的 Bot 會(huì)發(fā)起 DDoS 攻擊,此時(shí)指令數(shù)據(jù)包的結(jié)構(gòu)偽碼如下:

struct cmd_pkt {uint8[3] prefix;// "\\x00\\x01\\x02"uint8 cmd_code;uint32 target_ip;uint16 target_port;uint32 duration;uint8 atk_code;uint8 atk_flag_cnt; atk_flag[atk_flag_cnt] flags;uint8[4] subffix;// "\\x02\\x01\\x00\\x00"}struct atk_flag { uint8 flag_type;uint8 flag_len;// flag 數(shù)據(jù)長(zhǎng)度(bytes) char[flag_len] flag_data;// flag 數(shù)據(jù),最長(zhǎng) 64 bytes}

Ripper V2 支持的 DDoS 攻擊方式共有 7 種:

attack code attack method
0 UDP Flood
1 UDP Plain Flood
2 UDP Raw Flood
3 TCP Plain Flood
4 TCP RAW Flood
5 MIX Flood
6 HTTP Flood

Ripper V2 的 Attack Flag 數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)從 Mirai 移植而來(lái),但具體支持的 Attack Flag 與 Mirai 大不相同,Ripper V2 支持 6 種自定義的 Flag:

flag code flag 說(shuō)明
1 域名
2 Attack payload size
3 TCP Flag ([a|s|f|r|u|p] 任意組合)
4 Socket Option(non_block | no_delay)
5 發(fā)起攻擊的輪數(shù)
6 每一輪的攻擊次數(shù)

Ripper V2 的攻擊指令解析邏輯比較復(fù)雜, 它把 Mirai 中所有指令解析、發(fā)起攻擊的函數(shù)全部打散,以內(nèi)聯(lián)的形式寫(xiě)到了一個(gè)函數(shù)中,整個(gè)函數(shù)體積特別大,對(duì)逆向分析會(huì)造成一定程度的阻力,函數(shù)結(jié)構(gòu)如下:

如果 Bot 收到的攻擊指令中,包含針對(duì)域名目標(biāo)的攻擊,Ripper V2 會(huì)先調(diào)用自定義的域名解析函數(shù) resolve_address(),訪問(wèn)自己搭建的服務(wù)對(duì)域名進(jìn)行解析:

如上圖所示,Bot 訪問(wèn)自己的服務(wù)(util_srv,地址與 C&C 地址一致,端口為 15757),通過(guò) UDP 協(xié)議,發(fā)送的 Payload 第一個(gè)字節(jié)為固定的 “\\x01“,第二個(gè)字節(jié)為請(qǐng)求解析域名的長(zhǎng)度,后面附帶域名字符串,Payload 結(jié)構(gòu)偽碼如下:

structdomain_resolv_payload { _uint8 code;// "\\x01" _uint8 domain_len;char[domain_len] domain_str;}

然后 Bot 從服務(wù)端讀取數(shù)據(jù),如果讀取數(shù)據(jù)長(zhǎng)度為 4,則說(shuō)明域名解析成功,返回了一個(gè) 4 bytes 的 IP。

樣本層面的版本演進(jìn)

我們發(fā)現(xiàn)的 3 個(gè)版本的 Ripper 家族樣本,功能細(xì)節(jié)差異比較大,但也有明顯的共同特征,正是基于這些共同特征,我們把它們歸為同一家族:

  1. 關(guān)鍵函數(shù)均以 “ripper_” 開(kāi)頭,也有其他大量的相同功能和名字的函數(shù)
  2. V0 和 V1 版本的文件名均為”boat.{CPU_ARCH}”
  3. 都有相同的 util_tokenize() 函數(shù),為一些函數(shù)做基于特定分隔符的切分、解析,喜歡用 0xFF 作為分隔符
  4. 網(wǎng)絡(luò)數(shù)據(jù)包都設(shè)計(jì)成帶有特定前綴和和后綴字節(jié)串的形式

接下來(lái)我們會(huì)對(duì)這些特性做詳細(xì)分析。

Ripper V0 樣本

文件名 文件類型 文件大小 文件MD5
boat.arm7 ELF 32-bit LSB executable, ARM 94644 bytes b73116306de407394bee825ff4d95091

在終端連續(xù)輸出以下 3 串符串:

"Komorebi\\r\\n""Domorebi\\r\\n""Xomorebi\\r\\n"

C&C 明文硬編碼在樣本中:

Ripper V0 指令特征:

  • 所有的指令以 “\\r\\n\\n\\r” 4 個(gè)字節(jié)為結(jié)尾標(biāo)志
  • 指令中各字段以 “0xFF” 為分隔符

各指令總結(jié)如下:

方向 cmd code 功能
Bot->C2 0x00 上線
C2->Bot 0x01 停止 DDoS 攻擊
C2->Bot 0x00 發(fā)起 DDoS 攻擊

Ripper V0 支持的 DDoS 攻擊方式及對(duì)應(yīng)的 Attack Code:

上線包:第一個(gè)字節(jié)為 0x00,第二個(gè)字符為分割標(biāo)志字符 0xFF,第三部分為第一個(gè)命令行啟動(dòng)參數(shù),最后為數(shù)據(jù)包結(jié)尾標(biāo)志:”\\r\\n\\n\\r”

指令包也都是以 “\\r\\n\\n\\r” 結(jié)尾,樣本中會(huì)把結(jié)尾 4 個(gè)字符去掉再解析、執(zhí)行指令:

在函數(shù)cmd_handle() 中,樣本會(huì)把從 C&C 收到的數(shù)據(jù)調(diào)用util_tokenize() 函數(shù),以 “0xFF” 為分隔符做切分、重組,最后再根據(jù)解析好的指令執(zhí)行相應(yīng)動(dòng)作:

util_tokenize() 函數(shù)反編譯結(jié)果如下:

Ripper V1 樣本

文件名 文件類型 文件大小 文件MD5
boat.arm7 ELF 32-bit LSB executable, ARM 136411 bytes e9c5048652f4263d9daf4a3af5c3709d

在終端輸出字符串:”EXECUTED\\r\\n

C&C 仍然硬編碼在樣本中,不過(guò)同一個(gè) C&C IP 開(kāi)了兩個(gè)服務(wù)端口:

  • 5900,常規(guī) C&C 服務(wù)端口,用來(lái)控制 Bot 行為
  • 5901,API Server 端口,用來(lái)給 Bot 下發(fā)工作中用到的數(shù)據(jù),比如 Scanner 口令、Table Entry 相關(guān)數(shù)據(jù)等

Ripper V1 的上線包比 Ripper V0 包含的信息更豐富,各字段說(shuō)明如下:

field offset length(bytes) default value
cmd_code 0 1 0x0
bot_version 0 4 “\\x00\\x00\\x00\\x40″
bot_id(argv[0]) 4 len(bot_id)
bot_edianess len(bot_id)+4 1
bot_cpu_arch len(bot_id)+5 1
bot_cpu_cores len(bot_id)+6 1
bot_mem_mb len(bot_id)+7 4

其中第一個(gè)字節(jié)為固定的 “0x00″,代表上線包;接下來(lái)是 4 字節(jié)的 bot_version,固定值為 “\\x00\\x00\\x00\\x40“,后面每個(gè)字段時(shí)間都用 “0xFF” 分隔:

樣本從 C&C 的 API Server 中給你接收到的數(shù)據(jù),也是以 “0xFF” 作為字段分隔標(biāo)志,并用與 Ripper V0 幾乎相同的util_tokenize() 函數(shù)來(lái)解析、重組數(shù)據(jù):

Ripper V1 攻擊指令包的結(jié)構(gòu)與 Ripper V0 也大不相同,Ripper V0 的攻擊指令數(shù)據(jù)中,各字段會(huì)以 “0xFF” 分隔,最后以 “\\r\\n\\n\\r” 結(jié)尾;Ripper V1 的指令包,采用了固定長(zhǎng)度的結(jié)構(gòu),各個(gè)字段之間無(wú)分隔符。結(jié)構(gòu)如下:

field offset length
UNKOWN 0 1
attack code 1 1
target host 2 4
target port 6 2
duration 8 4

其中第一個(gè)字節(jié)會(huì)被直接丟棄:

然后解析其余數(shù)據(jù),提取字段、重組后面 DDoS 攻擊要用到的結(jié)構(gòu)體:

Ripper V1 支持的 DDoS 攻擊方式以及對(duì)應(yīng)的指令碼如下:

attack code attack type
0 ICMP Flood
1 UDP Plain Flood
2 TCP Plain Flood
3 TCP Flood
4 HTTP Flood

總結(jié)

目前我們已經(jīng)捕獲到 Ripper V2 發(fā)起的數(shù)十次攻擊,其攻擊目標(biāo)包括數(shù)據(jù)貨幣交易所1million.exchange,時(shí)代華納的 DNS 服務(wù)器74.74.74.74,以及英國(guó)獨(dú)立報(bào)官網(wǎng)www.independent.co.uk。

鑒于 Ripper 在樣本層面的頻繁變動(dòng)持續(xù)升級(jí),以及逐步開(kāi)展 DDoS 攻擊,我們會(huì)對(duì) Ripper 家族的活動(dòng)持續(xù)監(jiān)控。

IoC

MD5

b73116306de407394bee825ff4d95091

364a1676d638e5069ab88cb98288bef2

4a1fb73a6f09468b8ab0fc7478fe715a

4d3312115eb5694a7e7769867fcf227a

53fa2ebff19861c6a381d802a8bef9ba

79ee10eb0c48c8bf4fa6deb342db1a99

8845e1c8daf7545bfde3ddf6729664a4

908ab5382ee42c0ab034820730d6ba09

99ab1760db8fe89b556a943afdd105ee

bc87628437819895c031ecb72a70659a

c55cbde42ff1cbf09ed07ca98ca1f017

e9c5048652f4263d9daf4a3af5c3709d

015e73f206790663b1efba854d9888ee

087b071253958042dd74d53475666d78

78f1155bc7a9c0a89a3d30992e0efb5f

1387c774b707ab1c379acc3ef882b214

c244f9422006848e3893d0b8b8fc6b8f

C2

85.217.144.191:15636

85.217.144.191:15757

85.217.144.191:20216

194.55.224.126:1738

194.55.224.182:5900

194.55.224.182:5901

來(lái)源:奇安信威脅情報(bào)中心

上一篇:NIST進(jìn)一步推進(jìn)后量子密碼學(xué):40項(xiàng)數(shù)字簽名方案進(jìn)入評(píng)審

下一篇:可信云大會(huì)·云原生安全分論壇 精彩內(nèi)容搶先看