病毒感染方式

主要都是PE感染,这里看到网上比较常见的几种感染方式总结。

0x01 添加新节区感染

基本流程:

  • 检查SectionHeader表,看有无空间放下一个新的节区表
  • 一个IMAGE_SECTION_HEADER的结构体大小为40字节
  • 如果满足则添加新节区,修改import表信息,修改EntryPoint
  • 添加的代码最后的jmp xxxxxxx一开始最后四个字节未填充,在计算之后填充然后调整节区权限

0x02 PE文件末位节添加代码

其实就相当于拓展节区,上一个是添加节区,这个算是拓展节区

基本流程:

  • 在文件末尾放上病毒数据
  • 修改末尾节区大小,标志不正确需要修改标志
  • 修改EntryPoint指向新代码
  • 填充新代码最后的jmp xxxxxx

0x03 利用PE文件节区之间的空隙

感觉这个和前面两个差距也不大,只是需要写的算法比较精确,比前两种隐蔽性应该要好点

基本流程:

  • 统计整个程序的节区空隙并记录
  • 选取合适够大、最好权限也能不修改的节区
  • 将需要填充的代码合理切分并且用jmp连接
  • 修改EntryPoint到第一个段的地方
  • 填充最后一个段的jmp xxxxxxx

这几种感觉都比较传统,感觉我之前写的pyc混淆脚本也跟这种操作很类似,所以理解起来也比较流畅

0x04 增加导入项实现注入

这个需要计算整个文件的各种偏移因为是要往中间直接插入东西

  • 导入表增加新dll和新函数
  • 释放dll到系统dll目录
  • 修改PE文件各种标志位

这都是常见思路,不常见的,就只能遇到再说了

检测方式

应该没有什么特别好的检测方式,常规字符串检测,yara静态特征识别,(动态API调用识别)

清除方式

  • 删除节区,代码
  • 修改表中属性
  • 修改EntryPoint