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