📄 1069.html
字号:
Sep 12 07:52:42 netgate in.rlogind[7138]: refused<br>
connect from 2??.?.5?.?42<br>
Sep 12 07:52:52 netgate in.rshd[7139]: refused<br>
connectfrom 2??.?.5?.?42<br>
Sep 12 07:52:55 netgate in.rexecd[7144]: refused<br>
connect from 2??.?.5?.?42<br>
Sep 12 07:52:59 netgate imapd[7146]: refused connect<br>
from 2??.?.5?.42<br>
Sep 12 07:52:59 netgate in.fingerd[7142]: refused<br>
connect from 2??.?.5?.?42<br>
Sep 12 07:53:00 netgate ipop3d[7143]: refused<br>
connect from 2??.?.5?.?42<br>
Sep 12 07:53:07 netgate in.ftpd[7147]: refused<br>
connect from 2??.?.5?.?42<br>
Sep 12 07:53:10 netgate gn[7145]: refused connect<br>
from 2??.?.5?.?42<br>
Sep 12 07:53:22 netgate in.telnetd[7149]: refused<br>
connect from 2??.?.5?.?42<br>
Sep 12 07:56:34 netgate imapd[7150]: refused connect<br>
from 2??.?.5?.?42<br>
<br>
<br>
正如你看到的那样,攻击者已经试图连接服务器上的若干个端口。但是由于服务器关闭了inetd启动的<br>
所有服务,所以LOG系统记录下了这些访问拒绝。若在你的机器中没有发现这样的服务拒绝并不能说明你的机<br>
器没有被攻击。maillog文件将保存那些通过服务器被转发的email信息。xferlog保存ftp的log信息等等。<br>
<br>
若你希望查看wtmp,你可以使用last命令<br>
<br>
# last | more fishduck ttyp6 nexus Tue Sep 28 16:03 still logged in birdrat ttyp5 speedy Tue Sep 28 15:57 still logged in root tty1 Tue Sep 28 12:54 still logged in 将显示谁什么时候登陆进来,登陆了多长时间等信息。通过查看你可以发现非法登陆者信息。 你也可以查看以前的wtmp文件如wtmp.1, 你可以用命令: # last -f /var/log/wtmp.1 | more 但是你还需要注意你的log文件的状态信息,如果它特别小 或者大小为0 则说明可能有攻击者进入系统,并 且修改了这个文件。为了防止任何用户修改某些文件,如对log文件只允许添加,而不允许删除操作等等: 可以通过使用linux Intrusion Detection System可以防止攻击者修改LOG文件password 文件等。该工具 可以在启动lilo时来决定是否允许对某些特定文件的修改。该工具的详细信息可以通过访问 www.soaring-bird.com.cn/oss_proj/lids/index.html获得。 系统的所有进程的祖父进程被成称为"init",其进程ID号是1。你可以通过下面的命令,看到init进程信息。 # ps ax | grep init 1 ? S 6:03 init 系统在启动时的init进程将会启动"inetd"进程,正如前面提到的该进程实现监听网络请求,监听是通过网 络端口号来实现的。 例如你telnet到你的linux服务器上时,实际上你上请求inetd进程启动进程in.telnetd进 程在23端口来处理你的访问请求实现通信。随后,in.telnetd进程启动一个询问你的用户名和密码的进程, 然后你 就登陆到机器了。inetd同时监听很多端口来等待访问请求,然后激活完成相关服务的程序。你可 以通过查看文件/etc/services来看哪个服务使用哪个端口。从节省资源角度来说,利用一个进程而不是每 种服务对应一个进程是有意义的。 当一个攻击者第一次访问你的站点时,他们往往使用成为端口扫描仪的工具,通过该工具攻击者来查看 你开放了那些系统服务。LInux上比较出名的一个端口扫描仪是nmap. 可以从http://www.insecure.org/nmap/index.html下载得到该软件,最新的版本甚至有一个图形化 界面nmapfe。下面我们就运行nmap看可以得到什么结果: 选项'-sS',指使用TCP SYN, 也就是半连接half-pen扫描, '-O',只同时探测被扫描系统的操作系统o。 (利用OS指纹的技术,可以参见http://www.isbase.com/book/showQueryL.asp?libID=271)攻击者知道了 对方使用的何种操作系统就可以有针对性的寻找该操作系统的常见漏洞<br>
<br>
<br>
# nmap -sS -O localhost<br>
<br>
<br>
Starting nmap V. 2.3BETA5 by Fyodor (fyodor@dhp.com,<br>
www.insecure.org/nmap/)<br>
Interesting ports on localhost (127.0.0.1):<br>
Port State Protocol Service<br>
21 open tcp ftp <br>
23 open tcp telnet <br>
25 open tcp smtp <br>
53 open tcp domain <br>
79 open tcp finger <br>
80 open tcp http <br>
98 open tcp linuxconf <br>
111 open tcp sunrpc <br>
113 open tcp auth <br>
139 open tcp netbios-ssn <br>
513 open tcp login <br>
514 open tcp shell <br>
515 open tcp printer <br>
<br>
TCP Sequence Prediction: Class=random positive increments<br>
Difficulty=4360068 (Good luck!)<br>
Remote operating system guess: linux 2.1.122 - 2.2.12<br>
<br>
Nmap run completed -- 1 IP address (1 host up) scanned in 2<br>
seconds<br>
<br>
<br>
这些打开的端口就是攻击者入侵点。当你修改过inetd.conf文件以关闭某些服务,从新启动inetd后,你 再用nmap扫描就可以发现被注释掉的服务扫描不到了。<br>
当然,管理员还可以使用一些其他的安全扫描工具如:satan或 Nessus等 来检测自己的系统的安全可靠<br>
性,在攻击者发现其以前更早的发现自己的系统的漏洞,并加以弥补。<br>
三、<br>
一个笑话里说一个小偷进入到一家,偷光了屋子里所有的东西,但是却用一个相同的东西代替了偷走<br>
的东西。但是在网络世界里,这却是可能发生的。一个攻击者利用一个系统漏洞非法入侵进入到你的系<br>
统后,当你使用ps命令列出系统中的所有的进程时,却看不到什么异常的证据。你查看你的password文件,<br>
一切也是那么的正常。到底发生了什么事情呢?当系统进入到你的系统以后,第一步要做的事情就是取代<br>
系统上某些特定的文件:如netstat命令等。当你使用netstat -a命令时,就不会显示系统攻击者存在的<br>
信息。当然攻击者将替代所有的可能泄露其存在的文件在linux环境下一个有名的这样的工具包名字是<br>
rootkit。通过在任何一个搜索引擎搜索关键字rootkit可以得到数以百计的结果。这些工具一般来说包括:<br>
<br>
<br>
ps netstat top .....<br>
<br>
由于这些经过文件已经被取代。所以简单的利用ls命令查看这些文件是看不出什么破绽的。有若干种方法你<br>
可以验证系统文件的完整性。如果你安装的是Red Hat, Caldera, Turbolinux或任何使用RPM的系统。你可<br>
以利用RPM来验证系统文件的完整性: 首先你应该查明你的那些你需要查看的文件来自哪个软件包,使用<br>
rpm命令你可以查明某个文件属于某个包: # rpm -qf /bin/netstat net-tools-1.51-3 然后,可以扫描<br>
整个rpm包来查看那些发生了改变。对没有发生改变的包使用该命令将没有任何输出信息,如下所示:<br>
<br>
# rpm -V net-tools<br>
<br>
将netstat的5.2版本的二进制可执行文件替换为6.0的版本以后再使用该命令的结果为:<br>
<br>
.......T /bin/netstat<br>
<br>
这说明/bin/netstat/文件已经被修改。若我使用rpm -qf测试ps和top命令可以得到其属于包procps,然后再<br>
验证包procps的完整性。下面是一个被"黑"的站点的结果:<br>
<br>
# rpm -qf /bin/ps procps.2.0.2-2<br>
# rpm -V procps<br>
SM5..UGT /bin/ps<br>
..UGT /usr/bin/top<br>
<br>
攻击者入侵到系统中,并且用自己的ps及top命令替代了我们系统中的命令。从而使管理员看不到其<br>
运行的进程,也许是一个sniffer来监听所有的用户所有进出网络的数据并找寻到密码信息。 下面是一个小<br>
的script来扫描你系统的所有的rpm库,并检查所有的包是否被篡改。但是应该注意的是并不是所有该scripts<br>
报告的问题都是说明该系统文件被攻击者破坏。例如你的password文件一般肯定和你安装系统时是不同的:<br>
<br>
#!/bin/bash<br>
#<br>
# Run through rpm database and report inconsistencies<br>
# for rpmlist in `rpm -qa`<br>
# These quotes are back quotes<br>
do echo " ----- $rpmlist -----" ;<br>
rpm -V $rpmlist done > /tmp/rpmverify.out<br>
<br>
当你运行该scripts时,输出被定向到文件/tmp/rpmverify.out你可以使用less命令查看该文件。但是<br>
由于文本文件如:/etc/passwd, /etc/inetd.conf等很可能显示为被修改过。但是你如何知道这些是管理员<br>
自己修改的还是入侵者修改的呢?方法是:<br>
<br>
在你确保你的系统是干净的,没有被攻击者入侵时,你为这些系统文件创建指纹信息。在你怀疑你的系统<br>
被入侵时使用这些这些指纹信息来判定系统是否被入侵。创建文件的指纹信息是通过命令md5sum 来实现的:<br>
<br>
# md5sum /etc/passwd<br>
d8439475fac2ea638cbad4fd6ca4bc22 /etc/passwd<br>
<br>
# md5sum /bin/ps<br>
6d16efee5baecce7a6db7d1e1a088813 /bin/ps<br>
<br>
# md5sum /bin/netsat<br>
b7dda3abd9a1429b23fd8687ad3dd551 /bin/netstat<br>
<br>
这些数据是我的系统上的文件的指纹信息。不同的系统上的文件的 指纹信息一般是不同的,你应该是使<br>
用md5sum来计算自己系统文件的指纹信息。下面是一些你应该创建指纹信息的文件;<br>
/usr/bin/passwd /sbin/portmap /bin/login /bin/ls /usr/bin/top /etc/inetd.conf /etc/services<br>
通过指纹信息你可以决定是否有系统文件被篡改。<br>
<br>
四、<br>
上一节中说过,当netstat,ls等命令被修改,从而发现系统已经被入侵,下面该怎么办?根据你系统的重要<br>
性的不同,你有很多种选择。但是我推荐对用户目录,password及其他关键的系统文件进行备份。然后重新<br>
安装系统。但是不要随便就将备份的文件拷贝到新系统,因为攻击者可能在这些文件中隐藏一些非法的东西。<br>
<br>
也可以不重新安装系统,而是通过TCP wrapper来限制对主机的访问,并且关闭非关键的网络服务。然后更新<br>
被影响的包。重新"干净"的启动系统是很重要的,但是要实现这点并不容易。若你发现procps或net-tools包<br>
已经被攻击者修改,第一件事情是重新安装干净的包来替换被攻击者做了手脚留下后门的包。一般最好从你的<br>
系统发布者处得到最新的包来重新安装。<br>
<br>
一旦攻击者进入到系统其就将在系统上存放一些工具并且将之隐藏起来,使你不容易发现。下面是一个被攻击<br>
者入侵的系统的实例。当系统被攻击者入侵,服务器被限制网络访问,并且替代所有的受影响的包。然后就<br>
需要通过仔细查看log文件来发现重复的企图进入系统。查看/etc/passwd文件,发现一个不属于合法的用户。<br>
进入到该用户的目录下:/home/jon,运行 "ls -l"得到如下的内容:<br>
<br>
. .. .. .bashrc .bash_history .screenrc emech.tar.gz<br>
<br>
除了一个名字为emech.tar.gz的文件以外,看不出什么异常现象。但是仔细观察,你就会发现系统有两个<br>
".."目录。(指该子目录的上一级目录)是的确很奇怪,我使用命令"cd .."我就会进入到/home目录。原来<br>
其中子目录名字是在两个点后面有一个空格。(".. ")你可以通过如下命令发现:<br>
<br>
# cd /home/jon<br>
# echo .* | cat -v<br>
. .. .. .bashrc .bash_history .screenrc emech.tar.gz<br>
<br>
仔细观察可以发现每个子目录都是被一个空格隔开,而在第二个“..”和.bashrc之间有两个空格。这就<br>
意味着第二个".."子目录其实为点-点-空格。下面进入到该目录:<br>
<br>
# cd ".. "<br>
<br>
然后列出该目录下的内容:<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -