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. HDU3829_Cat VS Dog

    题目是这样的,给定一些人喜欢某只猫或者狗,讨厌某只猫或者狗.求最多能够同时满足多少人的愿望? 题目很有意思.建模后就很简单了. 对于同一只猫或者狗,如果有一个讨厌,另一个人喜欢,那么这两个连一条边.最 ...

  2. 子类使用父类的方法 或属性时候 里面的this 代表的是自己

  3. BZOJ5312 冒险(线段树)

    记录区间and/or,修改时如果对整个区间影响都相同就打标记,否则递归.复杂度不太会证. #include<iostream> #include<cstdio> #includ ...

  4. P4838 P哥破解密码

    题目背景 P哥是一个经常丢密码条的男孩子. 在ION 8102赛场上,P哥又弄丢了密码条,笔试满分的他当然知道这可是要扣5分作为惩罚的,于是他开始破解ION Xunil系统的密码. 题目描述 定义一个 ...

  5. In Place Algorithm

    本篇是in place algorithm的学习笔记.目前学习的是in place merge与in place martrix transposition这两个算法. 1.in place merg ...

  6. Gradle 命令之 --stacktrace , --info , --debug 用法

    FAQ: Android studio 出现错误Run with --stacktrace option to get the stack trace. Run with --info or --de ...

  7. 解题:洛谷2633 Count on a tree

    题面 在树上建主席树...... 每个点从父亲那里建过来,最后建出来就是从根到$i$这条链上的主席树,查询的时候一边差分一边查询 ($cmt[u]+cmt[v]-cmt[lca(u,v)]-cmt[a ...

  8. MySQL 第八篇:ORM框架SQLAlchemy

    一 介绍 SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取 ...

  9. [转]Multivariate Time Series Forecasting with LSTMs in Keras

    1. Air Pollution Forecasting In this tutorial, we are going to use the Air Quality dataset. This is ...

  10. ORB原理与源码解析

    转载: http://blog.csdn.net/luoshixian099/article/details/48523267 CSDN-勿在浮沙筑高台 没有时间重新复制代码,只能一股脑的复制,所以代 ...