第3章 免杀与特征码

这一章主要讲了一些操作过程。介绍了MyCCL脚本木马免杀的操作,对于定位特征码在FreeBuf也曾发表过类似工具。

VirTest5.0特征码定位器
http://www.freebuf.com/sectool/40580.html

细读一遍这一章的知识才知道自己当时使用MyCCL免杀失败的原因。因为某些反病毒软件的扫描器采用的是密码校验和技术,密码校验和指的是将一段病毒文件代码计算出特定的值,然后与病毒库的值进行比对,如果匹配到特征码则有毒,反之则无毒。

3.1 特征码免杀技术

  • 分割法:将一份文件分成数分,然后再用反病毒软件查杀,如果发现其中某一份有病毒,则说明这部分含有特征码,然后再将检测到病毒的这一份文件分割成数份,直到定位出特征码为止。

  • 缺点:某些反病毒软件的扫描器采用的是密码校验和技术,密码校验和技术指的是将一段病毒文件代码计算出特定的值,然后与病毒库的值进行比对,如果匹配到特征码则有毒,否则无毒。

3.6.1 特征码修改方法

  • 大小写替换法:将原有的大写或小写字符更改为相反的状态。
  • 用00字节填充:在汇编里“00”表示空的意思。
  • 加1减1法:利用十六进制值相近的部分汇编指令,例如十六进制的0x74,0x75分别代表汇编指令中的JE和JNE,含义虽然相反,但都是具有跳转功能的指令。

3.6.2 特征码修改进阶

  • 空白区域跳转法:记录下原本的特征码,将原本的特征码地址JMP到空白处,然后在空白处地址编辑回特征码,再次JMP回原先位置。
  • 上下互换:汇编某些指令的位置是可以上下替换而不会影响程序正常运行的。
  • 等值替换法:利用汇编语言中相近或有可能达到同一结果的指令来替换原来被定义为特征码的指令。

第4章 其他免杀

  • 修改入口点免杀:找到一块空白区域保存被移动的那部分指令,并使用工具(PEditor)将原入口点指令所在的新位置修改为程序的入口点地址,使入口点移动。

a 常用方法

  • VMProtect加密

  • 用OEM混淆工具PEArmor,当然用加密壳Themide也是可以的。还有很多新的加密壳

  • Overlay附加数据的处理:将一些数据附加到可执行文件中,供可执行文件调用的一种数据处理方式。

b手工思路

  • 1 需要修复校验和

  • 2 尽量不要改变sys文件大小

  • 3 上一条可以违背。

  • PS:驱动文件免杀技巧:这里特别提到对于*.sys文件要谨慎地进行修改,修改完毕确定校验和。

4.6.1 PE文件格式

  • DOS MZ header:又称DOS文件头或DOS MZ文件头,它是一段以关键字MZ开头的数据。
  • DOS stub:DOS加载模块这个区块以一段英语提示为标志,当运行环境不匹配时则会弹出这句话。
  • PE header:一段以关键字PE为开头的数据,默认大小为244字节,里面包含着许多信息。
  • Section table:区段表,又称节表,一段记录着整个文件中区段的大小、位置与属性等信息的表。
  • Section 1:区段,又称为节,这些区段的数量有可能不止一个。
    • .text:存放可执行的二进制机器码
    • .data:初始化的数据块,比如全局变量等。
    • .idata:可执行文件所使用的动态链接库等外接函数与文件信息。
    • .rsrc:存放程序的资源,如图标、菜单等

4.6.2 虚拟内存

虚拟内存:硬盘中划分出一块区域,使系统将其当作物理内存来使用。因为不是真正的内存,而是由硬盘虚拟出来的,所以将其称为“虚拟内存”。

4.6.3 PE文件的内存映射

PE文件与虚拟内存之间的映射关系的名词概念

  • 文件偏移地址(file offset): 指文件在磁盘上存放时相对于文件开头的偏移。

  • 装载基址(Image Base): 装载基址是指PE文件装入内存时的基地址。一般情况下EXE文件的装载基址都为0x00400000,而DLL文件一般都是0x10000000。

  • 虚拟内存地址(Virtual Address,VA):虚拟内存地址就是指PE文件被装入内存之后的地址。

  • 相对虚拟地址(Relative Virtual Address,RVA):相对虚拟地址指的是在没有计算装载基址的情况下的内存地址。

