SepInitializationPhase1

UINT8 __stdcall SepInitializationPhase1(){
  BOOL IsCurrentThreadInServerSilo; 
  VOID **PoolWithTag; 
  UINT64 v2; 
  _ACL *v3; 
  VOID *DirectoryHandle; 
  _UNICODE_STRING UnicodeString; 
  void *EventHandle; 
  _OBJECT_ATTRIBUTES ObjectAttributes; 
  _STRING DestinationString; 
  char SecurityDescriptor[40]; 

  *(&ObjectAttributes.Length + 1) = 0;
  *(&ObjectAttributes.Attributes + 1) = 0;
  DirectoryHandle = 0i64;
  EventHandle = 0i64;
  DestinationString = 0i64;
  UnicodeString = 0i64;
  IsCurrentThreadInServerSilo = PsIsCurrentThreadInServerSilo();
  if( !IsCurrentThreadInServerSilo )
  {
    ObInsertObject(
      (VOID *)(KeGetCurrentThread()->ApcState.Process->Token.Value & 0xFFFFFFFFFFFFFFF0ui64),
      0i64,
      0,
      0i64,
      0i64,
      0i64);
    SeAnonymousLogonToken = (_TOKEN *)SeMakeAnonymousLogonToken();
    SeAnonymousLogonTokenNoEveryone = SeMakeAnonymousLogonTokenNoEveryone();
  }
  RtlInitAnsiString(&DestinationString, "\\Security");
  RtlAnsiStringToUnicodeString(&UnicodeString, &DestinationString, 1u);
  RtlCreateSecurityDescriptor(SecurityDescriptor, 1ui64);
  PoolWithTag = ExAllocatePoolWithTag(0x200ui64, 0x100ui64, 538994003i64);
  v3 = (_ACL *)PoolWithTag;
  if( !PoolWithTag )
    return 0;
  RtlCreateAcl((PACL)PoolWithTag, (_ACL)256i64, 2ui64, v2);
  RtlAddAccessAllowedAce(v3, 2ui64, 983055, SeLocalSystemSid);
  RtlAddAccessAllowedAce(v3, 2ui64, 131075, SeAliasAdminsSid);
  RtlAddAccessAllowedAce(v3, 2ui64, 2, SeWorldSid);
  RtlSetDaclSecurityDescriptor(SecurityDescriptor, 1u, v3, 0);
  ObjectAttributes.RootDirectory = 0i64;
  ObjectAttributes.SecurityQualityOfService = 0i64;
  ObjectAttributes.ObjectName = &UnicodeString;
  ObjectAttributes.Attributes = 80;
  ObjectAttributes.SecurityDescriptor = SecurityDescriptor;
  ObjectAttributes.Length = 48;
  ZwCreateDirectoryObject(&DirectoryHandle, 983055, &ObjectAttributes);
  RtlFreeAnsiString(&UnicodeString);
  ExFreePoolWithTag(v3, 0);
  RtlInitAnsiString(&DestinationString, "LSA_AUTHENTICATION_INITIALIZED");
  RtlAnsiStringToUnicodeString(&UnicodeString, &DestinationString, 1u);
  ObjectAttributes.SecurityQualityOfService = 0i64;
  ObjectAttributes.RootDirectory = DirectoryHandle;
  ObjectAttributes.Length = 48;
  ObjectAttributes.ObjectName = &UnicodeString;
  ObjectAttributes.SecurityDescriptor = (void *)SePublicDefaultSd;
  ObjectAttributes.Attributes = 80;
  ZwCreateEvent((UINT64)&EventHandle, 0x40000000ui64, (INT64)&ObjectAttributes, 0i64, 0);
  RtlFreeAnsiString(&UnicodeString);
  ZwClose((_HANDLE)DirectoryHandle);
  ZwClose((_HANDLE)EventHandle);
  if( !IsCurrentThreadInServerSilo )
  {
    SepInitProcessAuditSd();
    SepInitializeCodeIntegrity();
    SepInitializeAuthorizationCallbacks();
    if( SepInitializeSingletonAttributesStructures() < 0 )
      return 0;
  }
  SddlBaseInitialize();
  return 1;
}

Referenced by:

SeInitServerSilo
SeInitSystem