前言
序一
在我从事信息安全技术研究学习的近 20 年间,带领过不少安全团队,发现编程能力是真 正黑客和“脚本小子”的本质区别,在安全研究人员和希望成长为黑客高手的技术爱好者们 的成长过程中一直面临着一个编程语言的选择问题,但是 Python 在黑客领域拥有着霸主的地 位。在 XCon 召开的这 15 年中,Python 被越来越多地应用,越来越多的优秀黑客工具和安全 工具都是用 Python 开发的,Python 已经发展成为和 C/C++一样作为黑客必备的技能之一。 Python 是一门非常优秀的主流编程语言,拥有用户友好的语法和大量的第三方模块。它 提供了一个更好的支撑平台,能明显平缓大多数程序员初学攻击技术时的学习曲线。这本书 涵盖了黑客、渗透测试人员、取证分析师和安全工程师需要具备的很多技巧。 Python 是一门优秀的黑客编程语言,复杂度低、效率高,入门门槛低,尽管已经有了很 多攻击工具,但 Python 为编写你自己的攻击工具提供了一个极好的开发平台,仍然对解决某 些特定条件下那些已有工具无法处理的问题。这本书的特点是剖析技巧的本质,使用 Python 内置模块和优秀的第三方模块来完成,并通过众多实例引领读者更好地体会理解 Python 的技 巧和用法。 本人与本书译者相识相交多年,亦师亦友。我们经常在一起讨论交流技术,探讨发展, 对译者的技术水平和经验能力是非常认可与钦佩的,也多次邀请他来 XCon 和 XKungfoo 进行 演讲并分享技术,每每演讲都是博得广大技术高手的赞扬与认可。从此书中可以看出,作者 在攻防、取证和编程多反面的深厚功底,也可以看出译者在这方面的超强能力和丰富经验。 这本书包含渗透测试、Web 分析、网络分析、取证分析,以及利用无线设备等方面的 Python 攻击利用方法,并且书中采用的实例都会深入浅出地讲解说明 Python 该如何帮助你实现各种 攻击的方法。不管你是刚开始学习 Python 程序的小白,还是一个具有丰富经验的渗透攻击高 手,这本书都会给你非常大的帮助,引领你成为顶级的黑客高手。
在我创办的“神话——信息安全人才颠覆行动”中,Python 是我们的必修课之一。本书 将会是我们“神话行动”学员学习的专业书籍之一。
王英键(呆神) XCon 创始人,神话行动创始人,XFocus 创始人之一
序二
作为一名安全研究从业人员,在日常工作中经常需要编写代码来解决一些简单的自动化 文本处理、验证自己的某些推测、编写一套工具等。回眸大学时代,那时候不明白脚本语言 的强大性,遇到任何问题一概用 C 语言来解决。久而久之,发现自己的研究进度总是比别人 慢,有时候一些非常简单的字符串处理排版问题,用 C 语言一写就是几个小时,而用脚本几 分钟就能搞定。在这之后,我逐渐开始改用 VBScript 作为我主要的脚本编写语言,并且在很 长一段时间里满足了我绝大多数的需求。某天,当我接到一个应急响应任务,在 Linux 上做 一些日志搜集分析时,已经理解脚本语言强大的快速开发能力的我,只能用非常愚蠢的办 法——将日志复制到 Windows 上再处理,而就在那时,我已经感到,熟悉一门更加强大、跨 平台的脚本语言迫在眉睫。自那之后,我逐渐接触了 Perl,并且能够通过 Perl 来满足一些日 常的需要。可是,Perl 代码的可读性总是让我在看别人代码的时候显得毫无效率,在朋友的 推荐下,我最终选择了 Python。 Python 是一门非常容易上手的脚本语言,相比 Perl 语言,我几乎是在完全不懂 Python 语 法的情况下读懂了网上一些简单的 Python 代码,在简单的语法学习之后,便可以事半功倍地 满足日常需要。Python 对于白帽黑客来说,也是必须掌握的一门脚本语言。相比其他脚本语 言来说,其丰富的库几乎可以覆盖安全研究的方方面面,例如:强大的 Scapy 库可以很方便 地实现跨平台的网络嗅探、网络发包等需求;文档分析工具 PyPDF 提供了强大的 PDF 格式解 析功能,这些功能对 PDF 格式的 Fuzz 测试、PDF 0day 的分析,甚至 PDF Exploit 的编写都起 了极大的帮助。这样的例子还举不胜举,在我参加的两届 Pwn2Own 黑客大赛的准备过程中, 我几乎天天和 Python 打交道。例如,在使用 IDA 分析一个 OS X 的服务时,编写一个 IDA Python 脚本可以将一些没有符号的接口提取出来进行测试,对函数进行 Pattern 筛选,找出可 疑函数进行进一步代码审计;在 Exploit Safari 中,堆布局是非常关键的一环,lldb 提供的 Python 接口可以很方便地对 WebKit 对象进行分析,对每个 WebKit 对象大小以及快速发现对 象的可利用特性,对最终编写出完整的攻击代码起了决定性的作用。
虽然 Python 脚本上手容易,要迅速掌握其丰富的安全工具库并熟练运用绝非易事。我刚 接触 Python 语言时,很多朋友就对我说过:Python 是一门非常适合白帽黑客学习的语言,然 而我却在很长一段时间里一知半解,用了几年时间理解了这句话的含义。多而杂的工具库需 要时间和经验的积累,才能慢慢“吃透”和掌握。市面上的 Python 入门书籍虽然非常多,但 真正从安全从业者角度深入浅出介绍的书籍几乎没有。本书的出现无疑给安全从业者带来了 福音,对 Python 初学者来说,第 1 章内容可以使其迅速掌握 Python 语言。而之后的几章几乎 涵盖了安全研究的每个方面,并且配以近几年比较热门的案例(例如:LOIC、Conficker 等),无论你是进行漏洞研究还是取证分析、渗透测试、DDoS 对抗、反病毒等,都可以从本 书中学到有用的知识和技能,使自己在学习过程中少走弯路,在工作中事半功倍。更加难得 的是,负责本书翻译工作的崔孝晨老师是一位具有极其丰富数字取证从业经验的安全界专 家,并且他曾经翻译过多本安全技术书籍,只有像他这样国内顶级安全从业者并且具备丰富 翻译经验的专家,才能将这样一本好书的精髓以中文的方式原原本本地还原在读者面前,而 读者也可以从字里行间体会到他“功力”的深厚。 相信读者会从本书中受益良多。
陈良 KeenTeam 高级研究员
译者序
Python 是一门非常常用的编程语言,除应用在科学计算、大数据处理等人们熟知的领域 外,在计算机安全领域中使用也非常广泛。这是因为对黑客、软件逆向工程师、电子取证人 员来说,Python 与 C/C++语法上的相似性使它上手十分容易。 本人大约在 2008 年通过 IDAPython 接触到了 Python 语言。相对于 IDA 自带的 IDC 脚本 来说,IDAPython 的功能非常强大,可以很方便地搞定用 IDC 完成起来很麻烦的一些工作; 而相对于用 C/C++开发 IDA 插件,IDAPython 使用非常灵活,要写的代码量也少了很多,当 时感觉真是“出门在外、居家旅行、杀人越货之必备良药”。当时,Immunity Debugger 等各种 常用工具也都支持 Python 脚本,甚至出现了纯用 Python 打造的计算机内存取证分析工具—— Volatility。 2010 年,我应丁赟卿之邀,成为他翻译的大作《Python 灰帽子:黑客与逆向工程师的 Python 编程之道》一书的技术审校,审校的过程也使我对 Python 在安全领域所能发挥的作用 有了更深刻的理解。但美中不足的是,该书仅仅介绍了在一些调试器、反汇编器等安全专用 工具中 Python 的使用方法,甚至可以说它只是对一些专用的 Python 库的介绍。当然,这些很 重要,但除此之外,Python 的强大功能应该能在更多的场景下发挥作用。 应该说这本 Violent Python: A Cookbook for Hackers, Forensic Analysts, Penetration Testers and Security Engineers(《Python 绝技:运用 Python 成为顶级黑客》)确实是填补了这方面的 空白:书中结合具体的场景,甚至是真实的案例,详述了 Python 在渗透测试、电子取证、网 络流量分析、无线安全、网站中信息的自动抓取、病毒免杀等领域内的用途。每一章都针对 一个专门的领域,完全用 Python 完整实现了非常实用的功能,而且代码量非常少。 本书在国外 Amazon 网站上的评价也非常高——76 个用户评价,得分 4 星半,是很高的 分数。 本书由上海公安高等专科学校基础教研部的教师教官翻译完成,全书共 7 章,分工安排 如下:
第 1、2 章由武晓音翻译,第 3 章由崔孝晨翻译,第 4 章由吴杰丽翻译,第 5 章由孙蓓翻 译,第 6 章由王宏翻译,第 7 章由龚济悦翻译。全书由崔晓晨统一审校。 本书中文版的面世要感谢博文视点的各位编辑老师,特别是李利健、刘皎老师,感谢你 们对我的一贯支持和耐心指导,使我从中获益良多!同时也要感谢你们为本书的出版所花费 的大量时间! 由于翻译时间仓促,书中的错误在所难免,敬请读者不吝指正。
崔孝晨 2015 年 10 月
致谢
军事用语中,“观察你的六点钟方向”意思是说要你注意后方。当小队长在观察十二点 钟方向的情况时,小队中至少应该有一名队员转向后方,观察六点钟方向有无小队长无法观 测到的敌情。当我第一次去找出版本书的指导老师时,他就告诫我:在我的队友专注于观察 我的六点钟方向时,我能做的唯一一件事就是:也好好地看着他的六点钟方向。我当时略加 思索,付出这么大的努力对我这一生会有什么回报?三秒钟之后,我意识到:他们都是很棒 的。 感谢我的技术编辑——Mark Baggett,你兢兢业业的技术校订保证了这本书的质量。感谢 Reeves 博士、Freeh 博士、Jacoby 博士和 Blair 博士——感谢你们对一个年轻急躁的军官的多 年栽培,把我变成了这么一名能写出一本书的非传统学者。感谢 Fanelli 博士,感谢您教导 我:神明变化之才,必出于规矩方圆之手,踏实打好基础,别老想着不走寻常路。感谢 Conti 博士,感谢您总是及时地引导我大胆采取行动。感谢我的同窗校友,特别是“忍者”社团的 Alan、Alex、Arod、Chris、Christina、Duncan、Gremlin、Jim、James、Kevin、Rob、 Steven、Sal 和 Topher——你们的创新不断地激发着我的灵感。 感谢 Rob Frost,你写的“网络侦查”那一章比我写的强太多了!感谢 Matt、Ryan、 Kirk、Mark、Bryan 和 Bill,感谢你们理解我之前为什么整晚不睡觉,眼瞅着时针从 1 走到 12。感谢我深爱的妻子,我调皮的儿子和我的忍者公主——感谢你们在我写本书的过程中, 给我无条件的爱、理解和支持。感谢我的父母——感谢你们对我价值观的教育。最后还要感 谢 Cook 博士——上战车,兄弟!
导语摘要
Python 是一门常用的编程语言,它不仅上手容易,而且还拥有丰富的支持库。对经常需要针对自己所 处的特定场景编写专用工具的黑客、计算机犯罪调查人员、渗透测试师和安全工程师来说,Python 的这些 特点可以帮助他们又快又好地完成这一任务,以极少的代码量实现所需的功能。《Python绝技:运用Python成为*黑客》结合具体的场景和真 实的案例,详述了 Python 在渗透测试、电子取证、网络流量分析、无线安全、网站中信息的自动抓取、 病毒免杀等领域内所发挥的巨大作用。
《Python绝技:运用Python成为*黑客》适合计算机安全管理人员、计算机犯罪调查和电子取证人员、渗透测试人员,以及所有对计算机 安全感兴趣的爱好者阅读。同时也可供计算机、信息安全及相关专业的本/专科院校师生学习参考。
作者简介
参编作者——Robert Frost
2011 年 Robert Frost 毕业于美国军事学院,随后成为一名陆军通信兵。他以优异的成绩获 得了计算机科学的理学学士学位,其毕业论文主要关注于开源信息的收集。在 2011 年度电子 防御练习赛中,由于他规避规则的能力,Rob 个人被公认为国家锦标赛团队中最优秀的两名 成员之一。Rob 也参加并赢得了多次电子安全竞赛。
技术编辑——Mark Baggett
Mark Baggett 是 SANS 的认证讲师,担任了 SANS 的渗透测试课程体系中多门课程的授 课任务。Mark 是提供应急响应和渗透测试服务的深度防御公司的首席顾问和创始人。目前他 是 SANS 防御部门的技术指导教师,专注于把 SANS 的资源实际应用于提升军事能力的方 向。 Mark 在跨国公司和财富 1000 强企业中拥有多个信息安全职位。他曾经是一名软件开发 者、网络和系统工程师、安全管理员和 CISO(首席信息安全官)。作为一名首席信息安全 官,Mark 对信息安全策略的制定、遵守情况、应急事件的响应,以及其他信息安全操作负 责。Mark 掌握当前在销售、实现和支持信息安全时,信息安全专家所面临挑战的第一手资 料。Mark 也是信息安全社区中的一名活跃成员,是 Greater Augusta ISSA 的创始人兼总裁。 他拥有包括 SANS 声誉卓著的 GSE 在内的多张认证证书。Mark 的个人博客中对多个安全主 题均有涉猎,其地址为:http://www.pauldotcom.com。
目录
序一 III
序二 V
译者序 VII
致谢 IX
参编作者――Robert Frost X
技术编辑――Mark Baggett XI
前言――Mark Baggett XII
第1章 入门 1
引言:使用Python进行渗透测试 1
准备开发环境 2
安装第三方库 2
Python解释与Python交互 5
Python语言 6
变量 6
字符串 7
List(列表) 7
词典 8
网络 9
条件选择语句 9
异常处理 10
函数 11
迭代 13
文件输入/输出 15
sys模块 16
OS模块 17
第一个Python程序 19
第一个程序的背景材料:布谷蛋 19
第一个程序:UNIX口令破解机 20
第二个程序的背景材料:度恶为善 22
第二个程序:一个Zip文件口令破解机 23
本章小结 27
参考文献 28
第2章 用Python进行渗透测试 29
引言:Morris蠕虫现在还有用吗 29
编写一个端口扫描器 30
TCP全连接扫描 30
抓取应用的Banner 32
线程扫描 34
使用NMAP端口扫描代码 36
用Python构建一个SSH僵尸网络 38
用Pexpect与SSH交互 39
用Pxssh暴力破解SSH密码 42
利用SSH中的弱私钥 45
构建SSH僵尸网络 49
利用FTP与Web批量抓“肉机” 52
用Python构建匿名FTP扫描器 53
使用Ftplib暴力破解FTP用户口令 54
在FTP服务器上搜索网页 55
在网页中加入恶意注入代码 56
整合全部的攻击 58
Conficker,为什么努力做就够了 62
使用Metasploit攻击Windows SMB服务 64
编写Python脚本与Metasploit交互 65
暴力破解口令,远程执行一个进程 67
把所有的代码放在一起,构成我们自己的Conficker 67
编写你自己的0day概念验证代码 70
基于栈的缓冲区溢出攻击 70
添加攻击的关键元素 71
发送漏洞利用代码 72
汇总得到完整的漏洞利用脚本 73
本章小结 75
参考文献 75
第3章 用Python进行取证调查 77
引言:如何通过电子取证解决BTK凶杀案 77
你曾经去过哪里?――在注册表中分析无线访问热点 78
使用WinReg读取Windows注册表中的内容 79
使用Mechanize把MAC地址传给Wigle 81
用Python恢复被删入回收站中的内容 85
使用OS模块寻找被删除的文件/文件夹 85
用Python把SID和用户名关联起来 86
元数据 88
使用PyPDF解析PDF文件中的元数据 88
理解Exif元数据 90
用BeautifulSoup下载图片 91
用Python的图像处理库读取图片中的Exif元数据 92
用Python分析应用程序的使用记录 95
理解Skype中的SQLite3数据库 95
使用Python和SQLite3自动查询Skype的数据库 97
用Python解析火狐浏览器的SQLite3数据库 103
用Python调查iTunes的手机备份 111
本章小结 116
参考文献 116
第4章 用Python分析网络流量 119
引言:“极光”行动以及为什么明显的迹象会被忽视 119
IP流量将何去何从?――用Python回答 120
使用PyGeoIP关联IP地址和物理位置 121
使用Dpkt解析包 121
使用Python画谷歌地图 125
“匿名者”真能匿名吗?分析LOIC流量 128
使用Dpkt发现下载LOIC的行为 128
解析Hive服务器上的IRC命令 130
实时检测DDoS攻击 131
H.D.Moore是如何解决五角大楼的麻烦的 136
理解TTL字段 136
用Scapy解析TTL字段的值 138
“风暴”(Storm)的fast-flux和Conficker的domain-flux 141
你的DNS知道一些不为你所知的吗? 142
使用Scapy解析DNS流量 143
用Scapy找出fast-flux流量 144
用Scapy找出Domain Flux流量 145
Kevin Mitnick和TCP序列号预测 146
预测你自己的TCP序列号 147
使用Scapy制造SYN泛洪攻击 148
计算TCP序列号 148
伪造TCP连接 150
使用Scapy愚弄入侵检测系统 153
本章小结 159
参考文献 159
第5章 用Python进行无线网络攻击 161
引言:无线网络的(不)安全性和冰人 161
搭建无线网络攻击环境 162
用Scapy测试无线网卡的嗅探功能 162
安装Python蓝牙包 163
绵羊墙――被动窃听无线网络中传输的秘密 165
使用Python正则表达式嗅探信用卡信息 165
嗅探宾馆住客 168
编写谷歌键盘记录器 171
嗅探FTP登录口令 174
你带着笔记本电脑去过哪里?Python告诉你 176
侦听802.11 Probe请求 176
寻找隐藏网络的802.11信标 177
找出隐藏的802.11网络的网络名 178
用Python截取和监视无人机 179
截取数据包,解析协议 179
用Scapy制作802.11数据帧 181
完成攻击,使无人机紧急迫降 184
探测火绵羊 186
理解Wordpress的会话cookies 187
牧羊人――找出Wordpress Cookie重放攻击 188
用Python搜寻蓝牙 190
截取无线流量,查找(隐藏的)蓝牙设备地址 192
扫描蓝牙RFCOMM信道 195
使用蓝牙服务发现协议 196
用Python ObexFTP控制打印机 197
用Python利用手机中的BlueBug漏洞 197
本章小结 199
参考文献 199
第6章 用Python刺探网络 201
引言:当今的社会工程 201
攻击前的侦察行动 202
使用Mechanize库上网 202
匿名性――使用代理服务器、User-Agent及cookie 203
把代码集成在Python类的AnonBrowser中 206
用anonBrowser抓取更多的Web页面 208
用Beautiful Soup解析Href链接 209
用Beautiful Soup映射图像 211
研究、调查、发现 213
用Python与谷歌API交互 213
用Python解析Tweets个人主页 216
从推文中提取地理位置信息 218
用正则表达式解析Twitter用户的兴趣爱好 220
匿名电子邮件 225
批量社工 226
使用Smtplib给目标对象发邮件 226
用smtplib进行网络钓鱼 227
本章小结 230
参考文献 231
第7章 用Python实现免杀 233
引言:火焰腾起! 233
免杀的过程 234
免杀验证 237
本章小结 243
参考文献 243
内容摘要
Python 是一门常用的编程语言,它不仅上手容易,而且还拥有丰富的支持库。对经常需要针对自己所 处的特定场景编写专用工具的黑客、计算机犯罪调查人员、渗透测试师和安全工程师来说,Python 的这些 特点可以帮助他们又快又好地完成这一任务,以极少的代码量实现所需的功能。本书结合具体的场景和真 实的案例,详述了 Python 在渗透测试、电子取证、网络流量分析、无线安全、网站中信息的自动抓取、 病毒免杀等领域内所发挥的巨大作用。
本书适合计算机安全管理人员、计算机犯罪调查和电子取证人员、渗透测试人员,以及所有对计算机 安全感兴趣的爱好者阅读。同时也可供计算机、信息安全及相关专业的本/专科院校师生学习参考。
主编推荐
关于Python的书虽然已有不少,但从安全从业者角度全方位剖析Python的书籍几乎没有,本书填补了这个的空白:包含了渗透测试、Web分析、网络分析、取证分析以及利用无线设备等方面的Python攻防方法。
无论你是从事安全研究的哪个方向,书中的大量深入浅出的案例分析均可以让你掌握有用的技能,快速上手编写代码,在工作中事半功倍,拓展视野、培养和锻炼自己的黑客思维。
精彩内容
序一
在我从事信息安全技术研究学习的近 20 年间,带领过不少安全团队,发现编程能力是真 正黑客和“脚本小子”的本质区别,在安全研究人员和
以下为对购买帮助不大的评价