《黑客营传奇》续集(43):猎杀企鹅
网络通信
年少轻狂的岁月
“我就是夏云飞惟一的女儿。”夏如兰的话让雷轨的记忆一下子回到了初入江湖的时候。
在雷轨年轻的时候,他最崇拜的人就是华裔程序员David Hunt,他是MXsoft研究院副院长,在这家世界上最为知名的软件公司中,他所担任的角色如同人的大脑一样,他的工作是完成未来OS的构架和内核设计。不过很少人知道David Hunt的中文名字,而更少有人知道他有一个女儿——夏如兰。
夏如兰对电脑有着天生敏感的神经细胞,但是夏云飞从来不让她使用自己公司的操作系统,而是让她使用Linux。不知道是有意还是刻意,夏云飞让夏如兰使用Linux似乎是为了让她无法接触到更多的计算机世界,因为在夏如兰的电脑中完全是一个封闭的世界,她只能够玩父亲为她编写的游戏,看到的也只有父亲所写的程序。
Internet的出现改变了夏如兰的正常生活轨迹。夏如兰决定连接上Internet。
在地球的另一端,一个年轻人此时正像一只饥饿的豺狼,四处寻找着自己的猎物。他的目标是使用Linux操作系统的用户。他刚刚学习了Linux下的入侵技法,而在此之前,他甚至都没有见到过Linux的样子。今天他已经搜寻了30多个IP段了,但是仍然没有发现有漏洞的Linux系统的影子,他太渴望胜利了。他知道虽然Linux在操作系统领域创造了神话,但这并不意味着它就是一个完美的操作系统,而且对于这个仅限于Free的东西来说,更多的漏洞可以危及到它的安全与稳定。像他这种已经对视窗不屑一顾的寂寞黑客,很乐于把自己的猎枪对准UNIX和这只可爱的企鹅,于是猎杀企鹅成为了他最大的梦想。
踢破Linux系统大门的第一步
猎杀企鹅是件值得炫耀的事情,但想得手却并不简单。
在Linux系统中,它提供了完整的多用户(Multiuser)、多任务(Multitasking)以及多进程(Multiprocessing)的工作环境,没有Windows疯狂死机的恶梦,但却具备很完善的网络功能。完全开放型的自由代码、仿Windows系统的X Windows界面,还有超乎寻常的系统稳定性,这些都使它成为了黑客们难以逾越的障碍。每一个尝试进攻过UNIX或者Linux操作系统的黑客都很了解,在对这个庞大而复杂的操作系统动手的时候,Root权限的账号往往最具诱惑力。
他正在寻找Linux下的具有Finger漏洞的目标主机。在Linux操作系统下,一些疏于防范的计算机会允许使用Finger命令查询系统下的用户列表,一旦黑客掌握了系统的用户列表,他就可以根据用户名猜出用户的密码,这是最初级的Linux入侵方式,也是最初级的Linux知识。而现在正是他验证和迈出自己通向Linux系统大门的第一步。
通常情况下,使用Finger命令,你需要知道的只是某人使用哪一台主机以及他们的用户标识名或姓。根据这类信息,你可以用Finger服务显示出下列部分或全部消息:
“某人的用户标识、某人全名、该用户标识现在是否登录、最后用该用户标识登录的人、邮件阅读否、办公地址、某人特别为公众准备的信息(例如一份办公时间表)”。
雷轨此时选择了一个新的IP段,这是他随手在IP列表中选择的一段美国IP地址。他将这段IP地址拷贝到SuperSCAN扫描软件中,开始扫描自己的猎物。Finger服务的端口为79,雷轨知道只要对方的79端口开着,那么他就找到了他所需要的目标了。10分钟过去了,一无所获。雷轨的意志开始动摇了,他想上天是否真会开恩给他一个猎物,这时SuperSCAN将一个IP的扫描报告提交了出来:
130.143.84.**
[Port SCAN]
21/FTP
22/SSL
23/TELNET
79/Finger
80/WWW
……
雷轨敏锐地察觉到,这是一个完美的猎物。从目前的情况来看,这台机子不是刚刚做好系统,就是一个菜鸟在用的机器。雷轨马上开始使用Finger命令探询对方的用户列表。
C:\finger 130.143.84.**
雷轨顺利地得到了用户列表,开始了自己入侵的第一步。目标主机的Telnet服务处于开启状态,他通过CMD命令窗口,输入Telnet命令开始连接对方的Telnet:
C:\Telnet 130.143.84.**
Longin: ADMIN
Password:
……
狙击ProFTPD
他开始用Root一个一个地尝试着用户列表中的用户名,从空口令到用户弱口令,总是无功而返。他开始有些失望了,对方显然也不是傻瓜,不会将口令设置得如此简单。不过通过对方的端口情况和Finger的判断,雷轨断定对方也高明不到什么地方去。他决定强行闯入,详细查询对方的漏洞,看看有没有值得溢出的地方。
雷轨开始一一搜寻这台机器的漏洞,30分钟之后,雷轨找到了自己需要的突破口——ProFTPD。这是一款开放源代码的FTP服务程序,这款FTP软件是Linux机器的最爱,Internet上很多人都会选择ProFTPD作为自己的FTP服务提供软件。不过ProFTPD的开源和用户基数注定了它将会成为被攻击的目标。每隔几周被挖掘出漏洞对于ProFTPD来说已经不是什么稀奇的事情,而雷轨眼前的这台开着FTP的机器,恰巧就是使用的ProFTPD。
雷轨了解,1.2版本的ProFTPD几乎都存在这个漏洞:ProFTPD使用mod_sql模块操作PostgreSQL数据库时,存在SQL注入攻击。远程攻击者可以用这个漏洞在登录FTP服务器时提供恶意SQL命令访问FTP服务器。攻击者在用户名和密码字段输入恶意SQL命令,即可修改原来的SQL逻辑,实现无需密码访问FTP服务器。
Name (localhost:runlevel): ')UNION SELECT
'u','p',1001,1001,'/tmp','/bin/bash' WHERE(''='
331 Password required for ')UNION.
Password:
230 User ')UNION SELECT 'u','p',1001,1001,'/tmp'
,'/bin/bash' WHERE(''=' logged in.
根据漏洞描述提供的检测代码,雷轨很快写出了一个针对ProFTPD漏洞的溢出程序,通过Perl的编译器,溢出成功。雷轨获得了FTP的全部权限。尽管如此,但是此时他并没有Telnet之类的远程控制权限,而且获得FTP权限根本无法叫做攻陷Linux。雷轨希望通过更换扫描器的字典暴力破解出弱口令,但是所有的扫描结果都是一样的,Telnet根本没有弱口令。雷轨太渴望弱口令的出现了,哪怕是权限不高的弱口令,他也可以通过GCC溢出来获得Root权限,而此时所有的计划全部成为了泡影。
后门代码的阴谋
Root,这个词此时对于雷轨太具有诱惑力了,他翻阅着FTP目录中的信息,希望可以找到密码的蛛丝马迹。然而没有一丝一毫的信息是有价值的,这台电脑的主人似乎很喜欢自己编写的程序,大量的Linux小游戏Code堆砌在目录的各个角落中,计算机虽然开着Web和FTP服务,但是却没有一页真正的网页。
放弃吧,雷轨已经开始思考这个词了,他看着目录中毫无用处的游戏代码。代码!雷轨突然像发现了惊人的秘密一样,他从椅子上迅速地弹了起来。“游戏代码,这显然是电脑主人的工作目录,代码最后修改日期竟然是今天,看来电脑的主人经常编译这段代码。”雷轨此时有了一个惊人的计划,他决定将这段游戏的代码下载回来,然后在源代码中加入Rootkit的后门代码。当对方再一次编译执行这个程序的时候,后门就会随着游戏一起……
入侵者入侵后往往会进行清理脚印和留后门等工作,最常使用的后门创建工具就是Rootkit,它用来做创建后门并加以伪装用的程序包。这个程序包里通常包括了日志清理器、后门等程序。同时,程序包里通常还带有一些伪造的PS、LS、Netstat等原本属于系统本身的程序,这样一来,程序员在试图通过这些命令查询系统状况的时候,就无法通过这些假的系统程序发现入侵者的行踪。
雷轨找到自己需要的Rootkit,并加入到了游戏代码中,通过FTP再一次上传到了目标机器中,他又开始了一次漫长的等待,不过这一次他已经嗅到了胜利的气味……
注:ProFTPD漏洞的溢出程序测试代码详见《电脑报》论坛(http://bbs.cpcw.com)的“黑客营”版块。