返回列表 发帖

[病毒分析] 第四代机器狗驱动代码

[病毒分析] 第四代机器狗驱动代码

提示: 作者被禁止或删除 内容自动屏蔽


它认识我,我不认识它
请允许我叫你一声大哥哥

TOP

提示: 作者被禁止或删除 内容自动屏蔽

TOP

不是第四代吧?如果是第四代,那我截获它的日期岂不是比360还要早几天?!

见分析
http://bbs.ikaka.com/showtopic-8514516.aspx
当时分析得不是很仔细。
如果这个东西就是第四代,那实在是太没有意思了,我还以为第四代是什么NB玩意呢。
另外,这种可编译的完整病毒驱动源码,不适合在剑盟上发。

[ 本帖最后由 轩辕小聪 于 2008-7-26 14:44 编辑 ]

TOP

另外我很想知道对DbgPrint的inline hook到底是出于什么样的意图,有什么作用,针对的是什么。

TOP

对内核模块基址的获取,只考虑ntoskrnl.exe,这与病毒Ring3程序原来的办法是不吻合的,而且也没有考虑到内核模块是ntkrnlpa.exe的情况,而你的GetModuleBase函数使用了之后,又没有检查返回值是否为0,这样在内核模块是ntkrnlpa.exe的情况下恐怕直接就BSOD了。
我可以理解你这里使用GetModuleBase,是因为它可以同样在获得atapi.sys基址的使用,但是这里获得系统内核基址的更一般的作法,的确是用NtQuerySystemInformation(SystemModuleInformation),但是应该是直接取第一个内核模块的基址。


有一些地方采用的结构体成员偏移量没有明确标出其意义,看起来明显是在IDA里F5之后修改而成的。
比如
imagebase=*(ULONG*)((ULONG)base+*(ULONG*)((ULONG)base+0x3C)+13*4);
以及其他一些涉及到IMAGE_DOS_HEADER、IMAGE_PE_HEADER、IMAGE_SECTION_HEADER等结构的操作,都直接用偏移量来做了,这样让不了解这个步骤的读者看不清它们的结构及语句的意义,当然我理解这是因为C里面类型转换起来太麻烦了。

  PE=(ULONG)buf;
  for(i=0;i<0x1000;i++){
  if(!_stricmp((const char*)PE,"pe"))
  break;
  PE++;
  }
我不知道为什么要用暴力搜索"PE"的方法来定位PE头,如果你明白上面那条式子,从IMAGE_DOS_HEADER结构0x3C偏移处获得PE头偏移是明摆着的事情,为什么反而要用暴搜呢?

ZwQuerySystemInformation(11, pbuftmp, n, NULL);
我觉得还是应该ZwQuerySystemInformation(11, pbuftmp, n, &n);更好一点

最后,从病毒样本看得出来,病毒样本驱动应该是用汇编写的,而楼主使用了C来模拟其代码,免不了一些代码面貌会不一样,比如多次的RtlInitUnicodeString,对用kmdkit来写的病毒样本驱动来说,只需要CCOUNTED_UNICODE_STRING就可以直接在编译时定义了。

另外搜索了一下,貌似网上这段代码已经满天飞了,至少一个月前就差不多有代码出来了,现在过了一个月,楼主才把它贴在这里并标为原创,这有点太迟了。

TOP

TOP

楼主就是喜欢转邪8的帖子。。。。。。。。。这已经不是秘密了。。。

TOP

LZ我见过无耻的人,但没你这么无耻的。

https://forum.eviloctal.com/redi ... o=lastpost#lastpost


PS:被你转过几个回复对,你已经没什么好说的了。
附件: 您需要登录才可以下载或查看附件。没有帐号?加入剑盟

TOP

这么NB的代码都能搞到说,不知来源何处啊

TOP

返回列表

剑盟资讯 - 反病毒资讯门户|扑奔PPT - 扑奔PPT社区|力洋网络 - 企业网站建设

冀ICP备09001109号|粤湛网安备4408002113号

广东剑盟网络科技工作室 © 2004 - 2010 All Rights Reserved.

Powered by Discuz! 剑盟社区已通过广东省公安厅网络信息安全备案!