新书推荐:病毒分析流程详解

发表时间: 2024-12-09 10:35

16.2.1 病毒分析流程

静态分析

●反病毒引擎扫描

当我们拿到一个样本的时候,可以先在各类反病毒引擎扫描平台进行检测识别。【如果是涉密样本,则不建议将其上传到公开的扫描平台进行检测。】从反病毒扫描引擎平台的结果对样本的类型进行一个初步的判研。常见的恶意样本类型主要有:Windows PE样本、Linux ELF、bat批处理Android APP、JavaScript、PowerShell、Shell脚本等等。这些样本可能是后门、僵尸网络、下载器、勒索程序、蠕虫病毒、启动器、间谍监听程序等等。如果能够初步判定样本的类型,后续的分析工作也可以根据样本的类型进行侧重分析。

【反病毒引擎扫描平台】VirusTotal:HTTPS://www.virustotal.com

【恶意软件样本库和分析平台】MalwareBazaar:https://bazaar.abuse.ch

沙箱在线恶意软件分析平台】Hybrid Analysis:https://www.hybrid-analysis.com

【沙箱】VxStream 沙箱:https://revolveruk30.gitbook.io

腾讯哈勃分析系统】:https://habo.qq.com

●提取恶意代码哈希值

哈希是一种用来标识恶意代码的常用方法。恶意代码样本通过一个哈希程序,会产生一段用于唯一标识这个样本的独特哈希值(类似于指纹)。

图16-2 计算哈希值

MD5算法是恶意代码分析最为常用的一种哈希函数,SHA1算法也同样非常流行。

如图16-2所示,使用免费下载的WinMD5程序计算HelloWorld.exe程序的哈希值。可以尝试将样本的MD5、SHA1等基础特征信息在各类反病毒引擎扫描平台进行检测识别。

●查找字符串

对恶意样本进行字符串搜索是获得程序功能提示的一种简单方法。比如程序中是否包含一个URL地址链接?是否包含一些特定用途的API信息(例如GetProcessAddress、LoadLibrary)? 是否包含一个IP地址?或者一些特定提示信息?


举例

使用Windows提供的Strings程序可以搜索可执行文件中的字符串。如下所示,使用Strings程序搜索HelloWorld.exe程序所包含的所有字符串:

D:\code\winpe\ch16\Strings>strings HelloWorld.exe

Strings v2.54 - Search for ANSI and Unicode strings in binary images.

Copyright (C) 1999-2021 Mark Russinovich

Sysinternals - www.sysinternals.com

!This program cannot be run in DOS mode.

'qf

Richc

.text

