首页
社区
课程
招聘
[原创]老代码系列:拦截某些程序对某些文件的上传
发表于: 2012-10-26 08:26 14163

[原创]老代码系列:拦截某些程序对某些文件的上传

2012-10-26 08:26
14163
minifilter,sfilter也可以做这类事情,但是写起来有一大坨~翻了一下硬盘发现很久很久以前写的一个代码~
主要代码如下,其他代码部分都是可以自己写写完事了~

//SSDT hook???? or inline hook?
Hookstru OrigZwCreateFile;
Hookstru OrigZwOpenFile;
wchar_t m_wcGoodFile[][MAX_PATH] = 
{
	L"*\\GAME.TRC",
};
BOOLEAN IsGoodFileName(PUNICODE_STRING usName)
{
	size_t i;
	// enumerate known modules
	for (i = 0; i < sizeof(m_wcGoodFile) / sizeof(m_wcGoodFile[0]); i++)
	{
		UNICODE_STRING usExpression;
		RtlInitUnicodeString(&usExpression, m_wcGoodFile[i]);
		// match name by mask
		if (FsRtlIsNameInExpression(&usExpression, usName, TRUE, NULL))
		{
			return TRUE;
		}
	}
	return FALSE;
}
wchar_t m_wcBadFile[][MAX_PATH] = 
{
	L"*\\~DMP*.TMP",
	L"*.CMP",
	L"*.DMP",
	L"*.TRC",
        L"*.CPP",
        L"*.C",
        L"*.H",
        L"*.E",
        L"*.LUA",
        L"*.LOG"
};

BOOLEAN IsBadFileName(PUNICODE_STRING usName)
{
	size_t i;
	// enumerate known modules
	for (i = 0; i < sizeof(m_wcBadFile) / sizeof(m_wcBadFile[0]); i++)
	{
		UNICODE_STRING usExpression;
		RtlInitUnicodeString(&usExpression, m_wcBadFile[i]);
		// match name by mask
		if (FsRtlIsNameInExpression(&usExpression, usName, TRUE, NULL))
		{
			return TRUE;
		}
	}
	return FALSE;
}
const char normalProcesslist[][33]={
	"explorer.exe",
	"svchost.exe",
	"ctfmon.exe",
	"conime.exe",
	"csrss.exe",
	"winlogon.exe",
	"wmiprvse.exe",
	"services.exe",
	"rthdcpl.exe",
	"lsass.exe",
	"devenv.exe",
	"nvsvc32.exe",
	"cmd.exe",
	"firefox.exe",
	"notepad.exe",
	"iPodService.exe",
	"QQPYCloud.exe",
	"notepad++.exe",
	"vmware-hostd.ex",
	"QQPYConfig.exe",
	"TSVNCache.exe",
	"iTunesHelper.ex",
	"AGPLoader.exe",
	"od.exe",
	"Dbgview.exe",
	"vcpkgsrv.exe",
	"MSBuild.exe",
	"AutoVersion.exe",
	"build.exe",
	"nmake.exe",
	"calc.exe",
	"link.exe",
	"idaq.exe",
	"verclsid.exe",
};
BOOL IsNormalProcess(PEPROCESS Process)
{
	char processname[128];
	int i=0;
	RtlZeroMemory(processname,128);
	strncpy(processname,PsGetProcessImageFileName(Process),16);
	for (i=0;i<sizeof(normalProcesslist)/sizeof(normalProcesslist[0]);i++)
	{
		if (_stricmp(processname,normalProcesslist[i])==0)
		{
			return TRUE;
		}
	}
	return FALSE;
}
NTSTATUS NTAPI
	OnNtCreateFile (
	PHANDLE FileHandle,
	ACCESS_MASK DesiredAccess,
	POBJECT_ATTRIBUTES ObjectAttributes,
	PIO_STATUS_BLOCK IoStatusBlock,
	PLARGE_INTEGER AllocationSize,
	ULONG FileAttributes,
	ULONG ShareAccess,
	ULONG CreateDisposition,
	ULONG CreateOptions,
	PVOID EaBuffer,
	ULONG EaLength
	)
{
	NTSTATUS ns;
	T_ZwCreateFile OldZwCreateFile=NULL;
	OldZwCreateFile = (T_ZwCreateFile)OrigZwCreateFile.oritocall;
	if(ExGetPreviousMode()==UserMode&&!IsNormalProcess(PsGetCurrentProcess()))
	{
		__try
		{
			if (MmIsAddressValid(ObjectAttributes))
			{
				if(ValidateUnicodeString(ObjectAttributes->ObjectName))
				{
					if (IsGoodFileName(ObjectAttributes->ObjectName))
					{
						goto PassThrugh;
					}
					if (IsBadFileName(ObjectAttributes->ObjectName))
					{
						return STATUS_ACCESS_DENIED;
					}
				}
			}
		}
		__except(EXCEPTION_EXECUTE_HANDLER)
		{
		}
	}
PassThrugh:
	ns = OldZwCreateFile(FileHandle,DesiredAccess,ObjectAttributes,IoStatusBlock,AllocationSize,FileAttributes,ShareAccess,CreateDisposition,CreateOptions,EaBuffer,EaLength);
	return ns;
}

