步驟如下
1.樣本來源于惡意代碼分析實戰(zhàn)的第七章的實驗樣本lab07-03.exe,lab07-03.dll.
2.過程如下:
首先查看下有什么關(guān)鍵字符串烈菌。strings.exe 程序查看lab07-03.exe 的字符串雏婶,發(fā)現(xiàn)有文件映射的一系列函數(shù)肥荔,CreateFileMappingA,UnmapViewOfFile,MapViewOfFile等篷牌,以及遍歷文件的函數(shù)FindFirstFileA,FindNextFileA,FindClose,另外還有復(fù)制文件的函數(shù)和創(chuàng)建文件的函數(shù)等巍糯,沒發(fā)現(xiàn)什么網(wǎng)絡(luò)特征呻右。再看下lab07-03.dll的字符串阵难,首先是創(chuàng)建進程的函數(shù)CreateProcessA,然后是互斥體的函數(shù)CreateMutexA,OpenMutexA,等函數(shù),此外發(fā)現(xiàn)了一些網(wǎng)絡(luò)特征漩蟆,ip地址 127.26.152.13垒探,以及實現(xiàn)網(wǎng)絡(luò)功能的庫WS2_32.dll,還有一些字符串比較函數(shù)strcmp.
然后查看lab07-03.exe的導(dǎo)入表,可以看到前面所敘述的函數(shù)怠李,同時應(yīng)注意到圾叼,導(dǎo)入表中并沒有LoadLibrary或者GetProcAddress函數(shù),說明dll文件并沒有在運行時加載捺癞。查看lab07-03.dll文件發(fā)現(xiàn)很多網(wǎng)絡(luò)特征夷蚊,很多網(wǎng)絡(luò)函數(shù),包括WSAStartup,socket,send,connect,recv等翘簇。
查看完這些后撬码,心中稍微有點底,然后運行程序進行動態(tài)分析版保,配置網(wǎng)絡(luò)環(huán)境ApateDNS,監(jiān)控軟件等呜笑。運行完程序發(fā)現(xiàn)秒退夫否,什么也沒有發(fā)生,process monitor和process explorer也什么沒監(jiān)控到叫胁,也沒什么網(wǎng)絡(luò)活動凰慈。猜測可能會有命令行參數(shù)。
對lab07-03.exe進行逆向分析驼鹅。載入IDA微谓,進入主函數(shù),發(fā)現(xiàn)果然有驗證输钩,判斷參數(shù)是否為2豺型,并且第二個參數(shù)是否“WARNING_THIS_WILL_DESTROY_YOUR_MACHINE”然后下面就是文件映射的操作了,對'C:\Windows\System32\Kernel32.dll 和lab07-03.dll進行了一系列的文件讀寫操作买乃,這部分詳情分析有點困難姻氨,我們留到動態(tài)分析的時候再來做。最后把文件lab07-03.dll拷貝到'C:\Windows\System32\Kerne132.dll中剪验。繼續(xù)往下看肴焊,是一個函數(shù)4011e0,參數(shù)是c盤根目錄,跟進去看一下發(fā)現(xiàn)是一個遍歷文件夾的操作功戚。判斷是否是.exe文件娶眷,然后是進行內(nèi)存映射,查找kernel32.dll字符串改為kerne132.dll字符串啸臀。意圖很明顯了届宠,讓c盤目錄下的exe文件加載山寨的kerne132.dll。
然后我們對lab07-03.dll進行靜態(tài)ida反匯編看一下壳咕。dll的代碼就很簡單了席揽,首先創(chuàng)建互斥體保證只有一個再運行,然后建立socket網(wǎng)絡(luò)連接谓厘,ip是127.26.152.13,端口是80寸谜,首先 發(fā)送hello,并且利用shutdown()函數(shù)關(guān)閉套接字的寫功能竟稳,然后就是recv進行監(jiān)聽了,如果受到的字符串是sleep就睡眠60秒熊痴,如果是exec那就是遠程執(zhí)行他爸,創(chuàng)建進程,命令行參數(shù)此時未知果善。
下一步就是驗證我們的猜想诊笤,在命令行加上正確的參數(shù)運行程序,構(gòu)建好模擬網(wǎng)路和監(jiān)控工具巾陕。
如圖看到了文件映射的操作讨跟,以及大量的遍歷操作纪他,跟我們通過反匯編得到的結(jié)果幾乎一致。