2009年10月27日星期二

入侵*NIX类服务器详解

FROM: 网络

在网上有许多网友提出这样的问题:究竟网站的主页是如何被黑的?黑客们到底是如何入侵服务器的?

在讨论这部分知识前,读者需要知道入侵网站是非法的;但是在网络上找到网站的入侵漏洞并通知该网站是受到欢迎的。为什么要这样寻找入侵漏洞或入侵哪,闻名的黑客H ackalot 说过“入侵网站是利用所学的知识来学习新的知识的一种办法”,这也就是中国人所常说的“温故而知新”。

原理
尽管为服务器设计软件的软件工程师们想方设法提高系统的安全性,然而由于系统管理员的水平参差不齐或安全意识底下,往往给黑客提供了入侵的机会。

其实每一个黑客都有自己独到的方法。笔者对于入侵网站服务器的资料收集了很多,但是因为实际情况的不同,往往造成许多方法的失效;由此可见,每一个网站的情况都不同,需要入侵者区分对待。假设深圳的线路比北京的线路要好的多,从而给了词典穷举很大的方便,深圳用户就可以依靠这个优势在线攻击口令,作为北京的用户就需要优先考虑其它办法了。针对这么多的入侵手段,笔者参考 Hackalot 先生这位黑客界名人的一篇文章给大家介绍一下入侵网站的基本步骤。

分析一部分的主页被黑的事例可以发现使用入侵者最热衷于入侵 Web服务器FTP服务器,因为相对来说这是最简单的两种途径。在假设读者对 UNIX 系统和 WEB SERVER 的知识不曾了解的情况下,笔者给出下面的步骤。

A. 了解要入侵的系统

现在网络上用作服务器的操作系统以 UNIX 和 Linux 为主流,假如要入侵这些系统则必须对它们有一个了解。

大部份在 DOS 上使用的指令在 UNIX 及 Linux 上都有对应的指令(因为早期的dos开发借鉴了UNIX),以下列出在使用 SHELL帐号 (shell account)时最主要的一些指令对应的dos指令:

  • help = help

  • cp = copy

  • mv = move

  • ls = dir

  • rm = del

  • cd = cd


要看谁同也在该系统上用户可以键入who指令,要知道系统上某一位使用者的资料, 可以键入finger

B. 破解密码

在UNIX操作系统中, 所有系统使用者的密码都存放在一个文件中,这个文件存放在/etc/passwd这个文件里,这个文件里的帐号的密码都已经都已经经过重新编译(DES 加密),并且都是单向编译(one-way encrypted)。

但是还是有些程序可以得到这些原始的密码。笔者向大家推荐一个破解密码的程序Cracker Jack,它也是一个使用字典来对字典文件进行穷举的软件。首先 Cracker Jack 会把字典文件里的每一个值进行编译,然后将编译过的值与密码文件中的内容进行比较,得到相同的结果就会报告对应的未经编译密码。这个软件巧妙的绕过密码无法反编译的限制,使用穷举比较获得密码。使用这种原理获得密码的工具有许多,读者可以到网络上去搜寻一下。

C. 获得密码文件

这是最困难的一部分。很明显,假如管理员有那么一个密码文件的话,当然不会放在那里让其它人舒舒适服的拿到的。入侵者必须找到好方法以不进入系统的方式拿到密码文件。这里笔者向大家介绍两种方法,大家可以试试,有可能会成功。

1)
tc目录在FTP服务上不会被锁住,入侵可以用FTP client程序使用 anoymouse 匿名帐号登陆,然后检查一下/etc/passwd是否为匿名设置了被读取的权限,假如有马上备份下来使用软件解码。

2)
一些系统中,cgi-bin目录下会有个叫PHF的文件,假如预备入侵的服务器上有的话那就要方便的多了。因为 PHF答应使用者对网站系统里的文件作远端读取,以此为据,用户可以使用浏览器抓取p asswd文件,只要在浏览器地址栏中键入URL:http://xxx.xxx.xxx/cgi-bin/phf?Qalias=x
/bin/cat /etc/passwd
,其中xxx.xxx.xxx 是要入侵的网站名。

假如这两种方法都行不通的话,那入侵者必须实施其它的办法了。

在有些情况下入侵者找到的密码文件的第二部分是X!或者*,那么说明该密码文件已经被锁死,这是系统管理员使用的加强安全的手段之一。但是将密码文件完全隐藏起来的情况是不太有的。通常情况下都会有未经锁死的密码文件备份在系统中,这样入侵者就可以加以利用,比如:入侵者通常会寻找/ etc/shadow 目录或类似的目录,看能否找到密码文件的备份。

D. 建立自己的shell帐号

经过二、三两个要害的步骤入侵者终于拿到了要害的密码文件,并且破解出了密码。现在可以运行TELNET程序,登陆主机了。当连上服务器时服务器会向你显示自己的一些信息,通常是UNIX、linux, aix, irix, ultrix, bsd 甚至是 DOS 和VAX/Vms;然后是 Login 提示符出现在屏幕上,这时键入得来的帐号和密码即可登陆系统。此时入侵者就可以利用自己的UNIX知识做自己喜欢做的事了。

最后对一份密码文件做一个分析,该文件内容如下:
[text]
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:::
[/text]
其中以 : 分成几个栏位,比如: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下缺省的帐号和密码。

























































ACCOUNTPASSWORD 
rootroot 
syssys/system /bin
binsys/bin
mountfsysmountfsys 
admadm 
uucpuucp 
nuucpanon 
anonanon 
useruser 
gamesgames 
installinstall 
reboot供“command login”使用
demodemo 
umountfsysumountfsys 
syncsync 
adminadmin 
guestguest 
daemondaemon 


其中 root, mountfsys, umountfsys, install(有时候 sync 也是) 等都是root级别的帐号, 也就是拥有了sysop (系统管理员)的权限。

最后有必要介绍一下UNIX的日志文件。很多入侵者不希望侵入的电脑追踪他们,那到底如何做那。

系统管理员主要依靠系统的 LOG,即我们时常所说的日志文件来获得入侵的痕迹及入侵者进来的IP和其他信息。当然也有些管理员使用第三方工具来记录侵入电脑的信息,这里主要讲的是一般 UNIX 系统里记录入侵踪迹的文件。

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 记录使用外接媒介时碰到的错误记录

没有评论 :

发表评论