笔者最近在学习《Python黑帽子渗透测试 1st》这本书,但是在查阅的时候发现作者在今年四月已经更新了最新第二版,而且是针对Python 3的(第一版是Python 2),但国内还没有合适的翻译而且官方的售价还是有点小贵的,毕竟笔者是个无产阶级,所以打算自己学习新版的同时翻译一下新版的内容,一方面是练习一下英文翻译,另一方面分享给各位同学。前言少叙。
先看一下很多大佬对此书第一版的评价:
PRAISE FOR THE FIRST EDITION OF BLACK HAT PYTHON
“这是一本令人难以置信的书,只需要通过一两项简单的调整,很多程序将至少有十年的生命期(保质期),这对于一本安全书籍是很罕见的。”——Stephen Northcutt, SANS技术研究所的创始主席
“这是一本使用Python实现攻击性的安全目的的好书。”——Andrew Case, Volatility核心开发者和《The Art of Memory Forensics》的合著者
“如果你真的拥有一个黑客的心态,一个火种就是你需要的全部,把它变成你自己的,做一些更惊奇的事吧。Justin Seitz(作者)给了你很多火种。”—— Ethical Hacker
“无论你是感兴趣成为一名黑客或渗透测试人员,还是只是想了解它们是如何工作的,这本书都是你需要阅读的。深刻,技术充实且开拓视野。”—— Sandra Henry-Stocker, IT World
“对于以前接触过Python的技术安全专业人士来说,这绝对是一本推荐的读物。”—— Richard Austin, IEEE Cipher
PS:作者还专门用一页写下:
To my beautiful wife, Clare. I love you. —Justin
留下单身的泪水。。。
关于作者
Justin Seitz是一位著名的网络安全和开源信息从业者,也是加拿大安全和信息公司Dark River Systems Inc的联合创始人。他的作品曾在《Popular Science》
《Motherboard》和《Forbes》杂志上发表。Justin 写了两本关于开发黑客工具的书。他创建了AutomatingOSINT.com培训平台和Hunchly,一个供调查人员使用的开源信息收集工具。Justin 也是公民新闻网站Bellingcat的撰稿人,国际刑事法院技术咨询委员会的成员,华盛顿特区高级国防研究中心的研究员。
Tim Arnold目前是一名专业的Python程序员和统计学家。他早年在北卡罗来纳州立大学(North Carolina State University)担任受人尊敬的国际演说家和教育家。在他的成就中有,他保障教育工具能够在世界范围内服务不足的社区普及,包括让盲人也能接触到数学文献。
在过去的许多年里,Tim作为主要的软件开发人员在SAS研究所工作,为技术和数学文档设计和实现一个发布系统。他曾任职于Raleigh ISSA董事会,并担任国际统计研究所(International Statistical Institute)董事会顾问。他喜欢作为一个独立的教育者,向新用户们传递信息安全和Python的概念,并帮助那些拥有更高级技能的用户们提升。Tim和他的妻子Treva,还有一只叫Sidney的鹦鹉住在北卡罗来纳州。你可以在推特@jtimarnold上找到他。
关于技术评论员
从Commodore PET和VIC-20的早期开始,技术就一直是Cliff janzen的忠实伴侣(PS:拟人手法),有时甚至是痴迷!Cliff将大部分的工作时间用于管理和指导一个优秀的安全专业人员团队,通过处理从安全策略审查和渗透测试到事件响应的所有事情,并努力保持技术上的关联度。他感到幸运的是,他有一份同时也是他最大的爱好的事业和一个支持他的妻子。他感谢Justin将他收录在这本精彩的书的第一版中,也感谢Tim引导他最终转向Python 3。特别感谢No Starch Press印刷公司的工作人员。
序,前言
从我为非常成功的黑帽Python第一版写序以来,已经过去了六年了。在这段时间里,世界发生了很大的变化,但有一件事没有改变:我仍然在编写大量的Python代码。在计算机安全领域,您仍然会遇到用各种语言编写的工具,这取决于你的任务。您将看到为内核漏洞编写的C代码,为JavaScript fuzzer编写的JavaScript代码,或者用像Rust这样的更“时髦”语言编写的用于代理的代码。但是Python仍然是这个行业的主力。在我看来,它仍然是最容易入门的语言,而且有大量可用的库,它是可以快速编写代码并以简单方式执行复杂任务的最佳语言。大多数计算机安全工具和漏洞仍然是用Python编写的。这包括从CANVAS这样的开发框架到Sulley这样的经典fuzzer。
(笔者注:Fuzzer:模糊测试工具)
在黑帽Python第一版发布之前,我已经用Python编写了许多fuzzer和exploit。包括针对Mac OS X、iPhone和Android手机的Safari浏览器的漏洞,甚至还有针对Second Life的漏洞。(你可能要放弃最后一条。)
(笔者注:Second Life是一个在美国非常受欢迎的网络虚拟游戏。通过由Linden实验室开发的一个可下载的客户端程序,用户,在游戏里叫做”居民”, 可以通过可运动的虚拟化身互相交互。这套程序还在一个通常的元宇宙的基础上提供了一个高层次的社交网络服务。居民们可以四处逛逛,会碰到其他的居民,社交,参加个人或集体活动,制造和相互交易虚拟财产和服务。)
无论如何,从那以后,在Chris Valasek的帮助下,我写了一个非常特别的漏洞,它能够远程攻击一辆2014 Jeep Cherokee和其他汽车。当然,这个漏洞利用代码是用Python编写的,使用的是dbus-python模块。我们所编写的所有工具,最终都允许我们远程控制受影响的车辆进行转向,刹车,和加速,这些工具也是用Python编写的。所以某种程度上你可以说,Python要对Fiat Chrysler 公司140万辆汽车的召回负有责任。
如果您对信息安全任务感兴趣,那么Python是一门非常值得学习的语言,因为有大量的逆向工程和开发库可供您使用。现在,只要Metasploit开发人员能够清醒过来,从Ruby切换到Python,我们的社区就会团结起来。
在这个被奉为经典的新版中,Justin和Tim将所有代码更新到了Python 3。就我个人而言,我是一个尽可能长时间坚持使用Python 2的落伍者,但随着可用的库完成到Python 3的迁移,即使是我也将不得不尽快地学习它。本版本涵盖了一个有进取心的年轻黑客入门时可能需要大量学习的主题,从如何读写网络数据包的基础知识到web应用程序审计和攻击可能需要的任何东西。
一般来说,黑帽Python是一本由有着多年经验的专家写的有趣的读本,他们愿意分享他们在这个过程中所学到的秘密。虽然它可能不会立即把你变成像我一样的超级特技黑客,但它肯定会让你开始走上正确的道路。
请记住,脚本小子和专业黑客的区别在于前者使用的是其他人的工具。
后者可以自己写。
Charlie Miller,Security Researcher,St. Louis, Missouri,October 2020
引言
Python黑客或Python程序员,你可以用这两个词来描述我们。Justin花了大量时间进行渗透测试,这需要快速开发Python工具的能力,并将重点放在传递结果上(不一定是美观、优化,甚至是稳定性)。Tim的口头禅是“让它有效工作,让它容易理解,让它快速——按照这个顺序。”当您的代码具有可读性的时候,它可以被您共享它的人所理解,也包括对几个月后再看到它的您自己。通过这本书,你将了解到这就是我们的编码方式:黑客是我们的最终目的,而干净易懂的代码是我们达到目的的方法。我们希望这种理念和风格也能帮助您。
自从本书第一版出版以来,Python世界发生了很多变化。Python 2于2020年1月结束使用。Python 3已经成为编码和教学的推荐平台。因此,第二版使用最新的包和库,重构了代码并移植到Python 3。它还用了Python 3.6及更高版本Python 3提供的语法变化,如Unicode字符串、上下文管理器和f-string。最后,我们更新了第二版,增加了对编码和网络概念的解释,比如上下文管理器的使用,Berkeley Packet Filter语法,以及ctypes和struct库的比较。
当你读这本书的时候,你会意识到我们并没有深入研究任何一个单一的主题。这是设计好的。我们想给你一点有趣味的基础,让你获得黑客工具开发世界的基础知识。考虑到这一点,我们在整个书中都撰写并分布了解释,ideas和作业,来启动你自己的方向。我们鼓励您探索这些想法,我们也很乐意了解您自己完成的任何工具。
与任何技术书籍一样,不同技能水平的读者将对这本书有不同的体验。你们中的一些人可能只是简单地拿起它,然后找到需要的与最近工作相关的章节。其他人可能会从头读到尾。如果您是初级到中级的Python程序员,我们建议您从本书的开头开始,并按顺序阅读各章节。在这个过程中,你会学到一些好的知识构建模块。
首先,我们将在第2章中奠定网络基础。然后我们在第三章慢慢地学习原始套接字(socket),并在第四章使用Scapy来学习一些更有趣的网络工具。下一部分将讨论如何破解web应用程序,在第5章开始实现自定义工具,然后在第6章扩展学习流行的Burp Suite。从这开始,我们将花大量的时间讨论木马,并从第7章开始使用GitHub进行命令和控制,一直到第10章,第10章中我们将介绍一些Windows特权提升技巧。最后一章是关于Volatility 内存取证工具,它可以帮助你理解防守方是如何思考的,并展示你可以如何利用这些工具进行攻击。
(笔者注:
Volatility 3: The volatile memory extraction framework;
GitHub - memoryforensics1/volatility3: Volatility 3.0 development
Volatility 是世界上最广泛使用的从RAM中进行数字取证的框架。
)
我们尽量使代码示例简短并切中要点,注释部分也是如此。如果你对Python比较陌生,我们鼓励你敲出每一行代码,让你的编码产生肌肉记忆。本书的所有源代码示例都可以在https:/ /nostarch.com/black-hat-python2E/上找到。
让我们开始吧!
致谢
Tim非常感谢他的妻子Treva,感谢她长期以来的支持。如果没有几次偶然的事件,他就不会有机会写这本书。他感谢Raleigh ISSA,特别是Don Elsner和Nathan Kim,感谢他们支持和鼓励他使用这本书的第一版教一个当地的班级。教授这门课,并和学生一起工作,让他爱上了这本书。他也感谢当地黑客社区的鼓励,尤其是对Oak City Locksports的人们,和为他的想法提供了一个实践的平台。
Justin想要感谢他的家人——他美丽的妻子Clare和他的五个孩子Emily, Carter, Cohen, Brady和 Mason——感谢他们在他花了一年半的时间写这本书时给予他的鼓励和宽容。他热爱家人。他对在网络和OSINT社区中分享欢笑和推文的所有朋友,感谢他们让他每天可以对他们抱怨。
再次感谢No Starch Press的Bill Pollock和我们耐心的编辑 Frances Saux,感谢你们让这本书变得更好。感谢No Starch团队的其他成员,包括Tyler, Serena和Leigh,感谢你们为这本书所付出的努力和你们消耗的休息时光。我们都很感激。我们还要感谢我们的技术评论员Cliff Janzen,他在整个过程中提供了绝对惊人的支持。任何写信息安全书籍的人都应该让他参与进来;他很了不起,并且还不止这些。