前言
目标读者
本书适合但不仅限于想学习网络编程的Python程序员,积极维护系统和网络安全的管理员,更喜欢用 Python 编程的白帽、灰帽和黑帽黑客,以及想动手实践信息技术安全、从黑客的角度深入理解网络的计算机爱好者。
阅读此书,读者无须深入了解编程和计算机网络的搭建。第2章和第3章介绍理解本书源代码所需知识。能使用Python编程并对开放式系统互联(Open System Interconnection, OSI)协议和数据包报头充满激情的读者可直接阅读第5章,享受上手调试设备的乐趣。
免责声明对这本书而言是十分必要的。作者希望所有读者在获得使用许可的计算机上操作,仅在合法、合乎道德的前提下将本书的内容付诸实践。否则,您可能触犯法律(取决于您的设备所连接的国家/地区)。
尽管本书不全是基础知识,但本书的篇幅难以对每个主题展开深入探讨。建议读者多参加一些感兴趣的讲座以掌握更多知识。
本书组织结构
本书根据所使用的网络协议对黑客进行分类,其中每章内容按难易程度排序。除第2章和第3章,读者可以自行选择阅读顺序。
书中的样例代码未经删减,以便读者直接复制后使用,无须修改或添加插件。本书中所有源代码均可在Github网站(https://github.com/balle/pythonnetworkhacks)下载。
本书每章结尾会列举一些使用Python编写的工具,以便更详细地剖析对该协议的黑客攻击。
在基础知识章节的基础上,阅读和理解上述工具的源代码并非难事。
最重要的安全准则
对作者而言,搭建一个安全网络最重要的原则包括以下几点。
(1) 安全解决方案应当简单、明了。如果防火墙的规则复杂到无人能懂,则必定存在安全漏洞。复杂的软件永远比简单的代码漏洞多。
(2) 少即多。越多的代码、系统和服务也意味着越容易被攻击。
(3) 安全解决方案应该是开源的。如果有访问源代码的权限,解决安全问题也会更加容易。例如,如果供应商不愿意修补一个安全漏洞,客户可基于开源代码自行解决,而无须为了等待下一个补丁浪费6个月甚至更长时间。专有软件会存在内置后门程序,有时也被监听接口。像Cisco(参见征求意见稿3924号)、Skype(美国专利20110153209号)和Microsoft(如NSA私钥事件)等著名案例只是冰山一角。
(4) 防火墙只是一个概念,不是一个上电即安全的盒子。
(5) 随时更新系统。因为即使今天系统是安全的,但几小时之后它也可能面临威胁。及时升级智能手机、打印机和交换机等一切智能系统是十分必要的。
(6) 全套系统的安全性取决于其最薄弱的设备和环节,而这个环节并不一定是计算机,也有可能是人(请参见社会工程学)。
(7) 没有100%的安全。即使计算机关机,也可能被一名经验丰富的工程师入侵。网络防御的目标应该是建立能让黑客碰钉子并留下痕迹,甚至难以渗透的多层体系。这样,黑客从一次成功攻击中获得的利益与付出的努力相比就显得微不足道。
作者2023年2月