重要关系:

  • 虚拟内存地址(VA)= 装载基址(Image Base)+ 相对虚拟地址(RVA)

PE映射到内存的关系:

  • PE文件:以0x200字节为基本单位进行组织存放。PE文件区段大小永远是0x200的整数倍。
  • PE文件装入内存时:以0x1000字节为基本单位进行组织存放。内存中的区段大小永远是0x1000的整数倍。

两者中不够字节则以”00“填充,否则当存放空间超过0x200或0x1000字节下一个数据块依旧是这个空间在使用。

已知:虚拟内存地址VA,装载地址ImageBase,以及所在区段的起始虚拟地址VS和起始文件偏移地址VR。

求文件偏移FileOffset、相对虚拟地址RVA及相对所在区段偏移RelativeSectionOffset

  • 因为 相对虚拟地址(RVA) = 虚拟内存地址(VA)- 装载基址(Image Base)

相对所在区段偏移(RelativeSectionOffset)= 相对虚拟地址(RVA)- 起始虚拟地址(VS)

  • 所以 文件偏移(FileOffset) = 起始文件偏移地址(VR)+ 相对所在区段偏移(RelativeSectionOffset)

  • 求证得出 文件偏移(FileOffset)= 起始文件偏移地址(VR)+(虚拟内存地址(VA)- 装载基址(Image Base)- 起始虚拟地址(VS))

这一章的用意在于熟悉了PE区段的作用,然后根据前面几个章节讲到的特征码定位。就可以从自己手中的源码或者反汇编修改程序中被定义为特征码的位置。达到免杀效果!

4.7 网页木马免杀

a 脚本木马免杀

(1)加密免杀:

  • 微软screnc加密

  • 大小写字母替换

  • 脚本对象及变量拆分

(2)特征码免杀

  • 例如中文内部版权
针对性免杀

webshell特征定位器

宽泛性免杀

无目的替换可能会被定位特征码的一些文本、代码信息。

  • 代码大小写替换
  • 对象中插入空变量

(3)其他方法的免杀

  • 致使杀软使用数据库特征扫描导致误判.
  • 位移、逆位法
针对专杀工具的免杀
  • 利用Windows目录漏洞

建立windows无法访问的畸形目录(..)

  • 例如b调用别的文件躲过专杀

文件包含函数包含了其他资源文件,资源文件中带有真正的后门代码。

  • copy命令与图片合并
自己编写加密算法
  • (1)分隔符加密算法

  • (2)ASCII转换加密算法

b 网页挂马的免杀

网页挂马的主体构成是HTML,除此之外会涉及JavaScript与VBScript。

  • HTML混淆器

  • 蓝星网页加解密专家

  • 网页挂马压缩器

