为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

新方法查找隐藏的DLL文件

2017-10-08 10页 doc 27KB 84阅读

用户头像

is_650122

暂无简介

举报
新方法查找隐藏的DLL文件新方法查找隐藏的DLL文件 , :_??_O露,日口—雹旧:)栏目编辑)scket>蠢?瞄.-I—?l誓__??? 有位哲人说过:人类在进步,社会在发 展.一切事物都不是原地踏步而是曲折发展 的.随着网络的发展,我们在网络中邀游的同 时,又不断的遭受着电脑病毒.尤其是近两 年,随着RK技术的流行越来越多的病毒,木 马大大小小都带着驱动,尤其是广为人知道的 机器狗.就带着一个强大的驱动,穿破N多还原 保护软件.随着安全软件厂商间的竞争激烈, 越来越多的功能强大,价格优惠的安全软件得 到了普及,尤其是HlPS(主动防...
新方法查找隐藏的DLL文件
查找隐藏的DLL文件 , :_??_O露,日口—雹旧:)栏目编辑)scket>蠢?瞄.-I—?l誓__??? 有位哲人说过:人类在进步,社会在发 展.一切事物都不是原地踏步而是曲折发展 的.随着网络的发展,我们在网络中邀游的同 时,又不断的遭受着电脑病毒.尤其是近两 年,随着RK技术的流行越来越多的病毒,木 马大大小小都带着驱动,尤其是广为人知道的 机器狗.就带着一个强大的驱动,穿破N多还原 保护软件.随着安全软件厂商间的竞争激烈, 越来越多的功能强大,价格优惠的安全软件得 到了普及,尤其是HlPS(主动防御技术)的流 行,迫使病毒寻求更隐蔽的加载方式来获得生 存.目前的一个病毒发展趋势是往无进程方向 发展.其实,这种发展方向在很多年前就广为 流传,不过因为RK的发展,我们逐渐忽略了这 一 技术,不过.目前的无进程技术更是结合了 以往的DLL技术和RK技术.搜索隐藏中的DLL并 清除出去成为了我们保护网络安全,清除垃 圾,还原网络绿色环境的必走之路. 我们知道,查找DLL的一般方法除了调用系 有直接结束微点的方法了,可是我们讨论的这种 方法没有结束微点进程,不会引起用户注意,因 为只要知道使用ruk的人发现自己电脑上的微点 被结束的话,估计马儿的末日也差不多到了.上 文已经提到了,其它的监控设置函数和进程创建 监控设置函数的机理是一样的,要实现其他过滤 只要依葫芦画瓢就可以了,微点对几乎以上提到 的所有设置监视函数的函数进行了挂钩,获取真 统提供的APl,比如EnumPrOCessMOduIes, EnumPrOCessMOduIesEX, MOduIe32FirSt, Module32Next, ZwQuerySystemlnformation等,还 有在进程的内存里搜索PE结构信息来查找DLL 或者是获取进程的PEB结构,然后根据PEB一> Ldr,>lnLoadOrderModuleList来枚举进程中的DLL. 上面的方法都是众所周知的,而我最近在 写,个ARK的工具作为平时练手.上述的方法 虽然被应用到了我的工具中但这些方法并不 能很有效的查出隐藏中的DLL.所以,为解决需 求.需要寻找一个新的方法. 大家都知道,加载DLL的时候,肯定要在进 程的用户空间内存申请内存,也就是说肯定会 有,个数据结构对内存的使用做了详细的记 录.那么.我们就以此为线索来查找这个数据 结构.经过自己的和参考了一些,加 上最近MJO011在韩国的一个黑客大会上以 VMWARE的内存文件来分析系统RK的报告里 面正好提到了本文要说的一个结构一一 实地址的方法大同小异. 本文的代码开发平台为wdk6000,VC6.0, 驱动在WindowsXPSP2,微点1.2.10581.1试 用版上测试成功,可以过滤掉微点的进程创建 日志功能. (编辑提醒:本文涉及的代码,已收录入 本期光盘杂志相关栏目;也可以到黑防官方网 站下载)刀) -一 —等啊 狙j,::一;………一 MM— AVL—TABLLE.在进程结构EPROCES里有个 MM— AVL—TABLEVadRoot成员,这个结构 了进程的用户空间内存使用情况.MM—AVL— TABLE的结构如下 1~typedefstructMM—AVLTABLEI IMADDRESS_NODEBalancedR0ot;l luLONG_PTRDepthOfTree:5;l IULONG—PTRUnused:3;f I弹ifdefined(_WIN64)I IU~NGPTRNumberGenericTableElements:56;l J#elseJ IULONG_PTRNumberGenericTableElements:24;II #endif{fPVOIDNodeHint;PVOIDNodeFreeH;』『int:i}MM—AVLTABLE,*PMMAVL —TABLE;l ——————————————————————————————————————————————一———————————1_一 这个结构记录了一些基本的内存使用信 息其中成员MMADDRESS—NODEBaIancedRoot 结构如下: tyl:K:Ktefstruct,MMADDRESSNODE{I union{l LONG—PTRBalance:2:l struct—MMADDRESS—NODE*Parent;f lul;1 structMMADDRESS—NODE*LeftChild;I struct—MMADDRESSNODE*RightChild;J ULONGPTRStartingVpn;l ULONG—PTREndingVpn;{ }MMADDRESS.NODE,*PMMADDRESSNODE; 仔细看去,貌似到了这里,我们就山穷水 尽了,但上天总会留,线生机的.我们可以假 设下如果到了这里就没别的数据可以查看 了,那么windOWS又是怎么查看某进程中内存 的使用情况的呢?好在我们有WRK,这一 Windows送的源代码,在\base\ntos\mm\mi.h 文件里发现了MMVAD结构,这个结构如下: ll圜rw黑w客w.h防aek线er.e.o.0m.eL.. 之所以要介绍这个结构,是因为我看它第 一 眼就感觉这个结构比较特殊.我们可以发 现,这个结构的前半部分是与MMADDRESS — NODE的结构类似的,至少从数据长度上来看 是相同的.前半部分不同的是左树和右树的结 构类型不同,但是仅仅是类型名字的不同,不 管怎么说,它们还是指针,因此我们大胆的猜 测下,如果MMADDREsS—NODE后面还有数据 呢?而且我们可以发现MMVAD结构中有个很 重要的结构CONTROL—AREA,这个结构记录了 很多重要的信息.我们打开wINDBG,进入本地 内核调试状态. lkd>!process PROCESS8928d030 1t弱4000ParentCid:0634 DirBase:7f380300 HandleCount:97. Sessionld:0Cid:03O4Peb hnage:windbg.exe VadRoot893a4ba8Vads84Clofie0Private1005 Modified2l61.Locked1. DeviceMape285aa10 Tokenel036540 注意VadRoot893a4ba8,在EPROCESS 结构中,是一MM—AVL—TABLE~构.我们再看下 里面的信息. )栏目编辑)socket> +0X004LeftChild:0x89406b90MMADDRESsNODE +0x008RightChild:0x893e2798 一 MMADDRESS—N0DE +0x00cStarti~【gVpn:0xl0o0 +OxO10EndingVpn:OxlO95 lkd>dd0x893a4ba8 893a4ba88928d280894O6b90893e279800001000 893a4bb80000l095072000l889325a50elOe8b20 893a4bc8fffffffc580000000l086(J()o01087fff 893a4bd80000Oo00893a4bd8lal40oo820707249 893a4be8O094O0H06O0H000000OOoo()oo0000ooooO 893a4bf8893a4bf8893a4bf80000I)o0O00000000 893a4c08010l000l04000O0Oooa7e0b800000000 893a4cl8OOo()o0oo0000OOO00OOO0oOO00000ooO lkd>dtmmvad0x893a4ba8 nt!,MMVAD +OxO00ul:—— unnamed +0x004LeftChiid:0x89406b90一 MMVAD +0xoo8RightCt*ild:Ox893e2798MMVAD +0x00cStartingVpn:0xl000 +0x0l0EndingVpn:0xl095 +0x014u:unnamed +0x0l8Contro1Area:Ox89325a50CONTROL AREA +0x01cFirstPrototypePte:0xel0e8b2oMMPTE {OxO2OLastContiguousPte:0xfffffffc—MMPTE +0x024u2:…umlamed lkd>dtcontrolarea0x89325a50 nt!CONTROLAREA +OxO00Segment:0xel0e8ae0SEGMENT +0x004DereferenceList:L1STENTRY【OxO OxOI +0x00cNumberOfSectionRefeFences:l f0x010NumberOfPfnReferences:0x7a 0x0t4NumberOfMapI-~"<tViews:l 4-0x018NumberOfSystemCacheViews:0 +0x01cNumberOfUsorReferenccs:2 +0x020u:——unnamed +0x024FilePointer:Ox8984lb40,FlLEOBJECT +0xO28WaitingForDeletion:(nul1) +0x02cModifiedWriteCount:0 +0x02eFlushImProgres~Count:0 +0x030WritableUsetReferences:0 +0x034QuadwordPad:0 lkd>dt—fileobjectOx89841b40 nt!一FILEOBJECT +0x000Type:5 +0x002Size:ll2 +0x01NDeviceOboct:0x89f90e00DEVICE_OBJECT +0x008Vpb:0x89fadtc8VpB +0x00cFsContext:OxetOel5b0 +OxO10FsContext2:0xe28a0c58 +Oxf)l4SectionObjectPointer:Ox893354cc _SECTIONOBJEeT—POINTERS ~0x018PnvaCeCacheMap:(nun) +0x0lcFinalStatus:0 +Ox020RelatedFileObjeel:(nUii) +0x024LockOperation:0" +OxO25DeletePending:0, t0x026ReadACCeSS:0xl} +0xO27WriteAc(脚:0" +Ox028DeleteAccess:0" +0x029SharedRead:0xl +0x02aSharedWrite:0" +0x02bSharedDelete:0xl +0x02cFlags:0x44042 +0x030FileName:UNICODESTRINGii\Pro— gramFiles\DebuggingToolsforWindows(x86)\windbg. exe}f 可以看到"dd0x893a4ba8"后面还有数 据,和MMVAD结构对照下,正好可以对照到 cONTROL— AREA的指针,那么我们就试着解析 MMVAD结构,可以看到我们找到了CONTROL— AREA结构继续解析CONTFIOL—AREA结构,一 直到FlLE—OBJECT结构.由后面的结果可以清晰 地看到,我们得到了当前进程的可执行文件的 文件名. 由上可以证明我的大体思路是正确的,那 么我们怎么确定一个FILE—OBJECT所指向的文件 是一个可执行文件呢7首先要废除掉的就是根 据文件后缀来判断是否是一个可执行文件,这 是一个非常NC的想法.还是从CONTROL—AREA 结构入手. ' 簧距200912黑客防线?瞳?_ ?'.;'………一 其中有两个比较特殊的成员L0ngFIagS和 FIags.查看MMSECTION—FLAGS结构,可以发现 一 个成员为lmage.根据调试发现如果Image为 1,那么就是可执行文件. 在跟踪调试的时候,还发现CONTROL— AREA->Segment一>u2Imagelnfo&~录了一些执行 文件的信息,本来想当然的认为可以以此作为 判断一个文件是否为可执行文件的依据但在 实现后发现并不准确.所以就找到了上面提 到的CONTROL—AREA一>lJFlags成员.这个方法被 大家关注的少,还可以对付一些病毒和木马. 前置知识VB 关键词:编程,窗口攻击,HOOk 最后再简单说说代码实现.枚举DLL的关键 步骤之一就是获得足够的进程,之所以说是足 够的进程.是说尽最大能力找到隐藏中的进 程.获取进程的方法很多.比如解析 PspCidTabJe,枚举PsActiveProcessHead,HOOK SwapContext,OPENPROCESSFROM0TO65554 等.我提供的代码里只用了一种方法,枚举 MmProcessLinkS.剩下的方法,黑防以前都做过 精彩的讲述,而且网络上也有很多相关的代 码.大家可以自己补充到工具里.总体来说, 代码比较简单,不过在解析AVL树的时候千万 不要用递归,否则会很郁闷的. (编辑提醒:本文涉及的代码,已收录入 本期光盘杂志相关栏目;也可以到黑防官方网 站下载) 瓣凰摹 文/图胡文亮(Hovi.Delphic)[HooS RootkitS自诞生以来,为了逃脱被杀毒软件 和ARKS歼灭的命运,纷纷以各种方式保护自 己.什么加壳伪装之类的方法无法使用之后, RootkitS就纷纷开始反攻杀毒软件和ARKs.最直 接的反攻方法就是结束杀毒软件和ARKS进程, 但是在杀毒软件和ARKs进程保护日益增强和无 法加载驱动的情况下,直接结束进程的方法就 不太好用了.为了达到同样的目的,ROOtkitS开 始对杀毒软件和ARKS的窗体进行攻击.从古老 的窗口消息洪水攻击到去年才曝光的设置父 母卸载窗口",都是窗口攻击技术的典型代 表.尽管各大杀毒软件和ARKs在SSSDT上HOOK 了一大堆函数,但是由于函数太多,以及窗口 句柄的全局性,所以收效甚微.对于已经被用 滥的窗口消息洪水攻击,我还想提一下. —翻ll_ill. WlN32APISendMessage对应的是NatiMeAPI NtUserMessageCal】,WIN32APIPostMessage对 应的是NativeAPlNtUserPostMessage,如果某 些ARK只是挂钩了其中一个函数,比如狙剑只 HOOK了NtUserMessageCalJ,天琊只HOOK了 NtUserPostMessage,那么就等于没有防范.而至 于SetParent,在参数过滤不严格的情况下还是可 以用的(1:L~13360,尽管我们不能把它的窗体设 置为自己的子窗体,但可以把我们的窗体设置 为它的子窗体).下面,介绍四种我总结出来 的窗El攻击方法. 窗口失效大法 在wIN32APl里,有个神奇的API叫 EnabIeWindow,它可以使窗口和控件等有效或
/
本文档为【新方法查找隐藏的DLL文件】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索