声明:Tide安全团队原创文章,转载请声明出处!文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!
在应急响应中对发现的恶意脚本进行行为、原理分析无疑是一份事件处理报告的点睛之笔。对于大牛来讲ida、ollydb就能搞定一切,轻松拿下,但是对于小菜来讲,只能从简单的入手了。结合《恶意代码分析实战》一书,记录一些简单的笔记。这次就先记录几个简单、易入手的分析工具,内容较为基础大牛绕行。
一、恶意文件在线识别站点
在线识别站点是指一个网站允许你上传文件,然后调用多个反病毒引擎来进行扫描,并最终生成报告,其中体现了对样本的识别情况、标识这个样本是否是恶意、恶意代码名称,以及其他额外信息。通过这种方式可以帮助我们确定在应急中发现的恶意样本是否为恶意,如果为恶意在利用ida等工具进行进一步分析。
1、 https://www.virustotal.com/gui/home/upload
virustotal是书中作者推荐的一款在线检测工具,将疑似的恶意文件上传到网站即可,测试文件的扫描结果如下
2、https://r.virscan.org
virscan是本人常用的一款在线扫描工具,上传样本,扫描结果如下
3、https://x.threatbook.cn/
微步在线也是常用的一个在线识别工具,将样本上传后,会在沙箱中进行运行,所以会检测出样本的动态行为
包括样本产生的一些进程、释放的文件等信息
二、哈希值计算
哈希是一种用来唯一标识恶意代码的常用方法,md5算法是恶意代码分析常见的哈希函数,SHA-1也是常用的算法。hash可做为样本的标签使用,通过在线搜索hash可确定该文件是否已经被识别。可利用hashdeep计算hash值, 该工具的早期版本名称为md5deep。该工具可以批量计算文件的哈希值,并和哈希值列表进行比对。kali 下自带该工具
在获取到样本hash的情况下,可直接在上述的网站中通过搜索hash获取样本分析结果,此处以virscan为例,访问如下url:https://md5.virscan.org/language/zh-cn/7f7ccaa16fb15eb1c7399d422f8363e8.html,将url中后面的字符串替换为需要查找的hash值即可查看相关文件报告
三、字符串查找
字符串是一串可打印的字符序列,一个程序包含一些字符串,如打印出的消息、连接的url或是复制文件到某个特定位置。从字符串搜索是获得程序功能提示的一个简单方法,如程序访问了哪个url,可以使用strings查看文件中的可打印字符。kali中也自带了strings程序,使用strings查看样本,结果如下
四、加壳与混淆恶意代码
恶意代码编写者经常使用加壳或是混淆技术,让他们的文件更难被检测与分析。混淆程序是恶意代码作者尝试去隐藏其执行过程的代码。而加壳是混淆程序中的一类,加壳后的恶意程序会被压缩,难以分析。加壳或混淆的恶意代码直接分析获取的可打印字符很少。加壳或是混淆的代码通常会包含LoadLibrary 和GetProceAddress函数,他们是用来加载和使用其他函数功能,允许程序访问系统上任何库的任何函数。
加壳的程序在运行时,会先运行一段脱壳代码,来解压缩加壳文件,然后在运行脱壳后的文件,利用peid可进行检测文件是否加壳,对样本Lap01-03.exe进行检测,样本是用的FSG1.0进行加壳。
简单列举下加壳工具有有哪些: ASPack 、 UPX 、 PECompact 、 Petite 2.2 、 NsPack v3.7 、 FSG 2.0 、 Dbpe 2.20 、 The Enigma Protector 1.02 、 Armadillo、 ACProtect 等,每个工具的介绍、下载链接,看雪已经做了整理,可参考如下链接https://tools.pediy.com/win/packers.htm。
侦壳工具,除了上述的peid还可以采用 exepeinfo、Detect It Easy,还有部分工具看雪已经做了整理,具体具体可参考看雪链接:https://tools.pediy.com/win/unpacker.htm。
五、链接库与函数
对于一个可执行程序,收集到的最有用的信息之一,就是导入表,导入函数是一个程序所使用的但存储在另一个程序中的一些函数,如包含了对于很多应用程序都通用的一些代码函数库。代码库可以被静态链接,也可以在运行时链接,或者动态链接。
静态链接在windows平台中不怎么常用,但是在linux程序中较为常见,当一个库被静态链接到一个程序时,库中的所有代码都会被复制到可执行程序中,所以此时可执行程序会大很多。
运行时链接在合法程序中不常见,但是在恶意代码中常用,特别是当恶意代码被加壳或混淆时,使用运行时链接只有到需要使用函数时,才链接到库而不是像动态链接模式在程序启动时就会链接。
动态链接是最常见的,宿主操作系统会在程序被装载时搜索所需的代码库。
dependency walker支持列出可执行文件的动态链接函数,如下图为dependency walker对样本lab01-02.exe的分析结果,主要包括程序导入的dll列表,包括KERNEL32.DLL、ADVAPI32.DLL等。右边为dll文件导入的一些函数。
每个函数的功能可通过在msdn库中查找,如查询SetWindowsHookExA函数https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setwindowshookexa,也可直接在左边搜索栏中进行查找相关函数。
peview查看pe文件头
文件头中包含了有关文件本身的元数据,每个分节中都包含了有用的信息,windows平台可执行pe文件中的分节如下:
.text:包含了cpu的常见指令,一般来说是唯一可执行的节,也是包含可执行代码的节;
.rdate:包含程序中全局可访问的只读数据,包含导入导出的函数信息;
.data:存储程序中可访问的全局数据,本地数据并不存在这个节中;
.rsrc:包含由可执行文件所使用的资源,而这些内容并不是可执行的,如图片、图标、字符串等。
利用peview查看样本lab01-1
image_file_header:包含文件的基本信息;
image_optional_header:subsystem会指出该软件是控制台还是图形程序界面,如上图IMAGE_SUBSYSTEM_WINDOWS_CUI,则说明系统为命令行窗口运行,若为GUI则是图形界面程序 。
resource hacker工具查看.rsrc资源节内容,下图查看记事本内容
左侧窗口显示所执行文件所包含的所有资源,可利用该工具修改程序内容,下图将记事本的打印替换为111ww
六、小结
内容较为基础,主要介绍了几种针对恶意程序进行初步判断的方法,大牛绕行。文中涉及的工具以及lab样本已经可在github下载,下载地址如下: https://github.com/tide-emergency/yingji/tree/master/%E6%81%B6%E6%84%8F%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%90%E4%B8%8E%E5%AE%9E%E6%88%98%E7%AC%94%E8%AE%B0/tools
E
N
D
guān
关
zhù
注
wǒ
我
men
们
Tide安全团队正式成立于2019年1月,是新潮信息旗下以互联网攻防技术研究为目标的安全团队,团队致力于分享高质量原创文章、开源安全工具、交流安全技术,研究方向覆盖网络攻防、Web安全、移动终端、安全开发、物联网/工控安全/AI安全等多个领域。
对安全感兴趣的小伙伴可以关注团队官网: http://www.TideSec.com 或长按二维码关注公众号: