欢迎来到天天文库
浏览记录
ID:15149965
大小:159.00 KB
页数:33页
时间:2018-08-01
《linux不同版本间驱动加载方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、WebZine·Introduction----------byroot·Flashsky访谈----------byflashsky·Struts2框架安全缺陷----------bykxlzx·重谈IP欺骗技术----------bypapaya·Fuzz客户端存储对象,寻找clientddos----------bywoyigui·应用软件缺陷利用的一点心得(Webkit篇)----------bywushi·BypassingLinuxkernelmoduleversioncheck----------bywzt·ACS-ActiveConten
2、tSignatures----------byEduardoVelaNava·卡巴虚拟机启发式查毒的绕过方法----------bydangdangBypassingLinuxkernelmoduleversioncheckBywzt1、为什么要突破模块验证2、内核是怎么实现的3、怎样去突破4、总结5、参考6、附录1、为什么要突破模块验证Linux内核版本很多,升级很快,2个小内核版本中内核函数的定义可能都不一样,为了确保不一致的驱动程序导致kerneloops,开发者加入了模块验证机制。它在加载内核模块的时候对模块进行校验,如果模块与主机的一些环境不一
3、致,就会加载不成功。看下面一个例子,它简单的输出当期系统中的模块列表:#include#include#include#include#include#includeMODULE_LICENSE("GPL");MODULE_AUTHOR("wzt");structmodule*m=&__this_module;intprint_module_test(void){stru
4、ctmodule*mod;list_for_each_entry(mod,&m->list,list){printk("%s",mod->name);}returnNULL;}staticintlist_print_init(void){printk("loadlist_printmodule.");print_module_test();return0;}staticvoidlist_print_exit(void){printk("unloadlist_printmodule.");}module_init(list_print_init
5、);module_exit(list_print_exit);我们在centos5.3环境中编译一下:[root@localhostlist]#uname-aLinuxlocalhost.localdomain2.6.18-128.el5#1SMPWedJan2110:44:23EST2009i686i686i386GNU/Linux然后拷贝到另一台主机centos5.1xen上:[root@localhost~]#uname-aLinuxlocalhost.localdomain2.6.18-53.el5xen#1SMPMonNov1203:26:12
6、EST2007i686i686i386GNU/Linux用insmod加载:[root@localhost~]#insmodlist.koinsmod:errorinserting'list.ko':-1Invalidmoduleformat报错了,在看下dmesg的信息:[root@localhost~]#dmesg
7、tail-n1list:disagreesaboutversionofsymbolstruct_module先不管这是什么,总之我们的模块在另一台2.6.18的主机中加载失败。通常的做法是要在主机中对源代码进行编译,然后才能加载成功,但是
8、如果主机中缺少内核编译环境的话,我们的rootkit就不能编译,也不能安装在主机之中,这是多么尴尬的事情:)。没错,这就是linuxkernel开发的特点,你别指望像windows驱动一样,编译一个驱动,然后可以满世界去装^_^.一些rootkit开发者抛弃了lkm类型rk的开发,转而去打kmem,mem的注意,像sk,moodnt这样的rk大家都喜欢,可以在用户层下动态patch内核,不需要编译环境,wget下来,install即可。但是它也有很多缺点,比如很不稳定,而且在2.6.x后内核已经取消了kmem这个设备,mem文件也做了映射和读写的限制。r
9、k开发者没法继续sk的神话了。反过来,如果我们的lkm后门不需要编译环境,也可以
此文档下载收益归作者所有