尽管为服务器设计软件的软件工程师们想方设法提高系统的安全性,然而由于系统管理员的水平参差不齐或安全意识底下,往往给黑客提供了入侵的机会。
其实每一个黑客都有自己独到的方法。笔者对于入侵网站服务器的资料收集了很多,但是因为实际情况的不同,往往造成许多方法的失效;由此可见,每一个网站的情况都不同,需要入侵者区分对待。假设深圳的线路比北京的线路要好的多,从而给了词典穷举很大的方便,深圳用户就可以依靠这个优势在线攻击口令,作为北京的用户就需要优先考虑其它办法了。针对这么多的入侵手段,笔者参考H ackalot先生这位黑客界名人的一篇文章给大家介绍一下入侵网站的基本步骤。
分析一部分的主页被黑的事例可以发现使用入侵者最热衷于入侵Web服务器和FTP服务器,因为相对来说这是最简单的两种途径。在假设读者对U NIX系统和WEB SERVER的知识不曾了解的情况下,笔者给出下面的步骤。
一、了解要入侵的系统
现在网络上用作服务器的操作系统以Unix和Linux为主流,如果要入侵这些系统则必须对它们有一个了解。
大部份在 DOS 上使用的指令在 Unix 及 Linux 上都有对应的指令(因为早期的dos开发借鉴了Unix),以下列出在使用 SHELL帐号 (shell account)时最主要的一些指令对应的dos指令:
HELP=HELP
CP=COPY
MV= MOVE
LS= DIR
RM =DEL
CD=CD
要看谁同 r也在该系 y上用户可以键入 WHO 指令,要知道系 y上某一位使用者的资料, 可以 I入 FINGER。这些基本的 Unix 指令可以让你得到你正使用系 y的信息。
二、破解密码
在Unix操作系统中, 所有系统使用者的密码都存放在一个文件中,这个文件存放在 /etc这个目录下面, 它的文件名就叫做passwd。如果读者认为所要做的工作就是拿到这个文件按照上面的密码登陆系统的话那就大错特错了。Unix和Linux下的p asswd文件是特殊的,在它里面所有帐号的密码都已经经过重新编译的(也就是前面说过的DES加密方法),而且这些密码所进行的都是单向编译( one-way encrypted),也就是说没有办法可以反编译它的(decrypt)。
但是还是有些程序可以得到这些原始的密码。笔者向大家推荐一个破解密码的程序"Cracker Jack",它也是一个使用字典来对字典文件进行穷举的软件。首先"Cracker Jack"会把字典文件里的每一个值进行编译,然后将编译过的值与密码文件中的内容进行比较,得到相同的结果就会报告对应的未经编译密码。这个软件巧妙的绕过密码无法反编译的限制,使用穷举比较获得密码。使用这种原理获得密码的工具有许多,读者可以到网络上去搜寻一下。
三、获得密码文件
这是最困难的一部分。很明显,如果管理员有那么一个密码文件的话他当然不会放在那里让其它人舒舒服服的拿到的。入侵者必须找到好方法以不进入系统的方式拿到密码文件。这里笔者向大家介绍两种方法,大家可以试试,有可能会成功。
1.tc目录在FTP服务上不会被锁住,入侵可以用FTP client程序使用anoymously匿名帐号登陆,然后检查一下/etc/passwd是否为匿名设置了被读取的权限,如果有马上备份下来使用软件解码。
2.些系统中,/cgi-bin目录下会有个叫PHF的文件,如果准备入侵的服务器上有的话那就要方便的多了。因为PHF允许使用者对网站系统里的文件作远端读取,以此为据,用户可以使用浏览器抓取p asswd文件,只要在浏览器地址栏中键入URL:http://xxx.xxx.xxx/cgi-bin/phf?Qalias=x%0a/bin/cat%20/etc/passwd,其中xxx.xxx.xxx 是要入侵的网站名。
如果这两种方法都行不通的话,那入侵者必须实施其它的办法了。
在有些情况下入侵者找到的密码文件的第二部分是X、!或者*,那么说明该密码文件已经被锁死,这是系统管理员使用的加强安全的手段之一。但是将密码文件完全隐藏起来的情况是不太有的。通常情况下都会有未经锁死的密码文件备份在系统中,这样入侵者就可以加以利用,比如:入侵者通常会寻找/ etc/shadow目录或类似的目录,看能否找到密码文件的备份。
四、建立自己的shell帐号
经过二、三两个关键的步骤入侵者终于拿到了关键的密码文件,并且破解出了密码。现在可以运行TELNET程序,登陆主机了。当连上服务器时服务器会向你显示自己的一些信息,通常是U NIX、Linux、 aix、 irix、 ultrix、 bsd 甚至是 DOS 和VAX/Vms;然后是Login提示符出现在屏幕上,这时键入得来的帐号和密码即可登陆系统。此时入侵者就可以利用自己的Unix知识做自己喜欢做的事了。
最后对一份密码文件做一个分析,该文件内容如下:
root:1234aaab:0:1:Operator:/:/bin/csh
nobody:*:12345:12345::/:
daemon:*:1:1::/:
sys:*:2:2::/:/bin/csh
sun:123456hhh:0:1:Operator:/:/bin/csh
bin:*:3:3::/bin:
uucp:*:4:8::/var/spool/uucppublic:
news:*:6:6::/var/spool/news:/bin/csh
audit:*:9:9::/etc/security/audit:/bin/csh
sync::1:1::/:/bin/sync
sysdiag:*:0:1:Old System
Diagnostic:/usr/diag/sysdiag:/usr/diag/sysdiag/sysdiag
sundiag:*:0:1:System
Diagnostic:/usr/diag/sundiag:/usr/diag/sundiag/sundiag
tom:456lll45uu:100:20::/home/tom:/bin/csh
john:456fff76Sl:101:20:john:/home/john:/bin/csh
henry:AusTs45Yus:102:20:henry:/home/henry:/bin/csh
harry:SyduSrd5sY:103:20:harry:/home/harry:/bin/csh
steven:GEs45Yds5Ry:104:20:steven:/home/steven:/bin/csh
+::0:0:::
其中以":"分成几个栏位,比如: tom:456lll45uu:100:20:tomchang:/home/tom:/bin/csh的含义是:
User Name: tom
Password: 456lll45uu
User No: 100
Group No: 20
Real Name: tom chang
Home Dir: /home/tom
Shell: /bin/csh
读者可以发现以上诸如nobody、 daemon、 sys、 bin、 uucp、 news、 audit、 sysdiag、sundiag 等的密码栏位都是*,也就是说这些帐号的密码都已锁死,无法直接利用。
值得注意的是,许多系统在首次安装后会有一些缺省帐号和密码,这给投机主义的黑客带来方便,以下就是一些Unix下缺省的帐号和密码。
ACCOUNT PASSWORD
----------- ----------------
root root
sys sys / system / bin
bin sys / bin
mountfsys mountfsys
adm adm
uucp uucp
nuucp anon
anon anon
user user
games games
install install
reboot 供"command login"使用
demo demo
umountfsys umountfsys
sync sync
admin admin
guest guest
daemon daemon
其中 root mountfsys umountfsys install (有 r候 sync也是) 等都是root级别的帐号, 也就是拥有了sysop (系统管理员)的权限。
最后有必要介绍一下Unix的日志文件。很多入侵者不希望侵入的电脑追踪他们,那到底如何做那。
系统管理员主要依靠系统的LOG,即我们时常所说的日志文件来获得入侵的痕迹及入侵者进来的IP和其他信息。当然也有些管理员使用第三方工具来记录侵入电脑的信息,这里主要讲的是一般U NIX系统里记录入侵踪迹的文件。
Unix系统有多个版本,各个系统有不同的LOG文件,但大多数都应该有差不多的存放位置,最普通的位置就是下面的这几个:
/usr/adm,早期版本的Unix;
/var/adm,新一点的版本使用这个位置;
/var/log,一些版本的Solaris,Linux BSD,Free BSD使用这个位置;
/etc,大多数Unix版本把utmp放在此处,一些也把wtmp放在这里,这也是 syslog.conf的位置。
下面列举一些文件的功能,当然他们也根据入侵的系统不同而不同。
acct 或 pacct,记录每个用户使用的命令记录;
access_log,主要使用来服务器运行了NCSA HTTPD,这个记录文件会有什么站点连接过你的服务器;
aculog,保存着你拨出去的MODEMS记录;
lastlog,记录了用户最近的登陆记录和每个用户的最初目的地,有时是最后不成功登陆的记录;
loginlog,记录一些不正常的登陆记录;
messages,记录输出到系统控制台的记录,另外的信息由syslog来生成;
security,记录一些使用UUCP系统企图进入限制范围的事例;
sulog,记录使用su命令的记录;
utmp,记录当前登录到系统中的所有用户,这个文件伴随着用户进入和离开系统而不断变化;
utmpx,UTMP的扩展;
wtmp,记录用户登录和退出事件;
syslog,最重要的日志文件,使用syslogd守护程序来获得。
日志信息:
/dev/log,一个Unix域套接字,接受在本地机器上运行的进程所产生的消息;
/dev/klog,一个从Unix内核接受消息的设备;
514端口,一个INTERNET套接字,接受其他机器通过UDP产生的syslog消息;
Uucp,记录的UUCP的信息,可以被本地UUCP活动更新,也可有远程站点发起的动作修改,信息包括发出和接受的呼叫,发出的请求,发送者,发送时间和发送主机;
lpd-errs,处理打印机故障信息的日志;
ftp日志,执行带-l选项的ftpd能够获得记录功能;
httpd日志,HTTPD服务器在日志中记录每一个WEB访问记录;
history日志,这个文件保存了用户最近输入命令的记录;
vold.log,记录使用外接媒介时遇到的错误记录。
以上介绍了一下入侵服务器的主要步骤,读者现在应该对它有一些基础的认识了。需要再次强调的是如果读者对Unix系统缺乏了解的话那是绝对不可能掌握它的。