SeTokenDefaultDaclChangedAuditAlarm
void __fastcall SeTokenDefaultDaclChangedAuditAlarm(__int64 a1, void *a2, VOID *a3, _ACL *a4, _ACL *NewDefaultDacl){
PVOID v5;
PVOID v6;
PVOID v7;
UNICODE_STRING *v10;
PVOID **PrimaryToken;
int TypeString;
NTSTATUS v13;
NTSTATUS v14;
UINT64 SecurityInformation;
PVOID P;
PVOID NewSecurityDescriptor;
struct _SECURITY_SUBJECT_CONTEXT SubjectContext;
__int128 SecurityDescriptor[2];
__int64 v20;
__int128 InputSecurityDescriptor[2];
__int64 v22;
PVOID OutputSecurityDescriptor;
PVOID HandleId;
HandleId = a3;
v5 = 0i64;
v20 = 0i64;
v6 = 0i64;
P = 0i64;
v7 = 0i64;
v22 = 0i64;
memset(&SubjectContext, 0, sizeof(SubjectContext));
OutputSecurityDescriptor = 0i64;
NewSecurityDescriptor = 0i64;
memset(SecurityDescriptor, 0, sizeof(SecurityDescriptor));
v10 = 0i64;
memset(InputSecurityDescriptor, 0, sizeof(InputSecurityDescriptor));
SeCaptureSubjectContext(&SubjectContext);
PrimaryToken = (PVOID **)SubjectContext.PrimaryToken;
if( SubjectContext.ClientToken )
PrimaryToken = (PVOID **)SubjectContext.ClientToken;
if( PrimaryToken )
{
if( !SepAdtAuditThisEventWithContext(0x8Dui64, 1u, 0, &SubjectContext) || SepIsAclEqual(a4, NewDefaultDacl) )
{
LABEL_5:
SeReleaseSubjectContext(&SubjectContext);
return;
}
if( a2 )
{
TypeString = SepQueryTypeString(a2, (UNICODE_STRING **)&P);
v5 = P;
v13 = TypeString;
if( TypeString < 0 )
{
LABEL_20:
if( v5 )
ExFreePoolWithTag(v5, 0);
if( v6 )
SeReleaseSecurityDescriptor(v6, 0, 1u);
if( v7 )
SeReleaseSecurityDescriptor(v7, 0, 1u);
if( v13 < 0 )
SepAuditFailed((unsigned int)v13);
goto LABEL_5;
}
if( P )
v10 = (UNICODE_STRING *)P;
}
v13 = RtlCreateSecurityDescriptor(SecurityDescriptor, 1ui64);
if( v13 >= 0 )
{
v13 = RtlSetDaclSecurityDescriptor(SecurityDescriptor, 1u, a4, 0);
if( v13 >= 0 )
{
v13 = SeCaptureSecurityDescriptor(SecurityDescriptor, 0, PagedPool, 1u, &OutputSecurityDescriptor);
if( v13 < 0
|| (v13 = RtlCreateSecurityDescriptor(InputSecurityDescriptor, 1ui64), v13 < 0)
|| (v13 = RtlSetDaclSecurityDescriptor(InputSecurityDescriptor, 1u, NewDefaultDacl, 0), v13 < 0) )
{
v6 = OutputSecurityDescriptor;
}
else
{
v14 = SeCaptureSecurityDescriptor(InputSecurityDescriptor, 0, PagedPool, 1u, &NewSecurityDescriptor);
v7 = NewSecurityDescriptor;
v13 = v14;
v6 = OutputSecurityDescriptor;
if( v14 >= 0 )
{
LODWORD(SecurityInformation) = 4;
SepAdtSecurityDescriptorChangedAuditAlarm(
&SubjectContext,
(UNICODE_STRING *)&SeSubsystemName,
v10,
0i64,
HandleId,
*PrimaryToken[19],
OutputSecurityDescriptor,
SecurityInformation,
NewSecurityDescriptor);
}
}
}
}
goto LABEL_20;
}
SepAuditFailed(3221225596i64);
}Referenced by:
NtSetInformationToken