網絡依然還是計算機,Sun還是Sun!
后门技术及rootkit工具-Knark分析及防范
上一篇 / 下一篇 2007-09-24 15:27:25 / 个人分类:网络技术
文讨论了Linux环境下攻击者入侵成功以后常常使用的一些后门技术,并且对最著名的rootkit工具之一?knark进行了详细的分析,并且指出了在发现系统被入侵以后如何发现是否是kark及如何恢复。
;Ai!o0LHGi7c7590422IXPUB技术博客5Voj J9r|
注意:本文是用于管理员学习之用,不可用于进行网络攻击否则带来的任何法律后果自行负责。本文作者不对由于本文导致的任何后果负任何责任。
J*G,fGr7590422
~]i z+E8zb7D ]7590422一、什么是"rootkit"?
$AiK&@*d5j Ybo4|7590422入侵者入侵后往往会进行清理脚印和留后门等工作,最常使用的后门创建工具就是rootkit。不要被名字所迷惑,这个所谓的“rootkit”可不是给超级用户root用的,它是入侵者在入侵了一太主机后,用来做创建后门并加以伪装用的程序包。这个程序包里通常包括了日志清理器,后门等程序。同时,程序包里通常还带有一些伪造的ps、ls、who、w、netstat等原本属于系统本身的程序,这样的话,程序员在试图通过这些命令查询系统状况的时候,就无法通过这些假的系统程序发觉入侵者的行踪。IXPUB技术博客BA/Yq3XI7C
O3WIY7tG.`7590422在一些黑客组织中,rootkit (或者backdoor) 是一个非常感兴趣的话题。各种不同的rootkit被开发并发布在internet上。在这些rootkit之中, LKM尤其被人关注, 因为它是利用现代操作系统的模块技术。作为内核的一部分运行,这种rootkit将会越来越比传统技术更加强大更加不易被发觉。一旦被安装运行到目标机器上, 系统就会完全被控制在hacker手中了。甚至系统管理员根本找不到安全隐患的痕迹, 因为他们不能再信任它们的操作系统了。后门程序的目的就是甚至系统管理员企图弥补系统漏洞的时候也可以给hacker系统的访问权限。
9~'L$V5[ X5Tm7590422IXPUB技术博客%M_ j:S)v X7Y
入侵者通过:设置uid程序, 系统木马程序, cron后门等方法来实现入侵者以后从非特权用户使用root权限。IXPUB技术博客(cv$~1O,B/y&m
IXPUB技术博客FfC(z)VPx3of
*设置uid程序。 黑客在一些文件系统理放一些设置uid脚本程序。无论何时它们只要执行这个程序它们就会成为root。IXPUB技术博客V2Fpu z&pf
IXPUB技术博客`5\cB/|;b7w2I
*系统木马程序。黑客替换一些系统程序,如"login"程序。因此, 只要满足一定的条件,那些程序就会给黑客最高权限。IXPUB技术博客4UsSx&n7G
2n)e/?Z8j7590422*Cron后门。黑客在cron增加或修改一些任务,在某个特定的时间程序运行,他们就可以获得最高权限。
g(C"V-oX^|N3b7590422
9@Bb#B:A4M a\W7590422具体可能通过以下方法给予远程用户以最高访问权限: ".rhost" 文件, ssh认证密钥, bind shell, 木马服务程序。IXPUB技术博客-mp!eu_
4`PlE5g'z `0A7590422*".rhosts" 文件。一旦 "+ +"被加入某个用户的.rhosts文件里, 任何人在任何地方都可以用这个账号来登陆进来而不需要密码。IXPUB技术博客'Dv'^/|r dAh
IXPUB技术博客k CUq:]8f
*ssh认证密钥。黑客把他自己的公共密钥放到目标机器的ssh配置文件"authorized_keys"里, 他可以用该账号来访问机器而不需要密码。IXPUB技术博客2]d$}]"tm5b2u8@)b
-[4z T8L3?Z/C7590422*Bind shell。黑客绑定一个shell到一个特定的tcp端口。任何人telnet这个端口都可以获得交互的shell。更多精巧的这种方式的后门可以基于udp,或者未连接的tcp, 甚至icmp协议。IXPUB技术博客}(Qt}KdYl
Ub~M2Y3NOkf7X7590422*Trojaned服务程序。任何打开的服务都可以成为木马来为远程用户提供访问权限。例如, 利用inetd服务在一个特定的端口来创建一个bind shell,或者通过ssh守护进程提供访问途径。IXPUB技术博客3F| ?3WU^
IXPUB技术博客:a }6HXhL7B
在入侵者植入和运行后门程序之后, 他会设法隐藏自己存在的证据,这主要涉及到两个方面问题: 如何来隐藏他的文件且如何来隐藏他的进程。IXPUB技术博客+c k8R pN
"n5Bc}3RJ7590422为了隐藏文件, 入侵者需要做如下事情: 替换一些系统常用命令如"ls", "du", "fsck"。在底层方面, 他们通过把硬盘里的一些区域标记为坏块并把它的文件放在那里。或者如果他足够疯狂,他会把一些文件放入引导块里。IXPUB技术博客de)mx4fb:U
9{,u2dr+N7590422为了隐藏进程, 他可以替换 "ps"程序, 或者通过修改argv[]来使程序看起来象一个合法的服务程序。有趣的是把一个程序改成中断驱动的话,它就不会出现在进程表里了。
5Oq|F*^7590422
C0odVb?7590422RootKit-Knark的历史
4L.uep^9y7590422IXPUB技术博客/Zp {)_/O+a
Knark是第二代的新型rootkit工具-其基于LJM(loadable kernel module)技术,使用这种技术可以有效地隐藏系统的信息。作者在代码和README文件中都标注有不承担责任的声明,声明该代码不可以被用作非法活动。然而该软件可以容易地被用于这种目的。
$o)NvsA+lB]"b7590422IXPUB技术博客%v7VyV6Z B@f}
Knark是由creed@sekure.net编写的,主要基于http://www.dataguard.no/bugtraq/1997_4/0059.html中Runar Jensen编写的代码heroin.c,设计思想主要来自于Phrack 52中plaguez发表的文章Weakening theLinuxKernel"。在重新编写了heroin.c的大部分代码以后,Creed决定重新命名为"Knark",在瑞典语中是指吸毒者。Creed编写的其他软件可以在www.sekure.net/~happy-h/得到,但是由于该站点只有瑞典语版本,因此应用并不广泛。IXPUB技术博客P9F }?5BOD5|/q-I5x
v6u-|,^x9r]TF7590422Knark的第一个公开版本是0.41,发布于June, 1999。可以在B4B0 #9中索引到它:http://packetstorm.securify.com/mag/b4b0/b4b0-09.txt。随后0.50和0.59被发布,当前版本是0.59。可以从这里下载0.59版。IXPUB技术博客%w@ M i"[ cX
D|)|}y&_;f7590422Knark特性
{$weQ WqM'TL7590422
-Y_-dGXF O$?k7590422Knark0.59具有以下特性:IXPUB技术博客)g:`:P K e?D;t1\N
IXPUB技术博客d#F'_,I'|p B%qG
*隐藏或显示文件或目录
`-YRKsE7590422*隐藏TCP或UDP连接
gWpGR%{;a7590422*程序执行重定向
9L7bU-UB;L/OC7590422*非授权地用户权限增加("rootme")IXPUB技术博客7?G J(U&T
*改变一个运行进程的UID/GID的工具IXPUB技术博客 _"aSK,e&wAP
*非授权地、特权程序远程执行守护进程IXPUB技术博客 t!C,KWu5t@
*Kill ?31来隐藏运行的进程
"dwF@]@jbl7590422
"O#]D5CX X%F_7590422联合使用程序执行重新定向和文件隐藏,入侵者能提供各种后门程序执行。由于执行重定向是在内核级别进行的,因此文件检测工具不会发现程序文件被修改-原始的执行程序并没有被修改,因此配置检测工具在路径环境中也不会发现任何异常。IXPUB技术博客!I.n\[`N/]7^e_-C
y'~4|-N8L7590422如果Knark结合另外一个用来隐藏系统当前加载的模块的LKM工具modhide,就可能实现甚至通过lsmod命令也不能发现knark的存在。
5g4W!jq'KWgn7590422
xs9QOi7590422Knark软件包的安装和使用
?5nx YY3w7590422IXPUB技术博客'ox;kUS0}\i
该软件包的核心软件是knark,c,它是一个LinuxLKM(loadable kernel-module)。运行命令"make"来编译knark软件包,通过"insmod knark"命令来加载该模块。当knark被加载,隐藏目录/proc/knark被创建,该目录下将包含以下文件:IXPUB技术博客&x b/eR's[
PdV;f:P G7590422author 作者自我介绍IXPUB技术博客TayswH&F*t/l
files 系统中隐藏文件列表
X-AO4dRiA7590422nethides 在/proc/net/[tcp|udp]隐藏的字符串IXPUB技术博客0d |_ F Rr2w
pids 被隐藏的pids列表,格式类似于ps命令输出
8\ xT+f Das9|&X7590422redirects 被重定向的可执行程序入口列表IXPUB技术博客WT vq+PE@WW N
IXPUB技术博客W_.Z*R0}?.P@h
该软件包编译以后将有下面这些工具软件(它们都依赖于被加载的模块knark.o。除了taskhack.c,其用于直接修改/dev/kmem)
)f:N{-]#I6p3Z|:b+M7590422IXPUB技术博客'lC1L4O2{m
hidef 用于在系统中隐藏文件
DA;S2b9bWx5d#}Y[7590422
Ax z&zN7590422在/usr/lib目录下创建子目录hax0r,然后运行命令"./hidef /usr/lib/.hax0r",则该目录会被隐藏,"ls"或"du"等命令都不能显示该目录及其子目录。
p2auZ gD9m[jG7590422IXPUB技术博客r7te\yBw'd
unhidef 用来恢复被隐藏的文件
7prUOVQ7590422
%P,["y0x8UU~5[ A7590422你可以通过访问"cat /proc/knark/files"来察看你隐藏了哪些文件。通过"./unhidef /usr/lib/.hax0r"命令来解除对隐藏文件的隐藏。但是这里有个小小的bug,使得被隐藏的目录在/proc/knark/files中显示的是其加载开始的路径,也就是说如果系统有一个文件系统加载在/mnt,你隐藏了/mnt/secret,则在/proc/knark/files中显示的被隐藏的目录为/secret。因此不会影响根文件被隐藏的目录。
u?A'y x CG7590422
'sj6DI L-]VY7590422ered 用来配置重定向程序的执行IXPUB技术博客 z:B@*uw
_o8d/F7k W J!t1bF7590422拷贝特洛伊木马版本的sshd为/usr/lib/.hax0r/sshd_trojan,然后运行"./ered /usr/local/sbin/sshd /usr/lib/.hax0r/sshd_trojan",这样当/usr/local/sbin/sshd被运行时,实际上运行的特洛伊木马版本的sshd。可以通过命令./ered -c来清楚所有的可执行程序重定向。
u\G&s(D7590422
|(K!X+A.w7N}7590422nethide 用来隐藏/proc/net/tcp和/proc/net/udp中的某些字符串IXPUB技术博客?#A0K5yNF+Y(N+K
IXPUB技术博客 Gi'g|z
netstat命令就不会得到指定的链接信息。通过命令/nethide ":ABCD "可以隐藏和端口号ABCD(十六进制)相关的连接(43981 dec)。也就是对/proc/net/[tcp|udp]读取时进行"grep -v"操作。IXPUB技术博客%xZ^(n*z.Vp
你必需理解使用该程序从/proc/net/[tcp|udp]得到的输出的意义。假设系统运行有sshd,那么连接到本地22端口以后,运行"netstat -at",则输出可能包含:IXPUB技术博客l:^$~]DN1B
IXPUB技术博客lV'I]Yd[8z W
Proto Recv-Q Send-Q Local Address Foreign Address StateIXPUB技术博客"r%NHp!I,?2^e,n^
tcp 0 0 localhost:ssh localhost:1023 ESTABLISHEDIXPUB技术博客)SQEm}J&@
7[] IF7HNwV"_7590422
Op$BE^Y7590422现在我们来检测文件/proc/net/tcp:
7w.BJig@?[;GO7590422IXPUB技术博客[kDm1^[$k7z
cat /proc/net/tcp
M+_,CEA#}h,H7590422
tV#E.i]0u;w(t(k,c7590422则输出可能包含入下内容:
)CL#Kl2q{f7590422IXPUB技术博客uT%?#T$c bVxU
local_address rem_address blablabla...
z^\M.FxFLa75904220:0100007F:0016 0100007F:03FF 01 00000000:00000000 00:00000000 00000000
8opNol;y${#d4ZuD7590422
iMetn^,i9C7590422若我们希望隐藏和地址127.0.0.1相关的任何信息,我们必须使用如上面所示的十六进制的格式。因此如果希望隐藏地址127.0.0.1的22号端口相关的内容就要使用0100007F:0016来标识该链接。因此
B1rB#Est5e+["\G+Q7590422IXPUB技术博客@nlPV3m+k&`1j~5W
./nethide "0100007F:0016"IXPUB技术博客&Y"y2p{;s.l
h5\:h)f&mp1tt7590422将隐藏to/from localhost:22相关的链接信息。
.N#CGCu%J^'u,@7590422IXPUB技术博客aj]aM"r.gm
./nethide ":ABCD "IXPUB技术博客LL_y4p3J
IXPUB技术博客Y1D+u _e,S4X+gS9t
来去除隐藏。
uE:p1Vc(ERP:W&E7590422IXPUB技术博客rK` I-O
rootme 用来实现非特权用户获得root访问权限IXPUB技术博客!GrV8j9|(OJ
IXPUB技术博客_ Pe5@H|U+{
./rootme /bin/sh
*fX3d%|%r7590422就可以实现以root身份运行/bin/sh。IXPUB技术博客_(z,?k9h t h#E
IXPUB技术博客e u0~,B[EzTX
./rootme /bin/ls -l /rootIXPUB技术博客&TGk2YL#~%QO `
则是仅仅以root身份运行单个命令。IXPUB技术博客.FBO;|9aF
-q5U;K:~2B0o9c]t w7590422taskhack 用来改变某个运行着的进程的uid和gidIXPUB技术博客? `k$~rAO
oN"f]Zl(y`"O7590422./taskhack -alluid=0 pidIXPUB技术博客.m)gb iO7Mx"C,~
该命令将进程pid的所有*uid@#s (uid, euid, suid, fsuid)为0 (root).IXPUB技术博客qqP\KJ]7M
K\;J8Bzp9H7590422ps aux | grep bashIXPUB技术博客 A3mF+_z J
creed 91 0.0 1.3 1424 824 1 S 15:31 0:00 -bash
l:@R:o1]7590422IXPUB技术博客c-t6W)R&h6M Oj8^
现在来改变该进程的euid为0:IXPUB技术博客 S VWMl6N8R#SX
IXPUB技术博客o*kfn1KX2a|
./taskhack -euid=0 91
-k Io~ r&p1h7590422
yc7M F'g:G7590422ps aux | grep bash
2RF f$m&j4hq7590422root (!) 91 0.0 1.3 1424 824 1 S 15:31 0:00 -bash
myg:y~(Sh9PY7590422
7^x ?6BC4yM7590422rexec 用来远程执行knark-server的命令:
'i0`8LP'yzo7590422IXPUB技术博客6Q@+}5_B*i
./rexec www.microsoft.com haxored.server.nu /bin/touch /LUDERIXPUB技术博客+f-K yC1nl6].j
8})s7d\;q7590422这命令将从www.microsoft.com:53发送一个伪装的udp数据包到 haxored.server.nu:53,来运行haxored.server.nu的命令"/bin/touch /LUDER"IXPUB技术博客3DCX p3u
IXPUB技术博客 nXH"r(^0J
IXPUB技术博客6?i j3?S.G%R
入侵者入侵以后往往将knark的各种工具存放在/dev/某个子目录下创建的隐藏子目录,如/dev/.ida/.knard等等。IXPUB技术博客hb6su~](Cv
+|.b H G?&H7590422检测系统是否被安装了KnarkIXPUB技术博客n7^v9oY,G(DS!l
r O2J(NGa6b,q9J[ ~)P7590422Knark的作者Creed,发布了一个工具:knarkfinder.c来发现Knark隐藏的进程。IXPUB技术博客 E1j ^8O8kwV
IXPUB技术博客B!}3SP9h_CY E&t-Z(I
检查系统是否安装有Knark的最直接有效的方法是以非特权用户身份来运行Knark的一个软件包如:rootme,看该用户是否能获得root权限。由于目前Knark目前没有认证机制,因此入股系统被安装了Knark任何一个本地用户运行这个程序都能获得root权限。
w3Ra0D"h i7590422
,H)X3@ wRp/Nn'W2S7590422还有一个最有效的发现系统是否被knark或者类似的rootkit所感染的方法就是使用kstat来检测,具体参考本站的Nexeon写的解决方案文章:检测LKM rootkit。IXPUB技术博客E{q osT_j
x*Q H5S.j'[`7590422Knark防范
@:h;V$hUD!d;zr7590422
n6I:M)YEYQ9Y7590422防止knark最有效的方法是阻止入侵者获得root权限。但是在使用一切常规的方法进行安全防范以后,防止knark之类的基于LKM技术的rootkit的方法是:IXPUB技术博客y%BFQ KJ WE| w
IXPUB技术博客1Z j0at4N7X
*创建和使用不支持可加载模块的内核,也就是使用单块内核。这样knark就不能插入到内核中去了。
-YP+Xm3j&s5[tu)A} R7590422IXPUB技术博客/ka-p2wNn?8|
*使用lcap (http://pweb.netcom.com/~spoon/lcap/)实现系统启动结束以后移除内核LKM功能,这样可以防止入侵者加载模块。然而这种方法存在一定的问题,入侵者可以在获得root权限以后修改启动脚本,在lcap启动之前来加载knark模块从而逃避lcap的限制。IXPUB技术博客B[:I B%G
;Ai!o0LHGi7c7590422IXPUB技术博客5Voj J9r|
注意:本文是用于管理员学习之用,不可用于进行网络攻击否则带来的任何法律后果自行负责。本文作者不对由于本文导致的任何后果负任何责任。
J*G,fGr7590422
~]i z+E8zb7D ]7590422一、什么是"rootkit"?
$AiK&@*d5j Ybo4|7590422入侵者入侵后往往会进行清理脚印和留后门等工作,最常使用的后门创建工具就是rootkit。不要被名字所迷惑,这个所谓的“rootkit”可不是给超级用户root用的,它是入侵者在入侵了一太主机后,用来做创建后门并加以伪装用的程序包。这个程序包里通常包括了日志清理器,后门等程序。同时,程序包里通常还带有一些伪造的ps、ls、who、w、netstat等原本属于系统本身的程序,这样的话,程序员在试图通过这些命令查询系统状况的时候,就无法通过这些假的系统程序发觉入侵者的行踪。IXPUB技术博客BA/Yq3XI7C
O3WIY7tG.`7590422在一些黑客组织中,rootkit (或者backdoor) 是一个非常感兴趣的话题。各种不同的rootkit被开发并发布在internet上。在这些rootkit之中, LKM尤其被人关注, 因为它是利用现代操作系统的模块技术。作为内核的一部分运行,这种rootkit将会越来越比传统技术更加强大更加不易被发觉。一旦被安装运行到目标机器上, 系统就会完全被控制在hacker手中了。甚至系统管理员根本找不到安全隐患的痕迹, 因为他们不能再信任它们的操作系统了。后门程序的目的就是甚至系统管理员企图弥补系统漏洞的时候也可以给hacker系统的访问权限。
9~'L$V5[ X5Tm7590422IXPUB技术博客%M_ j:S)v X7Y
入侵者通过:设置uid程序, 系统木马程序, cron后门等方法来实现入侵者以后从非特权用户使用root权限。IXPUB技术博客(cv$~1O,B/y&m
IXPUB技术博客FfC(z)VPx3of
*设置uid程序。 黑客在一些文件系统理放一些设置uid脚本程序。无论何时它们只要执行这个程序它们就会成为root。IXPUB技术博客V2Fpu z&pf
IXPUB技术博客`5\cB/|;b7w2I
*系统木马程序。黑客替换一些系统程序,如"login"程序。因此, 只要满足一定的条件,那些程序就会给黑客最高权限。IXPUB技术博客4UsSx&n7G
2n)e/?Z8j7590422*Cron后门。黑客在cron增加或修改一些任务,在某个特定的时间程序运行,他们就可以获得最高权限。
g(C"V-oX^|N3b7590422
9@Bb#B:A4M a\W7590422具体可能通过以下方法给予远程用户以最高访问权限: ".rhost" 文件, ssh认证密钥, bind shell, 木马服务程序。IXPUB技术博客-mp!eu_
4`PlE5g'z `0A7590422*".rhosts" 文件。一旦 "+ +"被加入某个用户的.rhosts文件里, 任何人在任何地方都可以用这个账号来登陆进来而不需要密码。IXPUB技术博客'Dv'^/|r dAh
IXPUB技术博客k CUq:]8f
*ssh认证密钥。黑客把他自己的公共密钥放到目标机器的ssh配置文件"authorized_keys"里, 他可以用该账号来访问机器而不需要密码。IXPUB技术博客2]d$}]"tm5b2u8@)b
-[4z T8L3?Z/C7590422*Bind shell。黑客绑定一个shell到一个特定的tcp端口。任何人telnet这个端口都可以获得交互的shell。更多精巧的这种方式的后门可以基于udp,或者未连接的tcp, 甚至icmp协议。IXPUB技术博客}(Qt}KdYl
Ub~M2Y3NOkf7X7590422*Trojaned服务程序。任何打开的服务都可以成为木马来为远程用户提供访问权限。例如, 利用inetd服务在一个特定的端口来创建一个bind shell,或者通过ssh守护进程提供访问途径。IXPUB技术博客3F| ?3WU^
IXPUB技术博客:a }6HXhL7B
在入侵者植入和运行后门程序之后, 他会设法隐藏自己存在的证据,这主要涉及到两个方面问题: 如何来隐藏他的文件且如何来隐藏他的进程。IXPUB技术博客+c k8R pN
"n5Bc}3RJ7590422为了隐藏文件, 入侵者需要做如下事情: 替换一些系统常用命令如"ls", "du", "fsck"。在底层方面, 他们通过把硬盘里的一些区域标记为坏块并把它的文件放在那里。或者如果他足够疯狂,他会把一些文件放入引导块里。IXPUB技术博客de)mx4fb:U
9{,u2dr+N7590422为了隐藏进程, 他可以替换 "ps"程序, 或者通过修改argv[]来使程序看起来象一个合法的服务程序。有趣的是把一个程序改成中断驱动的话,它就不会出现在进程表里了。
5Oq|F*^7590422
C0odVb?7590422RootKit-Knark的历史
4L.uep^9y7590422IXPUB技术博客/Zp {)_/O+a
Knark是第二代的新型rootkit工具-其基于LJM(loadable kernel module)技术,使用这种技术可以有效地隐藏系统的信息。作者在代码和README文件中都标注有不承担责任的声明,声明该代码不可以被用作非法活动。然而该软件可以容易地被用于这种目的。
$o)NvsA+lB]"b7590422IXPUB技术博客%v7VyV6Z B@f}
Knark是由creed@sekure.net编写的,主要基于http://www.dataguard.no/bugtraq/1997_4/0059.html中Runar Jensen编写的代码heroin.c,设计思想主要来自于Phrack 52中plaguez发表的文章Weakening theLinuxKernel"。在重新编写了heroin.c的大部分代码以后,Creed决定重新命名为"Knark",在瑞典语中是指吸毒者。Creed编写的其他软件可以在www.sekure.net/~happy-h/得到,但是由于该站点只有瑞典语版本,因此应用并不广泛。IXPUB技术博客P9F }?5BOD5|/q-I5x
v6u-|,^x9r]TF7590422Knark的第一个公开版本是0.41,发布于June, 1999。可以在B4B0 #9中索引到它:http://packetstorm.securify.com/mag/b4b0/b4b0-09.txt。随后0.50和0.59被发布,当前版本是0.59。可以从这里下载0.59版。IXPUB技术博客%w@ M i"[ cX
D|)|}y&_;f7590422Knark特性
{$weQ WqM'TL7590422
-Y_-dGXF O$?k7590422Knark0.59具有以下特性:IXPUB技术博客)g:`:P K e?D;t1\N
IXPUB技术博客d#F'_,I'|p B%qG
*隐藏或显示文件或目录
`-YRKsE7590422*隐藏TCP或UDP连接
gWpGR%{;a7590422*程序执行重定向
9L7bU-UB;L/OC7590422*非授权地用户权限增加("rootme")IXPUB技术博客7?G J(U&T
*改变一个运行进程的UID/GID的工具IXPUB技术博客 _"aSK,e&wAP
*非授权地、特权程序远程执行守护进程IXPUB技术博客 t!C,KWu5t@
*Kill ?31来隐藏运行的进程
"dwF@]@jbl7590422
"O#]D5CX X%F_7590422联合使用程序执行重新定向和文件隐藏,入侵者能提供各种后门程序执行。由于执行重定向是在内核级别进行的,因此文件检测工具不会发现程序文件被修改-原始的执行程序并没有被修改,因此配置检测工具在路径环境中也不会发现任何异常。IXPUB技术博客!I.n\[`N/]7^e_-C
y'~4|-N8L7590422如果Knark结合另外一个用来隐藏系统当前加载的模块的LKM工具modhide,就可能实现甚至通过lsmod命令也不能发现knark的存在。
5g4W!jq'KWgn7590422
xs9QOi7590422Knark软件包的安装和使用
?5nx YY3w7590422IXPUB技术博客'ox;kUS0}\i
该软件包的核心软件是knark,c,它是一个LinuxLKM(loadable kernel-module)。运行命令"make"来编译knark软件包,通过"insmod knark"命令来加载该模块。当knark被加载,隐藏目录/proc/knark被创建,该目录下将包含以下文件:IXPUB技术博客&x b/eR's[
PdV;f:P G7590422author 作者自我介绍IXPUB技术博客TayswH&F*t/l
files 系统中隐藏文件列表
X-AO4dRiA7590422nethides 在/proc/net/[tcp|udp]隐藏的字符串IXPUB技术博客0d |_ F Rr2w
pids 被隐藏的pids列表,格式类似于ps命令输出
8\ xT+f Das9|&X7590422redirects 被重定向的可执行程序入口列表IXPUB技术博客WT vq+PE@WW N
IXPUB技术博客W_.Z*R0}?.P@h
该软件包编译以后将有下面这些工具软件(它们都依赖于被加载的模块knark.o。除了taskhack.c,其用于直接修改/dev/kmem)
)f:N{-]#I6p3Z|:b+M7590422IXPUB技术博客'lC1L4O2{m
hidef 用于在系统中隐藏文件
DA;S2b9bWx5d#}Y[7590422
Ax z&zN7590422在/usr/lib目录下创建子目录hax0r,然后运行命令"./hidef /usr/lib/.hax0r",则该目录会被隐藏,"ls"或"du"等命令都不能显示该目录及其子目录。
p2auZ gD9m[jG7590422IXPUB技术博客r7te\yBw'd
unhidef 用来恢复被隐藏的文件
7prUOVQ7590422
%P,["y0x8UU~5[ A7590422你可以通过访问"cat /proc/knark/files"来察看你隐藏了哪些文件。通过"./unhidef /usr/lib/.hax0r"命令来解除对隐藏文件的隐藏。但是这里有个小小的bug,使得被隐藏的目录在/proc/knark/files中显示的是其加载开始的路径,也就是说如果系统有一个文件系统加载在/mnt,你隐藏了/mnt/secret,则在/proc/knark/files中显示的被隐藏的目录为/secret。因此不会影响根文件被隐藏的目录。
u?A'y x CG7590422
'sj6DI L-]VY7590422ered 用来配置重定向程序的执行IXPUB技术博客 z:B@*uw
_o8d/F7k W J!t1bF7590422拷贝特洛伊木马版本的sshd为/usr/lib/.hax0r/sshd_trojan,然后运行"./ered /usr/local/sbin/sshd /usr/lib/.hax0r/sshd_trojan",这样当/usr/local/sbin/sshd被运行时,实际上运行的特洛伊木马版本的sshd。可以通过命令./ered -c来清楚所有的可执行程序重定向。
u\G&s(D7590422
|(K!X+A.w7N}7590422nethide 用来隐藏/proc/net/tcp和/proc/net/udp中的某些字符串IXPUB技术博客?#A0K5yNF+Y(N+K
IXPUB技术博客 Gi'g|z
netstat命令就不会得到指定的链接信息。通过命令/nethide ":ABCD "可以隐藏和端口号ABCD(十六进制)相关的连接(43981 dec)。也就是对/proc/net/[tcp|udp]读取时进行"grep -v"操作。IXPUB技术博客%xZ^(n*z.Vp
你必需理解使用该程序从/proc/net/[tcp|udp]得到的输出的意义。假设系统运行有sshd,那么连接到本地22端口以后,运行"netstat -at",则输出可能包含:IXPUB技术博客l:^$~]DN1B
IXPUB技术博客lV'I]Yd[8z W
Proto Recv-Q Send-Q Local Address Foreign Address StateIXPUB技术博客"r%NHp!I,?2^e,n^
tcp 0 0 localhost:ssh localhost:1023 ESTABLISHEDIXPUB技术博客)SQEm}J&@
7[] IF7HNwV"_7590422
Op$BE^Y7590422现在我们来检测文件/proc/net/tcp:
7w.BJig@?[;GO7590422IXPUB技术博客[kDm1^[$k7z
cat /proc/net/tcp
M+_,CEA#}h,H7590422
tV#E.i]0u;w(t(k,c7590422则输出可能包含入下内容:
)CL#Kl2q{f7590422IXPUB技术博客uT%?#T$c bVxU
local_address rem_address blablabla...
z^\M.FxFLa75904220:0100007F:0016 0100007F:03FF 01 00000000:00000000 00:00000000 00000000
8opNol;y${#d4ZuD7590422
iMetn^,i9C7590422若我们希望隐藏和地址127.0.0.1相关的任何信息,我们必须使用如上面所示的十六进制的格式。因此如果希望隐藏地址127.0.0.1的22号端口相关的内容就要使用0100007F:0016来标识该链接。因此
B1rB#Est5e+["\G+Q7590422IXPUB技术博客@nlPV3m+k&`1j~5W
./nethide "0100007F:0016"IXPUB技术博客&Y"y2p{;s.l
h5\:h)f&mp1tt7590422将隐藏to/from localhost:22相关的链接信息。
.N#CGCu%J^'u,@7590422IXPUB技术博客aj]aM"r.gm
./nethide ":ABCD "IXPUB技术博客LL_y4p3J
IXPUB技术博客Y1D+u _e,S4X+gS9t
来去除隐藏。
uE:p1Vc(ERP:W&E7590422IXPUB技术博客rK` I-O
rootme 用来实现非特权用户获得root访问权限IXPUB技术博客!GrV8j9|(OJ
IXPUB技术博客_ Pe5@H|U+{
./rootme /bin/sh
*fX3d%|%r7590422就可以实现以root身份运行/bin/sh。IXPUB技术博客_(z,?k9h t h#E
IXPUB技术博客e u0~,B[EzTX
./rootme /bin/ls -l /rootIXPUB技术博客&TGk2YL#~%QO `
则是仅仅以root身份运行单个命令。IXPUB技术博客.FBO;|9aF
-q5U;K:~2B0o9c]t w7590422taskhack 用来改变某个运行着的进程的uid和gidIXPUB技术博客? `k$~rAO
oN"f]Zl(y`"O7590422./taskhack -alluid=0 pidIXPUB技术博客.m)gb iO7Mx"C,~
该命令将进程pid的所有*uid@#s (uid, euid, suid, fsuid)为0 (root).IXPUB技术博客qqP\KJ]7M
K\;J8Bzp9H7590422ps aux | grep bashIXPUB技术博客 A3mF+_z J
creed 91 0.0 1.3 1424 824 1 S 15:31 0:00 -bash
l:@R:o1]7590422IXPUB技术博客c-t6W)R&h6M Oj8^
现在来改变该进程的euid为0:IXPUB技术博客 S VWMl6N8R#SX
IXPUB技术博客o*kfn1KX2a|
./taskhack -euid=0 91
-k Io~ r&p1h7590422
yc7M F'g:G7590422ps aux | grep bash
2RF f$m&j4hq7590422root (!) 91 0.0 1.3 1424 824 1 S 15:31 0:00 -bash
myg:y~(Sh9PY7590422
7^x ?6BC4yM7590422rexec 用来远程执行knark-server的命令:
'i0`8LP'yzo7590422IXPUB技术博客6Q@+}5_B*i
./rexec www.microsoft.com haxored.server.nu /bin/touch /LUDERIXPUB技术博客+f-K yC1nl6].j
8})s7d\;q7590422这命令将从www.microsoft.com:53发送一个伪装的udp数据包到 haxored.server.nu:53,来运行haxored.server.nu的命令"/bin/touch /LUDER"IXPUB技术博客3DCX p3u
IXPUB技术博客 nXH"r(^0J
IXPUB技术博客6?i j3?S.G%R
入侵者入侵以后往往将knark的各种工具存放在/dev/某个子目录下创建的隐藏子目录,如/dev/.ida/.knard等等。IXPUB技术博客hb6su~](Cv
+|.b H G?&H7590422检测系统是否被安装了KnarkIXPUB技术博客n7^v9oY,G(DS!l
r O2J(NGa6b,q9J[ ~)P7590422Knark的作者Creed,发布了一个工具:knarkfinder.c来发现Knark隐藏的进程。IXPUB技术博客 E1j ^8O8kwV
IXPUB技术博客B!}3SP9h_CY E&t-Z(I
检查系统是否安装有Knark的最直接有效的方法是以非特权用户身份来运行Knark的一个软件包如:rootme,看该用户是否能获得root权限。由于目前Knark目前没有认证机制,因此入股系统被安装了Knark任何一个本地用户运行这个程序都能获得root权限。
w3Ra0D"h i7590422
,H)X3@ wRp/Nn'W2S7590422还有一个最有效的发现系统是否被knark或者类似的rootkit所感染的方法就是使用kstat来检测,具体参考本站的Nexeon写的解决方案文章:检测LKM rootkit。IXPUB技术博客E{q osT_j
x*Q H5S.j'[`7590422Knark防范
@:h;V$hUD!d;zr7590422
n6I:M)YEYQ9Y7590422防止knark最有效的方法是阻止入侵者获得root权限。但是在使用一切常规的方法进行安全防范以后,防止knark之类的基于LKM技术的rootkit的方法是:IXPUB技术博客y%BFQ KJ WE| w
IXPUB技术博客1Z j0at4N7X
*创建和使用不支持可加载模块的内核,也就是使用单块内核。这样knark就不能插入到内核中去了。
-YP+Xm3j&s5[tu)A} R7590422IXPUB技术博客/ka-p2wNn?8|
*使用lcap (http://pweb.netcom.com/~spoon/lcap/)实现系统启动结束以后移除内核LKM功能,这样可以防止入侵者加载模块。然而这种方法存在一定的问题,入侵者可以在获得root权限以后修改启动脚本,在lcap启动之前来加载knark模块从而逃避lcap的限制。IXPUB技术博客B[:I B%G
导入论坛 引用链接 收藏 分享给好友 推荐到圈子 管理 举报
TAG:
