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. param 是获取请求传递过来的参数

  2. C++解析命令行参数(仿C语言args)

    说好不造轮子的,就管不住这手 #include <cstdio> #include <string> #include <vector> bool ParseCha ...

  3. 设置快捷键 让word轻松实现无格式粘贴

    设置快捷键 让word轻松实现无格式粘贴使用word时,我们经常会遇到需要将网页上的内容复制到word进行编辑的情况,但是通常这样复制进来的内容都是带有格式的,编辑起来非常不便.虽然我们可以利用“记事 ...

  4. spring接收json字符串的两种方式

    一.前言 前几天遇到一个问题,前端H5调用我的springboot一个接口(post方式,@RequestParameter接收参数),传入的参数接收不到.自己测试接口时使用postman的form- ...

  5. 【Cf #502 F】The Neutral Zone

    本题把$log$化简之后求得就是每个质数$f$前的系数,求系数并不难,难点在于求出所有的质数. 由于空间限制相当苛刻,$3e8$的$bitset$的内存超限,我们考虑所有的除了$2$和$3$以外的质数 ...

  6. 20165218 《网络对抗技术》 Exp5 MSF基础应用

    Exp5 MSF基础应用 实践内容 主动攻击:ms08_067 exploit/windows/smb/ms08_067_netapi generic/shell_reverse_tcp 针对浏览器攻 ...

  7. Java考试题之七

    QUESTION 150 Click the Exhibit button. Given: ClassA a = new ClassA(); a.methodA(); What is the resu ...

  8. JS的作用域和闭包

    1.作用域 作用域是根据名称找变量的一套规则. 变量的赋值操作会执行两个动作,首先编译器会在当前作用域中声明一个变量(如果之前没有声明过),然后在运行时引擎会在作用域中查找该变量,如果能够找到就会对它 ...

  9. Eureka的一些注意事项

    1.心跳设置:只能在application.yml中 2. 注册到Eureka上面的服务名称 与swagger2使用的时候,需要配置此项,否则显示服务名称为unknown 3.高可用的Eureka 4 ...

  10. Framingham风险评估

    Framingham风险评分: Framingham 心脏研究和其他流行病学队列研究改变了20世纪后半部分对疾病的关注点,即从治疗已经存在的心血管疾病到预防处于疾病危险的状态.该策略的关键因素是识别那 ...