SeTokenDefaultDaclChangedAuditAlarm
VOID __stdcall SeTokenDefaultDaclChangedAuditAlarm(
_UNICODE_STRING *CapturedSubsystemName,
VOID *Object,
VOID *HandleId,
_ACL *OldDefaultDacl,
_ACL *NewDefaultDacl){
_UNICODE_STRING *v5;
VOID *v6;
VOID *v7;
_UNICODE_STRING *v10;
VOID ***PrimaryToken;
NTSTATUS v12;
NTSTATUS v13;
NTSTATUS v14;
VOID *UserSid;
VOID *UserSida;
VOID *OldSecurityDescriptor;
VOID *OldSecurityDescriptora;
UINT64 SecurityInformation;
_UNICODE_STRING *TypeName;
VOID *NewSecurityDescriptor;
_SECURITY_SUBJECT_CONTEXT SubjectContext;
__int128 SecurityDescriptor[2];
__int64 v24;
__int128 InputSecurityDescriptor[2];
__int64 v26;
VOID *OutputSecurityDescriptor;
VOID *HandleIda;
HandleIda = HandleId;
v5 = 0i64;
v24 = 0i64;
v6 = 0i64;
TypeName = 0i64;
v7 = 0i64;
v26 = 0i64;
memset(&SubjectContext, 0, sizeof(SubjectContext));
OutputSecurityDescriptor = 0i64;
NewSecurityDescriptor = 0i64;
memset(SecurityDescriptor, 0, sizeof(SecurityDescriptor));
v10 = 0i64;
memset(InputSecurityDescriptor, 0, sizeof(InputSecurityDescriptor));
SeCaptureSubjectContext((INT64)&SubjectContext);
PrimaryToken = (VOID ***)SubjectContext.PrimaryToken;
if( SubjectContext.ClientToken )
PrimaryToken = (VOID ***)SubjectContext.ClientToken;
if( PrimaryToken )
{
if( !SepAdtAuditThisEventWithContext(0x8Dui64, 1u, 0, &SubjectContext)
|| SepIsAclEqual(OldDefaultDacl, NewDefaultDacl) )
{
LABEL_5:
SeReleaseSubjectContext(&SubjectContext);
return;
}
if( Object )
{
v12 = SepQueryTypeString(Object, &TypeName);
v5 = TypeName;
v13 = v12;
if( v12 < 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( TypeName )
v10 = TypeName;
}
v13 = RtlCreateSecurityDescriptor(SecurityDescriptor, 1ui64);
if( v13 >= 0 )
{
v13 = RtlSetDaclSecurityDescriptor(SecurityDescriptor, 1u, OldDefaultDacl, 0);
if( v13 >= 0 )
{
v13 = SeCaptureSecurityDescriptor(
SecurityDescriptor,
0,
PagedPool,
1u,
&OutputSecurityDescriptor,
(INT64)UserSid,
(INT64)OldSecurityDescriptor);
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,
(INT64)UserSida,
(INT64)OldSecurityDescriptora);
v7 = NewSecurityDescriptor;
v13 = v14;
v6 = OutputSecurityDescriptor;
if( v14 >= 0 )
{
LODWORD(SecurityInformation) = 4;
SepAdtSecurityDescriptorChangedAuditAlarm(
&SubjectContext,
(_UNICODE_STRING *)&SeSubsystemName,
v10,
0i64,
HandleIda,
*PrimaryToken[19],
OutputSecurityDescriptor,
SecurityInformation,
NewSecurityDescriptor);
}
}
}
}
goto LABEL_20;
}
SepAuditFailed(3221225596i64);
}Referenced by:
NtSetInformationToken