本文转自:https://wang66.top/2018/soyouwantobeahacker.htmljavascript
最近,我读到不少关于参与“信息安全”比赛的问题,还有文章和通常性讨论,在我看来,其中存在着很多令人误导的信息。这个结论可能有点苛刻,我确信他们是出于善意的目的,甚至这些建议也能起到帮助做用(没有一个标准适合全部建议),但我想我仍是把本身的想法写出来,但愿能帮助新开始学习黑客的人走得更远。 php
我想作体育锻炼,我该如何开始?
这是一个不明确的,开放式的和很是模糊的问题,就和有些人提出的他们该怎么作才能进入信息安全领域的问题十分类似。这里首先要认识到的是,信息安全有大量的领域,在这些数量巨大的领域中,每个领域都是一个终生的学习内容。就像选择一项运动进行锻炼同样,没有“最好”的运动,有时候你认为是最好的,只是由于你最喜欢它。在个人脑海中,有一些信息安全领域的例子,但它们毫不是最详尽的:html
•web应用安全(Web Application Security)
•逆向工程(Reverse Engineering)
•恶意软件逆向工程(Malware Reverse Engineering)
•网络安全(Network Security)
•应急响应(Incident Response)
•标准符合性(Standards Compliance)
•第三方编程/创做工具(Programming / Creating Tools for Others)
•漏洞利用程序开发(Exploit Development)
•取证(Forensics)java
其中一些更具备技术性,而另外一些则更重点关注理论。我保证不管你喜欢什么总会有一些人以为无聊,正如你有时会对别人感兴趣的事情同样。如今,若是你读到这篇文章,你可能对这些领域的任何一个都知之甚少,但重要的是你愿意学习,以及你所具备的动力。python
黑客进阶
在这个领域中,一个几乎广泛存在这些人身上的标志就是他们自始至终都专一于独立自主地学习安全技术。不幸的是,在某些方面,安全技术仍然被认为是一种“黑暗艺术”。我想明白的是为何有些人会想去知道怎么样侵入计算机系统,除非他们本就打算这么作?所以,当不少人在这个错误(有时候是真的)的认知下,遇到有人询问与安全技术相关的问题时,就会对他有直接的敌意和表现出轻蔑的态度——这只不过是一个“脚本小子”想要学习破解系统,而不是为了一个好的目的而学习和使用这些知识。事实上,信息安全的“学习”资源是至关脱节的,没有真正的学习材料的中央存储库。linux
须要强调的一点是,若是你想顺利并成功地进入信息安全领域,你应该作充分的准备和找到你本身的方法,而不是等待别人拉着你的手,引导你走上正确的道路。能够在Google上搜索一些相关的看起来和听起来都有趣的词条。尽管这有时候彷佛是一场持续不断地要找到“最好”的学习领域,或者“最好的”资源,或者“最好”的学习方式的斗争,每每就会花更多的时间去思考这些问题,而不是花时间去真正地学习。也还能够在youtube上查找一些实例视频——若是你不知道其中讲的一些是什么含义的话,那就能够把这些记下来,列出一个清单,而后用google搜索这些知识点。要学会利用感兴趣的点来衍生出你喜欢的话题的知识网络。web
我须要先学什么什么做为基础吗?
固然有了(坏笑~),在你开始以前,你须要对OSI层有充分的了解。你须要阅读那本关于TCP协议的1000页的书。你还须要在你学习黑客技术以前,精通5种编程语言(至少是!)。你能从源代码编译你本身的Linux内核吗?不会?那就别去接触黑客技术了。事实上…以上这些都是扯淡,但也是那些想要学习信息安全的人所经常认为的。成为一个合格的黑客的话只有一个要求——兴趣。将来真正的黑客和脚本小子直接的区别不是知识的差别,而是学习的意愿。shell
只要你对如何使用电脑有一个模糊的概念,你就能够开始了。是的没错,就如你没有完全的搞懂TCP是如何工做的的话,你能够把它列在本身的任务清单上,并寻找查阅有关它的教程。认为本身须要大量的必备知识做为基础才能够开始学习本身感兴趣的话题的想法是很好笑的。当你在查找出登陆验证图形在网站上如何运行是使用了javascript的时候,你就会知道javascript是如何工做的。当你阅读缓冲区溢出是如何产生的时候,而且有一个python模板,你将会学到不少python的基础知识。虽然你不会在这基础语言学习结束以后就能找到一份开发人员的工做(就是把这门语言学的很熟的意思),可是你会找到各种语言之间的通用方法。编程
“好吧,我明白了——我须要本身学一些东西,但你至少能给我一个起点吗?”安全
固然,有大量免费或者廉价的学习资源,这取决于你对什么主题感兴趣,这里有一些例子。
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)
除此以外,谷歌,谷歌,仍是谷歌。我遗漏了一些领域,好比取证和规范性,由于我我的对它们不感兴趣因此我没有去寻找资源,但我确定有一些很棒的资源。
在免费资源以外,若是你想把本身的职业生涯转变为职业道路,你也能够开始得到证书,让本身对雇主更有吸引力。若是您对网络安全感兴趣的话,我强烈推荐的一些认证是“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(不知道怎么翻,感受像是黑客的俚语)吧!信息安全是一个很棒的领域,你天天都会学习新的东西。除了全身心投入勇于尝试以外,没有比这更好的进入信息安全领域的方式。就像开始学习游泳,从弄湿身体,到学会踩水,再到保持漂浮,一点点的尝试,总有一天你会学会它的!