文章定位获取文件哈希指纹

主要是拿md5,sha1,sha256的“文件哈希指纹”

恶意软件防范三要(恶意软件分析102之零门栏)(1)

然后来VT进行搜素:https://www.virustotal.com/gui/home/search

恶意软件防范三要(恶意软件分析102之零门栏)(2)

判断文件签名

我们看待文件并不是去看一个文件的后缀名是不是.exe等。具有其他文件后缀名的文件仍然可以执行,比如.jpg可执行文件。

举个例子:如果您将.exe和.jpg分别用十六进制编辑器打开,开头都是4D 5A。您就可非常肯定,这个.jpg文件就是可执行文件。

如何获取真实性文件?这更简单,系统是您的,您可以新建文件修改后缀名为exe再用十六进制编辑器打开看看它的头部分。

当您遇到这些八股文所提及的工具时,它们都可拿来干文件签名这种事情。

我怎么知道上百种的文件签名分别都是什么?使用此网站已轻松搜素:https://www.garykessler.net/library/file_sigs.html

判断文件是否被混淆与打包

不用太在意混淆,打包,加密,加壳等概念的区别。因为它们的最终目的都是“隐藏真实内容”。为了增强体验感与“我上我也行”,直接从本质出发:任何商业软件都不想被任何人看见其代码内容,为此他们引入各种乱七八糟的“技术”。

这个工具怎么用?看什么地方?这非常简单,任何人都可以干这种“活”。

恶意软件防范三要(恶意软件分析102之零门栏)(3)

在这个文件中,我们发现了有趣的内容:FSG 1.0 -> dulek/xt

恶意软件防范三要(恶意软件分析102之零门栏)(4)

搜素一下便可得知这个文件进行了打包。

恶意软件防范三要(恶意软件分析102之零门栏)(5)