NTSTATUS NTAPI
	OnNtOpenFile(
	PHANDLE FileHandle,
	ACCESS_MASK DesiredAccess,
	POBJECT_ATTRIBUTES ObjectAttributes,
	PIO_STATUS_BLOCK IoStatusBlock,
	ULONG ShareAccess,
	ULONG OpenOptions
	)
{
	NTSTATUS ns;
	T_ZwOpenFile OldZwOpenFile=NULL;
	OldZwOpenFile = (T_ZwOpenFile)OrigZwOpenFile.oritocall;
	if(ExGetPreviousMode()==UserMode&&!IsNormalProcess(PsGetCurrentProcess()))
	{
		__try
		{
			if (MmIsAddressValid(ObjectAttributes))
			{
				if(ValidateUnicodeString(ObjectAttributes->ObjectName))
				{
					if (IsGoodFileName(ObjectAttributes->ObjectName))
					{
						goto PassThrugh;
					}
					if (IsBadFileName(ObjectAttributes->ObjectName))
					{
						return STATUS_ACCESS_DENIED;
					}
				}
			}
		}
		__except(EXCEPTION_EXECUTE_HANDLER)
		{
		}
	}
PassThrugh:
	ns =OldZwOpenFile(FileHandle,DesiredAccess,ObjectAttributes,IoStatusBlock,ShareAccess,OpenOptions);
	return ns;
}


PS:
求捐助,求赞助,求投资,有意者欢迎联系QQ:86879759
欲购买 AntiGameProtect或UltraGameProtect系列代码与产品 也欢迎联系。
qq技术扯淡群1:171797360
qq技术扯淡群2:1748876
yy技术扯淡频道:80252844

[课程]Linux pwn 探索篇!

收藏
免费 6
支持
分享
最新回复 (19)
雪    币: 292
活跃值: (153)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
沙发~    太空步强势滑过~
2012-10-26 08:39
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
VV , 又来了, 抢了
2012-10-26 08:39
0
雪    币: 128
活跃值: (27)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
4
最讨厌“白名单”策略了
这就是……
2012-10-26 10:36
0
雪    币: 405
活跃值: (2150)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
现在都是穿越获得文件内容后上传,挂这些HOOK有什么用?
2012-10-26 11:42
0
雪    币: 8865
活跃值: (2379)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
6
话说老代码是hook的,现在没几个真的是FS层读文件的~
2012-10-26 11:45
0
雪    币: 405
活跃值: (2150)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
嗯,老V说的也有理,用最简单的方法实现效果才是王道。
2012-10-26 13:09
0
雪    币: 34
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
360是怎么传文件的求指导杀出木马一定要传完之后再杀,卡的半死
2012-10-26 13:14
0
雪    币: 8865
活跃值: (2379)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
9
别提了,有个小马把自己弄成几百MB大~全是各种0x90字节的巨大OEP段~
2012-10-26 13:19
0
雪    币: 2177
活跃值: (2045)
能力值: (RANK:400 )
在线值:
发帖
回帖
粉丝
10
IsGoodFileName
2012-10-26 17:42
0
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
mark一下,考个试再回来看。
2012-10-26 17:46
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
12
过滤函数部分的代码写得真蛋疼。。。
2012-10-26 18:20
0
雪    币: 615
活跃值: (1127)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
大肉鸡老师也在~ 呼呼
2012-10-26 19:50
0
雪    币: 34
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
14
那不是更悲剧么,传不上去卡半天
2012-10-27 06:11
0
雪    币: 320
活跃值: (183)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
15
cogito 穿越驱动无视你啊老V  阻止上传不需要Ring0啊啊啊...
2012-10-27 08:39
0
雪    币: 224
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
老V的代码我比较喜欢,呵呵
2012-10-27 09:20
0
雪    币: 224
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
此话怎讲?    信息
2012-10-27 09:21
0
雪    币: 8865
活跃值: (2379)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
18
是可以无视,但是实际上穿越驱动貌似没用与上传。
2012-10-27 11:19
0
雪    币: 219
活跃值: (738)
能力值: (RANK:290 )
在线值:
发帖
回帖
粉丝
19
劳老V一定mark
2012-11-8 06:55
0
雪    币: 199
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
话说现在的云安全是真不安全。
2013-3-16 10:13
0
游客
登录 | 注册 方可回帖
返回
//