黑客那些事儿

黑客那些事儿

二向箔安全学院

二向箔安全学院

已认证的官方帐号

已关注

8 人赞同了该文章

黑客和脚本小子

在计算机安全领域,黑客是一群破坏规则、不喜欢被拘束的人,因此总想着能够找到系统的漏洞,以获得一些规则之外的权力。

对于现代计算机系统来说,在用户态的最高权限是root(administrator),也是黑客们最渴望能够获取的系统最高权限。“root”对黑客的吸引,就像大米对老鼠的吸引,美女对色狼的吸引。

不想拿到“root”的黑客,不是好黑客。漏洞利用代码能够帮助黑客们达成这一目标。黑客们使用的漏洞利用代码,被称为“exploit”。在黑客的世界里,有的黑客,精通计算机技术,能自己挖掘漏洞,并编写exploit;而有的黑客,则只对攻击本身感兴趣,对计算机原理和各种编程技术的了解比较粗浅,因此只懂得编译别人的代码,自己并没有动手能力,这种黑客被称为“Script Kids”,即“脚本小子”。在现实世界里,真正造成破坏的,往往并非那些挖掘并研究漏洞的“黑客”们,而是这些脚本小子。而在今天已经形成产业的计算机犯罪、网络犯罪中,造成主要破坏的,也是这些“脚本小子”。

黑客技术的发展

从黑客技术发展的角度看,在早期,黑客攻击的目标以系统软件居多。一方面,是由于这个时期的 Web 技术发展还远远不成熟;另一方面,则是因为通过攻击系统软件,黑客们往往能够直接获取 root 权限。这段时期,涌现出了非常多的经典漏洞以及“exploit”。比如著名的黑客组织TESO,就曾经编写过一个攻击 SSH 的 exploit,并公然在 exploit 的 banner 中宣称曾经利用这个 exploit 入侵过 cia.gov(美国中央情报局)。

下面是这个exploit的一些信息。

root@plac /bin >> ./ssh
linux/x86 sshd1 exploit by zip/TESO (zip@james.kalifornia.com) - ripped from openssh 2.2.0 src
greets: mray, random, big t, sh1fty, scut, dvorak
ps. this sploit already owned Central Intelligence Agency :/
**please pick a type**
Usage: ./ssh host [options]
Options:
  -p port
  -b baseBase address to start bruteforcing distance, by default 0x1800, goes as high as 0x10000
  -t type
  -d          debug mode
  -o     Add this to delta_min
types:
0: linux/x86 ssh.com 1.2.26-1.2.31 rhl
1: linux/x86 openssh 1.2.3 (maybe others)
2: linux/x86 openssh 2.2.0p1 (maybe others)
3: freebsd 4.x, Secure Shell and software beyond the protocol 1.2.26-1.2.31 rhl

有趣的是,这个 exploit 还曾经出现在著名电影《黑客帝国2》中:

电影《黑客帝国2》

放大屏幕上的文字可以看到:

电影《黑客帝国2》中使用的著名exploit

在早期互联网中,Web 并非互联网的主流应用,相对来说,基于SMTP、POP3、FTP、IRC等协议的服务拥有着绝大多数的用户。因此黑客们主要的攻击目标是网络、操作系统以及软件等领域,Web 安全领域的攻击与防御技术均处于非常原始的阶段。

相对于那些攻击系统软件的exploit而言,基于 Web 的攻击,一般只能让黑客获得一个较低权限的账户,对黑客的吸引力远远不如直接攻击系统软件。

但是时代在发展,防火墙技术的兴起改变了互联网安全的格局。尤其是以Cisco、华为等为代表的网络设备厂商,开始在网络产品中更加重视网络安全,最终改变了互联网安全的走向。防火墙、ACL技术的兴起,使得直接暴露在互联网上的系统得到了保护。

比如一个网站的数据库,在没有保护的情况下,数据库服务端口是允许任何人随意连接的;在有了防火墙的保护后,通过ACL可以控制只允许信任来源的访问。这些措施在很大程度上保证了系统软件处于信任边界之内,从而杜绝了大部分的攻击来源。

2003年的冲击波蠕虫是一个里程碑式的事件,这个针对Windows操作系统RPC服务(运行在445端口)的蠕虫,在很短的时间内席卷了全球,造成了数百万台机器被感染,损失难以估量。在此次事件后,网络运营商们很坚决地在骨干网络上屏蔽了135、445等端口的连接请求。此次事件之后,整个互联网对于安全的重视达到了一个空前的高度。2017年5月12日,又爆发了一个运行在445端口上的勒索蠕虫病毒,席卷全球,名曰“永恒之蓝”,历史总是惊人的相似。

运营商、防火墙对于网络的封锁,使得暴露在互联网上的非 Web 服务越来越少,且 Web 技术的成熟使得 Web 应用的功能越来越强大,最终成为了互联网的主流。黑客们的目光,也渐渐转移到了 Web 这块大蛋糕上。

Web 安全

