恶意代码分析脑补

分析目标---写在最前面

  • 一般是为一起网络入侵事件的响应提供所需信息。
  • 我们的目标是确定到底发生了什么,并确保你能够定位出所有受感染的主机和文件。
  • 分析恶意代码时,目标是确定某一个可疑二进制程序到底可以做什么,如何在网络上检测到它,以及如何衡量并消除它所带来的损害。
  • 当确定哪些文件需要全面分析,便需要编写相应的检测特征码了,以便在网络中检测出恶意代码感染的主机。
    恶意代码分析可以用来编写出基于主机的和基于网络的检测特征码。
  • 最终目标;获得特征码之后,弄清楚这些恶意代码是如何工作的。
  • 基于主机的特征码(感染迹象);用于在受感染主机上检测出恶意代码---通常为恶意代码所创建或修改的文件;对注册表的特定修改。
  • 网络特征码; 通过监测网络流量来检测恶意代码,可以在没有进行恶意代码分析是创建。

注意:与反病毒软件所使用的病毒特征码不同,感染迹象关注的是恶意代码对系统做了什么,而不是恶意代码本身的特性。因此,往往他们更有效。

静态基础分析

静态分析基础技术就像在解剖时只看到尸体表面,通过这些分析只能得到一些初步结论。

动态基础分析

当恶意代码收到一个特殊设计的网络包时,我们可以通过动态基础分析知道他的反应,但我们却无法了解这个网络包的格式。

主要技术

  1. 静态分析基础技术
    • 反病毒引擎
      1.VirusTotal
      作用:查看其是否能被识别;
    • 哈希值
      1.md5deep 2.WinMD5
      作用:当作标签使用;分享哈希值;在线搜索哈希值
    • 查找字符串
      1.strings
  • 脱壳

  • PE文件格式
    1.PEview

用于浏览程序PE文件格式头部中的信息。

2.ResourceHacker

用于查看,修改,添加和删除Win32可执行程序资源的工具。

3.PEBrowser Professinal 4.PE Explorer

  • 链接库与函数
    1.DependencyWalker

又被称为“DLL依赖性分析工具”,主要用来查看程序PE模块的导入模块以及PE模块的导入和导出函数。

PE文件头与分节

PE文件以一个文件头开始,其中包括代码信息、应用程序类型、所需要的库函数与空间要求等,详细的参考《windowsPE》
.text 包含CPU执行命令;唯一包含代码的节;所有其它节存储数据和支持性的信息。
.rdata导入与导出函数信息,与dependency walker和peview得到的信息是相同的
.data包含程序的全局数据,本地数据并不存在这个节中,而是PE文件的其它位置上
.rsrc可执行文件所使用的资源,如图标,图片字符串等,在该节中存储的字符串是为了提供多语种支持的。

分析技巧

猜测这个恶意代码在尝试做些什么,然后去验证这些猜想

恶意代码类型

  • 后门
  • 僵尸网络
  • 下载器
  • 间谍软件
  • 启动器
  • 内核套件
  • 勒索软件
  • 发送垃圾邮件的恶意代码
  • 蠕虫或计算机病毒

反病毒软件

原理

反病毒软件一般由扫描器、病毒库和虚拟机组成,并由主程序将它们整合为一体
一般情况下,扫描器用于查杀病毒,是反病毒软件的核心。一个反病毒软件的效果好坏直接取决于扫描器的技术与算法是否先进
病毒库中存储着病毒所具有的独一无二的特征字符,我们称之为“特征码”,而病毒库存储特征码的存储形式则取决于扫描器采用哪种扫描技术
特征码可能存在于任何文件中,例如exe文件、dll文件、apk文件、php文件、甚至是TXT文件中,所以它们都有可能被查杀。
虚拟机,可以使病毒在一个反病毒软件构建的虚拟机环境中执行,这样就与现实的cpu、硬盘等物理设备完全隔离,从而可以更加深入的检测

防病毒技术(基于文件扫描)

算法扫描???

第一代扫描技术

即在文件中检索病毒特征序列;这一扫描技术直到现在也仍然被各大反病毒软件厂商使用着,其主要分为“字符串扫描技术”与“通配符扫描技术”两种。

第二代扫描技术
  • 骨架扫描法

  • 智能扫描法
    这种方法是在大量变异病毒出现后提出的。智能扫描法会忽略检测文件中像nop这种无意义的指令。而对于文本格式的脚本病毒或者宏病毒,则可以替换掉多余的格式字符,例如空格,换行符,制表符等。由于这一切替换动作往往是在扫描缓冲区中执行的,从而大大提高了扫描器的检测能力

  • 近似精确识别法
    多套特征码
    该方法采用两个或者更多的字符集来检测每一个病毒,如果扫描器检测到其中一个特征符合,那么就会警告发现变种,但不会执行下一步操作。如果多个特征码全部符合,则报警发现病毒,并执行下一步操作
    检验和
    这个方法的思路是让每一个无毒的文件生成一个校验和,等待下次扫描时再进行简单的校验和对比。如果校验值有所变化,再做进一步的扫描,否则就说明这个文件没有被感染,这样有利于提升扫描器的效率。除此之外,某些安全产品还对病毒文件采取了分块校验的方式以提高准确性。

  • 骨架扫描法
    此方法由卡巴斯基公司发明,在检测宏病毒时特别有用,它既不用特征码也不用校验和,而是通过逐行解析宏语句,并将非必要的字符丢弃,只剩下代码的骨架,通过对代码骨架的分析,从而提高了对变种病毒的检测能力。

  • 精确识别法
    精确识别法是先进能够保证扫描器精确识别病毒变种的唯一方法,常与第一代扫描技术相结合。精确识别法也是利用校验技术,只不过应用的更广,更复杂。它甚至能通过对整个病毒进行校验和计算生成特征图

基于内存扫描

内存扫描器一般与实时监控扫描器协作;对于一个木马文件,就算免杀成功,如果不能对其做内存免杀,大多数运行中的木马文件仍然会被反病毒软件杀掉。主要是因为程序运行后将自身释放到内存中,释放后的文件结构与未执行的文件相比有较大差异。

基于行为监控

基于行为监控的反病毒技术一般需要与虚拟机、主动防御等技术配合工作。其原理是主要针对病毒木马行为进行分析对比,如果某些程序在执行后会进行一些非常规的、可疑的操作,那么即使这不是一个新生病毒,也会被拥有这种技术的反病毒产品拦截。
典型木马操作;
1)释放一些文件到系统关键目录中
2)修改系统设置使这些文件可以自启动
3)删除自身

参考链接

你可能感兴趣的:(恶意代码分析脑补)