最近,我读到很多关于参与“信息安全”比赛的问题,还有文章和一般性讨论,在我看来,其中存在着不少使人误导的信息。这个结论可能有点苛刻,我确信他们是出于善意的目的,甚至这些建议也能起到帮助作用(没有一个标准适合所有建议),但我想我还是把自己的想法写出来,希望能帮助新开始学习黑客的人走得更远。
我想做体育锻炼,我该如何开始?
这是一个不明确的,开放式的和非常模糊的问题,就和有些人提出的他们该怎么做才能进入信息安全领域的问题十分相似。这里首先要认识到的是,信息安全有大量的领域,在这些数量巨大的领域中,每一个领域都是一个终生的学习内容。就像选择一项运动进行锻炼一样,没有“最好”的运动,有时候你认为是最好的,只是因为你最喜欢它。在我的脑海中,有一些信息安全领域的例子,但它们绝不是最详尽的:
•web应用安全(Web Application Security)
•逆向工程(Reverse Engineering)
•恶意软件逆向工程(Malware Reverse Engineering)
•网络安全(Network Security)
•应急响应(Incident Response)
•标准符合性(Standards Compliance)
•第三方编程/创作工具(Programming / Creating Tools for Others)
•漏洞利用程序开发(Exploit Development)
•取证(Forensics)
其中一些更具有技术性,而另一些则更重点关注理论。我保证无论你喜欢什么总会有一些人觉得无聊,正如你有时会对别人感兴趣的事情一样。现在,如果你读到这篇文章,你可能对这些领域的任何一个都知之甚少,但重要的是你愿意学习,以及你所具有的动力。
黑客进阶
在这个领域中,一个几乎普遍存在这些人身上的标志就是他们自始至终都专注于独立自主地学习安全技术。不幸的是,在某些方面,安全技术仍然被认为是一种“黑暗艺术”。我想明白的是为什么有些人会想去知道怎么样侵入计算机系统,除非他们本就打算这么做?因此,当很多人在这个错误(有时候是真的)的认知下,遇到有人询问与安全技术相关的问题时,就会对他有直接的敌意和表现出轻蔑的态度——这只不过是一个“脚本小子”想要学习破解系统,而不是为了一个好的目的而学习和使用这些知识。事实上,信息安全的“学习”资源是相当脱节的,没有真正的学习材料的中央存储库。
需要强调的一点是,如果你想顺利并成功地进入信息安全领域,你应该做充分的准备和找到你自己的方法,而不是等待别人拉着你的手,引导你走上正确的道路。可以在Google上搜索一些相关的看起来和听起来都有趣的词条。尽管这有时候似乎是一场持续不断地要找到“最好”的学习领域,或者“最好的”资源,或者“最好”的学习方式的斗争,往往就会花更多的时间去思考这些问题,而不是花时间去真正地学习。也还可以在youtube上查找一些实例视频——如果你不知道其中讲的一些是什么含义的话,那就可以把这些记下来,列出一个清单,然后用google搜索这些知识点。要学会利用感兴趣的点来衍生出你喜欢的话题的知识网络。
我需要先学什么什么作为基础吗?
当然有了(坏笑~),在你开始之前,你需要对OSI层有充分的了解。你需要阅读那本关于TCP协议的1000页的书。你还需要在你学习黑客技术之前,精通5种编程语言(至少是!)。你能从源代码编译你自己的Linux内核吗?不会?那就别去接触黑客技术了。事实上…以上这些都是扯淡,但也是那些想要学习信息安全的人所常常认为的。成为一个合格的黑客的话只有一个要求——兴趣。未来真正的黑客和脚本小子直接的区别不是知识的差异,而是学习的意愿。
只要你对如何使用电脑有一个模糊的概念,你就可以开始了。是的没错,就如你没有彻底的搞懂TCP是如何工作的的话,你可以把它列在自己的任务清单上,并寻找查阅有关它的教程。认为自己需要大量的必备知识作为基础才可以开始学习自己感兴趣的话题的想法是很可笑的。当你在查找出登录验证图形在网站上如何运行是使用了javascript的时候,你就会知道javascript是如何工作的。当你阅读缓冲区溢出是如何产生的时候,并且有一个python模板,你将会学到很多python的基础知识。虽然你不会在这基础语言学习结束之后就能找到一份开发人员的工作(就是把这门语言学的很熟的意思),但是你会找到各类语言之间的通用方法。
免费学习资源(Informal Learning)
“好吧,我明白了——我需要自己学一些东西,但你至少能给我一个起点吗?”
当然,有大量免费或者廉价的学习资源,这取决于你对什么主题感兴趣,这里有一些例子。
Web应用安全
• HackThisSite – 一些基于web的基本挑战题(link)
• Enigma Group – 与HackThisSite这个网站类似(link)
• OWASP Top 10 –最常见的漏洞的概念(link)
• OWASP Broken Wep Apps –你可以下载上面的虚拟机来练习黑客技能(link)
• Pentesting Lab –另一个以网络为中心的虚拟机(link)
• 事实上,在vulnhub上有任何你感兴趣的东西(link)
• web应用程序黑客手册-关于网络黑客和漏洞的书(link)
逆向工程/恶意软件逆向
• Lena’s Tutorials –被称为逆向工程最佳教程之一(link)
• The Legends of Random –另一套可靠的逆向工程教程(link)
• Reversing: Secrets of Reverse Engineering –一本关于逆向工程基础的好书(link)
• Practical Malware Analysis –一本专注于逆向恶意软件的好书(link)
• Malware Analysts Cookbook – 另一本专注于逆向恶意软件的书 (link)
网络安全
• 虚拟机在这一类别中是主要的,因为它们允许你对真实机器进行练习,前往vulnhub 并下载任何看起来很有趣的VM (link)
• Metasploit Unleashed –通过metasploit测试框架的可靠运行,与VM的连接一起使用。(link)
• The Basics of Hacking and Penetration Testing –对那些完全陌生的人来说,渗透测试是非常基本的。(link)
• Metasploit –渗透测试指南– 另一本关于在渗透测试中使用metasploit的书(link)
• 因为这是一个非常大的领域,经常把它分解成一个方面,然后专门研究这方面。博客是你最好的朋友。(link)
漏洞利用
• Corelan –到目前为止,这是学习漏洞利用开发的最好资源(link)
• FuzzySecurity –另一个很好的学习资源,有一些教程(link)
• Exploit-DB –你能做的最好的事情之一就是找到一些漏洞的例子(通常是附加应用程序),并尝试独立地复制这个漏洞。(link)
• Hacking – The Art of Exploitation –这是一本非常棒的书,涵盖了很多不同的开发技术(link)
• The Shellcoders Handbook –另一本关于漏洞利用开发和shell编程的好书(link)
除此之外,谷歌,谷歌,还是谷歌。我遗漏了一些领域,比如取证和规范性,因为我个人对它们不感兴趣所以我没有去寻找资源,但我肯定有一些很棒的资源。
专业学习资源(Formal Learning)
在免费资源之外,如果你想把自己的职业生涯转变为职业道路,你也可以开始获得证书,让自己对雇主更有吸引力。如果您对网络安全感兴趣的话,我强烈推荐的一些认证是“Kali Linux的渗透测试”(课程) 。这很容易成为我在这个领域所经历过的最好的学习经历之一,在60天里教会了我比我自己一年学到的更多的东西。他们的“突破边界”也是一个很好的课程,更多地关注漏洞利用开发(link).
如果你正在考虑开发你的编程技能,比如SecurityTube的“用于测试人员和黑客的Python” (link),这是一个很好的基础教程,它将教你如何做大量的漂亮事情,比如构建你自己的端口扫描器、密码破解器等等。我并没有从就业的角度对他们的认证给予巨大的价值,但我更倾向于把它看作是一个整合的知识和例子,它仍然是有价值的。
“白帽子(Certified Ethical Hacker)”课程是另一个经常被提及的课程。老实说,这是典型的轻视(关于“道德黑客”的这个说法,译者也持反感态度,没必要这么区分嘛。),所以我不认为这是值得的——但是如果你需要一个正式的课程来学习,那么它可能是值得你去做的。在这里的ethicalhacker.net的论坛上讨论了很多这样的认证和它们的价值。(link)
“Just seeing if you can”
黑客攻击的目的是获取信息,但这并不是我们所为的。创建一个exploit,寻找到一处SQL注入,密码破解,所做的这些都是为了让我们能朝着控制我们攻击的目标发展。我敢保证,几乎每一个新学黑客技术的人开始都想着“看看他们是否能”进入那个学校的网站。“看看他们能否”获得邻居的WiFi网络。向他们的朋友发送一个木马病毒只是为了“看看他们是否能”被控制。更糟糕的是,你可能会访问像HackForums.net这样的地方,看到很多人试图用RATs来感染别人,建立僵尸网络等等,在印象中这是黑客行为,或者更可悲的是,这是你唯一可以学习的方法。
我需要强调的是,事实并非如此。任何类型的“只是看看你能不能”的类型练习都可以通过虚拟机、你自己的路由器甚至是CTF或攻防比赛来模拟。即使你能获取到别人的机器的权限,你打算怎么处理它呢?你真的会试图窃取信用卡信息并进行欺诈性交易吗?你真的会窃取密码,并偏执地进行追踪账户的行动,以便偷看别人的电子邮件吗?有很多初学者被起诉的例子,他们没有意识到自己所犯的罪行的严重性。如果你去FBI找工作,在他们看了你文章记录后,你会希望他们读到你问如何主持一个僵尸网络的帖子吗?这是互联网上的一个经典例子,如果你真的想要一个信息安全的职业,你需要一个干净的记录来获得你需要做的任何安全许可。因为愚蠢的东西而被抓住是不值得的。
结术语
所以聊了这么多之后,到底什么才是关键?
•黑客会主动寻找信息,而不是等着别人把信息给他。
•脚本小子和新黑客之间的区别在于学习的欲望。
•你需要尝试各种信息安全领域来找到你感兴趣的东西。
•不要听任何人告诉你的有关学习信息安全是有先决条件的说法,事实并非如此。
•不值得”看看你是否能”做任何不合法的事情,所得到的风险和回报是没有意义的。
•有了课程,攻防竞赛,CTF,更重要的是虚拟机,这里有任何你可以合法模拟的黑客攻击场景。
祝你愉快,抱歉,马上接近尾声了,享受 pwning boxes(不知道怎么翻,感觉像是黑客的俚语)吧!信息安全是一个很棒的领域,你每天都会学习新的东西。除了全身心投入敢于尝试之外,没有比这更好的进入信息安全领域的方式。就像开始学习游泳,从弄湿身体,到学会踩水,再到保持漂浮,一点点的尝试,总有一天你会学会它的!