Web 攻击技术的发展也可以分为几个阶段。在 Web 1.0时代,人们更多的是关注服务器端动态脚本的安全问题,比如将一个可执行脚本(俗称webshell)上传到服务器上,从而获得权限。动态脚本语言的普及,以及 Web 技术发展初期对安全问题认知的不足导致很多“血案”的发生,同时也遗留下很多历史问题,比如 PHP 语言至今仍然只能靠较好的代码规范来保证没有文件包含漏洞,而无法从语言本身杜绝此类安全问题的发生。

SQL注入的出现是 Web 安全史上的一个里程碑,它最早出现大概是在1999年,并很快就成为Web安全的头号大敌。就如同缓冲区溢出出现时一样,程序员们不得不日以继夜地去修改程序中存在的漏洞。黑客们发现通过SQL注入攻击,可以获取很多重要的、敏感的数据,甚至能够通过数据库获取系统访问权限,这种效果并不比直接攻击系统软件差,Web攻击一下子就流行起来。SQL注入漏洞至今仍然是Web安全领域中的一个重要组成部分。

XSS(跨站脚本攻击)的出现则是 Web 安全史上的另一个里程碑。实际上,XSS 的出现时间和 SQL 注入差不多,但是真正引起人们重视则是在大概2003年以后。在经历了 MySpace 的 XSS 蠕虫事件后,安全界对 XSS 的重视程度提高了很多,OWASP 2007 TOP 10威胁甚至把 XSS 排在榜首。

伴随着 Web 2.0的兴起,XSS、CSRF等攻击已经变得更为强大。Web 攻击的思路也从服务器端转向了客户端,转向了浏览器和用户。黑客们天马行空的思路,覆盖了 Web 的每一个环节,变得更加的多样化,这些安全问题,在本书后续的章节中会深入地探讨。

Web 技术发展到今天,构建出了丰富多彩的互联网。互联网业务的蓬勃发展,也催生出了许多新兴的脚本语言,比如 Python、Ruby、NodeJS 等,敏捷开发成为互联网的主旋律。而手机技术、移动互联网的兴起,也给 HTML 5 带来了新的机遇和挑战。与此同时,Web 安全技术,也将紧跟着互联网发展的脚步,不断地演化出新的变化。

黑帽子和白帽子

正如一个硬币有两面一样,“黑客”也有好坏之分。在黑客的世界中,往往用帽子的颜色来比喻黑客的好坏。白帽子,则是指那些精通安全技术,但是工作在反黑客领域的专家们;而黑帽子,则是指利用黑客技术造成破坏,甚至进行网络犯罪的群体。

同样是研究安全,白帽子和黑帽子在工作时的心态是完全不同的。

对于黑帽子来说,只要能够找到系统的一个弱点,就可以达到入侵系统的目的;而对于白帽子来说,必须找到系统的所有弱点,不能有遗漏,才能保证系统不会出现问题。这种差异是由于工作环境与工作目标的不同所导致的。白帽子一般为企业或安全公司服务,工作的出发点就是要解决所有的安全问题,因此所看所想必然要求更加的全面、宏观;黑帽子的主要目的是要入侵系统,找到对他们有价值的数据,因此黑帽子只需要以点突破,找到对他们最有用的一点,以此渗透,因此思考问题的出发点必然是有选择性的、微观的。

从对待问题的角度来看,黑帽子为了完成一次入侵,需要利用各种不同漏洞的组合来达到目的,是在不断地组合问题;而白帽子在设计解决方案时,如果只看到各种问题组合后产生的效果,就会把事情变复杂,难以细致入微地解决根本问题,所以白帽子必然是在不断地分解问题,再对分解后的问题逐个予以解决。

这种定位的不对称,也导致了白帽子的安全工作比较难做。“破坏永远比建设容易”,但凡事都不是绝对的。要如何扭转这种局面呢?一般来说,白帽子选择的方法,是克服某种攻击方法,而并非抵御单次的攻击。比如设计一个解决方案,在特定环境下能够抵御所有已知的和未知的 SQL Injection 问题。假设这个方案的实施周期是3个月,那么执行3个月后,所有的 SQL Injection 问题都得到了解决,也就意味着黑客再也无法利用 SQL Injection 这一可能存在的弱点入侵网站了。如果做到了这一点,那么白帽子们就在 SQL Injection 的局部对抗中化被动为主动了。

但这一切都是理想状态,在现实世界中,存在着各种各样不可回避的问题。工程师们很喜欢一句话:“No Patch For Stupid! ”,在安全领域也普遍认为:“最大的漏洞就是人!”。写得再好的程序,在有人参与的情况下,就可能会出现各种各样不可预知的情况,比如管理员的密码有可能泄露,程序员有可能关掉了安全的配置参数,等等。安全问题往往发生在一些意想不到的地方。

另一方面,防御技术在不断完善的同时,攻击技术也在不断地发展。

摘自:《白帽子讲 Web 安全》

(PS: 这本书真的很值得一看!)

编辑于 2019-08-08

黑客 (Hacker)

网络安全

渗透测试

赞同 82 条评论

分享

收藏

文章被以下专栏收录