灰帽黑客:正义黑客的道德
规范、渗透测试、攻击
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
和漏洞分析技术(第 3版)
Allen Harper
[美] Shon Harris 等著
杨明军 韩智文 程文俊 译
北 京
Allen Harper, Shon Harris, et al.
Gray Hat Hacking:The Ethical Hacker's Handbook,Third Edition
EISBN:978-0-07-174255-9
Copyright © 2011 by The McGraw-Hill Companies, Inc.
All Rights reserved. No part of this publication may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including without limitation photocopying, recording, taping, or any database,
information or retrieval system, without the prior written permission of the publisher.
This authorized Chinese translation is jointly published by McGraw-Hill Education (Asia) and Tsinghua
University Press. This edition is authorized for sale in the People's Republic of China only, excluding Hong
Kong, Macao SAR and Taiwan.
Copyright © 2012 by McGraw-Hill Education (Asia), a division of the Singapore Branch of The McGraw-Hill
Companies, Inc. and Tsinghua University Press.
版权所有。未经出版人事先书面许可,对本出版物的任何部分不得以任何方式或途径复制或传播,包括
但不限于复印、录制、录音,或通过任何数据库、信息或可检索的系统。
本授权中文简体字翻译版由麦格劳-希尔(亚洲)教育出版公司和清华大学出版社合作出版。此版本经授权
仅限在中华人民共和国境内(不包括香港特别行政区、澳门特别行政区和台湾)销售。
版权©2012 由麦格劳-希尔(亚洲)教育出版公司与清华大学出版社所有。
北京市版权局著作权合同登记号 图字:01-2011-3514
本书封面贴有清华大学出版社防伪标签,无标签者不得销售。
版权所有,侵权必究。侵权举报电话:010-62782989 13701121933
图书在版编目(CIP)数据
灰帽黑客:正义黑客的道德规范、渗透测试、攻击方法和漏洞分析技术(第 3 版) / (美)哈珀(Harper,A.),
(美)哈里斯(Harris,S.),等著;杨明军,韩智文,程文俊译. -北京:清华大学出版社,2012.11
(安全技术经典译丛)
书名原文:Gray Hat Hacking: The Ethical Hacker's Handbook, Third Edition
Ⅰ. ①灰… Ⅱ. ①哈…②哈…③杨…④韩…⑤程… Ⅲ. ①计算机网络—安全技术 Ⅳ. ①TP393.08
中国版本图书馆 CIP 数据核字(2012)第 222891 号
责任编辑:王 军 韩宏志
装帧设计:康 博
责任校对:蔡 娟
责任印制:
出版发行:清华大学出版社
网 址:http://www.tup.com.cn,http://www.wqbook.com
地 址:北京清华大学学研大厦 A 座 邮 编:100084
社 总 机:010-62770175 邮 购:010-62786544
投稿与读者服务:010-62776969,c-service@tup.tsinghua.edu.cn
质 量 反 馈:010-62772015,zhiliang@tup.tsinghua.edu.cn
印 刷 者:
装 订 者:
经 销:全国新华书店
开 本:185mm×260 mm 印 张:00 字 数:000 千字
版 次:2012 年 11 月第 1 版 印 次:2012 年 11 月第 1 次印刷
印 数:1~000
定 价:00.00 元
—————————————————————————————————————————————
产品编号:
译 者 序
当人类跨入网络信息时代,人们在享受信息技术带来的高效率的同时,也面临着更大
的挑战:小到个人隐私信息,大到企业信息资产,再到国家信息安全,现代社会的方方面
面都受到越来越多的网络威胁和攻击。2010 年伊朗核设施遭受 Stuxnet 蠕虫攻击,分析显
示这次攻击针对的是该设施使用的西门子 SCADA 系统,最终导致浓缩铀离心机被病毒破
坏。2011年底 CSDN用户数据库泄露事件导致众多中国互联网用户人人自危,因为泄露的
用户数据中包含部分以明文方式保存的用户密码,而其中的相当一部分人在其他网站上也
使用了同样的用户名和密码,从而可能导致泄露更多的数据。
不断出现的各类网络安全事件使得人们越来越重视网络信息安全的重要性。孙子说:
“知己知彼,百战不殆”。虽然没有绝对的安全,但如果能够做到知已知彼,了解敌方的
攻击手段,包括如何利用漏洞(物理、信息系统)进入系统、如何展开攻击以及如何规避探
测,那么对于防御战而言,即使不能百战百胜,也能做到及时发现漏洞,使损失最小化。
本书从渗透测试的角度来讨论网络攻防技术,在研究黑客攻击的策略、技能、工具和
动机的同时,还探讨如何进行有效的防御。本书出自安全领域富有实战
经验
班主任工作经验交流宣传工作经验交流材料优秀班主任经验交流小学课改经验典型材料房地产总经理管理经验
的专家之手,
既包含广泛的、透彻的理论分析,又包括大量的、可操作性高的实用范例。“魔高一尺,
道高一丈”,安全领域的攻防技术日新月异。本书的作者来自安全一线战场,他们在本书
中介绍了最新的黑客攻击技术和相应的防御手段,其中的大部分内容都是研究网络安全的
不可多得的宝贵资料。
如果您是一位希望从事网络安全工作的新手,那么本书讨论的广泛主
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
能够让您对安
全领域有一个综合性认识。而如果您是一名具有丰富实践经验的老兵,那么本书提供的最
新攻防技术将会让您开拓视野,耳目一新。
本书主要由杨明军、韩智文、程文俊翻译。对于本书的翻译,我们力求做到语言平实
无华、技术方面准确无误,希望能给读者带来轻松愉悦的阅读体验。
灰帽黑客:正义黑客手册的道德规范、渗透测试、攻击方法和漏洞分析技(第 3版)
IV
技术编辑简介
Michael Baucom是北卡罗莱纳州 N2NetSecurity, Inc.公司的研发副总裁。他的软件工程
师职业生涯长达 15年,曾经编写过各种软件,既包括采用汇编语言编写的路由转发代码,
也包括Windows应用程序和服务。除了编写软件之外,他还从事过安全咨询工作,包括培
训、源代码审查以及渗透测试。
致 谢
本书所有作者都非常感谢麦格劳希尔出版社的编辑们。尤其想要感谢 Joya Anthony,正是
您让我们步入正轨,而且在整个过程中给予了我们巨大的帮助。您对这个项目所做的贡献非常
显著。非常感谢。
Allen Harper:感谢爱妻 Corann和女儿 Haley与 Madison,感谢她们在本书写作期间所给
予的支持和理解。看到我们的家庭成长得更加壮大,我感到非常高兴。我每天都深深地爱着你
们。此外,我还想感谢教会成员给予的爱和支持。尤其是 Rob Martin和 Ronnie Jones已经成为
真正的兄弟和伟大的朋友。此外,我还想感谢在写作过程中提供帮助的其他黑客:Alex Sotirov、
Mark Dowd、Alexey Sintsov、Shuichiro Suzuki、Peter Van Eeckhoutte、Stéfan Le Berre和 Damien
Cauquil。
Shon Harris:感谢其他作者和团队成员对这个项目所做的持续努力以及对整个行业所做的
持续不断的贡献。我还想感谢狂热的 Fairbairn姐妹Kathy Conlon、Diane Marshall和Kristy Gorenz
对我和我的工作所给予的毕生支持。
Jonathan Ness:感谢爱妻 Jessica忍受我花费大量时间写作本书以及从事其他工作。还要感
谢 Didier Stevens 为第 15 章所提供的慷慨帮助 (以及在 http://blog. didierstevens.
com/programs/pdf-tools提供免费的 PDF分析工具)。还要十分感谢 Terry McCorkle提供的专家
指导和建议,这帮助我完成了现在的第 16章的内容,Terry真是一位救命的大好人!最后,我
想向在职业生涯中曾经指导过自己的导师、老师、同事、牧师、家庭和朋友们表示感谢,他们
为我的成功提供了莫大的帮助。
Chris Eagle:感谢 DDTEK团队的所有核心成员。他们所做的艰苦卓绝的工作和所提供的
技能使我惊叹不已。
Gideon Lenkey:感谢亲爱的家庭和朋友们对我的工作的支持。还想感谢所有 FBI特工,包
括在职的和退休的,他们让我不再感到无聊!
Terron Williams:感谢亲爱的妻子Mekka和继子 Christian Morris。你们是我生活的中
心,感激我们一起分享的每分每秒。此外,还想感谢我的母亲 Christina Williams 和妹妹
Sharon Williams-Scott。我无时无刻不感激你们一直给予我的爱和支持。
灰帽黑客:正义黑客手册的道德规范、渗透测试、攻击方法和漏洞分析技(第 3版)
VI
作者简介
Allen Harper,CISSP、PCI QSA,北卡罗莱纳州 N2NetSecurity, Inc.公司总裁和所有者。他
曾在美国海军陆战队服役 20 年并在伊拉克“旅游”之后退役。此外,他还曾经担任美国财政
部、国税局计算机安全应急响应中心(IRS CSIRC)的安全分析师。他经常会在像 Black Hat 和
Techno这样的会议上发表演讲和授课。
Shon Harris,CISSP,Logical Security总裁,作家、教育工作者和安全咨询师。曾经担任
过美国空军信息战部队的工程师,并且出版过一些有关信息安全领域的不同学科的著作和论
文。信息安全杂志(Information Security Magazine)曾经将她评为信息安全领域的 25最杰出的位
女性精英之一。
Jonathan Ness,CHFI,微软安全响应中心(MSRC)首席软件安全工程师。他和他的同事致
力于确保微软的安全更新能够全面地修复已报告的漏洞。他还负责微软的应急响应流程的技术
响应,致力于解决公开披露的针对微软软件的漏洞和攻击。他每月中有一个周末要担任预备役
部队的安全工程师。
Chris Eagle是位于美国加州蒙特利尔的海军研究生院计算机科学系的高级讲师。作为一位
具有超过 25 年经验的计算机工程师和科学家,他的研究兴趣包括计算机网络攻防、计算机取
证以及逆向工程和反逆向工程技术。他经常在 Black Hat会议上发表演讲,特别钟爱 Defcon的
夺旗(capture the flay)比赛。
Gideon Lenkey,CISSP,Ra Security Systems, Inc.公司总裁和联合创始人,这是一家总部位
于新泽西州的托管服务公司,他在那里专门负责测试企业 IT 基础设施的信息安全状况。他曾
为 FBI 提供过高级培训,而且担任过 FBI 在新泽西州的 InfraGard 项目的负责人。他在多个场
合中的杰出贡献得到了 FBI主管 Robert Muller的认可,而且经常为国内外政府机构提供咨询。
他经常为 Internet Evolution网站供稿,而且是东西方研究所网络安全
计划
项目进度计划表范例计划下载计划下载计划下载课程教学计划下载
的参与者。
Terron Williams,NSA IAM-IEM、CEH、CSSLP,Elster Electricity资深测试工程师,主要
关注智能网格安全。他曾经在 Nortel 担任安全测试工程师和 VoIP 系统集成工程师。还曾经在
Hakin9 IT Security Magazine 杂志编辑部工作,并在该杂志发表过多篇文章。他主要关注的是
VoIP、漏洞攻击研究、SCADA安全以及新兴的智能网格技术。
免责声明:本书中发表的内容均属本书作者的个人观点,并非代表政府或微软公司的
观点。
前 言
我已经受够了一场战争,更别提再来一场了。
——托马斯·杰弗逊
我不知道第三次世界大战的武器会是什么样子。但我知道第四次世界大战战场上用的肯定
是棍棒与石头。
——阿尔伯特·爱因斯坦
兵法非常简单。找出敌人在哪里,尽快到达那里,尽可能凶狠地打击他,而且要挺住。
——尤利西斯·S·格兰特
本书的目标是帮助培养更多技术精湛的、专注于抵御恶意黑客攻击的安全专家。事实一再
证明,对敌方的了解是非常重要的,包括他们的策略、技能、工具和动机。企业和国家所面临
的敌手非常专注,而且技艺超群。我们必须携起手来才能理解敌方的行动过程和流程,以确保
我们能够正确地挫败敌方具有破坏性的恶意攻击。
本书的作者希望为读者提供他们认为这个行业所需的信息,即对负责任的而且在意图和
物质方面真正合乎道德
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
的正义黑客技术的整体性讨论。这也是为什么本书一开始就给出
正义黑客的定义的原因所在,社会上对正义黑客的理解是非常模糊的。
本书对前两版中的材料进行了更新,并尝试将最全面、最新的技术、流程和材料汇集起来。
因此增加了 9章全新的内容,同时对其他章的内容进行了新新。
本书第Ⅰ部分制定了灰帽黑客必要的伦理和期望基础。该部分内容包括:
理清人们对白帽、黑帽和灰帽黑客的定义和特征的混淆认识
讨论在实施任何类型的正义黑客行动前应该了解的一些棘手的道德问题
讨论漏洞发现报告的难点以及可用于解决这些难题的一些模型
调查黑客攻击以及许多其他类型的恶意行为所涉及的法律问题
概览适当的漏洞发现流程以及当前提供指导方向的模型
第Ⅱ部分介绍了现如今其他书籍中没有讲到的更高级的渗透测试方法和工具。现在的许多
书籍讲的都是一些相同的、被无数次反复翻新的旧的工具和方法,而本书决定更加深入地讲解
真正的灰帽黑客正在使用的高级机制。该部分我们讨论如下内容:
用来实施渗透测试的自动化渗透测试方法和高级工具
最新的渗透测试工具
潜入攻击、社会工程以及内部攻击
第Ⅲ部分将深入底层代码,向读者讲解各种操作系统和应用程序的特定部件的工作原理以
及如何对它们加以利用。该部分将讨论如下内容:
介绍一些基本的编程知识,这些是理解剩余内容所需要掌握的概念
灰帽黑客:正义黑客手册的道德规范、渗透测试、攻击方法和漏洞分析技(第 3版)
VIII
如何利用栈操作漏洞以及如何识别和编写缓冲区溢出攻击代码
如何识别高级的 Linux和Windows漏洞以及如何对它们加以利用
如何创建不同类型的 shellcode 来开发自己的概念验证漏洞攻击程序和必要的软件,以测试和识
别漏洞
最新的攻击类型,包括基于客户端的、Web服务器、VoIP以及 SCADA攻击
第Ⅳ部分将更深入地研究正义黑客技术的最高级主题,甚至当今的许多安全专家都没有理
解这些主题。该部分将讨论如下内容:
被动和主动分析工具和方法
如何识别源代码和二进制文件中的漏洞
如何进行软件的逆向工程和组件的反汇编
模糊处理和调试技术
如何为二进制和源代码打补丁
第Ⅴ部分将讲解恶意软件分析。有时候正义黑客会遇到恶意软件,而且可能需要进行一些
基本的分析。该部分将讨论如下内容:
收集恶意软件样本
分析恶意软件,包括对反模糊处理技术进行讨论。
如果您希望进一步提高和加深对正义黑客技术的了解,那么本书非常适合您。
如果您有任何想法和评论,均可与我们联系,我们的反馈信箱是 wkservice@
vip.163.com,投稿信箱是 bookservice@vip.263.net。此外,如果希望了解与本书有关的额
外技术信息和资源,请浏览 www.grayhathackingbook.com 或 www.mhprofessional. com/
product.php?cat=112&isbn=0071742557。
源代码
在练习书中的示例时,可以选择手动输入代码或者使用本书附带的源代码文件。书中
用到的所有源代码都可以从 www.wrox.com下载。进入站点 http://www.wrox.com后,只需
要找到本书的书名(使用 Search搜索框或书名列表),单击本书详细信息页面上的 Download
Code链接,就可以得到本书所有的源代码。
下载完代码后,用您喜欢的压缩工具把它解压缩。此外,也可以去 Wrox 的主下载页
面 www.wrox.com/dynamic/books/download.aspx 找到本书或Wrox出版的其他书籍的代码。
注意:因为很多书的书名都相似,所以用 ISBN搜索更为容易。本书英文
版的 ISBN是 978-1-118-02196-5。
前 言
IX
勘误表
尽管我们竭尽所能来确保在正文和代码中没有错误,但人无完人,错误难免会发生。
如果您在Wrox出版的书中发现了错误(例如拼写错误或代码错误),我们将非常感谢您的反
馈。发送勘误表将节省其他读者的时间,同时也会帮助我们提供更高质量的信息。
要找到本书的勘误页面,可以进入 www.wrox.com,使用 Search搜索框或书名列表定
位本书,然后在本书的详细信息页面上单击 Book Errata链接。在这个页面上可以查看为本
书提交的、Wrox编辑粘贴上去的所有错误。完整的书名列表(包括每本书的勘误表)也可以
从 www.wrox.com/misc-pages/booklist.shtml上获得。
如果您在本书的勘误页面上没有看到您发现的错误,可以到 wkservice@vip.163.com上
填写表单,把您发现的错误发给我们。我们会检查这些信息,如果属实,就把它添加到本
书的勘误页面上,并在本书随后的版本中更正错误。
p2p.wrox.com
如果想和作者或同行进行讨论,请加入 http://p2p.wrox.com上的 P2P 论坛。该论坛是
一个基于Web的系统,您可以发布有关Wrox图书及相关技术的消息,与其他读者或技术
人员交流。该论坛提供了订阅功能,当您感兴趣的主题有新帖子发布时,系统会邮件通知。
Wrox的作者、编辑、其他业界专家和像您一样的读者都会出现在这些论坛中。
在 http://p2p.wrox.com 网站上,您会找到很多不同的论坛,它们不但有助于您阅读本
书,还有助于您开发自己的应用程序。加入论坛的步骤如下:
(1) 进入 http://p2p.wrox.com,单击 Register链接。
(2) 阅读使用条款,然后单击 Agree按钮。
(3) 填写加入该论坛必需的信息和其他您愿意提供的信息,单击 Submit按钮。
(4) 您将收到一封电子邮件,描述如何验证您的账户和完成加入过程。
加入之后,就可以发布新的消息和回复其他用户发布的消息。可以随时在Web上阅读
论坛里的消息。如果想让某个论坛的新消息以电子邮件的方式发给您,可以单击论坛列表
中论坛名称旁边的 Subscribe to this Forum图标。
要了解如何使用Wrox P2P的更多信息,请阅读 P2P FAQ,其中回答了论坛软件如何
使用的问题,以及许多与 P2P和Wrox图书相关的问题。要阅读 FAQ,单击任何 P2P页面
上的 FAQ链接即可。
注意:不加入 P2P 也可以阅读论坛里的消息。但是如果要发布自己的消
息,就必须加入。
目 录
第Ⅰ部分 “合乎道德的揭秘行为”
简介 .................................... 1
第 1章 正义黑客的道德规范 ................ 3
1.1 理解敌方策略的意义 ................. 3
1.2 认识安全领域的灰色区域 ......... 7
1.3 本书与正义黑客类图书
的关系 ........................................ 8
1.3.1 漏洞评估 ................................. 8
1.3.2 渗透测试 ................................. 9
1.4 关于黑客类图书和课程的
争议 .......................................... 12
1.4.1 工具的双重性 ....................... 13
1.4.2 识别攻击 ............................... 14
1.4.3 模拟攻击 ............................... 15
1.5 攻击者最喜欢利用的漏洞 ....... 15
第 2章 合乎道德的正常揭秘行为 ....... 19
2.1 各方看待问题的不同角度 ....... 20
2.2 CERT目前采取的工作流程 .... 21
2.3 完全揭秘策略—
RainForest Puppy Policy .......... 23
2.4 Internet安全组织 ..................... 24
2.4.1 发现漏洞 ............................... 25
2.4.2 通知 ....................................... 25
2.4.3 验证 ....................................... 27
2.4.4 解决 ....................................... 29
2.4.5 发布 ....................................... 30
2.5 争议仍将存在 ........................... 30
2.6 案例分析 ................................... 34
2.6.1 正当揭秘过程的优缺点 ....... 35
2.6.2 供应商更加关注 ................... 38
2.7 接下来应该做什么 ................... 38
第Ⅱ部分 渗透测试及工具 .............. 41
第 3章 社会工程攻击 ......................... 43
3.1 社会工程攻击原理 ................... 43
3.2 实施社会工程攻击 ................... 44
3.3 渗透测试中常用到的
攻击手段 .................................. 46
3.3.1 好心人 ................................... 47
3.3.2 会议室 ................................... 51
3.3.3 加入公司 ............................... 53
3.4 准备好进行面对面的攻击 ....... 54
3.5 防御社会工程攻击 ................... 56
第 4章 潜入攻击 ................................ 57
4.1 潜入攻击如此重要的原因 ....... 57
4.2 实施潜入攻击 ........................... 58
4.2.1 侦察 ....................................... 58
4.2.2 思想准备 ............................... 60
4.3 进入目标建筑物的常用方法 ..... 60
4.3.1 吸烟区入口 ........................... 61
4.3.2 人工检查点 ........................... 62
4.3.3 锁住的门 ............................... 64
4.3.4 物理方式开锁 ....................... 66
4.3.5 进入目标之后 ....................... 69
4.4 防御潜入攻击 ........................... 69
第 5章 内部攻击 ................................ 71
5.1 模拟内部攻击的重要性 ........... 71
5.2 实施内部攻击 ........................... 72
5.2.1 工具和准备工作 ................... 72
5.2.2 了解情况 ............................... 72
5.2.3 获得本地管理员权限 ............ 73
5.2.4 禁用防病毒软件 ................... 76
5.2.5 使用 Cain ............................... 77
灰帽黑客:正义黑客的道德规范、渗透测试、攻击方法和漏洞分析技术(第 3版)
X
5.3 防御内部攻击 ........................... 83
第 6章 使用BackTrack Linux发行 ..... 85
6.1 BackTrack简介 ........................ 85
6.2 将 BackTrack安装到 DVD
或优盘 ...................................... 86
6.3 直接在虚拟机中使用 Back
Track ISO映像文件 ................. 87
6.3.1 使用 VirtualBox创建
BackTrack虚拟机 ............... 88
6.3.2 引导 BackTrack LiveDVD
系统 ....................................... 88
6.3.3 探索 BackTrack X窗口
环境 ...................................... 89
6.3.4 启动网络服务 ....................... 90
6.4 永久性更改 BackTrack............. 90
6.4.1 将 BackTrack完整地安装
在硬盘或者优盘中 ................ 91
6.4.2 新建一个包含永久性更改
信息的 ISO文件 ................... 92
6.4.3 使用自定义文件自动保存
和恢复更改 ........................... 94
6.5 研究 BackTrack引导菜单........ 95
6.6 更新 BackTrack ........................ 97
第 7章 使用 Metasploit ...................... 99
7.1 Metasploit简介 ......................... 99
7.2 获取Metasploit ......................... 99
7.3 使用Metasploit控制台加载
攻击工具 ................................. 100
7.4 使用Metasploit攻击客户端
漏洞 ........................................ 105
7.5 使用Metasploit Meterpreter
进行渗透测试 ......................... 107
7.5.1 使用Meterpreter进行
键盘记录 ............................ 110
7.5.2 使用Meterpreter以不同的已
登录用户身份运行代码 ...... 110
7.5.3 使用Meterpreter的 hashdump
命令和Metasploit的psexec命令
以及共享口令登录 .............. 112
7.6 Metasploit的自动化
与脚本化 ................................ 113
7.7 更进一步探讨Metasploit ....... 115
第 8章 渗透测试管理 ....................... 117
8.1 制定渗透测试计划 ................. 117
8.1.1 渗透测试的类型 ................. 117
8.1.2 渗透测试的范围 ................. 118
8.1.3 渗透测试的位置 ................. 118
8.1.4 渗透测试小组成员构成 ...... 118
8.1.5 方法和标准 ......................... 118
8.1.6 渗透测试的各个阶段 .......... 119
8.1.7 渗透测试计划 ..................... 120
8.2 签署渗透测试协议 ................. 121
8.2.1 工作声明 ............................. 121
8.2.2 “保释信” ......................... 121
8.3 实施渗透测试 ......................... 122
8.3.1 测试启动会议 ..................... 122
8.3.2 渗透测试中的资源访问 ...... 122
8.3.3 测试预期值管理 ................. 123
8.3.4 测试问题管理 ..................... 123
8.3.5 欲速则不达 ......................... 123
8.3.6 外部和内部协同 ................. 123
8.4 在渗透测试中进行信息共享 ...... 124
8.5 生成渗透测试结果报告 ......... 128
8.5.1 报告格式 ............................. 128
8.5.2 报告摘要 ............................. 128
第Ⅲ部分 漏洞攻击 ........................ 129
第 9 章 编程技能 ............................ 131
9.1 C编程语言 ............................. 131
9.1.1 C语言基本结构 .................. 131
9.1.2 程序范例 ............................. 135
9.1.3 使用 gcc进行编译 .............. 136
9.2 计算机内存 ............................. 137
9.2.1 随机存取存储器(RAM) ...... 137
9.2.2 字节序 ................................. 137
9.2.3 内存分段 ............................. 138
9.2.4 内存中的程序 ..................... 138
目 录
XI
9.2.5. 缓冲区 .................................. 139
9.2.6. 内存中的字符串 .................. 139
9.2.7 指针 ..................................... 139
9.2.8 内存知识小结 ....................... 140
9.3 Intel处理器 ............................. 141
9.3.1 寄存器 ................................. 141
9.4 汇编语言基础 ......................... 142
9.4.1 机器指令、汇编语言与
C语言 ................................. 142
9.4.2 AT&T与 NASM ................. 142
9.4.3 寻址模式 ............................. 144
9.4.4 汇编文件结构 ..................... 145
9.4.5 汇编过程 ............................. 146
9.5 使用 gdb进行调试 ................. 146
9.5.1 gdb基础 .............................. 146
9.5.2 使用 gdb进行反汇编 ......... 148
9.6 Python编程技能 ..................... 149
9.6.1 获取 Python ......................... 149
9.6.2 Python中的 Hello World
程序 ..................................... 149
9.6.3 Python对象 ......................... 150
9.6.4 字符串 ................................. 150
9.6.5 数字 ..................................... 151
9.6.6 列表 ..................................... 152
9.6.7 字典 ..................................... 153
9.6.8 Python文件操作 ................. 154
9.6.9 Python套接字编程 ............. 155
第 10章 基本的 Linux漏洞攻击 ....... 157
10.1 栈操作 ................................... 157
10.1.1 函数调用过程 ................. 158
10.2 缓冲区溢出 ........................... 159
10.2.1 meet.c溢出 ..................... 160
10.2.2 缓冲区溢出的后果 ......... 163
10.3 本地缓冲区溢出漏洞攻击 ..... 164
10.3.1 漏洞攻击组成部分 ......... 165
10.3.2 在命令行上进行栈溢出
漏洞攻击 ........................ 167
10.3.3 使用通用漏洞攻击代码
进行栈溢出漏洞攻击 ..... 168
10.3.4 对小缓冲区进行
漏洞攻击 ......................... 170
10.4 漏洞攻击开发过程 ............... 173
10.4.1 控制 eip ........................... 173
10.4.2 确定偏移 ......................... 173
10.4.3 确定攻击途径 ................. 176
10.4.4 构建漏洞攻击三明治 ..... 176
10.4.5 测试漏洞攻击 ................. 177
第 11章 高级 Linux漏洞攻击 ........... 179
11.1 格式化字符串漏洞攻击 ....... 179
11.1.1 问题描述 ......................... 179
11.1.2 从任意内存读取 ............. 183
11.1.3 写入任意内存 ................. 184
11.1.4 利用.dtors获得根
特权级 ............................ 186
11.2 内存保护机制 ....................... 189
11.2.1 编译器改进 ..................... 190
11.2.2 内核补丁和脚本 ............. 193
11.2.3. “返回到 libc”漏洞
攻击 ................................ 194
11.2.4 综合比较 ......................... 202
第 12章 Shellcode 策略 ................... 203
12.1 用户空间 shellcode ............... 203
12.1.1 系统调用 ......................... 203
12.1.2 基本 shellcode ................. 204
12.1.3 端口绑定 shellcode ......... 205
12.1.4 反向 shellcode ................. 206
12.1.5 查找套接字 shellcode ..... 207
12.1.6 命令执行代码 ................. 208
12.1.7 文件传输代码 ................. 208
12.1.8 多级 shellcode ................. 209
12.1.9 系统调用代理
shellcode ......................... 209
12.1.10 进程注入 shellcode ....... 210
12.2 其他 shellcode考虑因素 ...... 211
12.2.1 shellcode编码 ................. 211
12.2.2 自我破坏 shellcode ......... 212
12.2.3 反汇编 shellcode ............. 213
12.3 内核空间 shellcode ............... 214
灰帽黑客:正义黑客的道德规范、渗透测试、攻击方法和漏洞分析技术(第 3版)
XII
12.3.1 内核空间考虑因素 ......... 214
第 13章 编写 Linux shellcode .......... 217
13.1 基本的 Linux shellcode ........ 217
13.1.1 系统调用 ......................... 217
13.1.2 使用 C进行系统调用 .... 218
13.1.3 使用汇编语言进行
系统调用 ........................ 219
13.1.4 系统调用 exit .................. 219
13.1.5 系统调用 setreuid ........... 221
13.1.6 利用 execve实现创建
shell的 shellcode ............ 222
13.2 实现端口绑定 shellcode ....... 226
13.2.1 Linux套接字编程........... 226
13.2.2 采用汇编语言编程建立
一个套接字 ..................... 228
13.2.3 测试 shellcode ................. 231
13.3 实现反向连接 shellcode ....... 234
13.3.1 反向连接C语言编程 ...... 234
13.3.2 反向连接汇编程序 ......... 235
13.4 shellcode编码 ....................... 237
13.4.1 简单的 XOR编码 ........... 237
13.4.2 编码后 shellcode的
结构 ................................. 238
13.4.3 JMP/CALL XOR解码
器示例 ............................. 238
13.4.4 FNSTENV XOR示例 ..... 239
13.4.5 将代码组合起来 ............. 241
13.5 利用Metasploit自动生成
shellcode ............................... 244
13.5.1 利用Metasploit生成
shellcode ......................... 244
13.5.2 利用Metasploit对
shellcode进行编码 ........ 245
第 14章 Windows漏洞攻击 ............. 247
14.1 Windows程序编译与调试 .... 247
14.1.1 在Windows上进行
编译 ................................. 247
14.1.2 在Windows上用
OllyDbg进行调试 ......... 249
14.2 编写Windows漏洞攻击
程序 ...................................... 253
14.2.1 漏洞攻击程序开发
过程回顾 ........................ 254
14.2.2 ProSSHD服务器 ............ 254
14.2.3 控制 eip ........................... 255
14.2.4 确定偏移 ......................... 257
14.2.5 确定攻击途径 ................. 258
14.2.6 构建攻击三明治 ............. 261
14.2.7 根据需要调试漏洞
攻击程序 ......................... 262
14.3 理解 SEH .............................. 264
14.3.1 SEH的实现 ..................... 264
14.4 理解Windows内存保护
(XP SP3、Vista、7和
Server 2008) .......................... 266
14.4.1 基于栈的缓冲区溢出
检测(/GS) ....................... 266
14.4.2 SafeSEH .......................... 268
14.4.3 SEHOP ............................ 268
14.4.4 堆保护 ............................. 268
14.4.5 DEP