能力值:
( LV2,RANK:10 )
2 楼
没有回答吗?
分析了一下主要有两个方向的监控:
1.自己主动将本地文件COPY到共享机器上.从而将文件传输出去.
2.自己将文件共享,能过网络访问,将文件COPY到别的机器上.
现在目标是想实现这两种监控.
fileMon 用的是驱动,只能监控文件,但是不能监控网络,新的FileMON 有这个功能.
能力值:
( LV2,RANK:10 )
3 楼
由于主机被访问的时候没有走API层.所以用文件驱动是监控不到的,现在分析后只能采用报文分析法了.
能力值:
( LV2,RANK:10 )
4 楼
没人回复,只能自己帮忙顶了.
从现在分析看.只要能从两个方面解析CIFS协议就应该能很好的监控通过网络传输的文件.
哪位有分析过CIFS协议的帮忙一下.
能力值:
( LV13,RANK:530 )
5 楼
Windows有用户态的监控函数,不要搞这么累 又不是搞杀毒,没有必要用驱动。
能力值:
( LV2,RANK:10 )
6 楼
你说的用户态函数是哪个?
能力值:
(RANK:1010 )
7 楼
试试这个FindFirstChangeNotification
能力值:
( LV4,RANK:50 )
8 楼
FindFirstChangeNotification只是一个通知,达不到“监控”得“控”的标准
另外这个函数以及其他几个用户态NOTIFY函数都可以理解未仅仅是FS的一个非严格的回掉函数,同时复制100个小文件试试,你会发现有漏掉的,不能真正用于产品 以下引自taurus.wang@develop.com在某处的回帖
//---------------------------------------------------
//从IrpStackLocation中判断来自网络的文件访问
BOOLEAN SfIsFromNetAccess(
PIO_STACK_LOCATION IrpSp
)
{
NTSTATUS status;
PACCESS_TOKEN pToken = NULL;
PTOKEN_SOURCE pTokenSrc = NULL ;
PSECURITY_SUBJECT_CONTEXT secSubCtx;
//PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp);
secSubCtx = &(IrpSp->Parameters.Create.SecurityContext->AccessState->SubjectSecurityContext);
if (secSubCtx->ClientToken != NULL || secSubCtx->PrimaryToken != NULL) {
pToken = SeQuerySubjectContextToken(secSubCtx);
}
if (pToken == NULL) {
//KdPrint(("SeQuerySubjectContextToken Errorn"));
return FALSE;
}
//
// Get TokenSource Name If SourceName is "NtLmSsp" it was logged-in via Lanmanager,
// "User32" represents localy logged-in users.
//
__try
{
status = SeQueryInformationToken(pToken,TokenSource,&pTokenSrc);
if (NT_SUCCESS(status)) {
pTokenSrc->SourceName[TOKEN_SOURCE_LENGTH-1] = 0x00;
KdPrint(("Token Name :%s Len:%dn",pTokenSrc->SourceName,strlen(pTokenSrc->SourceName)));
if (_stricmp(pTokenSrc->SourceName,"NtLmSsp") == 0 ) {
KdPrint(("NetWork Access Token Findn"));
return TRUE;
}
} else {
KdPrint(("SeQueryInformationToken Error:0x%xn",status));
}
}
__finally {
ExFreePool(pTokenSrc);
}
return FALSE;
}