网络安全攻防是一个极具魅力的技术领域,但成为一名合格的安全工程师绝非易事。你必须拥有对新技术的好奇心和积极的学习态度,具备深厚的计算机系统、编程语言和操作系统知识,并乐意不断地去学习和进步。
如果你想成为一名优秀的网络安全从业者,以下是 10 种最重要的基础条件,请认真阅读:
1. 了解黑客的思维方式
我们生活中用到的网站、软件等,都是由程序员编写的代码构成的。
这些代码在设计的过程中,都是基于一种正向的逻辑进行的,为了实现某个目的,完成某个操作的流程或数据传输逻辑。
而黑客的思维是逆向的,他们会去分析目前这个操作流程或数据传输逻辑中,是否存在一些验证不严谨或者隐秘信息被泄露的风险,并加以利用,从而绕过正常的操作逻辑达到未授权访问或操作的能力。
通俗点说,程序员是造房子的,而黑客则是看看房子是不是哪里漏了个风,缺了个口。翻进去为所欲为;有的甚至直接将房子拆了。
2. 学习 UNIX/LINUX
UNIX 和 Linux 是网络安全领域的基石。初学者应掌握以下书籍中的核心内容,它们不仅教你学会 Linux 和 UNIX 的基础知识,其中包含了大量用于在 UNIX 环境中进行高级编程的代码示例。
《Linux/UNIX 系统编程手册》
这是一本相对较新的 Linux 书籍,由 Michael Kerrisk 编写,他是 Linux 手册的维护成员之一。如果只推荐一本书的话,我会推荐这一本,因为它更全面,它应该是学习 UNIX/Linux 系统编程的标准书籍。
《Linux 命令行大全》
《Linux 命令行大全》主要介绍 Linux 命令行的使用,循序渐进,深入浅出,引导读者全面掌握命令行的使用方法。每一个要在 Linux 中工作的新程序员都应该有一本这本书。例如掌握 ls, grep, chmod, chown 等常用命令。
《UNIX 环境高级编程(第 3 版)》
这是学习 UNIX 最好的书之一,是由 Richard W. Stevens 编写的经典。UNIX 是有史以来最好的软件之一,它已经有 30 多年的历史了,而且仍然很强大。这本书的优点在于,书中有成千上万的代码示例,并给出了清晰的解释,它还包含了数百个插图和图形,展示了不同的 UNIX 概念是如何工作的。
3. 学习一门编程语言
黑客&网络安全工程师的武器也是代码。想要成为黑客或者网络安全工程师,首先要学会一门黑客需要的编程语言。
对于没有代码经验的小白,下面三项,是安全行业的从业者都最好能掌握的语言,锤炼一下自己编程的功底。
Shell 脚本
掌握常用的 Linux 命令,能编写简单的 Shell 脚本,处理一些简单的事务,如自动化备份、日志分析等。
C 语言(C++可选)
C 语言没有复杂的特性,是现代编程语言的祖师爷,适合编写底层软件,还能帮助你理解内存、算法、操作系统等计算机知识,建议学一下。这对于理解缓冲区溢出等漏洞原理至关重要。
Python
C 语言帮助你理解底层,Python 则助你编写网络、爬虫、数据处理、图像处理等功能性的软件。是程序员,尤其是黑客们非常钟爱的编程语言,不得不学。许多安全工具如 Metasploit 的部分模块就是用 Python 编写的。
4. 学习了解计算机网络知识
这是另一个必不可少的基础条件,学习网络知识,理解网络的构成。懂得不同类型网络之间的差异之处,清晰的了解 TCP/IP 和 UDP 协议。这都是在系统中寻找 漏洞的必不可少的技能。理解局域网、广域网,VPN 和防火墙的重要性,精通 Wireshark 和 NMAP 这样的网络扫描和数据包分析工具等。
重点学习 OSI、TCP/IP 模型,网络协议,网络设备工作原理等内容,其他内容快速通读;
- OSI 七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
- TCP/IP 模型:网络接口层、网际层、传输层、应用层。
- 常见协议:HTTP, HTTPS, DNS, DHCP, FTP, SSH 等的工作原理及端口号。
5. 学习使用黑客常用操作系统
注重安全性的操作系统是黑客最好的朋友,因为它可以帮助他们发现计算机系统或计算机网络中的弱点。
Kali Linux
由 Offensive Security 开发并重写 BackTrack,Kali Linux 发行版在我们用于黑客目的的最佳操作系统列表中名列前茅。这个基于 Debian 的操作系统附带了 600 多个预装的笔测试工具,使您的安全工具箱更加丰富。这些通用工具会定期更新,并适用于 ARM 和 VMware 等不同平台。对于司法鉴定工作,此顶级黑客操作系统具有实时启动功能,该功能为漏洞检测提供了理想的环境。
除此之外还有 Parrot Security OS、BackBox、Samurai Web Testing Framework、Pentoo Linux、DEFT Linux、Caine、Network Security Toolkit、BlackArch Linux 等多款操作系统可供选择。
6. 学习密码技术
接着,来了解一些网络安全领域内经常打交道的编解码技术和加解密技术。包括 base64 编码、对称加密、非对称加密、哈希技术等等。
了解它们基础的概念、做什么用的,解决什么问题,最后再了解下工作原理。
- Base64:常用于编码而非加密,可还原。
- MD5/SHA:哈希算法,不可逆,用于校验完整性。
- AES/RSA:对称与非对称加密,用于保密通信。
推荐书籍:《加密与解密》
7. 学习使用黑客渗透工具
网络协议攻击、Web 服务攻击、浏览器安全、漏洞攻击、逆向破解、工具开发都去接触一下,知道这是做什么的,在这个过程中去发现自己的兴趣,让自己对网络安全各种领域的技术都有一个初步的认识。以下是常见的 web 渗透使用工具方法。
- 信息收集:Nmap, Whois, TheHarvester。
- 漏洞扫描:Nessus, OpenVAS, AWVS。
- Web 代理:Burp Suite, OWASP ZAP。
- 漏洞利用:Metasploit Framework。
- 密码破解:John the Ripper, Hashcat。
8. 学习网络安全法
《中华人民共和国网络安全法》,是我们为了保障网络安全,维护网络空间主权和国家安全、社会公共利益、维护公民、法人和其他组织的合法权益,促进经济社会健康发展,制定本法。
我觉得作为一个技术人员了解和学习黑客知识是必要的,因为这样才能在日常工作中应对安全风险,在较高的安全意识上完成编程和运维工作;当然,如果你能成功掌握了一些黑客原理和技术,当你遇到攻击时,也不仅仅是严防死守,而是抓住内鬼,反将一军。
技术本身并不罪恶,滥用技术才会导致罪恶!务必在法律允许的范围内进行测试。
9. 编写漏洞利用程序
实际动手,开发路线需要多写代码,阅读优秀开源代码,二进制路线多分析样本,编写 EXP 等等,渗透测试多拿网站练手(合法方式)等。
渗透实战操作
- 掌握渗透的整个阶段并能够独立渗透小型站点。
- 网上找渗透视频看并思考其中的思路和原理,关键字(渗透、SQL 注入视频、文件上传入侵、数据库备份、dedecms 漏洞利用等等);
- 自己找站点/搭建测试环境进行测试,记住请隐藏好你自己;
- 思考渗透主要分为几个阶段,每个阶段需要做那些工作,例如这个:PTES 渗透测试执行标准;
- 研究 SQL 注入的种类、注入原理、手动注入技巧;
- 研究文件上传的原理,如何进行截断、双重后缀欺骗 (IIS、PHP)、解析漏洞利用(IIS、Nginx、Apache)等;
- 研究 XSS 形成的原理和种类,具体学习方法可以 Google/SecWiki;
- 研究 Windows/Linux 提权的方法和具体使用;
- 可以参考:开源渗透测试脆弱系统;
- 打 CTF,多参与一些网络安全比赛,接近实战的环境下锻炼动手能力。
10. 多向大佬学习
我们学习网络安全,很多学习路线都有提到多逛论坛,阅读他人的技术分析帖,学习其挖洞思路和技巧。但是往往对于初学者来说,不知道去哪里寻找技术分析帖。
建议关注各大安全社区的技术博客、GitHub 上的安全项目仓库以及官方文档。通过阅读高质量的技术文章,了解业界最新的威胁情报和防御策略。
11. 参与开源安全项目
开源安全项目可以帮助你测试和打磨你的黑客技术。这并不是一件容易的事,一些机构,如 Mozilla、Apache 等,会提供开源项目。参与这些项目,即使你的贡献很小,也会给你带来很大的价值。
你可以尝试修复已知的 CVE 漏洞,或者为现有的安全工具添加新功能。这不仅提升了你的技术能力,也能增加你在行业内的知名度。
总结
网络安全是一个持续发展的领域,新的漏洞和攻击手段层出不穷。保持好奇心,坚持学习,遵守法律法规,是每一位安全从业者的必修课。从基础开始,逐步深入,最终形成自己的技术体系。


