SeAuditSystemTimeChange

VOID __stdcall SeAuditSystemTimeChange(LARGE_INTEGER OldTime, LARGE_INTEGER NewTime){
  _QWORD *ClientToken; 
  _QWORD *PrimaryToken; 
  void *v6; 
  unsigned __int8 *v7; 
  __int64 CurrentThreadProcess; 
  int AllocatedFullProcessImageName; 
  int v10; 
  ULONG_PTR v11; 
  ULONG v12; 
  PVOID P; 
  struct _SECURITY_SUBJECT_CONTEXT SubjectContext; 
  _SE_ADT_PARAMETER_ARRAY Src; 
  P = 0i64;
  memset(&SubjectContext, 0, sizeof(SubjectContext));
  SeCaptureSubjectContext(&SubjectContext);
  ClientToken = SubjectContext.ClientToken;
  PrimaryToken = SubjectContext.PrimaryToken;
  v6 = SubjectContext.PrimaryToken;
  if( SubjectContext.ClientToken )
    v6 = SubjectContext.ClientToken;
  v7 = (unsigned __int8 *)**((_QWORD **)v6 + 19);
  CurrentThreadProcess = PsGetCurrentThreadProcess();
  memset((INT64)&Src, 0i64);
  AllocatedFullProcessImageName = PsGetAllocatedFullProcessImageNameEx(CurrentThreadProcess, &P);
  if( AllocatedFullProcessImageName < 0 )
  {
    SepAuditFailed((unsigned int)AllocatedFullProcessImageName);
  }
  else
  {
    v10 = v7[1];
    Src.CategoryId = 1;
    Src.AuditId = 4616;
    *(_DWORD *)&Src.FlatSubCategoryId = 524388;
    Src.Parameters[0].Type = SeAdtParmTypeSid;
    Src.Parameters[0].Length = 4 * v10 + 8;
    Src.Parameters[1].Address = &SeSubsystemName;
    Src.Parameters[0].Address = v7;
    Src.Parameters[1].Type = SeAdtParmTypeString;
    Src.Parameters[1].Length = 32;
    Src.Parameters[2].Type = SeAdtParmTypeLogonId;
    Src.Parameters[2].Length = 8;
    if( ClientToken )
      v11 = ClientToken[3];
    else
      v11 = PrimaryToken[3];
    Src.Parameters[2].Data[0] = v11;
    Src.Parameters[3].Type = SeAdtParmTypeTime;
    Src.Parameters[4].Type = SeAdtParmTypeTime;
    Src.Parameters[5].Data[0] = *(_QWORD *)(CurrentThreadProcess + 1088);
    v12 = *(unsigned __int16 *)P + 16;
    Src.Parameters[6].Address = P;
    Src.Parameters[6].Length = v12;
    Src.Parameters[3].Length = 8;
    Src.Parameters[3].Data[0] = OldTime.QuadPart;
    Src.Parameters[4].Length = 8;
    Src.Parameters[4].Data[0] = NewTime.QuadPart;
    Src.Parameters[5].Type = SeAdtParmTypePtr;
    Src.Parameters[5].Length = 8;
    Src.Parameters[6].Type = SeAdtParmTypeFileSpec;
    Src.ParameterCount = 7;
    SepAdtLogAuditRecord(&Src);
  }
  if( P )
    ExFreePoolWithTag(P, 0);
  SeReleaseSubjectContext(&SubjectContext);
}

Referenced by:

NtSetSystemTime