【黑客免杀攻防】读书笔记2 - 免杀与特征码、其他免杀技术、PE进阶介绍的更多相关文章

  1. 【黑客免杀攻防】读书笔记5 - PE格式讲解

    0x01 MS-DOS头 MS-DOS头部的字段重点关注e_magic与最后一个e_lfanew是需要关注的. 第一个e_magic字段的值为4D5A,作用是可以作为判断这个文件是否是PE文件. 最后 ...

  2. Struts2技术内幕 读书笔记一 框架的本质

    本读书笔记系列,主要针对陆舟所著<<Struts2技术内幕 深入解析Strtus2架构设计与实现原理>>一书.笔记中所用的图片若无特殊说明,就都取自书中,特此声明. 什么是框架 ...

  3. 【黑客免杀攻防】读书笔记8 - 软件逆向工程基础2(if-else,三目运算符)

    0x1 if-else分支 if-else分支4种状态 1.1 以常量为判断条件的简单if-else分支 C源代码: 单层if-else判断,常量为判断条件 int _tmain(int argc, ...

  4. 【黑客免杀攻防】读书笔记7 - 软件逆向工程基础1(函数调用约定、Main函数查找)

    0x1 准备工作 1.1.准备工具 IDA:交互式反汇编工具 OllyDbg:用户层调试工具 Visual Studio:微软开发工具 1.2.基础知识 C++开发 汇编语言 0x2 查找真正的mai ...

  5. 【黑客免杀攻防】读书笔记6 - PE文件知识在免杀中的应用

    0x1 PE文件与免杀思路 基于PE文件结构知识的免杀技术主要用于对抗启发式扫描. 通过修改PE文件中的一些关键点来达到欺骗反病毒软件的目的. 修改区段名 1.1 移动PE文件头位置免杀 工具:PeC ...

  6. 《黑客攻防技术宝典Web实战篇@第2版》读书笔记1:了解Web应用程序

    读书笔记第一部分对应原书的第一章,主要介绍了Web应用程序的发展,功能,安全状况. Web应用程序的发展历程 早期的万维网仅由Web站点构成,只是包含静态文档的信息库,随后人们发明了Web浏览器用来检 ...

  7. 软工读书笔记 week4 ——《黑客与画家》下

    因为时间有限,只对书中后半部分几个篇章进行了阅读.        一.另一条路       作者以他自己为例,在那个没人知道什么叫“软件运行在服务器时”的时代,他和朋友选择创业时,没有选择写传统的桌面 ...

  8. 《Java编程思想》读书笔记

    前言 这个月一直没更新,就是一直在读这本<Java编程思想>,这本书可以在Java业界被传神的一本书,无论谁谈起这本书都说好,不管这个人是否真的读过这本书,都说啊,这本书很好.然后再看这边 ...

  9. 人生效率手册:如何卓有成效地过好每一天--By张萌姐姐--读书笔记

    读书笔记:<人生效率手册>:如何卓有成效地过好每一天--By张萌姐姐... 整本书看完的感受: 这本书主要讲的是生活中我们需要给自己一个目标,然后通过自己的努力去实现这个目标,书中说的很多 ...

随机推荐

  1. MT【211】保序同构

    设$S,T$是$R$的两个非空子集,如果存在一个从$S$到$T$的函数$y=f(x)$满足:$1)T=\{f(x)|x\in S\};$2)对任意$x_1,x_2\in S$,当$x_1<x_2 ...

  2. 自学Linux Shell12.3-case命令

    点击返回 自学Linux命令行与Shell脚本之路 12.3-case命令 有了case命令,就不需要写出所有elif语句来不停的检查同一个变量的值了.case命令会采用列表格式来检查单个变量的多个值 ...

  3. 创建首个 Android 项目

    Android 项目包括构成你的 Android 应用的源代码的所有文件. 利用 Android SDK 工具可以简单的创建 默认项目目录和文件来开始一个新的 Android 项目. 本节课展示了如何 ...

  4. 【bzoj2007】 Noi2010—海拔

    http://www.lydsy.com/JudgeOnline/problem.php?id=2007 (题目链接) 题意 $(n+1)*(n+1)$的网格图上,相邻两点间有一些人流.左上角点的海拔 ...

  5. Mysql服务器处理客户端请求流程

    在日常执行mysql语句的过程中,都是客户端进程向服务器进程发送一段文本(MySQL语句),服务器进程处理后再向客户端进程发送一段文本(处理结果). 看似很简单,其实不然,这内容有很多东西是需要注意的 ...

  6. Java -- JDBC 学习--PreparedStatement

    可以通过调用 Connection 对象的 preparedStatement() 方法获取 PreparedStatement 对象.PreparedStatement 接口是 Statement ...

  7. Luogu 2590 [ZJOI2008]树的统计 / HYSBZ 1036 [ZJOI2008]树的统计Count (树链剖分,LCA,线段树)

    Luogu 2590 [ZJOI2008]树的统计 / HYSBZ 1036 [ZJOI2008]树的统计Count (树链剖分,LCA,线段树) Description 一棵树上有n个节点,编号分别 ...

  8. 转载:OSG::Quat(四元数)用法

    转自:http://blog.163.com/dj_zone/blog/static/4908931320098294047820/ osg::Quat To set the attitude of ...

  9. 【洛谷P1273】有线电视网

    题目大意:给定一棵 N 个节点的有根树,1 号节点为根节点,叶子节点有点权,每条边有边权,每经过一条边都减去该边权,每经过一个节点都加上该点权,求在保证权值和为非负数的前提下最多能经过多少个叶子节点. ...

  10. [hihocoder1509][异或排序]

    hihocoder1509 思路 对于每两个数,从二进制的高位到低位考虑,发现,若前面一个的当前位是1,后面一个的当前位置是0,那么s的当前位置必须是1.反之,若前面是0,后面是1,那么s的当前位置必 ...