Noriben沙箱:分分鐘搞定惡意軟件
我們希望大家能在新的一年里做的更好,尤其是能更快更有效地分析惡意軟件。數(shù)年前,我構(gòu)建了一個(gè)惡意軟件分析沙箱腳本,用于每日的分析和逆向工作?,F(xiàn)在讓我給大家展示下如何在幾秒鐘內(nèi),不用太多設(shè)置,就能進(jìn)行惡意軟件分析。
介紹
如果你在推特上關(guān)注了我,或者對(duì)本博客以前的內(nèi)容有所了解,你可能就會(huì)熟悉Noriben。不管怎樣,我這里先做個(gè)介紹,它是一個(gè)非常簡(jiǎn)單的腳本。在典型行為的分析中,可能會(huì)在沙箱里運(yùn)行惡意軟件,看它會(huì)如何創(chuàng)建,如何運(yùn)行進(jìn)程,以及對(duì)系統(tǒng)產(chǎn)生了什么影響。大多數(shù)團(tuán)隊(duì)所用的方法,是將惡意軟件上傳到如VirtusTotal之類的反病毒測(cè)試網(wǎng)站,或者鐘情于在線沙箱如Malwr,或者干脆使用本地的Cuckoo沙箱。
對(duì)于那些上傳文件到互聯(lián)網(wǎng)的團(tuán)隊(duì),我只能說(shuō)著這種行為對(duì)APT攻擊來(lái)講是非常不明智的。黑客如果有心的話,其實(shí)是可以發(fā)現(xiàn)他們的文件已經(jīng)被上傳到在線監(jiān)控網(wǎng)站里。
本地檢測(cè)惡意軟件通??梢酝ㄟ^(guò)Cuckoo來(lái)做,這是一個(gè)不錯(cuò)的開源沙箱,它可以用來(lái)分析惡意軟件,獲取較為全面的分析結(jié)果。然而,用這玩意兒其實(shí)挺費(fèi)勁,在不同的環(huán)境里進(jìn)行正確設(shè)置會(huì)相對(duì)困難。它在Linux下安裝相對(duì)容易,而安裝在Windows和OSX下有點(diǎn)蛋疼。就我而言,在外面隨便拿出一個(gè)筆記本電腦,就可能會(huì)需要安上沙箱開始做事。
如果你上過(guò)惡意軟件分析的培訓(xùn),你可能也會(huì)使用SysInternals Procmon工具來(lái)監(jiān)控系統(tǒng)環(huán)境。某些人或許學(xué)了使用Regmon和Filemon,這些都是古董知識(shí)了。某些人可能會(huì)使用Regshot,這工具其實(shí)現(xiàn)在已經(jīng)跟不上時(shí)代。
Noriben是Procmon工具的簡(jiǎn)單的包裝改造,它收集了成千上萬(wàn)的事件,然后使用自定義的白名單設(shè)置,精簡(jiǎn)后對(duì)系統(tǒng)審查。下面是2015年黑帽大會(huì)Arsenal分會(huì)場(chǎng)進(jìn)行的片段,ppt如下:
http://www.slideshare.net/bbaskin/slideshelf
這個(gè)視頻沒(méi)有對(duì)工具細(xì)節(jié)本身做太多關(guān)注,你可以看這里:
http://www.ghettoforensics.com/noriben
Vmware里的自動(dòng)化沙箱
Noriben會(huì)要求你在沙箱里交互式運(yùn)行惡意軟件。在啟動(dòng)Noriben后,它會(huì)在你運(yùn)行惡意軟件時(shí)收集系統(tǒng)整體信息。分析人員希望在沙箱里與惡意軟件進(jìn)行交互時(shí),會(huì)使用它進(jìn)行惡意指標(biāo)收集,比如這個(gè)視頻里的VM檢查。
Youtube地址:https://www.youtube.com/watch?v=kmCzAmqMeTY
然而,本文強(qiáng)調(diào)的是通過(guò)自動(dòng)化的方式,直接從你的主機(jī)系統(tǒng)中提取,避免以上的情況。隨后提交樣本,接收結(jié)果報(bào)告。
使用了Vmware里的vmrun命令后,這個(gè)腳本會(huì)將VM恢復(fù)到某已知的快照中,將惡意軟件copy進(jìn)去,然后運(yùn)行Noriben,最后將報(bào)告zip打包取出。從下面的命令行里,我們可以在60秒內(nèi)獲取某個(gè)文件的惡意軟件報(bào)告,下面是OSX下的bash腳本:
#!/bin/bash#Noriben Sandbox Automation Script#Responsible for:#* Copying malware into a known VM#* Running malware sample#* Copying off results##Ensure you set the environment variables below to match your systemif [ ! -f $1 ]; then echo "Please provide executable filename as an argument." echo "For example:" echo "$0 ~/malware/ef8188aa1dfa2ab07af527bab6c8baf7" exit fi DELAY=10 MALWAREFILE=$1 VMRUN="/Applications/VMware Fusion.app/Contents/Library/vmrun" VMX="/Users/bbaskin/VMs/RSA Victim.vmwarevm/Windows XP Professional.vmx" VM_SNAPSHOT="Baseline" VM_USER=Administrator VM_PASS=password FILENAME=$(basename $MALWAREFILE) NORIBEN_PATH="C:\\Documents and Settings\\$VM_USER\\Desktop\\Noriben.py" ZIP_PATH=C:\\Tools\\zip.exe LOG_PATH=C:\\Noriben_Logs "$VMRUN" -T ws revertToSnapshot "$VMX" $VM_SNAPSHOT "$VMRUN" -T ws start "$VMX""$VMRUN" -gu $VM_USER -gp $VM_PASS copyFileFromHostToGuest "$VMX" "$MALWAREFILE" C:\\Malware\\malware.exe "$VMRUN" -T ws -gu $VM_USER -gp $VM_PASS runProgramInGuest "$VMX" C:\\Python27\\Python.exe "$NORIBEN_PATH" -d -t $DELAY --cmd "C:\\Malware\\Malware.exe" --output "$LOG_PATH"if [ $? -gt 0 ]; then echo "[!] File did not execute in VM correctly." exit fi"$VMRUN" -T ws -gu $VM_USER -gp $VM_PASS runProgramInGuest "$VMX" "$ZIP_PATH" -j C:\\NoribenReports.zip "$LOG_PATH\\*.*"if [ $? -eq 12 ]; then echo "[!] ERROR: No files found in Noriben output folder to ZIP." exit fi"$VMRUN" -gu $VM_USER -gp $VM_PASS copyFileFromGuestToHost "$VMX" C:\\NoribenReports.zip $PWD/NoribenReports_$FILENAME.zip
顯然,這個(gè)腳本需要你編輯部分內(nèi)容,設(shè)置正確的路徑。這里默認(rèn)是“C:\Malware\malware.exe”,使用administrator賬戶運(yùn)行Noriben,并輸出結(jié)果到C:\Noriben_Logs\。
在這里,我們有個(gè)使用該腳本掃描惡意文件的視頻:
Youtube地址:https://www.youtube.com/watch?v=Xpt6RdBElCQ
類似的,下面是一個(gè)Github上用來(lái)在Windows上跑的腳本:
Noriben Sandbox Automation Script:Responsible for::* Copying malware into a known VM :* Running malware sample :* Copying off results ::Ensure you set the environment variables below to match your system @echo off if "%1"=="" goto HELP if not exist "%1" goto HELP set DELAY=10set CWD=%CD%set VMRUN="C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe"set VMX="e:\VMs\WinXP_Malware\WinXP_Malware.vmx"set VM_SNAPSHOT="Baseline" SET VM_USER=Administratorset VM_PASS=password set FILENAME=%~nx1 set NORIBEN_PATH="C:\Documents and Settings\%VM_USER%\Desktop\Noriben.py"set LOG_PATH="C:\Noriben_Logs"set ZIP_PATH="C:\Tools\zip.exe" %VMRUN% -T ws revertToSnapshot %VMX% %VM_SNAPSHOT%%VMRUN% -T ws start %VMX%%VMRUN% -gu %VM_USER% -gp %VM_PASS% copyFileFromHostToGuest %VMX% "%1" C:\Malware\malware.exe echo %VMRUN% -T ws -gu %VM_USER% -gp %VM_PASS% runProgramInGuest %VMX% C:\Python27\Python.exe %NORIBEN_PATH% -d -t %DELAY% --cmd "C:\Malware\Malware.exe" --output %LOG_PATH%%VMRUN% -T ws -gu %VM_USER% -gp %VM_PASS% runProgramInGuest %VMX% C:\Python27\Python.exe %NORIBEN_PATH% -d -t %DELAY% --cmd "C:\Malware\Malware.exe" --output %LOG_PATH%if %ERRORLEVEL%==1 goto ERROR1 %VMRUN% -T ws -gu %VM_USER% -gp %VM_PASS% runProgramInGuest %VMX% %ZIP_PATH% -j C:\NoribenReports.zip %LOG_PATH%\*.*%VMRUN% -gu %VM_USER% -gp %VM_PASS% copyFileFromGuestToHost %VMX% C:\NoribenReports.zip %CWD%\NoribenReports_%FILENAME%.zip goto END :ERROR1 echo [!] File did not execute in VM correctly.goto END :HELP echo Please provide executable filename as an argument. echo For example: echo %~nx0 C:\Malware\ef8188aa1dfa2ab07af527bab6c8baf7 goto END :END
類似的腳本也可以應(yīng)用到VirtualBox。然而,我在實(shí)際用guestcontrol copyto在虛擬機(jī)和物理機(jī)之間copy文件時(shí)遇到了麻煩,不過(guò)大家盡管可以試試。
如何幫助我
作為開源軟件的開發(fā)者,最大的問(wèn)題就是處理細(xì)節(jié)bug。我目前是這款腳本軟件的唯一開發(fā)者,所以我在里面寫了一些介紹。我希望大家都來(lái)提交bug,畢竟每個(gè)人都有自己的想法。
如果你想要來(lái)幫助我,鄙人不勝感激。下面有兩種幫助方式:
幫助我利用您的編程知識(shí)來(lái)改善它。
幫助我開發(fā)新的白名單過(guò)濾器。
第一個(gè)能做的估計(jì)只有小部分人,但是,更多的人可以幫助我第二條。我使用自己的VM建立了白名單過(guò)濾器。但是我看到別人的報(bào)告后,發(fā)現(xiàn)有許多內(nèi)容可以加入我的白名單。曾經(jīng)有一位分析人員寄給我一份報(bào)告,里面有數(shù)以百計(jì)的列項(xiàng),我自己的系統(tǒng)產(chǎn)生的要少很多。他里面有許多我不曾預(yù)估到的后端應(yīng)用,如ngen.exe(本機(jī)映像生成器)。
您可以在這里下載這個(gè)腳本軟件到您的VM虛擬機(jī)里,然后運(yùn)行幾分鐘。此間,您需要簡(jiǎn)單的開下計(jì)算器或者記事本,然后停止應(yīng)用,最后把生成的結(jié)果給我。由于此間并沒(méi)有任何惡意軟件運(yùn)行,所以按理說(shuō)結(jié)果應(yīng)該可以加進(jìn)白名單。勞煩您把結(jié)果報(bào)告電郵給我,我的地址是:brian@thebaskins.com。
下載信息相關(guān)
最后,附上腳本軟件地址:
https://github.com/Rurik/Noriben
你可以下載Noriben.Py然后運(yùn)行。當(dāng)然,你下載ProcmonConfiguration.Pmc,把它和該腳本文件放一起會(huì)更好。這個(gè)配置文件包含眾多的系統(tǒng)白名單,可以減少你的生成的日志量,不超過(guò)10M。
















 
 
 





 
 
 
 