可选工具:TrID(http://mark0.net/soft-trid-e.html)、TRIDNet(http://mark0.net/soft-tridnet-e.html) ,轻松检测(http://ntinfo.biz/)、RDG Packer检测器(http://www.rdgsoft.net/)、packerid.py(https://github.com/sooshie/packerid)和PEiD (http://www.softpedia.com/get/Programming/Packers-Crypters-Protectors/PEiD-updated.shtml)

【注意】:这些检测混淆,打包工具的本质是它们提出准备了一个打包指纹的文本数据库来与具体文件进行匹配,最后给出“结论”。(就是提前记录123456,如果目标文件中存在123456的指纹,则”告警“)

IDA free 加壳检测初体验

工具:https://hex-rays.com/ida-free/

我们如果知道该文件是可执行文件,则选择第一个。如果不知道则更加好办,每个都看看。。

恶意软件防范三要(恶意软件分析102之零门栏)(6)

该文件仅导入了两个API?这很奇怪,可用其他正常文件基线值来比对一下(我们需要注意库文件叫什么,导入的API name叫什么)

恶意软件防范三要(恶意软件分析102之零门栏)(7)

恶意软件防范三要(恶意软件分析102之零门栏)(8)

一个文件它要编写,读取,查看,保存,初始化配置等多功能性,怎么可能只需要导入两个API?以下是正常文件打开时导入的API示例之一:

恶意软件防范三要(恶意软件分析102之零门栏)(9)

.text: 一般包含运行PE文件时执行的CPU指令。此部分被标记为可执行。.data: PE文件使用的全局变量和其他全局数据。.rsrc: 资源,例如图像、图标等。

https://www.virustotal.com/gui/file/d8b87863c68d2da9bf62d7f029b8f2fda567f6a61e71a2bac0a3a390a765c0b3/details

点击第二个标签进入详情:

恶意软件防范三要(恶意软件分析102之零门栏)(10)

这些都是导入的库文件与API:

恶意软件防范三要(恶意软件分析102之零门栏)(11)

查看文件字符串

下载,解压缩并进入到sysinternals目标下的strings工具中,”相对路径“来运行strings工具并给出”绝对路径“目标文件。

strings "C:\Users\Analysis\Desktop\67844C01"

您会得到大量有”含义“的字符串。

恶意软件防范三要(恶意软件分析102之零门栏)(12)

pestudio (https://www.winitor.com/) 工具字符串提取

恶意软件防范三要(恶意软件分析102之零门栏)(13)

linux系统中的strings命令提取字符串:man strings

恶意软件防范三要(恶意软件分析102之零门栏)(14)

这可以去微软的官方文档中搜索确认其API的功能:https://docs.microsoft.com/en-us/windows/win32/api/_winprog/

恶意软件防范三要(恶意软件分析102之零门栏)(15)

恶意软件防范三要(恶意软件分析102之零门栏)(16)

尝试解码混淆后的字符串

使用FLOSS解码混淆后的字符串

大多数时候,恶意软件作者使用简单的字符串混淆技术来避免检测。 这种情况下,字符串打印将杂乱无章。 FireEye Labs混淆字符串求解器(FLOSS),用于自动识别并从恶意软件中提取混淆字符串。

参考资料:https://www.fireeye.com/blog/threat-research/2016/06/automatically-extracting-obfuscated-strings.html

软件包下载

https://github.com/fireeye/flare-floss/releases

使用手册

https://github.com/fireeye/flare-floss/blob/master/doc/usage.md

下载并解压,cmd开箱即用

恶意软件防范三要(恶意软件分析102之零门栏)(17)

floss.exe -h

floss.exe malware.bin

恶意软件防范三要(恶意软件分析102之零门栏)(18)

沙箱资源部分

诞生于2010 年google某开源项目的杜鹃沙箱(现在已过时):https://cuckoosandbox.org/

CAPE沙箱,目前得到积极的开发:https://github.com/kevoreilly/CAPEv2

https://cuckoo.cert.ee/

https://www.capesandbox.com/

https://any.run/

https://analyze.intezer.com/

https://hybrid-analysis.com/

长时间的休眠调用:恶意软件开发者熟悉沙箱运行时间有限,长时间的睡眠使得沙箱过期。

用户活动检测:恶意软件开发者加入鼠标移动检测功能来识别是否为自动化的沙箱。

追踪用户活动:恶意软件开发者检测是否存在office办公文件记录,浏览器信息等来识别沙箱。

检测虚拟机:恶意软件开发者检测虚拟机与沙箱相关的文件,进程等指纹来识别沙箱。

关于Yara规则

语法糖如下:https://yara.readthedocs.io/en/v3.7.0/writingrules.html

一个示例如下:搜索samples/文件夹下的所有文件

yara -r suspicious.yara samples/

搜索特征123456,使用ASCII码或Unicode(wide),不区分大小写(nocase)【文件在机器中已十六进制提现是机器的事情,数据取出来怎么“显示”是您的事情(取成“各种”编码,图表,或者图片都行,只要能找到特征。)】

rule suspicious_strings { strings: $a = "123456" ascii wide nocase $b = "123456" ascii wide nocase $c = "123456" ascii wide nocase condition: ($a or $b or $c) }

... strings: $gst1 = {47 68 30 73 74 ?? ?? 00 00 ?? ?? 00 00 78 9c} $gst2 = {63 62 31 73 74 ?? ?? 00 00 ?? ?? 00 00 78 9c} $gst3 = {30 30 30 30 30 30 30 30 ?? ?? 00 00 ?? ?? 00 00 78 9c} $gst4 = {45 79 65 73 32 ?? ?? 00 00 ?? ?? 00 00 78 9c} $gst5 = {48 45 41 52 54 ?? ?? 00 00 ?? ?? 00 00 78 9c} $any_variant = /.{5,16}\x00\x00..\x00\x00\x78\x9c/ ...

yara poc.yara pcaps/

监视服务、网络连接、磁盘活动

Process Hacker (http://processhacker.sourceforge.net/)Process Monitor (https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx)

恶意软件防范三要(恶意软件分析102之零门栏)(19)

自定义通信协议

恶意软件防范三要(恶意软件分析102之零门栏)(20)

动态链接库 (DLL) 分析

DLL 需要一个进程才能运行。 在 Windows 上,rundll32.exe 可用于启动 DLL 并调用从 DLL 导出的函数。语法如下:rundll32.exe <full path to dll>,<export function> <optional arguments>

导入时示例:WININET.dll文件被导入,它可能在导入时执行InternetOpenA与InternetOpenUrlA的API函数,它们可能涉及HTTP 或 FTP 协议C2隧道的建立。

恶意软件防范三要(恶意软件分析102之零门栏)(21)

导出时示例:它要注册(Register)服务了。触发了与 C2 服务器的 HTTPS 通信。

恶意软件防范三要(恶意软件分析102之零门栏)(22)

如何知道这个API触发了C2服务器HTTPS通信的?C:\>rundll32.exe c:\poc.dll,DllRegisterServer在语法正确或错误(就连web渗透非200都可以利用成功,它也可以。)的情况下运行它并抓包网络流量看看

大多数情况下,使用 rundll32.exe 启动 DLL 可以正常工作它们的恶意函数。但总有一些其他DLL需要一些不同的环境来启动。

比如tdl.dll会检查它是否在spoolsv.exe下运行,如果不是则初始化失败,DLL注入攻击则失败。

一旦注入进程成功,就会引爆恶意DLL的行为,就可以使用监视类工具观察服务、网络连接、磁盘、注册表活动等。

为了控制篇幅长度,今先聊到这。

感谢师傅们很有耐心的阅读到了这里。我们还会再见面的。共勉。

参考资料

Learning Malware Analysis Explore the concepts, tools, and techniques to analyze and investigate Windows malware by Monnappa K A

https://tryhackme.com/module/malware-analysishttps://www.freebuf.com/articles/system/282301.html 恶意软件分析101

,