深度追蹤 Keksec 僵尸網絡
工作來源
Virus Bulletin 2021
背景分析
Linux 僵尸網絡呈愈演愈烈之勢,許多是由腳本小子使用開源工具包(如 Mirai、Gafgyt 源碼)創建的,但仍有一半以上是由專業的攻擊團伙來運營的。年初,Keksec 因構建 Necro/Freakout 僵尸網絡而聞名,但其組建 DDoS 僵尸網絡最早可追溯到 2016 年。

Keksec 在 2020 年短暫的休整后在 2020 年 8 月再次活躍,而后一共發現了 20 次攻擊行動。Keksec 的攻擊者非常高調,還會在社交媒體上炫耀攻擊行動。


Keksec在 pastebin.com 上創建了一個開放目錄保存惡意軟件和一些針對 Windows 和 Linux 主機的攻擊工具。

攻擊行動
通過歷史樣本總結生成 Yara 規則,在海量樣本庫中進行回掃。再通過樣本相似性聚類進行分組,人工去除誤報后共留下 5000 個樣本。將這些樣本作為種子,利用威脅情報挖掘系統擴展樣本,關聯捕獲時間、漏洞利用和其他一些相關屬性,再進行分析。
一共捕獲發現了 23 個漏洞利用、5564 個樣本文件和 3 個惡意軟件家族。以此形成如下圖表:

通過蜜罐發現 Keksec 幾乎不間斷地對網絡發起掃描和攻擊,尤其是引入新漏洞利用后,掃描就會顯著增強。高頻攻擊從 2020 年 8 月持續到 12 月,隨后低迷直到 2021 年 1 月 Keksec 開始傳播新的惡意軟件家族 Necro。
漏洞利用
Keksec 可以使用專用的掃描服務器,也可以利用樣本內置的掃描功能。其利用的漏洞和相應傳播的惡意軟件家族如下所示:

Keksec 對 1day 漏洞的利用非常迅速,特別是在使用 Necro 惡意軟件后,通常在 POC 披露的兩到三天內就可以看到 Keksec 的在野利用。
惡意軟件
Keksec 針對 Windows 和 Linux 平臺開發了多個惡意軟件:
- 針對 Linux 平臺:Tsunami (Capsaicion、Ziggy)、Gafgyt (LULzbOT、Oreo、Gafgyt_tor)
- 針對 Windows 平臺:DarkIRC (AutoIt 加殼)、DarkHTTP (AutoIt 加殼)
- 跨平臺 Python 腳本:Necro
- 基于開源項目:Rootkit、Miner、JS Bot

Keksec 積極維護 Gafgyt、Tsunami 和 Necro 三個主要的惡意軟件家族,并為之不斷增加新的功能。雖然 Necro 的框架是由 Keksec 自己開發的,但也從另外兩個家族的開源代碼中繼承了不少功能。
Keksec 利用開源的惡意代碼開發各種各樣的變種,導致變種極其混亂。例如,Keksec 的主要成員 Freak 開發并開源了名為 Capsaicion 和 Ziggy Redo 的兩個 Tsunami 變種。也發現了一些混用 Capsaicion 和 Ziggy 代碼的 Tsunami 樣本。而 Gafgyt 的變種中也同樣混亂,包括 LulZBoT、Oreo、bigB04t 和 Simps,一些變種甚至重用了 Tsunami 的代碼。而使用 Python 開發的 Necro 不僅重用了 IRC 協議進行 C&C 通信,還借鑒了許多開源項目的關鍵特性。
三個主要的惡意軟件家族的特點如下所示:

Scan
Keksec 主要使用 Telnet 和 SSH 弱口令掃描和諸多漏洞利用進行掃描。
Telnet Scan
開源 Tsunami 的 Telnet 弱口令掃描功能是名為 BurnTheJews 的函數,如下所示:

而在 Keksec 中名為 ak47telscan 的函數,與 BurnTheJews 基本一致。

該函數其實也是從其他開源項目中修改而來:


SSH Scan
SSH 弱口令掃描由 Necro 僵尸網絡執行,在安裝 paramiko 庫后使用內置弱口令進行爆破。

漏洞利用掃描
Keksec 并不具備 0day 發現能力。如果 POC 是 C 實現的,就集成到 Tsunami 和 Gafgyt 的惡意軟件中,如果 POC 是 Python 實現的,就集成到 Necro 惡意軟件中。
Necro 最常用的三個漏洞利用為:
- TerraMaster RCE:CVE-2020-28188
- VMware vCenter Server RCE:CVE-2021-21972
- WebLogic RCE:CVE-2020-14882

