Python是一门常用的编程语言,它不仅上手容易,而且还拥有丰富的支持库。对经常需要针对自己所处的特定场景编写专用工具的黑客、计算机犯罪调查人员、渗透测试师和安全工程师来说,Python的这些特点可以帮助他们又快又好地完成这一任务,以极少的代码量实现所需的功能。本书结合具体的场景和真实的案例,详述了Python在渗透测试、电子取证、网络流量分析、无线安全、网站中信息的自动抓取、病毒免杀等领域内所发挥的巨大作用。
关于Python的书虽然已有不少,但从安全从业者角度全方位剖析Python的书籍几乎没有,《Python绝技:运用Python成为**黑客》填补了这个的空白:包含了渗透测试、Web分析、网络分析、取证分析以及利用无线设备等方面的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 FrostX
技术编辑——Mark BaggettXI
前言——Mark BaggettXII
第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
抓取应用的Banner32
线程扫描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
把所有的代码放在一起,构成我们自己的Conficker67
编写你自己的0day概念验证代码70
基于栈的缓冲区溢出攻击70
添加攻击的关键元素71
发送漏洞利用代码72
汇总得到完整的漏洞利用脚本73
本章小结75
参考文献75
第3章 用Python进行取证调查77
引言:如何通过电子取证解决BTK凶杀案77
你曾经去过哪里?——在注册表中分析无线访问热点78
使用WinReg读取Windows注册表中的内容79
使用Mechanize把MAC地址传给Wigle81
用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-flux141
你的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的会话cookies187
牧羊人——找出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及cookie203
把代码集成在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
序一
在我从事信息安全技术研究学习的近 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 博士——上战车,兄弟!
作者简介
参编作者——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。