`.rdata

@.data

.reloc

.text

.IDAta

.rdata

.rdata$zzzdbg

.idata

.idata

.idata

.idata

.data

MessageBoxA

user32.dll

ExitProcess

kernel32.dll

hello

Hello,welcome to PE!

0"0


●壳检测

恶意样本为了对抗反病毒引擎检测,会在自身样本的基础上加壳。如果我们需要对样本进行分析的话,需要根据样本加壳情况进行相应的脱壳处理,只有这样才能进行下一步的分析工作。常见的壳主要分为:

压缩壳:UPX、ASPack、PECompact。

加密壳:ASProtect、ThemidaArmadillo


举例

我们以UPX壳为例,将HelloWorld.exe加壳,如下所示:

Microsoft Windows [版本 10.0.16299.2166]

(c) 2017 Microsoft Corporation。保留所有权利。

C:\Users400>d:

D:\>cd D:\code\winpe\ch16\upx-4.2.4-win32

D:\code\winpe\ch16\upx-4.2.4-win32>upx HelloWorld.exe

Ultimate Packer for eXecutables

Copyright (C) 1996 - 2024

UPX 4.2.4 Markus Oberhumer, Laszlo Molnar & John Reiser May 9th 2024

File size Ratio Format Name

-------------------- ------ ----------- -----------

3072 -> 2560 83.33% win32/pe HelloWorld.exe

Packed 1 file.

D:\code\winpe\ch16\upx-4.2.4-win32>


在日常分析运营工作中,可以尝试提取各类壳的特征信息。从而通过编写自动化脚本批量处理加壳样本,提高分析效率。比如:通过Python的pefile库、YARA特征等等。

查壳工具:Peid、FFIcoustmtk、Exeinfo PE 等等。

脱壳工具:UPXUnPacKer、ASPack unpacker 等等。


举例

使用Peid查壳工具检测加壳,检查刚才使用UPX加壳后的程序HelloWorld.exe,如下图所示:

图16-3 Peid查壳工具检测加壳


●分析PE文件

通过对PE文件的分析,可以从PE文件头中获取包括代码信息、应用程序类型、导入导出函数、节区空间信息等内容,这对于恶意代码的分析非常重要。通过这些信息可以判断恶意代码是否加密,是否预留大块内存空间,以及是否包含关键的导入导出函数。

常用的PE分析工具有PEView、PEBrowse Professional和PE Exploer等。


举例

在PEView中查看应用程序HelloWorld.exe的.text节区信息,如下图所示:

图16-4 使用PEView查看节区信息

●导入导出函数

恶意软件通常会包含一些比较敏感的导入导出函数。虽然在WinHex中可以查看到所有的导入导出函数,但是利用一些专业的软件可以更好的帮助我们查看和分析这些函数。例如IDA,或者是利用微软提供的Dependency Wallker工具查看可执行文件中的动态链接函数。如图6-5所示。

图16-5 Dependency Wallker

●提取资源

你可以免费使用从htp:/hwww.angusj.com/上找到的Resource Hacker工具来浏览.rsrc节。Resource Hacker是一款流行的Windows平台上的资源编辑工具,它允许用户查看、编辑、修改和提取Windows可执行文件(.exe)、动态链接库文件(.dll)等文件中的资源,如图标、位图、对话框、字符串等。

使用Resource Hacker,您可以定制和修改应用程序的外观、界面和其他资源,使其更符合您的需求。这个工具通常被用于定制化软件、主题制作、翻译应用程序界面等方面。当你单击Resource Hacker工具中分析获得的条目时,你就会看到字符串、图标和菜单,而显示的菜单项和程序所使用的是一致的。

图6-6显示了使用Resource Hacker工具分析PEID V0.95.EXE的结果。

图16-6 使用Resource Hacker工具提取资源

动态分析

●搭建VMware虚拟机环境

恶意软件通常都会具有一定的破坏性,为了保护本机环境,通常我们会搭建一个或多个虚拟机作为恶意软件的分析环境。为了防止分析环境被各种因素干扰,我们一般都会在虚拟机里动态执行样本配合行为检测工具,从而观察其行为。当然,为了后续分析环境不被污染,每次动态执行样本后,我们都需要将虚拟机的镜像还原。

VMware虚拟机环境的搭建此处不再赘述,不熟悉的读者可以参阅www.bcdaren.com网站提供的工具软件视频教程。

【建议】创建虚拟机快照,当环境被破坏后,可以快速回退到干净的分析环境。

●使用恶意代码沙箱

许多分析恶意代码的沙箱,诸如Norman沙箱、GFI沙箱、Anubis、Joe沙箱、ThreatExpert、BitBlaze和Comodo恶意代码分析,等等,都提供免费分析恶意代码的服务。在计算机安全专业人士眼中,Norman沙箱、GFI沙箱(也就是以前的CWSandbox)是最受欢迎的。

这些沙箱提供容易理解的输出结果,用来做初始诊断非常有用。尽管这些沙箱都是自动执行的,你还是要小心不要提交含有公司信息的恶意代码到公共网站上去。

大多数沙箱运作的方式是类似的,恶意代码报告包含关于恶意代码的各种细节,比如它所执行的网络行为、创建的文件、VirusTotal的扫描结果,等等。沙箱生成的报告所包含的小节数量也会根据分析结果不同而存在差异,在报告中通常会包含如下所示内容:

分析摘要,列出了静态分析信息,以及对动态分析结果的一个高层摘要总结。

文件活动,列出了恶意代码影响的每个进程所打开、创建和删除的文件列表。

互斥量创建,列出了恶意代码创建的互斥量列表。

注册表,列出了对注册表的修改活动列表。

网络行为,包含了恶意代码实施的各种网络行为,包括创建监听端口、执行DNS请求,等等。

VirusTotal结果,列出了对恶意代码进行VirusTotal反病毒引擎扫描的结果。

沙箱也有一些缺点,例如不支持命令行。不能记录所有事件,例如特定条件下的后门程序

●注册表检测

RegMon是注册表数据监视软件,它将与注册表数据相关的一切操作(如读取、修改、出错信息等)全部记录下来供用户参考,并允许用户对记录的信息进行保存、过滤、查找等处理。

●文件操作检测

FileMon是一款出色的文件系统监视软件,它可以监视应用程序进行的文件读写操作。

【注】RegMon和FileMon软件microsoft 已经不再可供下载。而是集成到了进程监视器ProcessMonitor中。 如下图所示:

图16-7进程监视器

●进程监测

进程监视器(ProcessMonitor)是Windows系统下的高级监视工具,它提供一种方式来监控注册表、文件系统、网络、进程和线程行为。它结合并增强了两种工具的功能:文件监视器FileMon和注册表监视器RegMon。

虽然进程监视器可以捕获许多数据,但不是所有数据都捕获。例如,一个用户态组件通过设备IO控制与内核套件进行通信的设备驱动行为,或者一些特定的图形界面调用,如SetwindowsHookEx等。同时尽管进程监视器是一个非常有用的工具,但它通常不应该用来记录网络行为,因为它在微软不同Windows版本中的兼容性存在着一些问题。

●进程监视器的过滤

在进程监视器的成千上万的事件中找到信息不会那么容易。这时用好进程监视器的过滤功能就显得非常重要。

你可以在监视器上设置过滤,只监控系统上运行的一个可执行程序,这个功能对恶意代码分析特别有用,因为你可以对你运行的恶意代码设置一个过滤器。你也能针对特定的系统调用设置过滤,比如RegSetValue、CreateFile、WriteFile,或其他可疑或具有破坏性的调用。

当进程监视器过滤功能开启,它将仅仅记录过滤出的事件,所有记录的事件仍然可用,但过滤之后仅仅会显示一小部分。设置过滤器并不能阻止监视器消耗太多内存。

图16-8 设置进程监视器的过滤器

为了设置一个过滤器,我们选择Filter-Fiter打开过滤菜单,如图6-8中顶部所示。当设置一个过滤器时,首先通过左上角的下拉菜单(Reset按钮上面)选择一栏。对恶意代码分析最重要的过滤栏是进程名、操作和细节。然后,选择一个比较器,从is、contains、lessthan中选一项。最后,选择在过滤器里是包含还是排除。因为在默认情况下,过滤器要呈现所有系统调用,所以减少呈现结果的数量十分重要。

除了进程监视器之外,我们还可以使用另外一个非常好用的进程浏览器(Process Explorer)来查看进程。进程浏览器是微软的免费产品,它是一款非常强大的任务管理器,是进行动态分析时必备的工具。它能对当前系统上运行的进程提供非常有价值的洞察能力。

你可以用进程浏览器来列出所有活跃的进程、被进程载入的DLL、各种进程属性和整体系统信息。你也能用它杀死一个进程、退出用户登录、启动与激活进程。

●网络检测

在样本动态执行观察的过程中,我们可以提前部署好网络监听工具。通过对数据包交互进行分析。比如:我们在分析一个Download恶意样本的时候,在其执行起来后,直接通过数据交互中的链接提取关键的URL,下载主样本进行分析。常用的网络监听工具有:

1.ApateDNS是一款来自Mandiant公司的免费软件是用来查看恶意代码发出DNS请求最快速的方式。ApateDNS在本机上通过监听UDP的53端口,对用户指定的IP地址给出虚假的DNS响应。它用你指定的IP地址去响应DNS查询请求。ApateDNS可以使用十六进制和ASCI码来显示所有接收到的请求。

2.Netcat被称作“TCP/IP协议栈瑞士军刀”,可以被用在支持端口扫描、隧道、代理、端口转发等的对内对外连接上。在监听模式下,Netcat充当一个服务器,而在连接模式下作为一个客户端。Netcat从标准输入得到数据进行网络传输,而它得到的数据,又可以通过标准输出显示到屏幕上。

3.Wireshark是一个开源的嗅探器,是一个截获并记录网络数据包的工具。Wireshark提供可视化、包一流分析和单个数据包的深入分析。与本书中讨论的许多工具一样,Wireshark是一把双刃剑,可以被善意或者恶意地使用。它可以用来分析内部网络和网络使用情况,调试应用程序问题和研究协议行为。但是它也能用来嗅探密码、逆向分析网络协议、盗窃敏感信息、监听咖啡店无线网络的在线聊天,等等。

4.INetSim是一款基于Linux模拟常见网络服务的免费软件。如果你的宿主操作系统是Windows,那么运行INetSim最简单的方法就是将它安装到一个Linux虚拟机里,然后将它配置到恶意代码分析虚拟机所连接的同一虚拟网络中。INetSim是一款提供模拟服务最好的免费工具,它通过模拟服务(如HTTP、HTTPS、FTP、IRCDNS,SMTP等),允许你分析未知恶意代码的网络行为。

5.TCPDump是一个常用的网络抓包工具,用于捕获和分析网络数据包。通过TCPDump,用户可以监视网络流量、分析数据包内容、调试网络问题等。下面是一个简单的示例,展示如何使用TCPDump进行抓包

# 抓取指定网络接口上的数据包

sudo tcpdump -i eth0

# 保存抓包结果到文件中

sudo tcpdump -i eth0 -w capture.pcap

# 显示抓包结果的详细内容

sudo TCPdump -r capture.pcap

使用TCPDump可以帮助网络管理员识别网络流量中的问题,监控网络活动,甚至发现潜在的安全威胁。请注意,使用TCPDump时需要以root权限运行,以便访问网络接口并进行数据包捕获。

6.Burp Suite是一款用于进行Web应用程序安全测试的集成式平台,广泛用于渗透测试和漏洞分析。Burp Suite提供了多种功能和工具,可以帮助安全专家发现并利用Web应用程序中的安全漏洞。

一些Burp Suite的主要功能包括:

代理:允许拦截和修改浏览器与服务器之间的HTTP/HTTPS请求。

被动扫描:自动检测应用程序中的漏洞,如SQL注入、跨站脚本(XSS)等。

主动扫描:主动地对目标应用程序进行漏洞扫描和安全测试。

重放攻击:重放已捕获的请求,以验证漏洞并进行进一步测试。

Intruder:用于自动化攻击,如暴力破解、参数枚举等。

Repeater:用于修改和重新发送请求,以测试应用程序的不同输入情况。

Sequencer:用于分析应用程序生成的随机数,以检测是否存在预测性问题。

通过使用Burp Suite,安全专家可以模拟各种攻击场景,发现应用程序中的漏洞,并提供建议和解决方案来加强应用程序的安全性。该工具集的功能强大且灵活,适用于各种规模的Web安全测试项目。

7.Http Analyzer是一种用于捕获、分析和调试HTTP协议通信的工具,它可以帮助用户查看和监控HTTP请求和响应,以便分析网络流量、诊断问题和优化性能。

通过Http Analyzer,用户可以进行以下操作:

捕获HTTP请求和响应数据包,包括请求头、响应头、请求体和响应体。

查看HTTP通信的详细信息,如URL、请求方法、状态码、请求时间等。

分析网络流量,检查请求和响应的内容、格式和性能。

支持筛选功能,可以根据需要过滤和搜索特定的请求和响应。

提供图形化界面,便于用户直观地查看和分析HTTP通信。

Http Analyzer通常被用于Web开发、API测试、网络安全等领域,可以帮助用户更好地理解和优化HTTP通信过程。通过观察和分析HTTP请求和响应,用户可以发现潜在的问题、调试错误、改善性能,从而提升应用程序的质量和用户体验

8.TcpView是一款由Sysinternals(现在是微软的一部分)开发的实用工具,用于显示系统上当前活动的TCP和UDP连接。通过TcpView,用户可以查看哪些程序正在与网络上的哪些主机进行通信,以及连接的状态、本地端口和远程端口等详细信息。

TcpView的一些主要功能包括:

显示实时的TCP和UDP连接列表,包括本地地址、本地端口、远程地址、远程端口、状态等信息。

可以快速过滤和搜索特定的连接,以便查找感兴趣的信息。

提供图形化界面,直观地展示网络连接的情况,方便用户进行监控和分析。

支持结束连接,用户可以选择关闭不需要的连接。

通过使用TcpView,用户可以实时监视系统上的网络连接情况,帮助识别潜在的网络问题、优化网络性能或检测恶意活动。这对于网络管理员、安全专家以及普通用户来说都是一个有用的工具,可以帮助他们更好地管理和维护网络连接。

●动态调试

常用动态调试工具包括IDA Pro、OllyDbg、x64dbg、WinDbg

●行为分析

火绒剑是一款著名的杀毒软件,其行为分析功能可以帮助用户检测和阻止恶意软件通过分析程序的行为模式来识别威胁。

火绒剑的行为分析功能通常包括以下方面:

1.行为监控:实时监视系统中程序的行为,包括文件操作、注册表访问、网络请求等。

2.行为识别: 通过比对程序的行为模式和行为规则库,识别可能的恶意行为。

3.恶意行为拦截: 当检测到可疑或恶意行为时,火绒剑可以及时阻止恶意程序的进一步操作,保护系统安全。

4.行为记录和分析: 记录程序的行为轨迹,以便后续分析和研究,帮助改善安全策略。

通过行为分析功能,火绒剑可以更全面地检测各种未知威胁,提高恶意软件的检测率和防护能力。这种基于行为的安全防护方式可以帮助用户及时应对新型威胁和变种病毒,保护系统免受恶意攻击。


报告编写

●样本信息

文件名称、文件大小、病毒名称、MD5、SHA1、CRC、事件类型、分析时间、分析人员、分析环境。

●样本行为

根据对样本分析,用比较精简的话描述下样本执行后主要做了什么。在条件允许的情况下,试着通过流程图的形式还原样本执行的整个过程。针对比较敏感的行为进行详细标注,从报告浏览者的角度去考量,尽可能在报告中提供关于该样本的信息。

●查杀清除工作

提供样本的查杀特征,用于后续设备的病毒清除工作。

●关联溯源

部分事件型样本则需要根据样本提取的IOC特征进行下一步的关联溯源。比如:从样本的病毒名、代码结构、c&c、url链接、交互IP等特征进行情报关联。


特征提取

●静态特征

MD5、PDB、文件图标、导入\导出表、时间戳、入口点、版本信息、节名。在具备这些静态特征组合的情况下,即便是面对大量待处理样本,也能够通过脚本自动化快速处理掉一批样本。

●YARA特征

●病毒名特征

●敏感信息特征

●注册表、服务名

比如:后门样本为了驻留系统实现自启动而创建的注册表项名称和键值,亦或者系统服务名称。针对这种特殊表项名称和键值、服务名均可酌情将其添加到特征合集中。

样本的特征字符串可以通过strings工具进行扫描dump出来进行二次匹配筛选。

●网络数据

当恶意样本产生网络行为交互的时候,目标IP、端口、数据内容、数据长度、传输协议类型、回传指令都有可能成为特征的一部分。

我们通过前面提到的网络检测工具,截获样本产生的数据包,对其进行解包分析,按照需求提取特征。

●互斥体

部分同源样本在创建互斥体名的时候会一定规律,根据互斥体名的组合规律建立特征,也可以一定程度的协助我们筛选分析噪点样本。

●动态行为

主要是记录样本在动态执行的过程中的API组合操作。