Linux下用gdb检测内核rootkit的方法(1)(2)
系统调用劫持】
劫持系统调用与上一种方法不同之处在于:它并不直接修改系统调用表中的入口地址,即指向每个系统调用的跳转指针,而是在想要hook的系统调用之前加一段跳转代码,使执行流重定向到入侵者自己的内核态函数,这些被hook的系统调用前部通常有call,jmp之类的汇编指令。
要检测这种攻击,同样使用gdb加vmlinux-2.4.*及/proc/kcore两个参数,然后反汇编系统调用:
#gdb /boot/vmlinux-2.4.* /proc/kcore
(gdb) disass sys_read
Dump of assembler code for function sys_read:
0xc013fb70 : mov $0xc88ab0a6,%ecx
0xc013fb73 : jmp *%ecx <<--
0xc013fb77 : mov %esi,0x1c(%esp,1)
0xc013fb7b : mov %edi,0x20(%esp,1)
0xc013fb7f : mov $0xfffffff7,%edi
...
我们注意“mov $0xc88ab0a6,%ecx -- jmp *%ecx”这两条指令,他跳转到了其他的地方去执行了
然后再来看一下被hook之前的系统调用指令:
#gdb /boot/vmlinx-2.4.*
(gdb) disass sys_read
Dump of assembler code for function sys_read:
0xc013fb70 :sub $0x28,%esp
0xc013fb73 : mov 0x2c(%esp,1),%eax
0xc013fb77 : mov %esi,0x1c(%esp,1)
0xc013fb7b : mov %edi,0x20(%esp,1)
0xc013fb7f : mov $0xfffffff7,%edi
...
看到了吧,不一样的。
- 详解LINUX 2.4.x 内核网络安全框架
- Linux内核完全剖析---数学协处理器
- Linux内核完全剖析---math_emulate.c程序
评论暂时关闭