系统遭受入侵后使用TCT进行紧急恢复并分析

  作者:inburst 从事系统管理工作,就算你非常小心翼翼地做好了一切防护,还是可能有入侵者能够突破你 的防护进入系统,并且更改或者删除一些文件。这里,我们借用honeynet project里面的一些实 例,来对一个unix下的实用工具软件tct及其相关辅助软件做简要说明。并且在最后再介绍另外 一个比较不错的能恢复ext2文件系统的软件recover。 首先说一下相关的软件: 1、The Coroners Toolkit:也就是我们所说的TCT,想要在国内下载的话,您可以到安全焦 点()下载。这是一个unix下的命令行文件系统 工具集,支持FFS及ext2fs,从块及结点处来对数据进行恢复。它能够针对文件的最后修改、访 问或者改变(MAC)的时间来进行分析,并且根据数据节点的值提取出文件列表以进行恢复。 2、TCTUTILs:在可以下载当前最新 版本。它是对TCT的补充,提供了根据文件名对数据进行恢复的命令行工具。这两个工具都需要 使用者对一些底层基本知识比较了解。 3、Autopsy Forensic Browser:可以从 下载。它提供了一个友好的html界面给tct及tctutils。它能使枯燥的分析工作相对轻松些:) 一、安装:TCT在各种unix平台下都经过了比较好的测试。现在能够支持FreeBSD、OpenBSD、 SunOS、Linux等平台。TCTUTILs和Autopsy则不一定能跑得起来,我测试的平台是一台默认安装 的Red Hat 6.2系统。 1、tct # tar zvfx tct-1.07.tar.gz -C /usr/local/tct/; cd /usr/local/tct/tct*; make 这样把tct展开到/usr/local/tct/tct-1.07/的目录下,并且进入,make。这里,如果是make 过之后,需要重新在编译的话,需要运行perl reconfig命令重新配置。 2、tctutils: # tar zvfx tctutils-1.01.tar.gz -C /usr/local/tct;cd /usr/local/tct/tctu*;make 现在tctutils似乎只在OpenBSD 2.8、Debian Linux 2.2、Solaris 2.7下经过详尽测试,而 对FreeBSD还支持不好。通常make不会出现什么问题,,如果有,自己改下代码或者Makefile即可。 3、Autopsy: 解包后运行./configure后,它会自己寻找一些实用工具如grep、strings、md5sum的路径, 并要求确认tct以及tctutils的路径(如果没找到会要求你输入正确路径)。最后要求输入需要检 查的文件系统所在,才生成程序autopsy。 二、honeynet scan15简介: 关于honeynet project的详情,可以参见安全焦点(),他们 现在维护着国外honeynet项目的中文镜像。 scan15是honeynet在2001年3月15日于一台受入侵的Linux机器上搜集到的数据而面临的问题。 入侵者下载了一些rootkit放在根目录下,成功安装后删除了。而honeynet project将当时的原始 数据镜像下来,作为题目出给网络安全爱好者,要求对这一被删除的rootkit进行恢复。 详情可以参见。 根据要求,我下载了honeynet.tar.gz的包,约13M,解压后是一个270M左右的文件honeypot.hda8.dd 及一个README文件,README如下: =================================================================== SUMMARY ——- You have download the / partition of a compromised RH 6.2 Linux box. Your mission is to recover the deleted rootkit from the / partition. Below are a list of all the partitions that made up the compromised system. /dev/hda8 / ilsdump.txt # cat ilsdump.txt class|host|device|start_time ils|test.inburst.com.cn|honeypot.hda8.dd|992134159 st_ino|st_alloc|st_uid|st_gid|st_mtime|st_atime|st_ctime|st_dtime|st_mode|st_nlink|st_size|st_block0|st_block1 23|f|0|0|984706608|984707090|984707105|984707105|100644|0|520333|307|308 2038|f|1031|100|984707105|984707105|984707105|984707169|40755|0|0|8481|0 …… …… ==================================================================== 图五 ils命令是用来显示inode信息的,它显示了每个被删除的文件节点的原始资料。上面显示的第一个域是 结点号。后面数据恢复时需要用到,关于这个输出的详细信息如下: st_ino:The inode number. st_alloc:Allocation status: `a’ for allocated inode, `f’ for free inode. st_uid:Owner user ID. st_gid:Owner group ID. st_mtime:UNIX time (seconds) of last file modification. st_atime:UNIX time (seconds) of last file access. st_ctime:UNIX time (seconds) of last inode status change. st_dtime:UNIX time (seconds) of file deletion (LINUX only). st_mode:File type and permissions (octal). st_nlink:Number of hard links. st_size:File size in bytes. st_block0,st_block1:The first two entries in the direct block address list. ==================================================================== # /usr/local/tct/extras/ils2mac ilsdump.txt > deletedfiles.txt # cat deletedfiles.txt class|host|device|start_time body|test.inburst.com.cn|honeypot.hda8.dd|992134159 md5|file|st_dev|st_ino|st_mode|st_ls|st_nlink|st_uid|st_gid|st_rdev|st_size|st_atime|st_mtime|st_ctime|st_blksize|st_blocks |||23|100644|-rw-r–r–|0|0|0||520333|984707090|984706608|984707105|| |||2038|40755|drwxr-xr-x|0|1031|100||0|984707105|984707105|984707105|| |||2039|100755|-rwxr-xr-x|0|0|0||611931|984707090|1013173693|984707105|| |||2040|100644|-rw-r–r–|0|0|0||1|984707090|983201398|984707105|| …… …… ==================================================================== 图六 ils2mac重新排列输出了上面的信息,这在你有多个磁盘分区需要分析时比较有用。 ==================================================================== # mactime -p /mnt/etc/passwd -g /mnt/etc/group -b deletedfiles.txt 1/1/2001 > mactime.txt # cat mactime.txt Feb 08 02 21:08:13 611931 m.. -rwxr-xr-x root root Jan 27 01 23:11:32 3278 m.. -rw-r–r– root root Jan 27 01 23:11:44 11407 m.. -rw-r–r– root root Feb 26 01 22:46:04 632066 m.. -rwxr-xr-x root root Feb 26 01 23:22:55 4060 m.. -rwxr-xr-x root root Feb 26 01 23:22:59 8268 m.. -rwx—— root root Feb 26 01 23:23:10 4620 m.. -rwxr-xr-x root root Feb 26 01 23:23:55 53588 m.. -rwxr-xr-x root root Feb 26 01 23:24:03 75 m.. -rwx—— root root Feb 26 01 23:28:40 79 m.. -rwxr-xr-x root root Feb 26 01 23:29:51 688 m.. -rw-r–r– root root Feb 26 01 23:29:58 1 m.. -rw-r–r– root root Mar 03 01 11:05:12 708 m.. -rw-r–r– root root Mar 03 01 11:08:37 3713 m.. -rwx—— root root Mar 15 01 19:17:36 33135 mac -rw-r–r– root root Mar 15 01 19:19:37 16 ma. lrwxrwxrwx root root 16 ma. lrwxrwxrwx root root 16 ma. lrwxrwxrwx root root Mar 15 01 19:20:25 16 ..c lrwxrwxrwx root root 239 .ac -rw-r–r– root root …… …… ==================================================================== 图七 mactime命令则是按时间,inode对输出进行排列、对比,显示出哪些inodes被修改或者存取过。 OK,有趣的东西玩过了,让我们来看看,其实用autopsy就不用这么麻烦,大家可以从 看到相关的抓图,从图上就可以清楚地看出,我们要恢复的数据在哪里了:) b、恢复数据 通过上面的数据分析之后,我们应该能够自己判断哪些数据可能是比较有趣的,然后用icat命令加以提取。从上面的图中我们可以 知道,结点23处的lk.tgz应该是比较好玩的东西,好吧,让我们来看看。 ==================================================================== # icat honeypot.hda8.dd 23 > file-23 do echo $i; > grep `md5sum $i` md5.all; > done; last/cleaner last/ifconfig md5.all:086394958255553f6f38684dad97869e /mnt/sbin/ifconfig last/inetd.conf md5.all:b63485e42035328c0d900a71ff2e6bd7 /mnt/etc/inetd.conf last/install last/last.cgi last/linsniffer md5.all:6c0f96c1e43a23a21264f924ae732273 /mnt/dev/ida/.drag-on/linsniffer md5.all:6c0f96c1e43a23a21264f924ae732273 /mnt/dev/ida/.. /linsniffer last/logclear md5.all:5f22ceb87631fbcbf32e59234feeaa5b /mnt/dev/ida/.drag-on/logclear md5.all:5f22ceb87631fbcbf32e59234feeaa5b /mnt/dev/ida/.. /logclear last/lsattr last/mkxfs md5.all:18a2d7d3178f321b881e7c493af72996 /mnt/dev/ida/.drag-on/mkxfs md5.all:18a2d7d3178f321b881e7c493af72996 /mnt/dev/ida/.. /mkxfs last/netstat md5.all:2b07576213c1c8b942451459b3dc4903 /mnt/bin/netstat last/pidfile md5.all:68b329da9893e34099c7d8ad5cb9c940 /mnt/etc/at.deny last/ps md5.all:7728c15d89f27e376950f96a7510bf0f /mnt/bin/ps last/s md5.all:06d04fa3c4941b398756d029de75770e /mnt/dev/ida/.drag-on/s md5.all:06d04fa3c4941b398756d029de75770e /mnt/dev/ida/.. /s last/sense md5.all:464dc23cac477c43418eb8d3ef087065 /mnt/dev/ida/.drag-on/sense md5.all:464dc23cac477c43418eb8d3ef087065 /mnt/dev/ida/.. /sense last/services md5.all:54e41f035e026f439d4188759b210f07 /mnt/etc/services last/sl2 md5.all:4cfae8c44a6d1ede669d41fc320c7325 /mnt/dev/ida/.drag-on/sl2 md5.all:4cfae8c44a6d1ede669d41fc320c7325 /mnt/dev/ida/.. /sl2 last/ssh last/ssh_config last/ssh_host_key md5.all:c2c1b08498ed71a908c581d634832672 /mnt/dev/ida/.drag-on/ssh_host_key md5.all:c2c1b08498ed71a908c581d634832672 /mnt/dev/ida/.. /ssh_host_key last/ssh_host_key.pub last/ssh_random_seed md5.all:ad265d3c07dea3151bacb6930e0b72d3 /mnt/dev/ida/.. /ssh_random_seed last/sshd_config last/top ==================================================================== 图十 这种方法对入侵检测有着极大帮助。从上面的输出我们可以非常轻松地判断出rootkit被安装在几 个隐藏目录下,如 /dev/ida/.. / /dev/ida/.drag-on/ d、由于本文的重点不是放在入侵检测上,所以对该image中其它入侵者留下的痕迹就不再做进一步 分析了,建议如果感觉兴趣同志可以自己去下载这个包来进行一次模拟入侵实战,并且可以从honeynet 的高手们的分析过程中得出很多经验。 最后,介绍一个由叫recover的软件。这个软件可以恢复ext2下被删除的文件,但是没有tct那样功能 强大。只是相对更“傻瓜”一些,操作起来比较方便。可以在 获取。 它的运行简单,只要运行./recover就OK了,然后会问你需要恢复的数据所以磁盘、删除时间、文件 大小等一系统信息,以帮助精确定位需要恢复的文件,但最后恢复出来的东西,都是以数字排序,分析 起来有一定的难度。 大致如此,have fun。 参考资料: 1、《Honeynet Scan of the Month #15》 by Brian Carrier 2、 安全焦点陷阱网络 3、tcttctutilsautopsy的man page() 4、 临行之前,面对太多的疑问和不解:为何是一个人?

系统遭受入侵后使用TCT进行紧急恢复并分析

相关文章:

你感兴趣的文章:

标签云: