恶意代码分析——基础技术篇

恶意代码分析目的

  • 获取特征码
  • 撰写分析报告
  • 制作专杀工具

恶意代码分析方法

在这里插入图片描述
静态分析基础技术(快速分析技术):检查可执行文件但不查看具体指令的一些技术。静态分析基础技术可以确认一个文件是否是恶意的,提供有关其功能的信息,有时还会提供一些信息让我们生成简单网络特征码。
动态分析基础技术:涉及运行恶意代码并观察系统上的行为,以移除感染,产生有效的检测特征码,或者两者。
静态分析高级技术:主要是对恶意代码内部机制的逆向工程,通过可执行文件装载到反汇编器中,查看程序指令来发现恶意代码做了什么。
动态分析高级技术:使用调试器来检查一个恶意可执行程序运行时刻的内部状态。

恶意代码种类

  • 后门:恶意代码将自身安装到一台计算机来允许攻击者访问。后门程序能让攻击者很少甚至无需认证即可连接到远程计算机上在本地系统执行命令。
  • 僵尸网络:指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络。
  • 下载器:这是一类仅用于下载恶意代码到本地上的恶意代码。
  • 间谍软件:一种能够在用户不知情的情况下,在其电脑上安装后门、收集用户信息发生给攻击者的软件。
  • 启动器:用于启动恶意代码程序的恶意代码,具有隐蔽性。
  • 内核套件:用来隐藏恶意代码的工具。通常与其他恶意代码(如后门)组合成套装,来允许攻击者远程访问并很难被受害用户发现。
  • 勒索软件:攻击者通过锁屏、加密文件等方式劫持用户资产或资源以此向用户敲诈钱财的一种恶意软件。
  • 蠕虫或计算机病毒:可以自我复制和感染其他计算机的恶意代码。

恶意代码静态分析

环境

虚拟机!!!

在线反病毒引擎

我们在分析一个可疑的恶意代码样本时,第一步最好用多个反病毒软件对该样本进行扫描,看是否有引擎能识别它。
常用在线杀毒:VirSCAN、VIRSTOTAL
注意!在线杀毒适用于该恶意代码样本敏感度不高情况下使用。

获取哈希值(certutil-hanshfile path MD5)

哈希值又称恶意代码的指纹,恶意代码样本通过哈希程序会产生一段用于标识这个样本的独特哈希值。
在虚拟机中执行!
获取哈希值方法之一:MD5算法或者SHA-1算法
如:使用免费下载的md5deep程序计算windows操作系统自带solitaire程序哈希值

输入命令:md5deep solitaire程序路径

获取哈希值方法之二:用系统命令获取样本的md5

输入命令:certutil -hashfile 路径/file.exe MD5

注意!有时命令执行不了,可能是该虚拟机还没有此命令。

查找字符串hive string ida火绒剑

从字符串中搜索是获得程序功能提示的一种简单方法。
基本知识

  • 字节byte:8位
  • 字word:两字节,16位
  • 双字dword:四字节,32位
  • 八字节qword:八字节,64位
    使用strings程序查找字符串
    1.先到官网下载安装strings程序!
    2.然后使用命令将恶意代码里的字符串提前出来
输入命令:strings程序路径 恶意代码路径

3.将得到结果右键-标记-从头拖到尾-回车-粘贴到新建文本里
4.对文本里的字符串进行分析哪些很有可能是恶意代码
如:名字很长的域名(正常域名一般都很短),数字串(可能是含恶意代码的ip地址),错误信息提示(可提供一些有用信息)!

加壳&查壳

攻击者常常使用加壳或混淆技术将恶意代码隐藏。

文件加壳

后续会更新详细加壳与脱壳技术

使用PEiD检测加壳

PEiD可以用来检测加壳器的类型或用来链接应用程序的编译器类型。
使用方法:直接将恶意代码样本拖进来即可
如:
在这里插入图片描述
紫色框里便是该恶意代码样本加壳使用的软件版本号,但也有可能是假冒的哟。
下载PE编辑器PEditor:查看恶意代码样本的区段和日期时间标志,点击日期时间标志计算器——复制该标志到下边的解码,可看见该样本建立时间,判断其是否正确。

导入导出函数

下载PE编辑器PEditor:查看恶意代码样本的区段、目录里的导入表、导出表。
查看动态链接库里面的函数,分析该恶意代码可以会做的举动。
如:为了将程序以服务方式运行,即恶意代码会作为服务的一部分运行,必须定义ServiceMain函数。
注意!有时普通程序员在实现必要功能时可能也会这样起名哟,所以不一定这样判别是完全正确的。

获取资源信息

1.用PEditor打开恶意代码样本——点击目录——点击资源的… ——点击BIN——点击右下角的十六进制编辑器查看,若里面是个PE文件即为可执行程序——之后我们点击BIN下的101——点击右下角保存。
2.再用PEditor打开保存的文件——点击日期时间标志计算器——复制该标志到下边的解码即可得到正确时间
3.点击目录——查看导入表的函数,判断其功能
可放到IDA程序再深入分析

常见的DLL程序

  • Kernel32.dll:包含核心系统功能,如:访问和操作内存、文件和硬件等等;
  • Advapi32.dll:提供对核心windows组件的访问,比如:服务管理器和注册表;
  • User32.dll:包含所有用户界面组件,如:按钮、滚动条和控制和响应用户操作的组件;
  • Gdi32.dll:包含图形显示和操作的函数;
  • Ntdll.dll:是Windows内核的接口,可执行文件通常不直接导入这个函数,一般通过Kernel32.dll间接导入,若导入即是企图使用一些不正常提供给windows程序使用的函数。
  • Wsock32.dll和Ws2_32.dll:均是联网dll,访问其中任一个dll的程序非常可能连接网络,或是执行网络相关的任务。
  • Winint.dll:这个DLL包含了更高层次的网络函数,实现了如FTP、HTTP和NTP等协议。

恶意代码动态分析

环境

虚拟机!!!

在线沙箱

沙箱:一种在安全环境里运行不信任程序的安全机制,不用担心伤害到“真正“的系统。它包含一个虚拟环境,通过某种方式模拟网络服务,以确保被测试的软件或恶意代码能正常运行。
微步云沙箱
将恶意代码上传即可得到分析报告,可以下载恶意代码样本。
报告一般有分析摘要、文件活动、互斥量创建、注册表、网络行为和virustotal结构等。
ps:这部分内容之后可能会单独出详细学习笔记

运行恶意代码

恶意代码可以运行起来,我们的动态分析基础技术才有用哟。我们知道通常下运行一个恶意代码很简单只要双击或者命令行即可,但要运行一个恶意的dll很麻烦,因为windoes系统不知道如何自动执行它,接下来提供一个办法。
因为所有windows版本都含有rundll32.exe程序,他能给运行dll提供一个平台

输入命令:rundll32.exe 恶意代码样本路径, installA

install就像是启动dll的一个入口。
这样就可以用rundll32启动该恶意代码。
注意!还有其他命令也可以运行dll

进程监控器

进程监控器:windows系统的高级监视工具,提供一种方式来监控注册表、文件系统、网络、进程和线程行为。

进程监控器的查看

进程监控器的可配置栏里有事件序列号、时间戳、引发事件的进程名、事件操作、事件使用的路径、事件结果等。

  • 其中事件操作栏可以告诉你该程序在系统上做了什么操作!
    在这里插入图片描述

进程监控器中的过滤

因为监控器里的事件很多,设置指定过滤可以更快速找到目标。
设置过滤器:选择filter——打开过滤菜单栏——通过左上角的下拉菜单栏Reset按钮上面选择一栏——选择一个比较器——选择在过滤器里是保留还是取消。
注意!排除procmon.exe和pagefile日志记录,因为它们经常被访问且没有提供有用信息。

  • 当我们选择一个过滤器,单击Add添加每一个规则,然后单击Apply。在得到的记录中分析该程序操作了上面。
  • 过滤器仅仅用于显示过滤,所以当恶意代码释放另一个可执行程序并运行时,这些信息也会被记录。因此当看到有其释放其他程序时,要改变过滤器的设置以显示释放程序的名字,再单击Apply,与释放恶意程序相关事件就会被显示。
    注册表:通过检查注册表操作,能辨别一个恶意程序是怎样把自己添加到注册表中注册的。
    文件系统:检查文件系统能显示恶意程序创建的所有文件,或它使用的配置文件。
    进程行为:检查进程行为能告诉我们恶意程序是否启动了其他进程。
    网络:识别网络连接能向我们展示恶意程序监听的任意端口。

进程浏览器Process Explorer

这是微软的免费产品,一款强大的任务管理器,是进行动态分析的必备工具。它能让使用者了解看不到的在后台执行的处理程序,可以使用它方便地管理你的程序进程。 能监视,挂起,重启,强行终止任何程序,包括系统级别的不允许随便终止的关键进程和十分隐蔽的顽固木马。

进程浏览器的显示

软件运行界面:
在这里插入图片描述
鼠标左键点击上图箭头所指图标不放开,然后移动到要查看的窗口上,即可看到该窗口的详细进程信息。
进程浏览器监控系统上执行的程序以树状结构显示,可以看到:services.exe是wininit.exe的子程序:

在这里插入图片描述

  • 红框显示六栏:Process(进程名)、CPU(cpu使用率)、PID(进程号)、Description(进程描述)等等。
  • 视图每秒更新一次,默认情况下显示,服务为粉色、进程为蓝色、新进程为绿色、被终止进程为红色。其中绿色和红色执行是是亮亮的,当进程完全启动或终止后就会改变。
  • 当双击一个进程名时,属性窗口就会打开,里面会有分析恶意代码有用信息。线程标签threads显示所有活跃线程,TCP/IP显示活跃的连接和进程监听端口,镜像标签显示磁盘上可执行程序路径。
  • 镜像标签里的验证按钮Verify可以验证磁盘上的镜像文件是否有微软的签名认证。这对验证磁盘上windows文件有没有被破坏尤其有用,因为恶意代码常常替换windows认证文件且试图隐藏。注意!该验证针对的是磁盘上而不是内存里,因此可能会失效。

比较字符串

用来识别进程替换的方法。
步骤:使用进程属性窗口的字符串( Strings )标签,通过比较包含在磁盘上可执行文件的学符串与内存中同一个可执行文件的字符串,来看两者是否同。用左下角的单选按钮在这两个字符串视图间切换。如果这两个学符串列表有很大不同,那么可能就发生了进程替换!
经过分析提取到特征码,打开wirshark并进入命令提示符输入运行dll命令及net start IPRIP命令启动服务,观察wirshark(记得暂停观察)里是否有可疑数据包

这是我学习《恶意代码分析实战》的笔记,这本书很多干货,喜欢分析代码的推荐大家去看哟~

  • 5
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值