概述
近日深信服威脅情報研究團隊捕獲到Kaiji殭屍網路的最新變種。該病毒最早在2020年出現,使用多種危害較高的漏洞發起攻擊,試圖感染伺服器和物聯網裝置,能夠發起分散式拒絕服務(DDoS)攻擊。與其他IoT殭屍網路不同的是,Kaiji並沒有從其他(開源或黑市論壇獲取)成熟的惡意軟體家族中直接套用攻擊程式碼。
Kaiji殭屍網路病毒在最新的版本中發生了非常大的改動,採用最新的Golang1.18版本進行病毒程式編寫(老版本採用Golang1.15版本),大大增加了安全人員分析和除錯該病毒的難度,同時也進一步證實了越來越多的病毒開發者使用Golang語言的趨勢。
Kaiji殭屍網路相對老版本程式碼被重構,函式功能更加聚焦,函式名不再採用中式拼音命名。最新的版本駐留功能非常強大,增加了多種持久化手段,但是傳播模組相對較弱,這裡猜測一下,作者正在逐漸更新功能模組,該病毒很可能會隨著時間的推移進一步變得更加複雜,未來Kaiji或許會成為一款強大的殭屍網路。
Kaiji殭屍網路的整體攻擊流程如下
情報分析
捕獲的Kaiji殭屍網路主要使用多種高危RCE漏洞(GitLab未授權訪問漏洞(CVE-2021-22205)和Atlassian Confluence OGNL注入漏洞(CVE-2021-26084))利用作為初始攻擊。一旦病毒入侵了伺服器或物聯網裝置,Kaiji殭屍網路就可以在其團伙的指揮下發動DDoS攻擊。
當前版本的Kaiji持久化模組非常強大,使用超過8種駐留手段進行持久化。Kaiji殭屍網路還會竊取本地SSH金鑰,並進一步發起SSH爆破攻擊以感染網際網路上其他暴露的裝置。
Kaiji執行後,若檢測自身檔名為dir、find、ls、lsof、netstat、ps、ss之一,則會偽裝執行相應命令,複製自身到/tmp/seeintlog後執行。隨後會將自身複製到/etc/id.services.conf:
生成shell指令碼/etc/32678(傳播模組為32679),定時執行/etc/id.services.conf:
/etc/id.services.conf執行後,會建立協程,執行main_Link、main_Watchdog、main_Initetc、main_addtime、main_Killcpu。
通訊模組[main_Link函式]
通訊模組執行時,與C2伺服器103.138.80.90:1111、dark1998.f3322.org:8080、156.96.156.105:8080進行通訊,傳送上線資訊後,由main_receive函式等待接收並執行ipbegin、ipend、finish、unload、shell、reverse、remarks、http、ipspoof、tcp、udp、syn、tap等命令,包含執行shell命令、解除安裝自身、發動DDoS攻擊等功能。
傳播模組[main_Sshboom函式]
在老版本的Kaiji殭屍網路會竊取本地SSH金鑰,進一步發起SSH爆破攻擊,爆破成功後會下載執行相應CPU架構的駐留模組,例如:103.138.80.90:808/808/linux_amd64、linux_arm64、linux_mips。最新版本的Kaiji殭屍網路缺少傳播模組功能,這裡猜測作者正在逐一最佳化功能模組。
持久化模組[main_Initetc函式]
透過修改/etc/rc.local、/etc/rc.d/rc.local、/etc/init.d/boot.local檔案實現自啟動
利用chkconfig工具新增linux_kill服務,實現自啟動
註冊linux.service
安裝SELinux策略模組
修改/etc/profile.d/bash_config.sh複製自身到/usr/lib/libdlrpcld.so新增定時任務,每隔一分鐘執行/.img
替換dir、find、ls、lsof、netstat、ps、ss七個工具
嘗試將自身程式名偽裝為ksoftirqd/0
小結
Kaiji殭屍網路作者採用最新的Golang1.18版本重構,大幅更新持久化模組,整體複雜度也相比老版本明顯增加。可以發現Kaiji正處於前中期發展的殭屍網路,未來作者可能在攻擊模組和橫向傳播模組上進行更新迭代,從而導致Kaiji進一步變得複雜。
此外,鑑於Golang語言的跨平臺等特點,近年來將其作為程式語言編碼的惡意軟體數量急劇增加,Kaiji殭屍網路也進一步證實了使用Golang語言開發惡意軟體已成為一種趨勢。
參考連結
https://www.intezer.com/blog/research/kaiji-new-chinese-linux-malware-turning-to-golang/