• 【旧文章搬运】隐藏驱动完整攻略(猥琐篇)


    原文发表于百度空间,2009-07-10
    ==========================================================================

    基础篇里说的那些东西搞完以后,任何正常的位置都找不到我们的Driver了,此时相应的手段基本上只剩下暴搜PE镜像或暴搜DriverObject了。而且,基础篇讲的那些东西,因为都是M$定好的一些格式和位置,代码怎么写都差不多,固定的路子而已。而抹PE镜像或抹DriverObject,真的是看你怎么猥琐了~

    四、抹PE镜像
    SYS文件也是标准的PE文件,加载驱动时由MmLoadSystemImage将其载入内存,于是内存中就有了完整的PE镜像。ring3我们可以暴搜内存查找隐藏的DLL模块,ring0我们基于同样的道理可以暴搜高端内存查找隐藏的SYS~为了对抗这种暴力搜索,必须将PE镜像的特征抹掉。
    基本抹法就是抹掉MZ,PE标志,或者DosHeader->elfanew清0使找不到PE标记等等,但这些都是不够的,可以参考两个帖子:
    MJ0011的《检测GMAE:HideDriver的工具》
    http://www.debugman.com/read.php?tid=1250
    PS:想要隐藏驱动bin的也可以在这里找到,建议先看刀客的HideDrv是怎么写的(方法在基础篇里讲了一部分),再看看MJ的drvdet是如何猥琐地进行检测。
    还有老V拿WinHex改了之后的bin(要bin的也可以来这里,都差不多):
    http://www.debugman.com/read.php?tid=1993
    看看老V是如何更猥琐地绕过drvdet,然后MJ更更猥琐地提出的搜索DataDirectory法...
    所以要抹还是彻底一点,整个抹了PEHeader,此时你已经没有任何特征,just a pool of executable Code~~
    具体点,PE结构中pOptinalHeader->SizeofHeaders取PE头大小,然后直接整个Zero掉就可以了,但是要注意时机,否则会蓝蓝。至于文件后面的pdb路径,可以直接用WinHex填零,然后重新计算校验和即可,加载后自然也不会出现在内存中~
    如果你使用了线程,按《RKU的StealthCode检测》的方法处理下StartAddress,免得被人查到

    五、抹DriverObject
    这个可以参考前面写的《对抗内存搜索对象》
    没有Device,DriverObject就没有存在的必要,所以这里你爱怎么抹怎么抹,因为我们完全不需要它
    对象头可以整个填零,或者用Fake ObjectType填充一下ObjectHeader->Type
    DriverObject->DriverSection所指向的LDR_DATA_TABLE_ENTRY结构也要抹一抹,主要是几个关键数据和路径信息,全都填零吧

    使用以上五种方法之后,隐藏驱动已经差不多到位,可以轻松bypass目前许多ARK了。关于此时的驱动如何与ring3通信,再说~

  • 相关阅读:
    d3-tree 双向树
    .gitignore
    url正则匹配
    this 指向
    git 用法小总结
    心态崩了?
    内存溢出和内存泄漏的区别
    jQuery添加方法
    物理像素与逻辑像素
    服务器返回的status
  • 原文地址:https://www.cnblogs.com/achillis/p/10181770.html
Copyright © 2020-2023  润新知