新書推薦:
《
金托邦:江湖中的沉重正义
》
售價:HK$
62.1
《
易经今解:释疑·解惑·见微
》
售價:HK$
90.9
《
东欧史(全二册)-“中间地带”的困境
》
售價:HK$
227.7
《
虚拟资本:金融怎样挪用我们的未来
》
售價:HK$
79.4
《
刻意练习不生气
》
售價:HK$
40.3
《
大宋理财:青苗法与王安石的金融帝国(全彩插图本)
》
售價:HK$
112.7
《
安全感是内心长出的盔甲
》
售價:HK$
68.8
《
快人一步:系统性能提高之道
》
售價:HK$
113.9
|
內容簡介: |
国内首部关于黑客免杀技术的专著,旨在为反病毒工程师剖析各种恶意软件和应对各种安全威胁提供全面指导。不仅从攻击者(黑客)的视角全方位揭示了黑客免杀技术的常用方法、常用技术和思想原理,还从防御者(反病毒工程师)的视角深入讲解了遏制免杀技术的具体方法策略。从纯技术的角度讲,本书不仅详细讲解了免杀技术的各种细节和方法,还详细讲解了PE文件、逆向工程、C++壳的编写、免杀壳的打造、脱壳、Rootkit等安全技术的细节。
全书共20章,分为三大部分:基础篇(第1~6章)详细介绍了黑客免杀技术的初级技巧,包括查找(修改)特征码、常见特征码绕过技巧、壳在免杀中的应用、花指令和其他免杀基础知识;高级篇(第7~16章)深入讲解了PE文件、逆向工程、C++壳的编写、免杀壳的打造、脱壳、Rootkit等常用安全技术的原理和细节,以及黑客免杀技术是如何应用它们的,为反病毒工程师应对各种恶意软件提供了原理性指导;扩展篇(第17~20章)为遏制黑客免杀技术提供了思路和具体的方案。
|
關於作者: |
任晓珲
资深安全技术工程师,华章“信息安全技术丛书”专家顾问,致力于免杀技术和反病毒技术的实践。对软件安全、逆向工程、Rootkit、加壳与脱壳等技术有较深入的研究和理解,积累了丰富的经验。北京蓝森科技有限公司创始人,黑客反病毒论坛(www.hackav.com)创始人,邪恶八进制团队成员,资深培训讲师,国内知名信息安全培训品牌15PB的创始人。目前专注于计算机安全的中高端培训。
|
目錄:
|
前言
基础篇 初级免杀技术
第1章 变脸
1.1 为何变脸
1.2 何为变脸
1.3 免杀的发展史
1.4 免杀技术的简单原理
1.5 免杀与其他技术的区别
1.5.1 免杀不是Rootkit技术
1.5.2 免杀不是加密解密技术
1.6 小结
第2章 免杀基础知识
2.1 如何开始免杀
2.2 反病毒软件原理与反病毒技术介绍
2.2.1 反病毒软件的工作原理
2.2.2 基于文件扫描的反病毒技术
2.2.3 基于内存扫描的反病毒技术
2.2.4 基于行为监控的反病毒技术
2.2.5 基于新兴技术的反病毒技术
2.2.6 反病毒技术前沿
2.2.7 反病毒技术展望
2.3 了解PE文件
2.3.1 什么是PE文件
2.3.2 PE文件的结构
2.4 免杀原理
2.4.1 文件免杀原理
2.4.2 内存免杀原理
2.4.3 行为免杀原理
2.5 工具脱壳技巧
2.5.1 壳的分类
2.5.2 免杀与脱壳是什么关系
2.5.3 使用专用脱壳工具脱壳
2.5.4 使用通用脱壳工具脱壳
2.6 小结
第3章 免杀与特征码
3.1 特征码免杀技术
3.1.1 理想状态下的免杀
3.1.2 由脚本木马免杀理解特征码
3.2 特征码定位原理
3.2.1 特征码逐块填充定位原理
3.2.2 特征码逐块暴露定位原理
3.2.3 特征码混合定位原理
3.3 脚本木马定位特征码
3.4 MyCCL查找文件特征码
3.4.1 MyCCL的典型应用
3.4.2 针对MyCCL的一点思考
3.5 MyCCL查找内存特征码
3.6 特征码修改方法
3.6.1 简单的特征码修改
3.6.2 特征码修改进阶
3.7 小结
第4章 其他免杀技术
4.1 修改入口点免杀
4.2 使用VMProtect加密
4.3 Overlay附加数据的处理及应用
4.4 驱动程序免杀修改技巧
4.4.1 驱动程序的常见免杀方法
4.4.2 驱动程序的手工免杀思路
4.5 补丁在免杀中的应用
4.6 PE文件进阶介绍
4.6.1 PE文件格式
4.6.2 虚拟内存的简单介绍
4.6.3 PE文件的内存映射
4.7 网页木马的免杀
4.7.1 脚本木马免杀
4.7.2 网页挂马的免杀
4.8 小结
第5章 花指令与免杀
5.1 什么是花指令
5.2 脚本木马的花指令应用
5.3 花指令的根基—汇编语言
5.3.1 认识汇编
5.3.2 通过反汇编添加任意功能
5.4 花指令入门
5.5 花指令在免杀领域的应用
5.5.1 花指令的应用技巧
5.5.2 花指令的修改技巧简介
5.5.3 空白区域寻找与加空白区段
5.6 花指令的高级应用
5.6.1 花指令的提取与快速应用
5.6.2 SEH异常的应用
5.7 小结
第6章 壳在免杀中的应用
6.1 壳的基础知识
6.2 壳在免杀领域的应用
6.2.1 加壳的免杀原理
6.2.2 FreeRes多重加壳
6.3 壳的修改技巧
6.3.1 壳的初级修改
6.3.2 制作通用补丁
6.4 小结
高级篇 免杀技术进阶
第7章 PE文件格式详解
7.1 MS-DOS头
7.1.1 重要字段
7.1.2 其他字段
7.2 PE文件头
7.2.1 Signature字段
7.2.2 IMAGE_FILE_HEADER结构
7.2.3 IMAGE_OPTIONAL_HEADER结构(x86x64)
7.2.4 数据目录表
7.3 区段表
7.3.1 IMAGE_SECTION_HEADER结构
7.3.2 区段名功能约定
7.3.3 区段对齐详解
7.3.4 地址转换
7.4 导出表
7.4.1 IMAGE_EXPORT_DIRECTORY结构
7.4.2 识别导出表
7.5 导入表
7.5.1 IMAGE_IMPORT_DESCRIPTOR结构
7.5.2 识别导入表
7.6 资源
7.6.1 资源结构
7.6.2 识别资源
7.7 异常
7.8 安全
7.8.1 安全目录结构
7.8.2 识别安全结构
7.9 基址重定位
7.9.1 基址重定位表结构
7.9.2 识别基址重定位表
7.10 调试
7.11 特殊结构数据(版权)
7.12 全局指针
7.13 TLS
7.13.1 TLS的回调函数
7.13.2 TLS的结构(x86x64)
7.13.3 识别TLS
7.14 载入配置(x86x64)
7.15 绑定导入表
7.15.1 绑定导入表结构
7.15.2 识别绑定导入表
7.16 导入地址表
7.17 延迟加载表
7.17.1 延迟加载表结构
7.17.2 识别延迟加载表
7.18 COM描述符
7.19 小结
第8章 PE文件知识在免杀中的应用
8.1 PE文件与免杀思路
8.1.1 移动PE文件头位置免杀
8.1.2 导入表移动免杀
8.1.3 导出表移动免杀
8.2 PE文件与反启发式扫描
8.2.1 最后一个区段为代码段
8.2.2 可疑的区段头部属性
8.2.3 可疑的PE选项头的有效尺寸值
8.2.4 可疑的代码节名称
8.2.5 多个PE头部
8.2.6 导入表项存在可疑导入
8.3 一个稍显复杂的例子—隐藏导入表
8.3.1 操作原理与先决条件
8.3.2 修改PE文件
8.3.3 构造我们的反汇编代码
8.4 小结
第9章 软件逆向工程
9.1 准备工作
9.1.1 要准备的工具及基础知识
9.1.2 程序是从哪里开始运行的
9.2 一个简单的小例子
9.3 函数识别初探
9.4 if-else分支
9.4.1 以常量为判断条件的简单if-else分支
9.4.2 以变量为判断条件的简单if-else分支
9.4.3 以常量为判断条件的复杂if-else分支
9.4.4 以变量为判断条件的复杂if-else分支
9.4.5 识别三目运算符
9.5 循环分支
9.5.1 do-while循环
9.5.2 while循环
9.5.3 for循环
9.5.4 循环体的语句外提优化
9.6 switch-case分支
9.6.1 简单switch-case分支识别技巧
9.6.2 复杂分支的switch-case识别
9.6.3 switch-case分支结构与稀疏矩阵
9.6.4 switch-case分支结构与平衡二叉树
9.7 加法与减法的识别与优化原理
9.7.1 加法的识别与优化
9.7.2 减法的识别与优化
9.8 乘法与除法的识别与优化原理
9.8.1 乘法的位移优化
9.8.2 乘法的lea指令优化
9.8.3 除法与倒数相乘
9.8.4 倒数相乘与定点运算的配合
9.8.5 除法运算的识别与优化
9.8.6 取模运算的识别与优化
9.9 指针与数组
9.9.1 指针与数组的渊源
9.9.2 数组的不同表达方式
9.10 数组、结构体与对象
9.10.1 数组与结构体
9.10.2 结构体与类
9.11 变量作用域的识别
9.12 识别构造与析构函数
9.12.1 快速识别出类
9.12.2 识别构造函数
9.12.3 识别析构函数
9.13 虚函数与纯虚函数的识别
9.13.1 识别简单的虚函数
9.13.2 识别较复杂的虚函数
9.14 正确识别类的继承关系
9.15 最后一役
9.15.1 MFC逆向初探
9.15.2 分析BypassUAC.exe
9.16 小结
第10章 源码级免杀
10.1 怎样定位产生特征的源代码
10.1.1 定位文件特征
10.1.2 定位行为特征
10.2 基于源码的特征修改
10.2.1 变换编译器与编译选项
10.2.2 添加垃圾代码
10.2.3 语法变换
10.2.4 添加汇编花指令
10.3 小结
第11章 详解C++壳的编写
11.1 了解壳的运行流程
11.2 设计一个纯C++编写的壳
11.2.1 用C++编写的壳应该是什么样的
11.2.2 编写过程中会遇到的问题
11.3 用C++写一个简单的壳
11.3.1 配置工程
11.3.2 编写Stub部分
11.3.3 编写加壳部分
11.3.4 编写界面部分
11.4 设计一个由C++编写的专业壳
11.4.1 为问题找到答案
11.4.2 设计专业壳的框架
11.4.3 如何设计Stub部分
11.4.4 如何设计加壳部分
11.4.5 需要注意的细节问题
11.5 怎样调试由C++编写的Stub部分
11.6 小结
第12章 黑客是怎样打造免杀壳的
12.1 免杀壳与加密壳的异同
12.2 导入表加密
12.3 代码混淆与代码乱序
12.4 附加驱动
12.5 小结
第13章 脱壳技术
13.1 寻找OEP
13.1.1 利用内存断点
13.1.2 利用堆栈平衡
13.1.3 利用编译语言特点
13.1.4 利用跨区段跳转
13.2 转储内存映像
13.3 重建导入表
13.3.1 导入表重建原理
13.3.2 使用ImportREC重建导入表
13.4 小结
第14章 Rootkit基础
14.1 构建一个Rootkit基础环境
14.1.1 构建开发环境
14.1.2 构建基于Visual Studio 2012的调试环境
14.1.3 构建基于WinDbg的调试环境
14.1.4 将Rootkit加载到系统
14.1.5 创建一个简单的驱动并调试
14.2 何为Ring0层
14.3 关键表
14.4 内存分页
14.4.1 地址转译
14.4.2 内存访问检查
14.4.3 Windows对重要表的保护
14.5 内存描述符表
14.6 中断描述符表(IDT)
14.7 系统服务调度表
14.8 控制寄存器
14.8.1 利用CR0禁用内存保护机制
14.8.2 其他控制寄存器
14.9 小结
第15章 Rootkit在免杀中的应用
15.1 用户模式Rootkit
15.1.1 DLL远程注入技巧
15.1.2 内联钩子
15.1.3 导入地址表钩子
15.1.4 一个保护文件不被删除的例子
15.2 内核编程基础
15.2.1 内核编程环境与用户层编程环境的异同
15.2.2 如何选择Windows驱动开发模型
15.2.3 驱动设备与请求处理
15.2.4 内核编程中的数据类型
15.2.5 函数调用
15.2.6 Windows内核编程的特点
15.3 内核模式Rootkit
15.3.1 SYSENTER钩子
15.3.2 SSDT钩子
15.3.3 内联钩子
15.3.4 IRP钩子
15.3.5 LADDR钩子
15.3.6 IDT钩子
15.3.7 IOAPIC钩子
15.4 小结
第16章 免杀技术前沿
16.1 免杀技术的发展趋势
16.2 免杀前沿之突破主动防御
16.2.1 “移花接木”之屏幕截图突破主动防御
16.2.2 “暗渡陈仓”之利用可信进程突破主动防御
16.2.3 “釜底抽薪”之利用系统进程突破主动防御
16.2.4 “顺手牵羊”之利用逻辑漏洞突破主动防御
16.2.5 “浑水摸鱼”之利用变形复制突破主动防御
16.2.6 “金蝉脱壳”之利用异同逃逸虚拟机
16.2.7 “借尸还魂”之利用替换文件突破主动防御
16.2.8 “借刀杀人”之利用调试接口突破主动防御
16.3 黑客免杀技术的展望
16.4 小结
扩展篇 遏制免杀技术初探
第17章 浅谈部分免杀技巧的遏制
17.1 盯紧PE文件
17.2 盯紧程序行为
17.3 小结
第18章 反特征码定位
18.1 释放干扰码
18.2 定位行为的判定
18.3 设定“靶特征码”
18.4 小结
第19章 遏制免杀与Anti Rootkit
19.1 适当的监控
19.2 基本检测逻辑
19.3 Rootkit检测方法初探
19.4 小结
第20章 浅谈反病毒产品的改进
20.1 云查杀与本地查杀紧密结合
20.2 注重感染型病毒木马的清除工作
20.3 精进启发式扫描解决效率问题
20.4 小结
附录A 80x86汇编基础知识
|
內容試閱:
|
前言
为什么要写这本书
计算机安全领域最初且规模最大的博弈莫过于病毒与反病毒的博弈,这也是计算机安全领域的硝烟燃起之处。然而,我们当中的有些人可能并不知晓黑客免杀技术现今已经成为反病毒领域中的主要破坏力量,而究其原因,也许是由此技术带来的大规模病毒木马泛滥与黑客免杀技术本身的隐蔽性所导致的。
但是很幸运,您手中的这本书就是迄今为止第一本详细介绍免杀技术的图书,您和我都应为此而感到庆幸。
2008年2月,我应邀与《黑客X档案》杂志的主编一起策划了《黑客免杀入门》的编写工作。《黑客免杀入门》就是本书的雏形,那真的是一个很好的开始。当时还在上大一的我为了使这本书能够快速上市,几乎牺牲了所有课余时间。在经过半年的艰苦写作之后,《黑客免杀入门》终于在2008年10月正式上市,并在半年内创下了5000册销量的佳绩。
但是由于种种原因,使得我对自己的第一本书并不满意,因为要考虑到初学者的接受力与知识储备,因此并未将黑客免杀技术的真正意义体现在那本书里,再加之免杀技术在第一本书发行后的几年里发生了很大变化,因此使我有了编写第二本书的动力。
如何阅读本书
本书详细描述了Windows系统下黑客免杀的所有技术细节,讲解了为什么病毒、木马在经过免杀处理后就会被反病毒软件误认为是正常的程序。除此之外,本书还详细讲述了黑客与反病毒工程师都应该掌握的基础知识,包括PE文件结构、软件逆向工程、壳的原理及编写思路、Rootkit等等。在最后,笔者总结了一些遏制免杀技术的方法以及应对策略,相信对于很多反病毒工程师来讲都会有所启发。
本书共分为基础篇、高级篇与扩展篇三大部分,分别面向的是零基础读者、高级读者与反病毒工程师,要完全掌握这三部分,所需的基础知识如下:
基础篇 其中所有内容几乎都未过深涉及任何计算机语言,因此只要能熟练操作Windows系统,并对硬件有基本的常识性认识,即可顺利阅读这部分内容,除此之外不再需要读者有任何基础。
高级篇 要求读者对于CC++、汇编语言有基本的了解,并且要有一定的Windows程序开发经验,除此之外也需要读者对操作系统的结构有所了解。
扩展篇 要求读者熟悉黑客免杀的技术细节,并初步掌握PE文件结构、软件逆向工程、壳的原理及编写思路、Rootkit等高端技术。
本书的主要内容
基础篇 包括第1章~第6章,这部分由第1章“变脸”开篇,以类比的形式将黑客免杀技术的特点向大家娓娓道来,随后通过对免杀基础知识的介绍,可以迅速让初级读者彻底明白何为黑客免杀技术。
待初级读者理解了何为免杀技术后,随后的几个章节则以比较简单易懂的语言向大家描述与黑客免杀技术密切相关的一些技术,例如特征码、花指令、壳等等。
高级篇 包括第7章~第16章,这部分所讲的内容都是黑客们得以展开较高层面免杀操作的技术基础,同时也是反病毒工程师与大部分软件安全行业从业者必备的技术基础。
本篇详细地阐述了Windows下的PE文件结构,并着重讲解了软件逆向工程的技术原理与分析思路。除此之外,第11章还在纯C++语言的角度描述了一个壳的编写,这在国内来说尚属首次。在本篇的最后,还详细介绍了部分Rootkit技术的实现原理与当前黑客免杀技术的最前沿思想。
扩展篇 包括第17章~第20章,这部分主要针对当下的免杀技巧及黑客常用的免杀手法提出了一些反制措施,分别对反特征码定位、遏制Rootkit展开了讨论,并在最后对时下的反病毒产品简略地给出了一些改进建议。
这正是那酝酿三年的2.0版
现在您拿在手里的这本书是以《黑客免杀入门》的部分内容为基础,加入大量新鲜内容后重新组织、编排的一个全新版本,这本书真正考虑到了免杀技术的广度与深度,采用了知识层次分离编写的方式,以求照顾到高中低各层次的绝大多数读者。
深广结合,高低分离
本书的全部内容分为三个部分,其中每个部分都相对独立、互成体系,分别面对不同层次的读者。对于基础知识的讲解主要集中在前两部分,第一部分只对相关知识进行了解性讲解,其难度以满足阅读第一部分内容所需的知识储备为标准。第二部分对免杀的所有技术细节进行了细致深入的讲解,可看作是第一部分的延伸与拓展。
分解难点,注重延续
第一部分的阅读基础大致定位在非专业人士的层次上。因此为了照顾这部分读者的后续学习能力,对每个重点、难点都进行了相应的拆分讲解,并以第二部分的部分内容作为扩展阅读资源,使得初级读者的技术飞跃成为可能。
增新改旧,重排章节
本书新增了大量的技术描述,例如PE文件结构、壳的编写技术、Rootkit技术等,同时删除了第一版中关于突破主动防御的章节并重新整理编写。除此之外,对于其他章节也进行了大量的重写与更新,这些更新使得第一版保留下来的内容不超过10%。
本书的读者
第一篇对应的为初级层次的读者,如果你已经有了一定的基础,且对黑客免杀技术有了一定的了解,可跳过本部分。适合阅读本部分的读者如下:
黑客技术爱好者
信息安全专业的学生
想了解黑客免杀技术的初学者
第二篇对应的为中级层次的读者,如果你已经对PE文件、软件逆向、壳的编写、Rootkit有了较为深入的了解,可跳过本部分。适合阅读本部分的读者如下:
软件安全爱好者
想系统学习PE文件结构的人
需要快速掌握软件逆向技术的相关工作人员
想用C++写壳的技术狂人,或仅想写一个壳的爱好者
对于Rootkit感兴趣的人
第三篇对应的为高级层次的读者,此部分内容并没有具体的技术细节,着重讲解了相关技术的核心思想,适合具备一定基础的人阅读:
反病毒工程师
免杀技术爱好者
勘误和支持
本书从创意到落实写作,再到最终完成,整整度过了三年的时间,其中有足足两年的时间是用于本书的写作,这是我用人生最精彩的一段时间撰写的一本书,因此也期望这本书能同样精彩。
但是,事实总是残酷的,由于本人的水平有限,而且感觉两年的时间还是太少了,书中难免还会有一些不足。记得俄罗斯的“斯坦尼斯拉夫斯基”用了一生的时间才写出了《演员的自我修养》这本书,这是没有认真写书经历的人难以体会的。
我是一个不愿妥协的人,在撰写本书之初就是如此,但是很不幸的是我还是一次次地被残酷的事实打败。在我与之对抗了两年之后,才感觉这本书可以拿出来见人了,我承认它离完美还有相当长的一段距离。
这本40余万字的图书是我目前为止做过的最大的一个“工程”,我承诺会在精力允许的前提下,在本书出版之前不放弃任何一次修正本书错误的机会,但是我知道它最终还是会带着若干错误与读者们见面,请原谅我无法修复这些错误,这有可能是我的精力问题,也有可能是我的能力问题。但是,我非常期望能收到您的来信,指导我修正本书中的错误,为这本书走向完美“添砖加瓦”。
为此,我在黑客反病毒论坛中建立了一个专门的分区来处理本书中的所有问题,包括读者反馈、勘误列表与本书的相关资源下载,本书的交流专区:http:book.hackav.com。本书相关资源还可到华章官网下载,华章的官网:http:www.hzbook.com。
除此之外,您还可以通过邮件与我取得联系,我的邮箱:0x0026@gmail.com、a1pass@
163.com。
特别致谢
首先请允许我借此机会感谢我的父母在事业上、写作上以及生活上对我的支持与关爱,我因拥有你们的爱而变得更加坚强与勇敢,我的所有荣耀都属于你们。
其次,尽管只有我的名字被印在了本书的封面上,但是您手中的这本40余万字的书显然不是一个人的工作成果,本书的顺利出版得益于众多朋友的鼎力相助。在此,我要感谢那些在我写作的过程中为我提供过帮助的人。
钱林松 感谢您将我引荐给杨福川,这使得我有了完成自己写作梦想的机会。
薛亮亮 我的创业伙伴,没有你的理解与担当就不可能有这本书的面世。
黄 瀚 为本书提供了大量一手资料,感谢你一直以来对于本书的关注与支持。
段 刚 段老师预读了本书的部分章节,并对本书的定位提出了很多特别好的建议。
李常坤 审阅了本书的第11章和第12章,并提出了宝贵建议。
卢超超 在本书的定位方面及前期的策划时发挥了重要作用,并在初期提出了宝贵建议。
彭燕青 对第14章和第15章的编写提供了宝贵的技术方面的建议。
许晓明 审阅了本书的第7章和第9章,并修改了一些技术上的错误。
吴 彬 在写作初期向我详细阐述了反病毒工程师的各个工作流程。
全珠荣 为本书提出了不错的建议,感谢你在写作上对我的帮助。
杨福川 首席策划,感谢您在整本书的写作期间所做的大量协调工作。
孙海亮 我的编辑,感谢您对本书的审校工作,您的敏锐思维能力让我很欣赏。
杨绣国 我的编辑,十分细心地审阅了本书的大部分章节,感谢您对此做出的工作。
白 宇 我的编辑,帮我熟悉了整套图书出版的流程,感谢您的帮助。
最后,感谢北京蓝森科技有限公司的所有同事,这本书的顺利出版离不开你们的理解与支持,是你们在我写作的过程中为我承担了大部分的工作。另外,感谢黑客反病毒组织(www.hackav.com)中对本书提出过宝贵意见的所有网友,是你们的投票保证了本书内容安排的合理性。
任晓珲
于北京
|
|