发布日期:2015-12-24 10:13:35 +0000
很抱歉,这不是一篇标题党,也不是一篇鸡汤文,这是一篇不那么硬的技术文。
旧文三篇
信息安全常识科普
创业公司如何做好信息安全(上)
创业公司如何做好信息安全(下)
另外一篇转载视频
下面进入今天的话题
首先,黑客的定义,分为广义上和狭义上的定义方式,就广义上而言,我们认为,凡是能够在现有系统,规则中寻找缺陷并加以利用,以至于能够因此引领技术进步的,都可以称为黑客,所以包括钻研搜索引擎或其他社交平台的规则并从中获得流量增长秘籍的运营专家,包括在现有商务模式中寻找套利空间的分析达人,都可以认为是广义上的黑客范例,再比如颠覆旧的商业规则,创建新的商业模式如乔布斯,特斯拉老板马斯克,以及uber老板卡拉尼克,也都可以归入黑客范畴。
不过很抱歉,今天不讲这种,讲这种怎么讲都是鸡汤,最近已经讲了好多天鸡汤了,今天还是回到技术本身。
网上大量的年轻人问类似的问题,如何成为黑客,如何破解系统等等,这些人所向往的,是狭义范围的黑客,也就是能够突破计算机软件和网络系统从而获得未授权的行为能力的人。在上面的旧文中,其实已经提到了信息安全的范畴,也就是黑客入侵的一些典型手段和方式,那么从菜鸟开始入手学习,应该遵循怎样的步骤和思路呢?
以前网上有很多黑客教程和黑客培训,效果也是很快,简单说就是给你一些扫描器,让你快速扫描目标主机的缺陷和漏洞,教你传递木马以及如何通过远程控制端来获取对方电脑信息,这种速成的课程曾经非常流行,某准知名黑客也因此赚钱不菲直到后来身陷囹圄。但今天我不讲这些,第一,我不想身陷囹圄;第二,这种速成其实只是依托于现有的工具,这种黑客其实大部分并不真的理解其所使用的工具原理和侵入的机制,而这种没有思维的黑客,我们认为除了为社会增加各种不安定因素之外,没有任何积极的因素。今天讲讲一些技术基础的学习安排,以及思维方式的养成,限于篇幅,每个领域都浅尝辄止,想要深入学习的请根据提示自行钻研。
1、了解黑客的基本思考方式
计算机以及互联网的所有系统,都是有程序员编写的代码执行构成的,这些代码在设计的过程中,都是基于一种正向的逻辑进行的,为了实现某个目的,完成某个操作的流程或数据传输逻辑,而在现实中,黑客的思维是逆向的,在现在的操作流程或数据传输逻辑中,是否存在一些验证不严谨或者隐秘信息被泄露的风险,并加以利用,从而绕过正常的操作逻辑达到未授权访问或操作的能力。
典型如SQL注入,为什么 ' or ''=' 在相当时间可以成为通用密码,因为这个操作将一些SQL的正常条件判断逻辑改写,从而达到绕过密码验证完成数据查询有效返回的效果;如果思维再发散一下,改写为 '; drop table user where ''=' ,就可以实现绕过验证完成强大破坏力的非授权操作。
以上案例需要懂SQL语句编写并有一定的逻辑思维能力。
2、懂基本网络常识
参见旧文
对端口,服务,守护进程,常见TCP/IP协议,域名管理协议,常见网络服务协议(包括但不限于telnet, ftp,smtp,pop,http等),报文传输及路由器寻址的基本原理有一定了解和认知。如果说面面精通可能并不一定完全需要,但整体认识要有。
对常见的伺服系统有一定了解,比如MYSQL,SQL SERVER,APACHE,NGINX等等,知道如何通过一个端口的返回信息快速判别这个端口跑的是什么服务和什么系统,(当然,仅限于正常识别,识别蜜罐和伪装是挺难的。)
了解这些的目的是,你知道网络上的信息是怎么传输的,服务器是怎么处理和响应请求的,在这样的基础上再去理解诸如类似syn flood攻击这样的DDOS攻击,dns劫持攻击,sniffer路由侦听,ARP欺骗,就非常容易。
对协议的内容格式和加密方式有了解后,才会知道sniffer可以看到什么,不能看到什么,也才知道如果在路由器进行传输数据的劫持和伪造,或直接从自己服务器上伪造其他协议数据报文实现攻击,正确的格式应该怎么编写。
3、了解什么是不可逆加密,知道基本的加密算法,比如md5,des等
这样更容易理解彩虹库的原理,以及在拿到特定加密方式的密码文件后,知道如何通过构造字典档进行破解。
4、懂一些编程的原理,SQL语言,以及一些常用数据库的特殊内置程序和管理权限。
黑客不一定是编程高手,但是必须能理解和看懂一些常见的应用代码,并能通过黑客思维寻找其中潜在的破绽。
比如至少要理解客户端脚本和服务端脚本的应用场景和所能实现的目标,这样就能理解说跨站脚本是怎么工作的,SQL注入是怎么工作的,(这俩是我程序员经典面试题来着,我认为每个程序员都应该能构造这样的攻击案例,如果这个都不会,写出的代码肯定是有风险的。)
5、高阶黑客技能,懂汇编和操作系统的一些基础原理,特别是内存管理的部分,理解系统缓存区的设计和内存跳转的一些逻辑,这样才能理解缓存区溢出的原理;如果对这块极为敏感,并且有极强的反汇编工具的应用能力,是可以主动挖掘相关漏洞的,这生意不小,挖出一个主流操作系统的溢出漏洞,一旦被确认是高危漏洞,其价值最少十万美元起。
此外,对应用程序里涉及各种操作系统常用库的加载和调用的理解,有助于理解病毒和木马的加载原理,也有助于理解蜜罐系统的设计。
目前如果对云服务系统的加载模式和调用模式有理解,也有助于理解云服务穿透攻击的理论依据,(穿透云管理系统的攻击行为,虽不流行,但该逻辑存在,相当可怕,其类似于黑客帝国你穿透了自己所生活的虚拟世界,进入了别人的虚拟世界zion。)
6、懂一些电子设备的传输协议,工业控制系统的控制指令集,以及一些网络设备的授权访问逻辑, 随着移动互联网的发展以及互联网扩展到智能家居,汽车等领域,以及各种电子设备的普及,信息安全的技术涵盖层面就更加宽广。目前,一些黑客已经可以远程控制汽车,控制摄像头,以及如上文视频中展示的,可以通过二维码入侵扫描主机。
7、懂法律!懂法律!懂法律!
要知道为自己的行为负责。我觉得一个技术人员了解和学习黑客知识是必要的,因为这样才能在日常工作中应对安全风险,在较高的安全意识上完成编程和运维工作;所以学习黑客技术和黑客的一些原理,可以构造基本的攻击代码(证明自己真实理解了相关技术的实现原理)是有意义的,但是我们要知道技术本身并不罪恶,滥用技术才会导致罪恶!
懂法律的另一个好处是,你知道边界在哪里,有些基于黑客技术的商业行为是合法的,被官方所允许的,而且存在巨大利益,你信不信? 最典型的,苹果越狱市场,安卓刷机,这都是典型的利用黑客技术实现的商业行为,而其本身是法律所许可的。
当你有以上认识的时候,扫描器是什么,木马是什么,撞库是什么,如何实现的攻击和提权,就会比较容易理解,对黑客的理解就会更透彻,当然,其实这里最难的是第一步,也就是黑客的思维方式,很多编程大牛,高手,也并不擅长黑客技术,也是因为黑客思维这玩意,其实真的需要一些天份的,反正我是放弃了,只能讲讲最基本的科普。
以上每个段落,望深了说,学几个月乃至几年都不一定够,不过看天份,也看你所感兴趣的范畴,一般的建议是,想要成为一个牛逼的安全专家或黑客高手,建议首先要粗通全部,其次要精通其中一项或多项即可。 每个大项里也存在很多子项,比如有人对windows系统的调用了如执掌,而有人可能钻研linux颇有心得。 没有一种通用的技术或方法,让你可以随心所欲的穿越互联网,能够想入侵谁就入侵谁。还是存在太多分支和太多思路,我所列的,也只是目前比较通用流行的,那还有一些分支和思路,除了人肉大法,社交工程外,可能我听都没听说过。
至于人肉大法,社交工程,不属于技术范畴,本文不再赘述。