Noriben沙箱:分分钟搞定恶意软件

摘要

Noriben沙箱:分分钟搞定恶意软件

我们希望大家能在新的一年里做的更好,尤其是能更快更有效地分析恶意软件。数年前,我构建了一个恶意软件分析沙箱脚本,用于每日的分析和逆向工作。现在让我给大家展示下如何在几秒钟内,不用太多设置,就能进行恶意软件分析。

介绍

如果你在推特上关注了我,或者对本博客以前的内容有所了解,你可能就会熟悉Noriben。不管怎样,我这里先做个介绍,它是一个非常简单的脚本。在典型行为的分析中,可能会在沙箱里运行恶意软件,看它会如何创建,如何运行进程,以及对系统产生了什么影响。大多数团队所用的方法,是将恶意软件上传到如VirtusTotal之类的反病毒测试网站,或者钟情于在线沙箱如Malwr,或者干脆使用本地的Cuckoo沙箱。

对于那些上传文件到互联网的团队,我只能说着这种行为对APT攻击来讲是非常不明智的。黑客如果有心的话,其实是可以发现他们的文件已经被上传到在线监控网站里。

本地检测恶意软件通常可以通过Cuckoo来做,这是一个不错的开源沙箱,它可以用来分析恶意软件,获取较为全面的分析结果。然而,用这玩意儿其实挺费劲,在不同的环境里进行正确设置会相对困难。它在Linux下安装相对容易,而安装在Windows和OSX下有点蛋疼。就我而言,在外面随便拿出一个笔记本电脑,就可能会需要安上沙箱开始做事。

如果你上过恶意软件分析的培训,你可能也会使用SysInternals Procmon工具来监控系统环境。某些人或许学了使用Regmon和Filemon,这些都是古董知识了。某些人可能会使用Regshot,这工具其实现在已经跟不上时代。

Noriben是Procmon工具的简单的包装改造,它收集了成千上万的事件,然后使用自定义的白名单设置,精简后对系统审查。下面是2015年黑帽大会Arsenal分会场进行的片段,ppt如下:

http://www.slideshare.net/bbaskin/slideshelf

这个视频没有对工具细节本身做太多关注,你可以看这里:

http://www.ghettoforensics.com/noriben

Vmware里的自动化沙箱

Noriben会要求你在沙箱里交互式运行恶意软件。在启动Noriben后,它会在你运行恶意软件时收集系统整体信息。分析人员希望在沙箱里与恶意软件进行交互时,会使用它进行恶意指标收集,比如这个视频里的VM检查。

Youtube地址:https://www.youtube.com/watch?v=kmCzAmqMeTY

然而,本文强调的是通过自动化的方式,直接从你的主机系统中提取,避免以上的情况。随后提交样本,接收结果报告。