Sniffer
Keksec 可以過濾掉一些指定的端口和 IP 地址后捕獲 TCP 流量,將數據轉發給 C&C 服務器。Tsunami 和 Gafgyt 中使用的 Sniffer 代碼也是基本一致的,如下所示數據通過 1337 端口上傳。


由于 Necro 也使用 IRC 協議,Necro 可能和 Tsunami 共享同一個 C&C 服務器。Keksec 想要基于 IRC 協議構建一個僵尸網絡管理平臺,作為能夠攻擊各種架構和系統的僵尸網絡的統一管理平臺。
偽裝進程
更改進程名稱
Linux 系統上一個非常傳統的進程偽裝技術是使用隨機字符串覆蓋 argv 參數和 prctl(PR_SET_NAME,buf) 來更改進程名稱和啟動參數。

Rootkit 隱藏進程
開源項目 r77 Rootkit 是一個 ring3 層 Windows Rootkit,通過全局 Hook ntdll.dll 的一些函數來攔截和過濾目標進程的信息。該 Rootkit 通過進程注入動態加載并在內存中執行。


進程注入
Shellcode 注入進程后加載 Rootkit,該 Shellcode 也來自名為 RDI 的開源項目。


DGA
Necro 使用 DGA 來逃避檢測,主要有兩種方式的 DGA 生成算法:
隨機
第一種是純隨機算法,從自定義字母表中隨機選擇 16 個字符,以生成在頂級域名 .xyz 下的 C&C 域名。

DDNS+隨機
第二種基于 DDNS 服務,從自定義字母表中隨機選取 10 到 19 個字符。

Tor
Keksec 使用 Tor 代理進行 C&C 通信。
Gafgyt
在 Gafgyt 中通過內置代理列表與 C&C 服務器通信,單個樣本最多可使用 173 個代理 IP。

隨機選擇一個 C&C 服務器進行通信,建立連接代碼如下所示:

通信數據如下所示:

Necro
Necro 也會通過 Tor 代理進行 C&C 通信,而 C&C 通信使用 IRC 協議。如下所示:

混淆和加殼
UPX
捕獲的大部分 Gafgyt 和 Tsunami 樣本都沒有加殼,也沒有剝離符號信息。少數樣本使用標準 UPX 加殼,脫殼的樣本也沒有被剝離符號信息。


字符串編碼
Gafgyt 和 Tsunami 樣本使用簡單的映射算法對敏感字符串(例如 C&C 地址)進行加密,并在使用字符串時進行解密。

該算法是由名為 ziggystartux 的 Tsunami 變種所開發的。初期使用的和原始版本一致,經過幾次迭代后使用的字符串修改為 '%q*KC)&F98fsr2to4b3yi_:wB>z=;k? "EAZ7.D-md。

Necro 還在字符串替換后執行 ZIP 壓縮以進一步保護字符串:

多態引擎
Necro 使用了 2015 年公開的 Python 源碼混淆技術,Keksec 將其稱為“Polymorphic engine”,一共發現了兩個版本:
舊版本使用隨機字符串替換預定義的關鍵對象名稱列表,如下所示:

新版本使用 AST 庫動態遍歷并用隨機字符串替換全局對象,如下所示:

C&C 通信
Gafgyt 的命令使用 encode 函數進行加密,接收到指令后需要在本地對指令進行解密:

而 Tsunami、Necro 和 DarkIRC 惡意軟件家族都使用 IRC 協議,這意味著只需要開發和維護一個 C&C 系統即可控制所有失陷主機。


傳播
感染頁面
Necro 可以感染失陷主機上的 Web 文件(.js、.html、.htm、.php),在文件中插入 JS 代碼 http://ublock-referer.dev/campaign.js。


Campaign.js 實際上是一個高度混淆的代碼,解碼后是一個基于 JavaScript 的木馬 Cloud9。
SMB 掃描
Necro 在其中一個版本中加入了 SMB 掃描代碼,實現了內網橫向平移。可能由于實際效果并不盡如人意,此功能在后續版本中被移除了。

該部分代碼也可以在 GitHub 上找到原型:

其他
JS Bot
Necro 感染 Web 文件的目標是傳播 JS Bot,當用戶通過瀏覽器訪問受感染的頁面時,就會加載該 Bot。該 JS Bot 的功能非常豐富,可以記錄鍵盤擊鍵、竊取表單/剪貼板/Cookie和其他數據、偽造 Web 訪問行為,并通過瀏覽器發起 HTTP DDoS 攻擊等。

