SeAuditFipsCryptoSelftests
VOID __stdcall SeAuditFipsCryptoSelftests(UINT8 bSuccess, UINT64 SelftestCode){
unsigned __int64 v3;
void *PrimaryToken;
_EPROCESS *CurrentThreadProcess;
unsigned __int64 UniqueProcessId;
NTSTATUS AllocatedFullProcessImageName;
unsigned int v8;
_UNICODE_STRING *ImageName;
_SECURITY_SUBJECT_CONTEXT SubjectContext;
_SE_ADT_PARAMETER_ARRAY AuditParameters;
SubjectContext.ClientToken = 0i64;
v3 = (unsigned int)SelftestCode;
SubjectContext.ImpersonationLevel = 0x80000000;
memset(&SubjectContext.ImpersonationLevel + 1, 0, 20);
memset(&AuditParameters, 0i64, sizeof(AuditParameters));
ImageName = 0i64;
AuditParameters.CategoryId = 1;
AuditParameters.FlatSubCategoryId = 102;
SeCaptureSubjectContext((INT64)&SubjectContext);
PrimaryToken = SubjectContext.PrimaryToken;
AuditParameters.Parameters[0].Type = SeAdtParmTypeSid;
if( SubjectContext.ClientToken )
PrimaryToken = SubjectContext.ClientToken;
AuditParameters.Parameters[1].Type = SeAdtParmTypeString;
AuditParameters.Parameters[1].Length = 32;
AuditParameters.Parameters[0].Address = (void *)**((_QWORD **)PrimaryToken + 19);
AuditParameters.Parameters[0].Length = 4 * *((unsigned __int8 *)AuditParameters.Parameters[0].Address + 1) + 8;
AuditParameters.Parameters[1].Address = (void *)&SeSubsystemName;
CurrentThreadProcess = (_EPROCESS *)PsGetCurrentThreadProcess();
UniqueProcessId = (unsigned __int64)CurrentThreadProcess->UniqueProcessId;
AllocatedFullProcessImageName = PsGetAllocatedFullProcessImageNameEx(CurrentThreadProcess, &ImageName);
if( AllocatedFullProcessImageName >= 0 )
{
AuditParameters.Parameters[2].Type = SeAdtParmTypePtr;
AuditParameters.Parameters[2].Length = 8;
AuditParameters.Parameters[2].Data[0] = UniqueProcessId;
v8 = ImageName->Length + 16;
AuditParameters.Parameters[3].Type = SeAdtParmTypeFileSpec;
AuditParameters.Parameters[3].Length = v8;
AuditParameters.Parameters[3].Address = ImageName;
AuditParameters.ParameterCount = 4;
if( bSuccess )
{
AuditParameters.AuditId = 6417;
AuditParameters.Type = 8;
}
else
{
AuditParameters.AuditId = 6418;
AuditParameters.Type = 16;
AuditParameters.Parameters[4].Type = SeAdtParmTypeHexUlong;
AuditParameters.Parameters[4].Length = 4;
AuditParameters.Parameters[4].Data[0] = v3;
AuditParameters.ParameterCount = 5;
}
SepAdtLogAuditRecord(&AuditParameters);
}
SeReleaseSubjectContext(&SubjectContext);
if( ImageName )
ExFreePoolWithTag(ImageName, 0);
if( AllocatedFullProcessImageName < 0 )
SepAuditFailed((unsigned int)AllocatedFullProcessImageName);
}Referenced by:
No references.