使用了Vmware里的vmrun命令后,这个脚本会将VM恢复到某已知的快照中,将恶意软件copy进去,然后运行Noriben,最后将报告zip打包取出。从下面的命令行里,我们可以在60秒内获取某个文件的恶意软件报告,下面是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 system if [ ! -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

显然,这个脚本需要你编辑部分内容,设置正确的路径。这里默认是“C:/Malware/malware.exe”,使用administrator账户运行Noriben,并输出结果到C:/Noriben_Logs/。

在这里,我们有个使用该脚本扫描恶意文件的视频:

Youtube地址:https://www.youtube.com/watch?v=Xpt6RdBElCQ

类似的,下面是一个Github上用来在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=10 set 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=Administrator set 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

类似的脚本也可以应用到VirtualBox。然而,我在实际用guestcontrol copyto在虚拟机和物理机之间copy文件时遇到了麻烦,不过大家尽管可以试试。

如何帮助我

作为开源软件的开发者,最大的问题就是处理细节bug。我目前是这款脚本软件的唯一开发者,所以我在里面写了一些介绍。我希望大家都来提交bug,毕竟每个人都有自己的想法。

如果你想要来帮助我,鄙人不胜感激。下面有两种帮助方式:

帮助我利用您的编程知识来改善它。 帮助我开发新的白名单过滤器。

第一个能做的估计只有小部分人,但是,更多的人可以帮助我第二条。我使用自己的VM建立了白名单过滤器。但是我看到别人的报告后,发现有许多内容可以加入我的白名单。曾经有一位分析人员寄给我一份报告,里面有数以百计的列项,我自己的系统产生的要少很多。他里面有许多我不曾预估到的后端应用,如ngen.exe(本机映像生成器)。

您可以在这里下载这个脚本软件到您的VM虚拟机里,然后运行几分钟。此间,您需要简单的开下计算器或者记事本,然后停止应用,最后把生成的结果给我。由于此间并没有任何恶意软件运行,所以按理说结果应该可以加进白名单。劳烦您把结果报告电邮给我,我的地址是:brian@thebaskins.com。

下载信息相关

最后,附上脚本软件地址:

https://github.com/Rurik/Noriben

你可以下载Noriben.Py然后运行。当然,你下载ProcmonConfiguration.Pmc,把它和该脚本文件放一起会更好。这个配置文件包含众多的系统白名单,可以减少你的生成的日志量,不超过10M。

*参考来源:Ghetto Forensics,FB小编dawner编译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

我们希望大家能在新的一年里做的更好,尤其是能更快更有效地分析恶意软件。数年前,我构建了一个恶意软件分析沙箱脚本,用于每日的分析和逆向工作。现在让我给大家展示下如何在几秒钟内,不用太多设置,就能进行恶意软件分析。

介绍

如果你在推特上关注了我,或者对本博客以前的内容有所了解,你可能就会熟悉Noriben。不管怎样,我这里先做个介绍,它是一个非常简单的脚本。在典型行为的分析中,可能会在沙箱里运行恶意软件,看它会如何创建,如何运行进程,以及对系统产生了什么影响。大多数团队所用的方法,是将恶意软件上传到如VirtusTotal之类的反病毒测试网站,或者钟情于在线沙箱如Malwr,或者干脆使用本地的Cuckoo沙箱。

对于那些上传文件到互联网的团队,我只能说着这种行为对APT攻击来讲是非常不明智的。黑客如果有心的话,其实是可以发现他们的文件已经被上传到在线监控网站里。

本地检测恶意软件通常可以通过Cuckoo来做,这是一个不错的开源沙箱,它可以用来分析恶意软件,获取较为全面的分析结果。然而,用这玩意儿其实挺费劲,在不同的环境里进行正确设置会相对困难。它在Linux下安装相对容易,而安装在Windows和OSX下有点蛋疼。就我而言,在外面随便拿出一个笔记本电脑,就可能会需要安上沙箱开始做事。

如果你上过恶意软件分析的培训,你可能也会使用SysInternals Procmon工具来监控系统环境。某些人或许学了使用Regmon和Filemon,这些都是古董知识了。某些人可能会使用Regshot,这工具其实现在已经跟不上时代。

Noriben是Procmon工具的简单的包装改造,它收集了成千上万的事件,然后使用自定义的白名单设置,精简后对系统审查。下面是2015年黑帽大会Arsenal分会场进行的片段,ppt如下:

http://www.slideshare.net/bbaskin/slideshelf

这个视频没有对工具细节本身做太多关注,你可以看这里:

http://www.ghettoforensics.com/noriben

Vmware里的自动化沙箱

Noriben会要求你在沙箱里交互式运行恶意软件。在启动Noriben后,它会在你运行恶意软件时收集系统整体信息。分析人员希望在沙箱里与恶意软件进行交互时,会使用它进行恶意指标收集,比如这个视频里的VM检查。

Youtube地址:https://www.youtube.com/watch?v=kmCzAmqMeTY

然而,本文强调的是通过自动化的方式,直接从你的主机系统中提取,避免以上的情况。随后提交样本,接收结果报告。

使用了Vmware里的vmrun命令后,这个脚本会将VM恢复到某已知的快照中,将恶意软件copy进去,然后运行Noriben,最后将报告zip打包取出。从下面的命令行里,我们可以在60秒内获取某个文件的恶意软件报告,下面是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 system if [ ! -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

显然,这个脚本需要你编辑部分内容,设置正确的路径。这里默认是“C:/Malware/malware.exe”,使用administrator账户运行Noriben,并输出结果到C:/Noriben_Logs/。

在这里,我们有个使用该脚本扫描恶意文件的视频:

Youtube地址:https://www.youtube.com/watch?v=Xpt6RdBElCQ

类似的,下面是一个Github上用来在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=10 set 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=Administrator set 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

类似的脚本也可以应用到VirtualBox。然而,我在实际用guestcontrol copyto在虚拟机和物理机之间copy文件时遇到了麻烦,不过大家尽管可以试试。

如何帮助我

作为开源软件的开发者,最大的问题就是处理细节bug。我目前是这款脚本软件的唯一开发者,所以我在里面写了一些介绍。我希望大家都来提交bug,毕竟每个人都有自己的想法。

如果你想要来帮助我,鄙人不胜感激。下面有两种帮助方式:

帮助我利用您的编程知识来改善它。 帮助我开发新的白名单过滤器。

第一个能做的估计只有小部分人,但是,更多的人可以帮助我第二条。我使用自己的VM建立了白名单过滤器。但是我看到别人的报告后,发现有许多内容可以加入我的白名单。曾经有一位分析人员寄给我一份报告,里面有数以百计的列项,我自己的系统产生的要少很多。他里面有许多我不曾预估到的后端应用,如ngen.exe(本机映像生成器)。

您可以在这里下载这个脚本软件到您的VM虚拟机里,然后运行几分钟。此间,您需要简单的开下计算器或者记事本,然后停止应用,最后把生成的结果给我。由于此间并没有任何恶意软件运行,所以按理说结果应该可以加进白名单。劳烦您把结果报告电邮给我,我的地址是:brian@thebaskins.com。

下载信息相关

最后,附上脚本软件地址:

https://github.com/Rurik/Noriben

你可以下载Noriben.Py然后运行。当然,你下载ProcmonConfiguration.Pmc,把它和该脚本文件放一起会更好。这个配置文件包含众多的系统白名单,可以减少你的生成的日志量,不超过10M。

*参考来源:Ghetto Forensics,FB小编dawner编译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: