SepAdtObjectReferenceAuditAlarm
VOID __stdcall SepAdtObjectReferenceAuditAlarm(
PVOID Object,
_SECURITY_SUBJECT_CONTEXT *SubjectSecurityContext,
UINT64 DesiredAccess,
UINT8 AccessGranted){
UNICODE_STRING *v4;
void *ClientToken;
void *PrimaryToken;
unsigned __int8 **v10;
unsigned __int8 *v11;
ULONG_PTR v12;
int NameString;
int v14;
int Length;
int v16;
unsigned int v17;
UNICODE_STRING *TypeName;
PVOID P;
_SE_ADT_PARAMETER_ARRAY Src;
P = 0i64;
v4 = 0i64;
ClientToken = SubjectSecurityContext->ClientToken;
PrimaryToken = SubjectSecurityContext->PrimaryToken;
v17 = DesiredAccess;
TypeName = 0i64;
if( ClientToken )
v10 = (unsigned __int8 **)*((_QWORD *)ClientToken + 19);
else
v10 = (unsigned __int8 **)*((_QWORD *)PrimaryToken + 19);
v11 = *v10;
v12 = *((_QWORD *)PrimaryToken + 3);
memset((INT64)&Src, 0i64);
Src.CategoryId = 3;
*(_DWORD *)&Src.FlatSubCategoryId = 524408;
Src.AuditId = 4691;
if( !AccessGranted )
Src.Type = 16;
NameString = SepQueryNameString(Object, (_OBJECT_NAME_INFORMATION **)&P);
if( NameString >= 0 )
{
NameString = SepQueryTypeString(Object, &TypeName);
if( NameString < 0 )
{
v4 = TypeName;
}
else
{
v14 = v11[1];
Src.Parameters[0].Type = SeAdtParmTypeSid;
Src.Parameters[0].Address = v11;
Src.Parameters[1].Length = 32;
Src.Parameters[2].Type = SeAdtParmTypeLogonId;
Src.Parameters[0].Length = 4 * v14 + 8;
Src.Parameters[1].Address = &SeSubsystemName;
Src.Parameters[1].Type = SeAdtParmTypeString;
Src.Parameters[2].Length = 8;
if( ClientToken )
Src.Parameters[2].Data[0] = *((_QWORD *)ClientToken + 3);
else
Src.Parameters[2].Data[0] = v12;
v4 = TypeName;
if( TypeName )
{
Length = TypeName->Length;
Src.Parameters[3].Type = SeAdtParmTypeString;
Src.Parameters[3].Length = Length + 16;
Src.Parameters[3].Address = TypeName;
}
if( P )
{
v16 = *(unsigned __int16 *)P;
Src.Parameters[4].Type = SeAdtParmTypeString;
Src.Parameters[4].Length = v16 + 16;
Src.Parameters[4].Address = P;
}
Src.Parameters[5].Data[0] = v17;
Src.Parameters[6].Data[0] = v17;
Src.Parameters[7].Data[0] = (ULONG_PTR)SubjectSecurityContext->ProcessAuditId;
Src.Parameters[5].Type = SeAdtParmTypeAccessMask;
Src.Parameters[5].Length = 4;
Src.Parameters[5].Data[1] = 3i64;
Src.Parameters[6].Type = SeAdtParmTypeHexUlong;
Src.Parameters[6].Length = 4;
Src.Parameters[7].Type = SeAdtParmTypePtr;
Src.Parameters[7].Length = 8;
Src.ParameterCount = 8;
SepAdtLogAuditRecord(&Src);
}
}
if( P )
ExFreePoolWithTag(P, 0);
if( v4 )
ExFreePoolWithTag(v4, 0);
if( NameString < 0 )
SepAuditFailed((unsigned int)NameString);
}Referenced by:
SeObjectReferenceAuditAlarm