攻擊者還使用仿冒的 Firefox 插件,通過逆向發現該插件也會向瀏覽器注入 Cloud9。

Miner
Keksec 的挖礦功能并未深入集成到 Bot 中,而是通過第三方礦機來實現。

絕大多數挖礦都是門羅幣,也有 XTZ,查看錢包地址可以發現攻擊者的收益并不理想。

運營
惡意樣本投遞
從 2020 年 8 月開始,每天捕獲的新樣本量如下所示:

在此前日常分析中,我們也發現了二月中下旬 Keksec 的活躍傳播,其單日峰值傳播量達到數萬,這與 360 Netlab 的趨勢跟蹤也是一致的。攻擊者幾乎每天都在調整代碼,有時一天可以捕獲到好幾個新樣本。這表明 Keksec 團伙擁有充足的人力和資源,并且越來越活躍。
Necro 在 2021 年也在頻繁更新升級:

攻擊基礎設施
提取了 Gafgyt 和 Tsunami 家族樣本的 C&C 信息,如下所示。

通過 Passive DNS 關聯解析記錄可以發現關鍵域名 gxbrowser.net 和 cnc.c25e6559668942.xyz,大部分 IP 地址都與這兩個域名有關。

從 2021 年起,Keksec 便不再使用這兩個域名,轉而使用 Tor 和 DGA 域名。
基礎設施的活動模式如下所示:
每個 C&C IP 生命周期從一個月到三個月不等在同一時期優先使用同一網段內的 IP 地址資源從 2021 年 3 月開始轉向使用 Tor 代理Tor 的 C&C 域名更新頻率非常高,僅 3 月一個月就使用了 10 個 Tor 域名

家族活躍統計
樣本的投遞也有活動模式:
Tsunami 在 2020 年 8 月中旬出現,但活躍時間較短Gafgyt 在 2020 年 9 月至 12 月間斷性活躍Necro 在 2021 年 1 月突然出現Tsunami 在 2021 年 2 月上半月恢復傳播,接著是 Gafgyt 和 Gafgyt_torGafgyt_tor 變種和 Gafgyt 有很多相似之處,代碼明顯同源
每個家族都在開發和傳播之間切換,在開發周期中會進行大量升級改進:

工作思考
盡管 Keksec 嘗試通過 DDoS、挖礦、竊取信息和銷售惡意軟件進行獲利,但仍然以 DDoS 攻擊為主,這可能是 Keksec 最大的收入來源。盡管 Keksec 沒有 0day 的發現能力,但其代碼集成和運營能力極其強大,仍然是一個不可忽視的威脅。
工作來自 360 Netlab,分析是一如既往的扎實。可以看出其內部建設的威脅情報挖掘、Passive DNS 等系統對分析工作的支撐十分有效,此前其博客也發布過多篇文章進行描述。其他安全廠商如 Check Point、Lacework 和綠盟等也對 Keksec 有持續的跟蹤與披露。公開的威脅披露可以彌補不同廠商間的信息盲區,站在更大的視角下分析安全威脅。
最近勒索軟件的聲浪一波高過一波,非常引人注目,但僵尸網絡作為一大安全威脅仍然值得深入分析。現在的僵尸網絡除了 DDoS 外往往選擇挖礦來進行多元化獲利,大型的僵尸網絡如 TeamTNT、8220、DDG 等仍然十分活躍。攻擊者對僵尸網絡不斷地更新迭代也督促安全檢測和安全防護能力快速升級,在僵尸網絡運營升級時盡早發現就可以在攻擊對抗中提前半步。對于全網大規模僵尸網絡的持續跟蹤監測,也許可以幫助我們去粗取精,聚焦更多精力在更值得關注的點上。
IOC
107.174.133.119107.175.31.130143.198.120.58185.10.68.175192.210.163.201193.239.147.211193.239.147.224198.144.190.116198.144.190.523.94.190.10145.145.185.22145.145.185.22945.145.185.8345.153.203.1245.253.84.19770.66.139.6883.97.20.9084.16.79.13055pnros74tawlmqn.onionb4bzpyrhc65airpg.onioncjoy2cks2bhtyibj.oniondimumdjenyy4jwlc.onionfaw623ska5evipvarobhpzu4ntoru5v6ia5444krr6deerdnvpa3p7ad.onionfpv4a2q6wqxx7jdh.onionfxiiouorymolxsqcjltq2mqaz3il5uqs3ynlabh5onfw3irbqltot6ad.onionks5wtmd7bbuybajg.oniontzfue66fa5khu44z.onionwvp3te7pkfczmnnl.onion