1、免杀技巧的遏制

1.1、PE文件

  • 入口点不在第一个区段或在最后一个区段
  • 入口点处代码附近只有一小段代码
  • 入口点在正常范围之外
  • 入口点为一个无效的值,实际入口点为TLS的入口点
  • 区段名重复或者不属于正常范围
  • 拥有可执行属性的区段数量过多

1.2、程序行为

  • 加载系统DLL
  • 枚举反病毒软件进程的窗口
  • 将自己复制到系统目录
  • 安装SPI(控制网络通信或者另类的方法远程注入DLL文件)
  • 远程注入线程或改写其他进程的内存
  • 操作MBR

2、Anti Rootkit

2.1、检查SSDT钩子与IDT钩子

一般情况下SSDT所指向的内核例程地址都在0x800000000~0x8FFFFFFFF之间,攻击者后加载的驱动程序所在的内存地址往往较高。因此修改后的SSDT所指向的内核例程地址很难落在0x800000000~0x8FFFFFFFF之间。此类方法也适用于检查IDT钩子。

2.2、检查IAT钩子

交叉对比程序可信副本

2.3、检查IRP钩子

每个驱动程序都在DRIVER_OBJECT中保存了一些I/O请求包的函数指针。检查函数指针是否指向其驱动本身的地址范围之内。

2.4、检查内联钩子

通过分析未被执行的内核文件,从而得出真实的函数代码,并用其与内存中的可执行映像对比找出不同点。

4、收获

通过这本书学习了反汇编、脱壳、内核编程的基础知识,了解几年前免杀技术的方式。

这本书是看的时间很长的一本书,因为工作外出的原因,只能抽出业余时间陆陆续续对本书进行学习。很多时候内心平静不下来就使用抄书的方式学习,每个章节通读后截取一个中心句抄写出来并对源码继续断点调试跟进。

  • 免杀技术:由于现在安全产品不断涌现,书中的免杀方法已经不适用于绕过当前的安全防护方案,不过了解了解从前的免杀技术也是不错,毕竟是2013出版的书籍。
  • 反汇编:原先对反汇编不熟悉的地方,对第9章的小例子全都编译和练习了一遍。if-else分支、循环、switch-case、指针与数组、结构体与对象、虚函数,剩下的几个章节稍显烧脑。所以没有细看。
  • PE文件:通过第7章的阅读,对DOS、区段表、导出表、导入表、资源表都动手查了一遍,有些错别名字让我这个初学者刚开始看的时候有点懵逼,好在作者给出了勘误表,及时修正一些我搞不懂的地方。下一步应该要把Windows PE权威指南在好好看看,书里PE部分讲得比较浅。

  • 内核编程:这个章节的部分HOOK代码编译成功后,我在Windows7上仍然可用。但是还有几份钩子代码编译过,加载到系统中没效果。

  • 脱壳:这里作者介绍了几个方法,利用内存断点、利用堆栈平衡、利用编译语言特点、利用跨区段跳转也都是脱壳的基础,还有最后一次异常法、SFX法书里面没有提到,当然也可能本书的主题就是介绍免杀和基础知识。

OK,下一步书单继续。踏踏实实地把技术基础打牢。

https://github.com/riusksk/secbook

5、感谢

与大多数少年有区别的是,因为看书会参考互联网博客笔记,感谢每个用心写博客的博主。

这几位博主,看书有不解的时候参考了他们的博客内容。

【黑客免杀攻防】读书笔记18-最终章Anti Rootkit的更多相关文章

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

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

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

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

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

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

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

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

  5. 【黑客免杀攻防】读书笔记2 - 免杀与特征码、其他免杀技术、PE进阶介绍

    第3章 免杀与特征码 这一章主要讲了一些操作过程.介绍了MyCCL脚本木马免杀的操作,对于定位特征码在FreeBuf也曾发表过类似工具. VirTest5.0特征码定位器 http://www.fre ...

  6. 【黑客免杀攻防】读书笔记15 - 源码免杀、C++壳的编写

    1.源码免杀 1.1 定位产生特征的源码 定位文件特征 1.根据MyCCL的特征码定位工具,定位出有特征的地址 2.根据VS的反汇编窗口,输入有特征的地址得到特征地址与源码的关系 3.插入Messag ...

  7. 【黑客免杀攻防】读书笔记10 - switch-case分支

    0x1 switch-case分支 switch-case其实就是if-else语句的另一种体现形式.但大于3之后的switchc-case.编译器会对代码进行优化. 1.1 简单switch-cas ...

  8. 【黑客免杀攻防】读书笔记17 - Rootkit基础

    1.构建Rootkit基础环境 1.1.构建开发环境 VS2012+WDK8 1.2.构建基于VS2012的调试环境 将目标机.调试机配置在同一个工作组内 sVS2012配置->DRIVER-& ...

  9. 【黑客免杀攻防】读书笔记14 - 面向对象逆向-虚函数、MFC逆向

    虚函数存在是为了克服类型域解决方案的缺陷,以使程序员可以在基类里声明一些能够在各个派生类里重新定义的函数. 1 识别简单的虚函数 代码示例: #include "stdafx.h" ...

随机推荐

  1. Common Substrings POJ - 3415(长度不小于k的公共子串的个数)

    题意: 给定两个字符串A 和 B, 求长度不小于 k 的公共子串的个数(可以相同) 分两部分求和sa[i-1] > len1  sa[i] < len1  和  sa[i-1] < ...

  2. 51nod 1290 Counting Diff Pairs | 莫队 树状数组

    51nod 1290 Counting Diff Pairs | 莫队 树状数组 题面 一个长度为N的正整数数组A,给出一个数K以及Q个查询,每个查询包含2个数l和r,对于每个查询输出从A[i]到A[ ...

  3. poj2761 feed the dog

    题目链接:http://poj.org/problem?id=2761 Description Wind loves pretty dogs very much, and she has n pet ...

  4. BZOJ1495 [NOI2006]网络收费 【树形dp + 状压dp】

    题目链接 BZOJ1495 题解 观察表格,实际上就是分\(A\)多和\(B\)两种情况,分别对应每个点选\(A\)权值或者\(B\)权值,所以成对的权值可以分到每个点上 所以每个非叶节点实际对应一个 ...

  5. 面向对象高级编程(2)-使用@property

    使用@property 在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改: s = Student() s.score = 9999 这显然不合逻 ...

  6. Google Gson用法

    the latest version is 2.8.0. If you're using Gradle, add the following line: compile 'com.google.cod ...

  7. 解题:BZOJ 2673 World Final 2011 Chips Challenge

    题面 数据范围看起来很像网络流诶(滚那 因为限制多而且强,数据范围也不大,我们考虑不直接求答案,而是转化为判定问题 可以发现第二个限制相对好满足,我们直接枚举这个限制就可以.具体来说是枚举所有行中的最 ...

  8. web服务器nginx和apache的对比分析

         今天准备较详细的对比一下apache httpd与nginx两个web服务器的异同点.优缺点.由于我并不是做web开发的,所以有什么理解错误还请指出,想要了解它们是因为工作中有时候会用到它, ...

  9. 二分查找(等于x,小于x,小于等于x,大于x,大于等于x )

    //等于x//小于x//小于等于x//大于x//大于等于x #include <cstdio> #include <cstdlib> #include <cmath> ...

  10. 基于Java visualvm的可视化监控的使用

    1 Java visualVM可视化监控工具打开方式 ctrl + r 快捷键调出运行窗口,输出 jvisualvm指令,即可打开java visualVM工具.详情如下图: 2 Java Visua ...