Bitdefender Hypervisor Memory Introspection
intro_types.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2020 Bitdefender
3  * SPDX-License-Identifier: Apache-2.0
4  */
16 
17 #ifndef _INTRO_TYPES_H_
18 #define _INTRO_TYPES_H_
19 
20 #include "env.h"
21 
22 // Allow integrators to ignore the following typedefs if the following types are already defined
23 #ifndef INTROCORE_NOCOMPAT
24 
25 #include <stddef.h>
26 #include <stdint.h>
27 #include <stdbool.h>
28 
29 #ifndef TRUE
30 #define TRUE true
31 #endif
32 
33 #ifndef FALSE
34 #define FALSE false
35 #endif
36 
37 typedef uint8_t UINT8, *PUINT8;
38 typedef uint16_t UINT16, *PUINT16;
39 typedef uint32_t UINT32, *PUINT32;
40 typedef unsigned long long UINT64, *PUINT64;
41 
42 typedef int8_t INT8, *PINT8;
43 typedef int16_t INT16, *PINT16;
44 typedef int32_t INT32, *PINT32;
45 typedef long long INT64, *PINT64;
46 
47 typedef uint8_t BYTE, *PBYTE;
48 typedef uint16_t WORD, *PWORD;
49 typedef uint32_t DWORD, *PDWORD;
50 
51 // If we don't define 64-bit types to `long long`, we have a problem with string formatting, since
52 // `%lx` should be used on gnu, and `%llx` on MSVC
53 typedef unsigned long long QWORD, *PQWORD;
54 
55 typedef unsigned char UCHAR, *PUCHAR;
56 typedef char CHAR, *PCHAR;
57 
58 typedef _Bool BOOLEAN;
59 
60 typedef size_t SIZE_T;
61 
62 #ifndef INT_COMPILER_MSVC
63 typedef uint16_t WCHAR, *PWCHAR;
64 #include "intro_sal.h"
65 #else
66 typedef uint16_t WCHAR, *PWCHAR;
67 typedef int64_t ssize_t;
68 #endif // !INT_COMPILER_MSVC
69 
70 #endif // !INTROCORE_NOCOMPAT
71 
72 
73 #pragma pack(push, 8)
74 
75 
76 // Introspection alerts
77 
81 typedef enum _INTRO_EVENT_TYPE
82 {
121 
122 
127 {
137 
138 
145 typedef enum _INTRO_ACTION
146 {
150 
154 
159 
165 
168 
174 } INTRO_ACTION;
175 
176 
181 {
220 
226 
227 
231 typedef enum _INTRO_OBJECT_TYPE
232 {
275 
277 
278  //
279  // If you need to add fields here, please consider how it interacts with other parts of Introcore
280  // (below are just a few examples):
281  // - EVENT_EPT_VIOLATION.Originator.Module and EVENT_EPT_VIOLATION.Originator.Module.ReturnModule
282  // - Should they be valid or invalid ?
283  // - If they are invalid, why ?
284  //
285  // - EVENT_EPT_VIOLATION.Victim.Module and EVENT_EPT_VIOLATION.Victim.Module.DriverObject:
286  // - Should they be valid or invalid ?
287  // - Must you add another structure in the Victim union ?
288  // - Should the integrator use a generic name based on the new type ?
289  //
290  // - Other alerts & fields, if that's the case
291  //
293 
294 
298 typedef enum _INTRO_NET_AF
299 {
302 
304 } INTRO_NET_AF;
305 
306 
310 typedef enum _INTRO_NET_STATE
311 {
325 
328 
329 
330 //
331 // These masks are used to configure what protection policies should be applied per process
332 //
333 
340 
342 #define PROC_OPT_NONE 0x00000000
343 #define PROC_OPT_PROT_CORE_HOOKS 0x00000004
345 #define PROC_OPT_PROT_UNPACK 0x00000008
347 #define PROC_OPT_PROT_WRITE_MEM 0x00000010
349 #define PROC_OPT_PROT_WSOCK_HOOKS 0x00000020
351 #define PROC_OPT_PROT_EXPLOIT 0x00000040
353 #define PROC_OPT_PROT_SET_THREAD_CTX 0x00000080
355 #define PROC_OPT_PROT_PTRACE 0x00000080
357 #define PROC_OPT_PROT_QUEUE_APC 0x00000100
359 #define PROC_OPT_PROT_PREVENT_CHILD_CREATION 0x00000200
361 #define PROC_OPT_PROT_DOUBLE_AGENT 0x00000400
363 #define PROC_OPT_PROT_SCAN_CMD_LINE 0x00000800
365 #define PROC_OPT_PROT_INSTRUMENT 0x00001000
367 
369 #define PROC_OPT_REMEDIATE 0x20000000
370 #define PROC_OPT_KILL_ON_EXPLOIT 0x40000000
375 #define PROC_OPT_BETA 0x80000000
377 
379 #define PROC_OPT_PROT_INJECTION (PROC_OPT_PROT_WRITE_MEM |\
380  PROC_OPT_PROT_SET_THREAD_CTX |\
381  PROC_OPT_PROT_PTRACE |\
382  PROC_OPT_PROT_QUEUE_APC |\
383  PROC_OPT_PROT_DOUBLE_AGENT |\
384  PROC_OPT_PROT_INSTRUMENT)
385 
387 #define PROC_OPT_PROT_ALL (PROC_OPT_PROT_CORE_HOOKS |\
388  PROC_OPT_PROT_INJECTION |\
389  PROC_OPT_PROT_WSOCK_HOOKS |\
390  PROC_OPT_PROT_EXPLOIT |\
391  PROC_OPT_PROT_PREVENT_CHILD_CREATION |\
392  PROC_OPT_PROT_SCAN_CMD_LINE |\
393  PROC_OPT_KILL_ON_EXPLOIT)
394 
396 
397 //
398 // Granular protection flags.
399 //
400 
406 
407 
408 #define INTRO_OPT_PROT_KM_NT 0x0000000000000001ull
409 #define INTRO_OPT_PROT_KM_LX 0x0000000000000001ull
410 #define INTRO_OPT_PROT_KM_HAL 0x0000000000000002ull
411 #define INTRO_OPT_PROT_KM_SSDT 0x0000000000000004ull
412 #define INTRO_OPT_PROT_KM_IDT 0x0000000000000008ull
413 #define INTRO_OPT_PROT_KM_HAL_DISP_TABLE 0x0000000000000010ull
415 #define INTRO_OPT_PROT_KM_SYSTEM_CR3 0x0000000000000020ull
416 #define INTRO_OPT_PROT_KM_TOKEN_PTR 0x0000000000000040ull
417 #define INTRO_OPT_PROT_KM_CREDS 0x0000000000000040ull
418 #define INTRO_OPT_PROT_KM_NT_DRIVERS 0x0000000000000080ull
420 #define INTRO_OPT_PROT_KM_LX_MODULES 0x0000000000000080ull
422 #define INTRO_OPT_PROT_KM_AV_DRIVERS 0x0000000000000100ull
423 #define INTRO_OPT_PROT_KM_XEN_DRIVERS 0x0000000000000200ull
424 #define INTRO_OPT_PROT_KM_DRVOBJ 0x0000000000000400ull
426 #define INTRO_OPT_PROT_KM_CR4 0x0000000000000800ull
427 #define INTRO_OPT_PROT_KM_MSR_SYSCALL 0x0000000000001000ull
428 #define INTRO_OPT_PROT_KM_IDTR 0x0000000000002000ull
430 #define INTRO_OPT_PROT_KM_HAL_HEAP_EXEC 0x0000000000004000ull
432 #define INTRO_OPT_PROT_KM_HAL_INT_CTRL 0x0000000000008000ull
434 
435 #define INTRO_OPT_PROT_UM_MISC_PROCS 0x0000000000010000ull
436 #define INTRO_OPT_PROT_UM_SYS_PROCS 0x0000000000020000ull
438 #define INTRO_OPT_PROT_KM_SELF_MAP_ENTRY 0x0000000000040000ull
439 #define INTRO_OPT_PROT_KM_GDTR 0x0000000000080000ull
441 
443 #define INTRO_OPT_EVENT_PROCESSES 0x0000000000100000ull
444 #define INTRO_OPT_EVENT_MODULES 0x0000000000200000ull
446 #define INTRO_OPT_EVENT_OS_CRASH 0x0000000000400000ull
448 #define INTRO_OPT_EVENT_PROCESS_CRASH 0x0000000000800000ull
450 
451 #define INTRO_OPT_AGENT_INJECTION 0x0000000001000000ull
452 
453 #define INTRO_OPT_FULL_PATH 0x0000000002000000ull
457 #define INTRO_OPT_KM_BETA_DETECTIONS 0x0000000004000000ull
458 #define INTRO_OPT_NOTIFY_ENGINES 0x0000000008000000ull
460 #define INTRO_OPT_IN_GUEST_PT_FILTER 0x0000000010000000ull
462 
466 #define INTRO_OPT_BUGCHECK_CLEANUP 0x0000000020000000ull
467 #define INTRO_OPT_PANIC_CLEANUP 0x0000000020000000ull
471 #define INTRO_OPT_SYSPROC_BETA_DETECTIONS 0x0000000040000000ull
473 
475 #define INTRO_OPT_VE 0x0000000080000000ull
476 
482 #define INTRO_OPT_EVENT_CONNECTIONS 0x0000000100000000ull
483 
485 #define INTRO_OPT_PROT_KM_LOGGER_CONTEXT 0x0000000200000000ull
486 
488 #define INTRO_OPT_PROT_DPI_DEBUG 0x0000000400000000ull
489 #define INTRO_OPT_PROT_DPI_STACK_PIVOT 0x0000000800000000ull
491 #define INTRO_OPT_PROT_DPI_TOKEN_STEAL 0x0000001000000000ull
493 #define INTRO_OPT_PROT_DPI_HEAP_SPRAY 0x0000002000000000ull
495 
497 #define INTRO_OPT_PROT_KM_NT_EAT_READS 0x0000004000000000ull
498 #define INTRO_OPT_PROT_KM_LX_TEXT_READS 0x0000008000000000ull
500 #define INTRO_OPT_PROT_KM_VDSO 0x0000010000000000ull
501 
502 #define INTRO_OPT_PROT_KM_SWAPGS 0x0000020000000000ull
503 
504 #define INTRO_OPT_PROT_KM_TOKEN_PRIVS 0x0000040000000000ull
506 #define INTRO_OPT_PROT_DPI_TOKEN_PRIVS 0x0000080000000000ull
508 #define INTRO_OPT_PROT_DPI_THREAD_SHELL 0x0000100000000000ull
510 
515 #define INTRO_OPT_PROT_KM_SUD_EXEC 0x0000200000000000ull
516 
519 #define INTRO_OPT_PROT_KM_HAL_PERF_CNT 0x0000400000000000ull
520 
522 #define INTRO_OPT_PROT_KM_SD_ACL 0x0000800000000000ull
523 #define INTRO_OPT_PROT_DPI_SD_ACL 0x0001000000000000ull
525 
528 #define INTRO_OPT_PROT_KM_SUD_INTEGRITY 0x0002000000000000ull
529 
531 #define INTRO_OPT_PROT_KM_INTERRUPT_OBJ 0x0004000000000000ull
532 
534 #define INTRO_OPT_PROT_DPI (INTRO_OPT_PROT_DPI_DEBUG | \
535  INTRO_OPT_PROT_DPI_STACK_PIVOT | \
536  INTRO_OPT_PROT_DPI_TOKEN_STEAL | \
537  INTRO_OPT_PROT_DPI_HEAP_SPRAY | \
538  INTRO_OPT_PROT_DPI_TOKEN_PRIVS | \
539  INTRO_OPT_PROT_DPI_THREAD_SHELL | \
540  INTRO_OPT_PROT_DPI_SD_ACL)
541 
542 
544 #define INTRO_OPT_ENABLE_KM_PROTECTION (INTRO_OPT_PROT_KM_NT | \
545  INTRO_OPT_PROT_KM_LX | \
546  INTRO_OPT_PROT_KM_HAL | \
547  INTRO_OPT_PROT_KM_SSDT | \
548  INTRO_OPT_PROT_KM_VDSO | \
549  INTRO_OPT_PROT_KM_NT_DRIVERS | \
550  INTRO_OPT_PROT_KM_LX_MODULES | \
551  INTRO_OPT_PROT_KM_NT_EAT_READS | \
552  INTRO_OPT_PROT_KM_DRVOBJ | \
553  INTRO_OPT_PROT_KM_HAL_HEAP_EXEC | \
554  INTRO_OPT_PROT_KM_HAL_INT_CTRL | \
555  INTRO_OPT_PROT_KM_SELF_MAP_ENTRY| \
556  INTRO_OPT_PROT_KM_SWAPGS | \
557  INTRO_OPT_PROT_KM_SUD_EXEC | \
558  INTRO_OPT_PROT_KM_HAL_PERF_CNT)
559 
561 #define INTRO_OPT_ENABLE_UM_PROTECTION (INTRO_OPT_PROT_UM_MISC_PROCS | \
562  INTRO_OPT_PROT_UM_SYS_PROCS | \
563  INTRO_OPT_PROT_DPI)
564 
566 #define INTRO_OPT_ENABLE_AV_PROTECTION (INTRO_OPT_PROT_KM_AV_DRIVERS)
567 
569 #define INTRO_OPT_ENABLE_CR_PROTECTION (INTRO_OPT_PROT_KM_CR4)
570 
572 #define INTRO_OPT_ENABLE_MSR_PROTECTION (INTRO_OPT_PROT_KM_MSR_SYSCALL)
573 
575 #define INTRO_OPT_ENABLE_INTEGRITY_CHECKS (INTRO_OPT_PROT_KM_IDT | \
576  INTRO_OPT_PROT_KM_HAL_DISP_TABLE | \
577  INTRO_OPT_PROT_KM_SYSTEM_CR3 | \
578  INTRO_OPT_PROT_KM_TOKEN_PTR | \
579  INTRO_OPT_PROT_KM_CREDS | \
580  INTRO_OPT_PROT_KM_LOGGER_CONTEXT | \
581  INTRO_OPT_PROT_KM_TOKEN_PRIVS | \
582  INTRO_OPT_PROT_KM_SD_ACL | \
583  INTRO_OPT_PROT_KM_SUD_INTEGRITY | \
584  INTRO_OPT_PROT_KM_INTERRUPT_OBJ)
585 
587 #define INTRO_OPT_ENABLE_DTR_PROTECTION (INTRO_OPT_PROT_KM_IDTR | \
588  INTRO_OPT_PROT_KM_GDTR)
589 
591 #define INTRO_OPT_ENABLE_KM_BETA_DETECTIONS (INTRO_OPT_KM_BETA_DETECTIONS)
592 
594 #define INTRO_OPT_ENABLE_FULL_PATH (INTRO_OPT_FULL_PATH)
595 
597 #define INTRO_OPT_ENABLE_XEN_PROTECTION (INTRO_OPT_PROT_KM_XEN_DRIVERS)
598 
600 #define INTRO_OPT_ENABLE_MANUAL_AGENT_INJ (INTRO_OPT_AGENT_INJECTION)
601 
603 #define INTRO_OPT_ENABLE_MISC_EVENTS (INTRO_OPT_EVENT_PROCESSES | \
604  INTRO_OPT_EVENT_MODULES | \
605  INTRO_OPT_EVENT_OS_CRASH | \
606  INTRO_OPT_EVENT_PROCESS_CRASH)
607 
609 #define INTRO_OPT_DYNAMIC_OPTIONS_MASK (0xffffffffffffffff)
610 
612 #define INTRO_OPT_DEFAULT_OPTIONS (INTRO_OPT_ENABLE_KM_PROTECTION |\
613  INTRO_OPT_ENABLE_UM_PROTECTION |\
614  INTRO_OPT_ENABLE_AV_PROTECTION |\
615  INTRO_OPT_ENABLE_XEN_PROTECTION |\
616  INTRO_OPT_ENABLE_CR_PROTECTION |\
617  INTRO_OPT_ENABLE_MSR_PROTECTION |\
618  INTRO_OPT_ENABLE_DTR_PROTECTION |\
619  INTRO_OPT_ENABLE_KM_BETA_DETECTIONS |\
620  INTRO_OPT_ENABLE_INTEGRITY_CHECKS |\
621  INTRO_OPT_ENABLE_FULL_PATH |\
622  INTRO_OPT_IN_GUEST_PT_FILTER)
623 
625 #define INTRO_OPT_DEFAULT_XEN_OPTIONS (INTRO_OPT_ENABLE_KM_PROTECTION |\
626  INTRO_OPT_ENABLE_UM_PROTECTION |\
627  INTRO_OPT_ENABLE_AV_PROTECTION |\
628  INTRO_OPT_ENABLE_XEN_PROTECTION |\
629  INTRO_OPT_ENABLE_CR_PROTECTION |\
630  INTRO_OPT_ENABLE_MSR_PROTECTION |\
631  INTRO_OPT_ENABLE_DTR_PROTECTION |\
632  INTRO_OPT_ENABLE_INTEGRITY_CHECKS |\
633  INTRO_OPT_ENABLE_FULL_PATH |\
634  INTRO_OPT_ENABLE_MANUAL_AGENT_INJ |\
635  INTRO_OPT_ENABLE_MISC_EVENTS |\
636  INTRO_OPT_IN_GUEST_PT_FILTER)
637 
639 #define INTRO_OPT_ONLY_KERNEL (INTRO_OPT_ENABLE_KM_PROTECTION |\
640  INTRO_OPT_ENABLE_AV_PROTECTION |\
641  INTRO_OPT_ENABLE_XEN_PROTECTION |\
642  INTRO_OPT_ENABLE_MSR_PROTECTION |\
643  INTRO_OPT_ENABLE_DTR_PROTECTION |\
644  INTRO_OPT_ENABLE_KM_BETA_DETECTIONS |\
645  INTRO_OPT_ENABLE_INTEGRITY_CHECKS |\
646  INTRO_OPT_ENABLE_FULL_PATH |\
647  INTRO_OPT_IN_GUEST_PT_FILTER)
648 
650 #define POLICY_KM_BETA_FLAGS \
651  (INTRO_OPT_PROT_KM_NT | INTRO_OPT_PROT_KM_HAL | INTRO_OPT_PROT_KM_SSDT | INTRO_OPT_PROT_KM_IDT \
652  | INTRO_OPT_PROT_KM_HAL_DISP_TABLE | INTRO_OPT_PROT_KM_SYSTEM_CR3 | INTRO_OPT_PROT_KM_TOKEN_PTR \
653  | INTRO_OPT_PROT_KM_NT_DRIVERS | INTRO_OPT_PROT_KM_AV_DRIVERS | INTRO_OPT_PROT_KM_XEN_DRIVERS \
654  | INTRO_OPT_PROT_KM_DRVOBJ | INTRO_OPT_PROT_KM_CR4 | INTRO_OPT_PROT_KM_MSR_SYSCALL | INTRO_OPT_PROT_KM_IDTR \
655  | INTRO_OPT_PROT_KM_HAL_HEAP_EXEC | INTRO_OPT_PROT_KM_HAL_INT_CTRL | INTRO_OPT_PROT_KM_SELF_MAP_ENTRY \
656  | INTRO_OPT_PROT_KM_GDTR | INTRO_OPT_PROT_KM_LX | INTRO_OPT_PROT_KM_VDSO | INTRO_OPT_PROT_KM_LX_MODULES \
657  | INTRO_OPT_PROT_KM_CREDS | INTRO_OPT_PROT_KM_TOKEN_PRIVS | INTRO_OPT_PROT_KM_SUD_EXEC \
658  | INTRO_OPT_PROT_KM_LOGGER_CONTEXT | INTRO_OPT_PROT_KM_NT_EAT_READS | INTRO_OPT_PROT_KM_HAL_PERF_CNT \
659  | INTRO_OPT_PROT_KM_SD_ACL | INTRO_OPT_PROT_KM_SUD_INTEGRITY | INTRO_OPT_PROT_KM_INTERRUPT_OBJ)
660 
661 
663 
670 
671 #define ALERT_FLAG_BETA 0x0000000000000001
672 #define ALERT_FLAG_ANTIVIRUS 0x0000000000000002
673 #define ALERT_FLAG_SYSPROC 0x0000000000000004
674 #define ALERT_FLAG_NOT_RING0 0x0000000000000008
675 #define ALERT_FLAG_ASYNC 0x0000000000000010
676 #define ALERT_FLAG_LINUX 0x0000000000000020
677 #define ALERT_FLAG_FROM_ENGINES 0x0000000000000040
679 
683 #define ALERT_FLAG_FEEDBACK_ONLY 0x0000000000000080
684 #define ALERT_FLAG_DEP_VIOLATION 0x0000000000000100
685 #define ALERT_FLAG_PROTECTED_VIEW 0x0000000000000200
686 #define ALERT_FLAG_KM_UM 0x0000000000000400
688 
690 
691 //
692 // Misc size definitions.
693 //
694 
695 #define ALERT_PATH_MAX_LEN 260u
696 #define ALERT_IMAGE_NAME_LEN 16u
697 #define ALERT_MAX_MESSAGE_SIZE 256u
699 #define ALERT_MAX_INSTRUX_LEN 128u
700 #define ALERT_MAX_SECTION_NAME_LEN 8u
702 #define ALERT_MAX_FUNCTIONS 4u
703 #define ALERT_MAX_FUNCTION_NAME_LEN 32u
704 #define ALERT_MAX_INJ_DUMP_SIZE 512u
705 #define ALERT_MAX_CODEBLOCKS 64u
706 #define ALERT_CMDLINE_MAX_LEN 512u
707 #define ALERT_EXCEPTION_SIZE 255u
708 #define ALERT_MAX_DETECTION_NAME 128u
710 #define ALERT_MAX_ENGINES_VERSION 32u
711 
712 #define INTRO_SECURITY_DESCRIPTOR_SIZE 1024u
741 
743 #define VICTIM_PROCESS_CREDENTIALS u"Process Credentials"
744 #define VICTIM_DRIVER_OBJECT u"Driver Object"
746 #define VICTIM_HAL_DISPATCH_TABLE u"HalDispatchTable"
748 #define VICTIM_IDT u"IDT"
750 #define VICTIM_CIRCULAR_KERNEL_CTX_LOGGER u"Circular Kernel Context Logger"
752 #define VICTIM_PROCESS_TOKEN u"Process Token"
754 #define VICTIM_TOKEN_PRIVILEGES u"Token privileges"
756 #define VICTIM_HAL_PERFORMANCE_COUNTER u"HalPerformanceCounter"
758 #define VICTIM_PROCESS_SECURITY_DESCRIPTOR u"Security Descriptor"
760 #define VICTIM_PROCESS_ACL u"Access Control List"
762 #define VICTIM_INTERRUPT_OBJECT u"Interrupt Object"
764 
768 typedef enum
769 {
775 
776 
780 typedef enum
781 {
785 
786 
788 #define INTRO_VIOLATION_VERSION 1
789 
790 
797 {
802 
803 
807 typedef struct _INTRO_ACL
808 {
813 
814 
820 typedef struct _INTRO_WIN_SID
821 {
824  BYTE IdentifierAuthority[6];
825 
826  DWORD SubAuthority[1];
828 
829 
831 #define INTRO_WIN_SID_MAX_SUB_AUTHORITIES 15
832 
834 #define INTRO_WIN_SID_MAX_SIZE \
835  (sizeof(INTRO_WIN_SID) - sizeof(DWORD) + (INTRO_WIN_SID_MAX_SUB_AUTHORITIES * sizeof(DWORD)))
836 
840 typedef struct _INTRO_SID_ATTRIBUTES
841 {
848  union
849  {
852  };
854 
856 #define INTRO_SIDS_MAX_COUNT 4
857 
861 typedef struct _INTRO_WIN_TOKEN
862 {
867  BYTE _padding[3];
872 
877 
885 
886 
890 typedef union _INTRO_TOKEN
891 {
894 
901 typedef struct _INTRO_PROCESS
902 {
907  QWORD CreationTime;
911  INTRO_TOKEN SecurityInfo;
917 
918 
925 typedef struct _INTRO_MODULE
926 {
931  DWORD TimeDateStamp;
936 
937 
945 typedef struct _INTRO_DRVOBJ
946 {
954 
955 
962 typedef struct _INTRO_CPUCTX
963 {
967  QWORD Rip;
973 
974 
978 typedef struct _INTRO_WRITE_INFO
979 {
980  QWORD OldValue[8];
981  QWORD NewValue[8];
984 
985 
989 typedef struct _INTRO_READ_INFO
990 {
991  QWORD Value[8];
994 
995 
999 typedef struct _INTRO_EXEC_INFO
1000 {
1006 
1007 
1011 typedef struct _INTRO_SEC_DESC_INFO
1012 {
1015  DWORD NewSecDescHash;
1017 
1024 
1032 
1041 typedef struct _INTRO_CODEBLOCKS
1042 {
1044 
1049 
1052  {
1058  } CodeBlocks[ALERT_MAX_CODEBLOCKS];
1059 
1061 
1062 
1066 typedef struct _INTRO_VERSION_INFO
1067 {
1071 
1076 
1080 
1083 
1084 
1088 typedef struct _INTRO_GPRS
1089 {
1111 
1112 
1116 typedef struct _INTRO_EXEC_CONTEXT
1117 {
1120  BYTE RipCode[0x1000];
1123 
1124 
1128 typedef struct _INTRO_EXEC_DATA
1129 {
1135 
1141 typedef enum _MITRE_ID
1142 {
1143  idCredDump = 1003,
1144  idRootkit = 1014,
1146  idProcInject = 1055,
1147  idScripting = 1064,
1149  idPowerShell = 1086,
1151  idExecApi = 1106,
1152  idExecModLoad = 1129,
1153  idAccessToken = 1134,
1154  idHooking = 1179,
1155  idEWMI = 1181,
1161 } MITRE_ID;
1162 
1163 
1164 #pragma pack(push, 1)
1165 
1173 {
1177 
1182 
1183 #pragma pack(pop)
1184 
1185 
1190 {
1192  INTRO_VERSION_INFO VerInfo;
1200 
1201  union
1202  {
1206  };
1208 
1209 
1215 typedef struct _EVENT_EPT_VIOLATION
1216 {
1218 
1219  struct
1220  {
1224 
1225  struct
1226  {
1229  } Injection;
1230  } Originator;
1231 
1234  struct
1235  {
1238  union
1239  {
1241  INTRO_MODULE Module;
1244  };
1247  } Victim;
1248 
1249  union
1250  {
1254 
1258 
1261  };
1262 
1264 
1266 
1271 
1275 
1277 
1280 
1284  CHAR ReturnRipSectionName[ALERT_MAX_SECTION_NAME_LEN];
1285 
1287  CHAR ModifiedSectionName[ALERT_MAX_SECTION_NAME_LEN];
1295 
1298  struct
1299  {
1305  DWORD Delta;
1306  } Export;
1307 
1311 
1312 
1316 typedef struct _EVENT_MSR_VIOLATION
1317 {
1319 
1323  struct
1324  {
1327  } Originator;
1328 
1329  union
1330  {
1332  } Victim;
1333 
1336 
1338 
1341 
1342 
1346 typedef struct _EVENT_CR_VIOLATION
1347 {
1349 
1353  struct
1354  {
1357  } Originator;
1358 
1359  union
1360  {
1362  } Victim;
1363 
1364 
1367 
1369 
1371 
1373 
1374 
1378 typedef struct _EVENT_XCR_VIOLATION
1379 {
1381 
1385  struct
1386  {
1389  } Originator;
1390 
1391  union
1392  {
1394  } Victim;
1395 
1398 
1400 
1403 
1404 
1409 {
1412 
1415 
1418 
1421 
1424 
1426 
1427 
1432 // another process.
1435 {
1437 
1438  struct
1439  {
1441  } Originator;
1442 
1443  struct
1444  {
1446  INTRO_PROCESS Process;
1452  } Victim;
1453 
1465 
1475 
1478 
1481 
1484 
1493 
1500 
1503 
1506 
1510  struct
1511  {
1514 
1517 
1519  DWORD Delta;
1520  } Export;
1522 
1527 {
1536 
1541 {
1543 
1544  struct
1545  {
1548  } Originator;
1549 
1550  struct
1551  {
1553  } Victim;
1554 
1561 
1564 
1573 {
1575 
1576  struct
1577  {
1580  } Originator;
1581 
1582  struct
1583  {
1584  INTRO_MODULE Module;
1585  } Return;
1586 
1587  struct
1588  {
1590  WCHAR Name[ALERT_PATH_MAX_LEN];
1592  union
1593  {
1595  INTRO_PROCESS Process;
1600  };
1601  } Victim;
1602 
1603  union
1604  {
1611  };
1612 
1620 
1621 
1625 typedef struct _EVENT_DTR_VIOLATION
1626 {
1628 
1629  struct
1630  {
1633  } Originator;
1634 
1635  struct
1636  {
1638  } Victim;
1639 
1641 
1643 
1646 
1647 
1651 typedef enum
1652 {
1655 
1658 
1661 
1664 
1667 
1670 
1673 
1676 
1680 
1681 
1686 {
1687  struct
1688  {
1690  } DpiDebugFlag;
1691 
1692  struct
1693  {
1700  BYTE TrapFrameContent[512];
1701  } DpiPivotedStack;
1702 
1703  struct
1704  {
1706  } DpiStolenToken;
1707 
1708  struct
1709  {
1710  struct
1711  {
1713  DWORD Detected : 1;
1721  } HeapPages[0xF];
1722 
1724 
1725  BYTE DetectedPage[0x1000];
1726  BYTE MaxHeapValPageContent[0x1000];
1727  } DpiHeapSpray;
1728 
1729  struct
1730  {
1732  QWORD NewEnabled;
1735  QWORD NewPresent;
1737  } DpiTokenPrivs;
1738 
1739  struct
1740  {
1741  QWORD ShellcodeFlags;
1743  BYTE StartPage[0x1000];
1744  } DpiThreadStart;
1745 
1746  struct
1747  {
1751 
1754 
1757 
1760  } DpiSecDescAcl;
1762 
1763 
1768 {
1770 
1789 
1808 
1814 
1833 
1834 
1839 {
1841 
1843 
1844  struct
1845  {
1848  } Originator;
1849 
1854 
1856  CHAR ReturnRipSectionName[ALERT_MAX_SECTION_NAME_LEN];
1857 
1861 
1866 {
1869 
1874 
1875  union
1876  {
1881 
1885  struct
1886  {
1891  } CmdLineViolation;
1892  };
1894 
1895 
1900 {
1903 
1904 
1910 typedef struct _EVENT_PROCESS_EVENT
1911 {
1916 
1923 
1928 
1931 
1937 
1938 
1945 typedef struct _EVENT_MODULE_EVENT
1946 {
1953 
1958 
1962 
1963 
1967 typedef struct _EVENT_CRASH_EVENT
1968 {
1974 
1977 
1978 
1984 {
1993 
1997 
1998 
2007 {
2010 
2012  union
2013  {
2014  BYTE Ipv6[16];
2016  } LocalAddress;
2017 
2019  union
2020  {
2021  BYTE Ipv6[16];
2022  DWORD Ipv4;
2023  } RemoteAddress;
2024 
2027 
2030 
2031 
2032 //
2033 // =====================================================================================================================
2034 //
2035 
2036 
2040 typedef enum
2041 {
2046 
2047 // Engines structures
2048 
2053 {
2061  INTRO_GUEST_TYPE OsType;
2067 
2072 {
2076 
2081 {
2088 
2089 //
2090 // =====================================================================================================================
2091 //
2092 
2093 
2097 typedef enum
2098 {
2105 
2108 
2109 
2110 // Remediation tool hypercall (x64/x86):
2111 //
2112 // RAX/EAX = 34
2113 // RDI/EBX = 24
2114 // RSI/ECX = 0
2115 // RDX/EDX = AGENT_HCALL_REM_TOOL
2116 // RBX/ESI = pointer to a remediation structure
2117 #define AGENT_HCALL_REM_TOOL 100
2118 
2119 #define AGENT_HCALL_GATHER_TOOL 500
2120 
2121 #define AGENT_HCALL_KILLER_TOOL 600
2122 
2123 #define AGENT_HCALL_INTERNAL 753200
2124 
2125 
2126 //
2127 // =====================================================================================================================
2128 //
2129 
2133 typedef enum
2134 {
2143 
2145 #define REM_MAX_OBJECT_PATH_LEN 512
2146 #define REM_MAX_DETECTION_LEN 128
2148 
2150 #define REM_EVENT_VERSION 0x00010000
2151 #define REM_EVENT_SIZE sizeof(AGENT_REM_EVENT)
2153 
2154 
2159 {
2163  AGENT_REM_EVENT_TYPE EventType;
2165 
2172 typedef struct _AGENT_REM_EVENT
2173 {
2175 
2176  union
2177  {
2179  struct
2180  {
2182  } StartEvent;
2183 
2185  struct
2186  {
2188  } FinishEvent;
2189 
2191  struct
2192  {
2194  } ProgressEvent;
2195 
2197  struct
2198  {
2200  } RebootEvent;
2201 
2203  struct
2204  {
2213  } DetectionEvent;
2214 
2216  struct
2217  {
2219  WCHAR ObjectPath[REM_MAX_OBJECT_PATH_LEN];
2221  WCHAR Detection[REM_MAX_DETECTION_LEN];
2223  DWORD DetectionFlag;
2225  DWORD ActionResult;
2226  } DisinfectionEvent;
2227  };
2229 
2230 
2231 //
2232 // =====================================================================================================================
2233 //
2234 
2238 typedef enum
2239 {
2244 
2246 #define LGT_MAX_DATA_SIZE 4096
2247 
2249 #define LGT_EVENT_VERSION 0x00010000
2250 #define LGT_EVENT_SIZE sizeof(AGENT_LGT_EVENT)
2252 
2260 {
2266 
2272 typedef struct _AGENT_LGT_EVENT
2273 {
2275 
2276  union
2277  {
2282  struct
2283  {
2290  } DataEvent;
2291 
2296  struct
2297  {
2300  } ErrorEvent;
2301  };
2303 
2304 
2305 //
2306 // =====================================================================================================================
2307 //
2308 
2312 typedef enum
2313 {
2316 
2319 
2322 
2325 
2328 
2331 
2334 
2337 
2341 
2345 typedef struct _EVENT_AGENT_EVENT
2346 {
2350 
2356 
2360  union
2361  {
2370  };
2372 
2373 
2377 typedef struct _GUEST_INFO
2378 {
2379  INTRO_GUEST_TYPE Type;
2381  BOOLEAN Guest64;
2383 
2385  QWORD StartupTime;
2389 
2390  QWORD _Reserved[4];
2392 
2396 typedef union _INT_VERSION_INFO
2397 {
2399  struct
2400  {
2405  } VersionInfo;
2406 
2409 
2416 {
2421  struct
2422  {
2425  } ProcessProtection;
2427 
2433 typedef enum
2434 {
2443 
2448 
2449 #pragma pack(pop)
2450 
2451 #endif // _INTRO_TYPES_H_
QWORD ViolationFlags
A combination of Alert flags values describing the alert.
Definition: intro_types.h:1175
Execute access.
Definition: intro_types.h:773
BOOLEAN Valid
Set to True if the information in the structure is valid, False otherwise.
Definition: intro_types.h:1176
INTRO_EXEC_CONTEXT ExecContext
The context of the execution.
Definition: intro_types.h:1131
WORD AclSize
Definition: intro_types.h:810
#define ALERT_MAX_MESSAGE_SIZE
The maximum size of an Introcore message inside EVENT_INTROSPECTION_MESSAGE.
Definition: intro_types.h:698
struct _EVENT_TRANSLATION_VIOLATION EVENT_TRANSLATION_VIOLATION
Event structure for illegal paging-structures modifications.
struct _INTRO_CODEBLOCKS INTRO_CODEBLOCKS
Holds code block patterns information.
DWORD Count
The number of available entries in the CodeBlocks array.
Definition: intro_types.h:1048
uint16_t * PWCHAR
Definition: intro_types.h:63
Hooked page against PG reads.
Definition: intro_types.h:249
BYTE * CmdLine
The command line to be scanned.
Definition: intro_types.h:2085
DWORD Attributes
The attributes of the SID.
Definition: intro_types.h:847
enum _INTRO_ACTION_REASON INTRO_ACTION_REASON
The reason for which an INTRO_ACTION was taken.
INTRO_CODEBLOCKS CodeBlocks
Code blocks extracted for the alert.
Definition: intro_types.h:1263
struct _EVENT_PROCESS_CREATION_VIOLATION EVENT_PROCESS_CREATION_VIOLATION
Event structure for process creation violation events.
No event.
Definition: intro_types.h:2135
Trusted Developer Utilities.
Definition: intro_types.h:1158
Credential Dumping.
Definition: intro_types.h:1143
INTRO_EXEC_DATA ExecutionData
Execution information.
Definition: intro_types.h:2074
Execution through module load.
Definition: intro_types.h:1152
DWORD Version
Event version. Must match REM_EVENT_VERSION.
Definition: intro_types.h:2160
_Bool BOOLEAN
Definition: intro_types.h:58
QWORD EnabledByDefault
The privileges that are enabled by default.
Definition: intro_types.h:800
struct _EVENT_INTEGRITY_VIOLATION * PEVENT_INTEGRITY_VIOLATION
struct _ENG_NOTIFICATION_CODE_EXEC ENG_NOTIFICATION_CODE_EXEC
Execution notification for scan engines.
uint8_t UINT8
Definition: intro_types.h:37
struct _INTRO_MODULE * PINTRO_MODULE
struct _INTRO_TOKEN_PRIVILEGES INTRO_TOKEN_PRIVILEGES
Windows process token privileges.
struct _EVENT_EPT_VIOLATION EVENT_EPT_VIOLATION
Event structure for EPT violations.
Sent for unauthorized process creation alerts. See EVENT_PROCESS_CREATION_VIOLATION.
Definition: intro_types.h:115
BOOLEAN Valid
Set to True if the information in the structure is valid, False otherwise.
Definition: intro_types.h:904
struct _ENG_NOTIFICATION_CMD_LINE * PENG_NOTIFICATION_CMD_LINE
INTRO_TOKEN_PRIVILEGES Privileges
The privileges associated with this token.
Definition: intro_types.h:866
long long INT64
Definition: intro_types.h:45
INTRO_PROCESS Parent
The parent process that provided the command line.
Definition: intro_types.h:2083
Success.
Definition: intro_types.h:2435
uint16_t * PWORD
Definition: intro_types.h:48
QWORD ReturnRip
The RIP from which the suspicious module was called.
Definition: intro_types.h:1853
struct _EVENT_ENGINES_DETECTION_VIOLATION EVENT_ENGINES_DETECTION_VIOLATION
Event structure for detections provided by additional scan engines.
INTRO_NET_AF Family
Address family.
Definition: intro_types.h:2008
INTRO_VIOLATION_HEADER Header
The alert header,.
Definition: intro_types.h:1380
Sent when a CR violation triggers an alert. See EVENT_XCR_VIOLATION.
Definition: intro_types.h:90
INTRO_MODULE ReturnModule
The module to which the current code return to.
Definition: intro_types.h:1388
INTRO_MSR_ACCESS_TYPE
MSR access types.
Definition: intro_types.h:780
DWORD Size
The size of the access.
Definition: intro_types.h:982
The creation of a process was attempted while the parent had its heap sprayed.
Definition: intro_types.h:1666
No event.
Definition: intro_types.h:2240
struct _EVENT_CR_VIOLATION EVENT_CR_VIOLATION
Event structure for CR violation.
INTRO_MODULE Module
The module which was written or read.
Definition: intro_types.h:1451
An internal error occurred (no memory, pages not present, etc.).
Definition: intro_types.h:195
INTRO_PROCESS Victim
The process that was compromised.
Definition: intro_types.h:1788
Event structure for CR violation.
Definition: intro_types.h:1346
Kernel module (ntoskrnl.exe, hal.dll, etc.).
Definition: intro_types.h:238
BOOLEAN Valid
If FALSE, we failed to get the thread and the process token.
Definition: intro_types.h:883
uint8_t BYTE
Definition: intro_types.h:47
struct _INTRO_MODULE INTRO_MODULE
Describes a user-mode or kernel-mode module.
QWORD CurrentStack
The current stack of the parent process.
Definition: intro_types.h:1694
Start event.
Definition: intro_types.h:2136
A Windows token structure as reported by Introcore alerts.
Definition: intro_types.h:861
The process was not protected due to an internal error.
Definition: intro_types.h:2446
_TRANS_VIOLATION_TYPE
Translation violation types.
Definition: intro_types.h:1526
WORD ExceptionMajor
Exceptions major version.
Definition: intro_types.h:1068
QWORD StartAddress
The guest linear address from which the code blocks were extracted.
Definition: intro_types.h:1045
#define REM_MAX_OBJECT_PATH_LEN
The maximum object path size in bytes, including the NULL terminator.
Definition: intro_types.h:2145
BYTE Violation
The type of the access. It must be one of the IG_EPT_HOOK_TYPE values.
Definition: intro_types.h:1265
Disinfection event.
Definition: intro_types.h:2138
struct _INTRO_EXEC_CONTEXT INTRO_EXEC_CONTEXT
Holds the context in which an execution attempt was detected.
_INTRO_ACTION
Event actions.
Definition: intro_types.h:145
#define ALERT_MAX_FUNCTIONS
The maximum number of functions included in an alert structure.
Definition: intro_types.h:702
BOOLEAN Created
True if the process was created, False if it was terminated.
Definition: intro_types.h:1913
struct _EVENT_INTROSPECTION_MESSAGE EVENT_INTROSPECTION_MESSAGE
Event structure for plain data/message passing.
Error event.
Definition: intro_types.h:2241
struct _INTRO_CPUCTX INTRO_CPUCTX
Holds the CPU context for an event.
INTRO_MODULE Module
The module that attempted the write.
Definition: intro_types.h:1387
MITRE_ID MitreID
The Mitre ID that corresponds to this attack.
Definition: intro_types.h:1199
struct _EVENT_MODULE_EVENT EVENT_MODULE_EVENT
Event structure for module loading and unloading.
struct _AGENT_REM_EVENT_HEADER AGENT_REM_EVENT_HEADER
Common header for all remediation tool events.
struct _EVENT_PROCESS_CREATION_VIOLATION * PEVENT_PROCESS_CREATION_VIOLATION
Detection event.
Definition: intro_types.h:2137
Event structure for process creation/termination.
Definition: intro_types.h:1910
INTRO_ENG_NOTIF_TYPE Type
The type of the alert.
Definition: intro_types.h:1868
Fast IO Dispatch (Windows only).
Definition: intro_types.h:236
struct _EVENT_ENGINES_DETECTION_VIOLATION * PEVENT_ENGINES_DETECTION_VIOLATION
INTRO_PROCESS Process
The process that attempted the access.
Definition: intro_types.h:1440
An interrupt object from KPRCB.
Definition: intro_types.h:274
Infinity hook modifications of WMI_LOGGER_CONTEXT.GetCpuClock.
Definition: intro_types.h:264
struct _EVENT_EXCEPTION_EVENT * PEVENT_EXCEPTION_EVENT
BOOLEAN ImpersonationToken
TRUE if this is an impersonation token.
Definition: intro_types.h:864
uint16_t WORD
Definition: intro_types.h:48
This represents an attempt of modifying the context of another thread.
Definition: intro_types.h:1417
Stop event.
Definition: intro_types.h:2141
BYTE SubAuthorityCount
The number of valid entries in the SubAuthority array.
Definition: intro_types.h:823
Holds register state information.
Definition: intro_types.h:1088
QWORD ReturnRip
The RIP at which the code that triggered the alert returns.
Definition: intro_types.h:1282
Event structure for process creation violation events.
Definition: intro_types.h:1767
union _INT_VERSION_INFO * PINT_VERSION_INFO
QWORD Context
The context supplied when the process was protected.
Definition: intro_types.h:914
A critical API function was not found inside the guest kernel.
Definition: intro_types.h:2439
INTRO_WRITE_INFO WriteInfo
The original value of the register and the value that the guest tried to write.
Definition: intro_types.h:1397
INTRO_EXEC_CONTEXT ExecContext
Information about the instruction that triggered the alert.
Definition: intro_types.h:1401
Event structure for integrity violations on monitored structures.
Definition: intro_types.h:1572
Reboot event.
Definition: intro_types.h:2140
enum _MITRE_ID MITRE_ID
Mitre attack techniques.
User-mode non executable zone.
Definition: intro_types.h:247
Sent when a DTR violation triggers an alert. See EVENT_DTR_VIOLATION.
Definition: intro_types.h:98
struct _INTRO_PROCESS INTRO_PROCESS
Describes a guest process.
Process creation violation.
Definition: intro_types.h:262
_INTRO_EVENT_TYPE
Event classes.
Definition: intro_types.h:81
AGENT_EVENT_TYPE Event
The type of the agent.
Definition: intro_types.h:2347
INTRO_PROCESS Process
The process that could not be protected.
Definition: intro_types.h:2423
long long * PINT64
Definition: intro_types.h:45
QWORD BuildNumber
Definition: intro_types.h:2380
union _INTRO_DPI_EXTRA_INFO * PINTRO_DPI_EXTRA_INFO
unsigned char * PUCHAR
Definition: intro_types.h:55
INTRO_MODULE ReturnModule
The module to which the current code return to.
Definition: intro_types.h:1326
QWORD Wow64StackLimit
The known stack limit of the parent process in WoW64 mode.
Definition: intro_types.h:1699
BOOLEAN RebootNeeded
TRUE if a reboot is needed.
Definition: intro_types.h:2199
Data gather event.
Definition: intro_types.h:2242
enum _INTRO_ENG_NOTIFICATION_TYPE INTRO_ENG_NOTIF_TYPE
Scan engine alert types.
QWORD Param3
Third parameter.
Definition: intro_types.h:1972
DWORD Value
A hash of the code represented by this block.
Definition: intro_types.h:1057
QWORD HookStartPhysical
The start of the monitored guest physical memory area for which this alert was generated.
Definition: intro_types.h:1270
Read access.
Definition: intro_types.h:782
struct _INTRO_ACL * PINTRO_ACL
INTRO_CODEBLOCKS CodeBlocks
Code blocks extracted for the alert.
Definition: intro_types.h:1399
uint8_t * PUINT8
Definition: intro_types.h:37
union _INTRO_TOKEN INTRO_TOKEN
Contains privileges and security identifiers information.
Process Injection.
Definition: intro_types.h:1146
Describes an event sent by the log gathering tool.
Definition: intro_types.h:2272
DWORD SidCount
The number of valid entries in the SidsAndAttributes array.
Definition: intro_types.h:869
Sent when a CR violation triggers an alert. See EVENT_CR_VIOLATION.
Definition: intro_types.h:88
INTRO_EPT_ACCESS_TYPE
EPT access types.
Definition: intro_types.h:768
The process was not protected because there is not enough memory available.
Definition: intro_types.h:2445
Event structure for module loading and unloading.
Definition: intro_types.h:1945
A critical structure was not found inside the guest kernel.
Definition: intro_types.h:2441
#define INTRO_SECURITY_DESCRIPTOR_SIZE
The size of the buffers in which we store the security descriptors. The security descriptor is compos...
Definition: intro_types.h:740
User-mode heap.
Definition: intro_types.h:245
QWORD Flags
A combination of ALERT_FLAG_* values describing the alert.
Definition: intro_types.h:1198
struct _EVENT_TRANSLATION_VIOLATION * PEVENT_TRANSLATION_VIOLATION
INTRO_OBJECT_TYPE Type
Definition: intro_types.h:1589
struct _AGENT_LGT_EVENT_HEADER * PAGENT_LGT_EVENT_HEADER
Sent for third party engines detections. See EVENT_ENGINES_DETECTION_VIOLATION.
Definition: intro_types.h:119
AGENT_EVENT_TYPE
The state of an agent.
Definition: intro_types.h:2097
INTRO_PC_VIOLATION_TYPE
Process creation violation flags.
Definition: intro_types.h:1651
Access &#39;struct creds&#39; fields.
Definition: intro_types.h:251
uint32_t UINT32
Definition: intro_types.h:39
Informational event sent when the guest crashes. See EVENT_CRASH_EVENT.
Definition: intro_types.h:109
The action was not allowed because there was no reason to allow it.
Definition: intro_types.h:183
int32_t INT32
Definition: intro_types.h:44
Event structure for agent injection and termination.
Definition: intro_types.h:2345
int8_t * PINT8
Definition: intro_types.h:42
The agent process finished execution.
Definition: intro_types.h:2102
INTRO_MODULE Module
The loaded module.
Definition: intro_types.h:1846
Windows SID attributes.
Definition: intro_types.h:840
INTRO_VIOLATION_HEADER Header
The alert header.
Definition: intro_types.h:1542
Holds code block patterns information.
Definition: intro_types.h:1041
INTRO_PROCESS SecDescStolenFrom
This variable may indicate the victim process (where security descriptor has been stolen from)...
Definition: intro_types.h:1750
enum _INTRO_NET_STATE INTRO_NET_STATE
Connection states.
struct _INTRO_GPRS INTRO_GPRS
Holds register state information.
INTRO_ALERT_EXCEPTION_HEADER ExHeader
The header of the exception information.
Definition: intro_types.h:1205
DWORD Delta
The offset inside the affected function at which the access was made.
Definition: intro_types.h:1505
enum _TRANS_VIOLATION_TYPE TRANS_VIOLATION_TYPE
Translation violation types.
struct _EVENT_CONNECTION_EVENT * PEVENT_CONNECTION_EVENT
struct _ENG_NOTIFICATION_CMD_LINE ENG_NOTIFICATION_CMD_LINE
Command line notification for scan engines.
Process creation violation DPI.
Definition: intro_types.h:265
Plain text message sent from Introcore to the integrator. See EVENT_INTROSPECTION_MESSAGE.
Definition: intro_types.h:100
WORD IntroRevision
Introcore revision.
Definition: intro_types.h:1074
QWORD StackBase
The known stack base of the parent process.
Definition: intro_types.h:1695
The function is already hooked.
Definition: intro_types.h:269
DWORD ScanResult
Scan result.
Definition: intro_types.h:2187
The operating system version is not supported.
Definition: intro_types.h:2437
DWORD ExitStatus
The exit code of the process.
Definition: intro_types.h:1927
INTRO_EXEC_CONTEXT ExecContext
Information about the instruction that triggered the alert.
Definition: intro_types.h:1339
QWORD StartAddress
The address where the thread started executing.
Definition: intro_types.h:1742
struct _INTRO_VERSION_INFO * PINTRO_VERSION_INFO
union _INTRO_DPI_EXTRA_INFO INTRO_DPI_EXTRA_INFO
Structure for keeping the relevant DPI violation information.
struct _EVENT_EXCEPTION_EVENT EVENT_EXCEPTION_EVENT
Event structure for process exceptions.
QWORD VirtualAddress
The Virtual Address whose translation is being modified.
Definition: intro_types.h:1552
BOOLEAN IsRestricted
TRUE if this was obtained from the RestrictedSids list.
Definition: intro_types.h:843
User process.
Definition: intro_types.h:242
BOOLEAN Continuable
True if the exception is considered to be continuable.
Definition: intro_types.h:1992
Event structure for illegal paging-structures modifications.
Definition: intro_types.h:1540
#define ALERT_MAX_FUNCTION_NAME_LEN
The maximum size of a function name inside an alert structure.
Definition: intro_types.h:703
WORD Minor
Minor version.
Definition: intro_types.h:2403
INTRO_PROCESS CurrentProcess
The agent process.
Definition: intro_types.h:2355
QWORD Param1
First parameter.
Definition: intro_types.h:1970
Rootkit.
Definition: intro_types.h:1144
DWORD HeapValCount
The number of heap values in the page. Since the max value can be 1024, 11 bits are needed...
Definition: intro_types.h:1716
struct _INTRO_SEC_DESC_INFO INTRO_SEC_DESC_INFO
Holds information about a security descriptor write attempt.
Integrity protection of SharedUserData region.
Definition: intro_types.h:273
struct _EVENT_XCR_VIOLATION EVENT_XCR_VIOLATION
Event structure for XCR violation.
Holds information about a security descriptor write attempt.
Definition: intro_types.h:1011
Sent for code/data injection alerts. See EVENT_MEMCOPY_VIOLATION.
Definition: intro_types.h:96
struct _EVENT_PROCESS_EVENT * PEVENT_PROCESS_EVENT
BOOLEAN User
Set if it is a KM-UM write due to an injection from user-mode.
Definition: intro_types.h:1227
INTRO_WRITE_INFO WriteInfo
The original value of the register and the value that the guest tried to write.
Definition: intro_types.h:1366
INTRO_VIOLATION_HEADER Header
The alert header.
Definition: intro_types.h:1867
#define ALERT_MAX_CODEBLOCKS
The maximum number of code blocks included in an alert structure.
Definition: intro_types.h:705
BOOLEAN UserMode
True if this is a user mode module, False if it is a kernel mode module.
Definition: intro_types.h:1952
struct _EVENT_MODULE_EVENT * PEVENT_MODULE_EVENT
BYTE IdtEntry
The modified IDT entry. Valid only if Type is introObjectTypeIdt.
Definition: intro_types.h:1599
DWORD ActionResult
Action result.
Definition: intro_types.h:2212
INTRO_ENG_NOTIF_TYPE Type
The type of the notification.
Definition: intro_types.h:2059
INTRO_ACL NewDacl
The new DACL header.
Definition: intro_types.h:1759
PowerShell.
Definition: intro_types.h:1149
QWORD Raw
Raw version information.
Definition: intro_types.h:2407
Windows process access control list (SACL/DACL)
Definition: intro_types.h:807
Process ACL (SACL/DACL) was modified.
Definition: intro_types.h:272
#define INTRO_WIN_SID_MAX_SIZE
The maximum size of a INTRO_WIN_SID structure.
Definition: intro_types.h:834
DWORD ErrorCode
The error code of the event. Success is 0.
Definition: intro_types.h:2349
Event structure for guest OS crashes.
Definition: intro_types.h:1967
Internal kernel structures - they don&#39;t generate alerts.
Definition: intro_types.h:234
The action was ignored and allowed.
Definition: intro_types.h:167
QWORD HookStartVirtual
The start of the monitored guest virtual memory area for which this alert was generated.
Definition: intro_types.h:1268
WORD Build
Build number.
Definition: intro_types.h:2401
#define ALERT_CMDLINE_MAX_LEN
The maximum size of a command line included in an alert structure.
Definition: intro_types.h:706
struct _EVENT_EPT_VIOLATION * PEVENT_EPT_VIOLATION
Write access.
Definition: intro_types.h:783
DWORD Reserved
Reserved for further use.
Definition: intro_types.h:1720
BYTE Pivot
An instruction identifier used internally by the Introcore engine (see CODE_INS). ...
Definition: intro_types.h:1056
int32_t * PINT32
Definition: intro_types.h:44
QWORD StackLimit
The known stack limit of the parent process.
Definition: intro_types.h:1696
INTRO_PROCESS StolenFrom
The process from which the token was stolen.
Definition: intro_types.h:1705
QWORD Rip
The value of the guest RIP at the moment of the alert.
Definition: intro_types.h:1046
ENG_NOTIFICATION_HEADER Header
Notification header.
Definition: intro_types.h:2082
struct _EVENT_MSR_VIOLATION * PEVENT_MSR_VIOLATION
QWORD OsVer
The version of the introspected operating system.
Definition: intro_types.h:1081
#define ALERT_MAX_DETECTION_NAME
The maximum size of a detection name as given by a third party scan engine.
Definition: intro_types.h:709
struct _INTRO_EXEC_CONTEXT * PINTRO_EXEC_CONTEXT
struct _INTRO_READ_INFO * PINTRO_READ_INFO
BOOLEAN RestrictedSIdsBufferTooSmall
If TRUE, not all the entries from the guest&#39;s SidsAndAttributes were returned.
Definition: intro_types.h:881
uint32_t * PDWORD
Definition: intro_types.h:49
ENG_NOTIFICATION_HEADER Header
Notification header.
Definition: intro_types.h:2073
INTRO_VIOLATION_HEADER Header
The alert header.
Definition: intro_types.h:1217
QWORD Base
The guest linear address at which the module is loaded.
Definition: intro_types.h:929
uint16_t * PUINT16
Definition: intro_types.h:38
QWORD ZoneTypes
The types of the accessed memory area.
Definition: intro_types.h:1276
Execution through API call.
Definition: intro_types.h:1151
Available only on Windows.
Definition: intro_types.h:324
Executions in suspicious DLL loads.
Definition: intro_types.h:263
Access Token Manipulation.
Definition: intro_types.h:1153
TRANS_VIOLATION_TYPE ViolationType
Definition: intro_types.h:1562
INTRO_ACTION_REASON Reason
The reason for which Action was taken.
Definition: intro_types.h:1195
struct _INTRO_WRITE_INFO INTRO_WRITE_INFO
Holds information about a memory write attempt.
The agent has been successfully injected.
Definition: intro_types.h:2099
struct _INTRO_ACL INTRO_ACL
Windows process access control list (SACL/DACL)
WORD ExceptionMinor
Exceptions minor version.
Definition: intro_types.h:1069
struct _INTRO_WIN_SID * PINTRO_WIN_SID
INTRO_PROCESS Victim
The process in which the module has loaded.
Definition: intro_types.h:1842
struct _INTRO_WIN_SID INTRO_WIN_SID
A security identifier.
struct _GUEST_INFO GUEST_INFO
Guest information.
Token privileges.
Definition: intro_types.h:266
INTRO_GPRS Registers
Definition: intro_types.h:1119
A kernel export was not found.
Definition: intro_types.h:2440
Command line notification for scan engines.
Definition: intro_types.h:2080
Software Packing.
Definition: intro_types.h:1145
BOOLEAN Kernel
Set if it is a KM-UM write due to an injection from kernel-mode.
Definition: intro_types.h:1228
enum _MEMCOPY_VIOLATION_TYPE MEMCOPY_VIOLATION_TYPE
The type of a memory copy violation.
MEMCOPY_VIOLATION_TYPE ViolationType
The type of the access.
Definition: intro_types.h:1480
struct _EVENT_DTR_VIOLATION EVENT_DTR_VIOLATION
Event structure for GDTR/IDTR descriptor tables modifications.
struct _EVENT_CRASH_EVENT EVENT_CRASH_EVENT
Event structure for guest OS crashes.
A remediation tool event.
Definition: intro_types.h:2172
Write access.
Definition: intro_types.h:772
enum _INTRO_OBJECT_TYPE INTRO_OBJECT_TYPE
The type of the object protected by an EPT hook.
struct _INTRO_EXEC_DATA * PINTRO_EXEC_DATA
DWORD CmdLineSize
The size of the command line buffer.
Definition: intro_types.h:2086
INTRO_VIOLATION_HEADER Header
The alert header.
Definition: intro_types.h:1769
DWORD CamiMinor
CAMI minor version.
Definition: intro_types.h:1078
DWORD ExceptionBuild
Exceptions build number.
Definition: intro_types.h:1070
Event structure for detections provided by additional scan engines.
Definition: intro_types.h:1865
DWORD CamiBuildNumber
CAMI build number.
Definition: intro_types.h:1079
User-mode unpacker.
Definition: intro_types.h:244
INTRO_VIOLATION_HEADER Header
The alert header.
Definition: intro_types.h:1436
INTRO_CODEBLOCKS CodeBlocks
Code blocks extracted for the alert.
Definition: intro_types.h:1337
_INTRO_NET_STATE
Connection states.
Definition: intro_types.h:310
uint32_t * PUINT32
Definition: intro_types.h:39
union _INTRO_ERROR_CONTEXT * PINTRO_ERROR_CONTEXT
QWORD ShellcodeFlags
The shellcode flags given by shemu on the detected page.
Definition: intro_types.h:1723
struct _INTRO_DRVOBJ INTRO_DRVOBJ
Describes a driver object.
DWORD CopySize
The size of the access.
Definition: intro_types.h:1477
The context of an error state.
Definition: intro_types.h:2415
Hal interrupt controller.
Definition: intro_types.h:253
DWORD Size
The size of the modified memory area.
Definition: intro_types.h:1618
#define ALERT_MAX_INJ_DUMP_SIZE
The maximum size of an injection buffer inside an alert structure.
Definition: intro_types.h:704
Windows process token privileges.
Definition: intro_types.h:796
Kernel unpacker.
Definition: intro_types.h:241
struct _INTRO_DRVOBJ * PINTRO_DRVOBJ
The kernel image was not found.
Definition: intro_types.h:2438
The CR3 of a process was changed.
Definition: intro_types.h:1530
INTRO_CPUCTX CpuContext
The context of the CPU that triggered the alert.
Definition: intro_types.h:1196
uint8_t * PBYTE
Definition: intro_types.h:47
#define ALERT_PATH_MAX_LEN
The maximum size of a path inside an alert structure.
Definition: intro_types.h:695
BOOLEAN Code64
True if the code was in 64-bit mode, False if it was in 32-bit mode.
Definition: intro_types.h:1133
struct _INTRO_EXEC_INFO INTRO_EXEC_INFO
Holds information about an execution attempt.
struct _EVENT_DTR_VIOLATION * PEVENT_DTR_VIOLATION
The parent of a process has a stolen access token when it created the child.
Definition: intro_types.h:1663
INTRO_PROCESS Originator
The process that provided the command line.
Definition: intro_types.h:1890
_INTRO_ACTION_REASON
The reason for which an INTRO_ACTION was taken.
Definition: intro_types.h:180
BOOLEAN Valid
Set to True if the information in the structure is valid, False otherwise.
Definition: intro_types.h:1043
INTRO_PROCESS CurrentProcess
The currently active process.
Definition: intro_types.h:1975
QWORD Reason
The bugcheck reason.
Definition: intro_types.h:1969
Event structure for MSR violation.
Definition: intro_types.h:1316
This represents an attempt to queue an APC into the victim process.
Definition: intro_types.h:1420
struct _INTRO_CODEBLOCKS * PINTRO_CODEBLOCKS
struct _EVENT_MODULE_LOAD_VIOLATION * PEVENT_MODULE_LOAD_VIOLATION
INTRO_WIN_TOKEN WindowsToken
A Windows token.
Definition: intro_types.h:892
unsigned long long QWORD
Definition: intro_types.h:53
#define INTRO_SIDS_MAX_COUNT
The maximum SID count included in an alert.
Definition: intro_types.h:856
The common header used by exception information.
Definition: intro_types.h:1172
#define ALERT_MAX_INSTRUX_LEN
Definition: intro_types.h:699
#define ALERT_IMAGE_NAME_LEN
Definition: intro_types.h:696
struct _ENG_NOTIFICATION_HEADER ENG_NOTIFICATION_HEADER
Notification header for scan engines alerts.
INTRO_PROCESS CurrentProcess
The currently active process.
Definition: intro_types.h:1930
INTRO_PROCESS Owner
The process that owns the connection.
Definition: intro_types.h:2028
struct _AGENT_REM_EVENT_HEADER * PAGENT_REM_EVENT_HEADER
Event structure for suspicious module load into processes.
Definition: intro_types.h:1838
BYTE Revision
The revision of the SID.
Definition: intro_types.h:822
INTRO_MODULE Module
The module that modified the monitored region.
Definition: intro_types.h:1578
Informational event sent when the remediation tool is injected or terminated. See EVENT_AGENT_EVENT...
Definition: intro_types.h:104
INTRO_PROCESS Child
The process that is being created or terminated.
Definition: intro_types.h:1933
Contains privileges and security identifiers information.
Definition: intro_types.h:890
struct _EVENT_INTEGRITY_VIOLATION EVENT_INTEGRITY_VIOLATION
Event structure for integrity violations on monitored structures.
Write protection over HalPerformanceCounter.
Definition: intro_types.h:268
INTRO_OBJECT_TYPE Type
The type of the modified register.
Definition: intro_types.h:1637
Sent for suspicious module loads alerts. See EVENT_MODULE_LOAD_VIOLATION.
Definition: intro_types.h:117
The creation of a process was attempted with token privileges altered in a malicious way...
Definition: intro_types.h:1669
struct _EVENT_MSR_VIOLATION EVENT_MSR_VIOLATION
Event structure for MSR violation.
QWORD VirtualAddress
The guest virtual address which was modified.
Definition: intro_types.h:1616
INTRO_VIOLATION_HEADER Header
The alert header.
Definition: intro_types.h:1574
INTRO_WRITE_INFO WriteInfo
The original and new address to which VirtualAddress translates.
Definition: intro_types.h:1560
DWORD DetectionFlag
Detection flags.
Definition: intro_types.h:2210
struct _INTRO_CPUCTX * PINTRO_CPUCTX
struct _INTRO_TOKEN_PRIVILEGES * PINTRO_TOKEN_PRIVILEGES
Execution notification for scan engines.
Definition: intro_types.h:2071
WORD IntroMinor
Introcore minor version.
Definition: intro_types.h:1073
DWORD DataSize
Valid Data size.
Definition: intro_types.h:2287
The parent of a process had a pivoted stack when it created the child.
Definition: intro_types.h:1660
INTRO_CODEBLOCKS CodeBlocks
Code blocks extracted for the alert.
Definition: intro_types.h:1642
This is a classic code injection attempt that simply modifies the memory of the victim process...
Definition: intro_types.h:1411
union _INT_VERSION_INFO INT_VERSION_INFO
Introspection version info.
struct _AGENT_REM_EVENT * PAGENT_REM_EVENT
INTRO_ACL OldDacl
The old DACL header.
Definition: intro_types.h:1756
unsigned char UCHAR
Definition: intro_types.h:55
INTRO_MODULE ReturnModule
The module to which the current code return to.
Definition: intro_types.h:1632
QWORD OldPointerValue
Old value.
Definition: intro_types.h:1752
This represents an attempt to set an instrument callback inside the victim process.
Definition: intro_types.h:1423
struct _INTRO_WRITE_INFO * PINTRO_WRITE_INFO
struct _AGENT_LGT_EVENT * PAGENT_LGT_EVENT
#define LGT_MAX_DATA_SIZE
The maximum size of a log gather tool data chunk.
Definition: intro_types.h:2246
DWORD ScanStatus
Start status.
Definition: intro_types.h:2181
WORD Version
The version of the exception information.
Definition: intro_types.h:1174
Holds information about a memory read attempt.
Definition: intro_types.h:989
Sent for virtual address translation alerts. See EVENT_TRANSLATION_VIOLATION.
Definition: intro_types.h:94
struct _AGENT_REM_EVENT AGENT_REM_EVENT
A remediation tool event.
Memory access violations that cross a process boundary.
Definition: intro_types.h:1434
struct _GUEST_INFO * PGUEST_INFO
DWORD AgentTag
Unique agent tag. See INTRO_DEP_AG_TAGS.
Definition: intro_types.h:2348
QWORD StackLimit
The stack limit for the thread that attempted the execution.
Definition: intro_types.h:1003
A security identifier.
Definition: intro_types.h:820
BOOLEAN DumpValid
True if the contents of RawDump are valid, False if not.
Definition: intro_types.h:1483
QWORD Wow64StackBase
The known stack base of the parent process in WoW64 mode.
Definition: intro_types.h:1698
Dummy agent used to demo the feature.
Definition: intro_types.h:2315
union _INTRO_TOKEN * PINTRO_TOKEN
struct _INTRO_WIN_TOKEN INTRO_WIN_TOKEN
A Windows token structure as reported by Introcore alerts.
Informational event sent when a process is created or terminated by the guest. See EVENT_PROCESS_EVEN...
Definition: intro_types.h:102
struct _ENG_NOTIFICATION_CODE_EXEC * PENG_NOTIFICATION_CODE_EXEC
BOOLEAN Protected
True if the process is protected.
Definition: intro_types.h:1915
struct _EVENT_CR_VIOLATION * PEVENT_CR_VIOLATION
_MITRE_ID
Mitre attack techniques.
Definition: intro_types.h:1141
Holds the context in which an execution attempt was detected.
Definition: intro_types.h:1116
Informational event containing the connections opened by a process. See EVENT_CONNECTION_EVENT.
Definition: intro_types.h:113
DWORD OldSecDescSize
The size of the old security descriptor buffer (valid only if INTRO_OBJECT_TYPE is introObjectTypeSec...
Definition: intro_types.h:1023
DWORD Delta
The same as Delta.
Definition: intro_types.h:1294
Holds information about a memory write attempt.
Definition: intro_types.h:978
INTRO_EXEC_CONTEXT ExecContext
Information about the instruction that triggered the alert.
Definition: intro_types.h:1309
BOOLEAN Loaded
True if the module was loaded, False if it was unloaded.
Definition: intro_types.h:1948
Array of actual code block patterns.
Definition: intro_types.h:1051
Process Hollowing.
Definition: intro_types.h:1150
INTRO_ACL NewSacl
The new SACL header.
Definition: intro_types.h:1758
struct _INTRO_GPRS * PINTRO_GPRS
DWORD Offset
The offset where the detection on the given page was given, if Detection is equal to 1...
Definition: intro_types.h:1718
WORD Major
Major version.
Definition: intro_types.h:2404
INTRO_PROCESS Process
The process in which the execution was attempted.
Definition: intro_types.h:1130
INTRO_ACTION RequestedAction
Action requested by the scan engines.
Definition: intro_types.h:2057
char * PCHAR
Definition: intro_types.h:56
INTRO_PROCESS Victim
The process that received the command line.
Definition: intro_types.h:1888
INTRO_MODULE Module
The module that did the malicious access.
Definition: intro_types.h:1325
struct _INTRO_PROCESS * PINTRO_PROCESS
Command line scan results.
Definition: intro_types.h:135
BOOLEAN Valid
Set to True if the information in the structure is valid, False otherwise.
Definition: intro_types.h:928
DWORD Executable
True if the page is executable in the translation.
Definition: intro_types.h:1719
Event structure for GDTR/IDTR descriptor tables modifications.
Definition: intro_types.h:1625
INTRO_CODEBLOCKS CodeBlocks
Code blocks extracted for the alert.
Definition: intro_types.h:1368
unsigned long long UINT64
Definition: intro_types.h:40
WORD RemotePort
Remote port.
Definition: intro_types.h:2026
Sent when an EPT violation triggers an alert. See EVENT_EPT_VIOLATION.
Definition: intro_types.h:84
INTRO_WRITE_INFO WriteInfo
Definition: intro_types.h:1253
Hooking.
Definition: intro_types.h:1154
DWORD Size
The size of the access.
Definition: intro_types.h:992
DWORD CsType
The type of the code segment. Can be one of the IG_CS_TYPE values.
Definition: intro_types.h:1118
DWORD RipCbIndex
Index in the CodeBlocks array for the pattern extracted for the instruction at Rip.
Definition: intro_types.h:1047
struct _EVENT_XCR_VIOLATION * PEVENT_XCR_VIOLATION
union _INTRO_ERROR_CONTEXT INTRO_ERROR_CONTEXT
The context of an error state.
DWORD IntroBuildNumber
Introcore build number.
Definition: intro_types.h:1075
Exception Table (Linux-only).
Definition: intro_types.h:258
INTRO_VIOLATION_HEADER Header
The alert header.
Definition: intro_types.h:1627
INTRO_GUEST_TYPE
The type of the introspected operating system.
Definition: intro_types.h:2040
INTRO_WRITE_INFO WriteInfo
The original value and the new value of the register.
Definition: intro_types.h:1640
The agent sent a message.
Definition: intro_types.h:2103
unsigned long long * PUINT64
Definition: intro_types.h:40
uint16_t WCHAR
Definition: intro_types.h:63
QWORD ExceptionCode
The code of the exception.
Definition: intro_types.h:1988
Executions inside the SharedUserData region.
Definition: intro_types.h:267
The Virtualization exception agent injected inside the guest.
Definition: intro_types.h:259
struct _INTRO_ALERT_EXCEPTION_HEADER INTRO_ALERT_EXCEPTION_HEADER
The common header used by exception information.
uint32_t DWORD
Definition: intro_types.h:49
int16_t INT16
Definition: intro_types.h:43
Common violation header.
Definition: intro_types.h:1189
_INTRO_NET_AF
Address family.
Definition: intro_types.h:298
struct _EVENT_MODULE_LOAD_VIOLATION EVENT_MODULE_LOAD_VIOLATION
Event structure for suspicious module load into processes.
INTRO_READ_INFO ReadInfo
Definition: intro_types.h:1257
INTRO_PROCESS CurrentProcess
The currently active process.
Definition: intro_types.h:1957
BOOLEAN Valid
Set to True if the information in the structure is valid, False otherwise.
Definition: intro_types.h:965
User-mode library.
Definition: intro_types.h:248
INTRO_GUEST_TYPE OsType
The guest operating system type.
Definition: intro_types.h:2061
DWORD Progress
Progress.
Definition: intro_types.h:2193
QWORD Enabled
The currently enabled privileges.
Definition: intro_types.h:799
INTRO_VIOLATION_HEADER Header
The alert header.
Definition: intro_types.h:1348
The exception file was not loaded (there are no exceptions).
Definition: intro_types.h:193
INTRO_PC_VIOLATION_TYPE PcType
The type of process creation violation.
Definition: intro_types.h:1813
enum _INTRO_ACTION INTRO_ACTION
Event actions.
struct _INTRO_VERSION_INFO INTRO_VERSION_INFO
Holds version information for Introcore and the currently loaded exceptions and CAMI files...
struct _INTRO_EXEC_INFO * PINTRO_EXEC_INFO
INTRO_WRITE_INFO WriteInfo
Definition: intro_types.h:1607
QWORD Wow64CurrentStack
The current stack of the parent process in WoW64 mode.
Definition: intro_types.h:1697
#define ALERT_MAX_SECTION_NAME_LEN
The maximum size of an executable section name inside an alert structure.
Definition: intro_types.h:701
INTRO_PROCESS CurrentProcess
The process in which the exception was triggered.
Definition: intro_types.h:1995
INTRO_MODULE Module
The module for which this event was triggered.
Definition: intro_types.h:1960
The action was allowed, but it has the BETA flag (Introcore is in log-only mode). ...
Definition: intro_types.h:185
The remediation tool agent.
Definition: intro_types.h:2318
WORD LocalPort
Local port.
Definition: intro_types.h:2025
DWORD Offset
The offset inside the page where the violation took place.
Definition: intro_types.h:1274
INTRO_ACL OldSacl
The old SACL header.
Definition: intro_types.h:1755
Common header for all remediation tool events.
Definition: intro_types.h:2158
struct _INTRO_EXEC_DATA INTRO_EXEC_DATA
Holds the data related to an execution attempt.
INTRO_MODULE ReturnModule
The module which called the entry function of the suspicious module.
Definition: intro_types.h:1847
Event structure for process exceptions.
Definition: intro_types.h:1983
QWORD Cr3
The value of the guest CR3 register when the event was generated.
Definition: intro_types.h:970
BYTE IdtEntry
The IDT entry that was modified. Valid only if Type is introObjectTypeIdt.
Definition: intro_types.h:1246
struct _INTRO_SID_ATTRIBUTES * PINTRO_SID_ATTRIBUTES
struct _INTRO_READ_INFO INTRO_READ_INFO
Holds information about a memory read attempt.
Self mapping index in PDBR.
Definition: intro_types.h:254
The parent of a process tried to obtain debug privileges over the child.
Definition: intro_types.h:1657
struct _EVENT_MEMCOPY_VIOLATION EVENT_MEMCOPY_VIOLATION
Memory access violations that cross a process boundary.
INTRO_MODULE Module
The module that modified the translation.
Definition: intro_types.h:1546
DWORD FunctionNameHash
The hash of the FunctionName. It is the same as Export.Hash[0].
Definition: intro_types.h:1502
#define ALERT_EXCEPTION_SIZE
Definition: intro_types.h:707
struct _EVENT_CONNECTION_EVENT EVENT_CONNECTION_EVENT
Event structure for connections.
BOOLEAN Wow64
A boolean which is TRUE if the process is WoW64.
Definition: intro_types.h:915
The parent of a process has an altered security descriptor pointer.
Definition: intro_types.h:1675
struct _EVENT_AGENT_EVENT EVENT_AGENT_EVENT
Event structure for agent injection and termination.
DWORD CamiMajor
CAMI major version.
Definition: intro_types.h:1077
INTRO_EXEC_INFO StackInfo
Stack information.
Definition: intro_types.h:1132
AGENT_LGT_EVENT_HEADER Header
Event header.
Definition: intro_types.h:2274
User-mode stack.
Definition: intro_types.h:246
struct _AGENT_LGT_EVENT_HEADER AGENT_LGT_EVENT_HEADER
Common header for all log gather tool events.
Execution attempt result.
Definition: intro_types.h:131
INTRO_PROCESS Process
The process that did the malicious access.
Definition: intro_types.h:1223
Dummy SAL definitions for build environments were SAL is not available.
The slack space is not 0-filled/NOP-filled.
Definition: intro_types.h:270
DWORD Count
The number of currently protected processes.
Definition: intro_types.h:2424
struct _EVENT_AGENT_EVENT * PEVENT_AGENT_EVENT
QWORD Owner
The base of the kernel module that owns this driver object.
Definition: intro_types.h:952
DWORD Size
Event size. Must match REM_EVENT_SIZE.
Definition: intro_types.h:2161
INTRO_ERROR_STATE
Error states.
Definition: intro_types.h:2433
BOOLEAN Valid
Set to True if the information in the structure is valid, False otherwise.
Definition: intro_types.h:948
SSDT (Windows only).
Definition: intro_types.h:235
Hal dispatch table.
Definition: intro_types.h:252
INTRO_PROCESS Originator
The process that attempted the violation.
Definition: intro_types.h:1807
Exploitation for Privilege Escalation.
Definition: intro_types.h:1148
Guest information.
Definition: intro_types.h:2377
Introspection version info.
Definition: intro_types.h:2396
QWORD Param4
Fourth parameter.
Definition: intro_types.h:1973
Kernel Modules and Extensions.
Definition: intro_types.h:1160
The page table filtering agent.
Definition: intro_types.h:2336
DWORD EventType
Event type.
Definition: intro_types.h:2264
struct _INTRO_VIOLATION_HEADER INTRO_VIOLATION_HEADER
Common violation header.
WORD IntroMajor
Introcore major version.
Definition: intro_types.h:1072
Available only on Linux.
Definition: intro_types.h:323
Progress report event.
Definition: intro_types.h:2139
INTRO_MODULE ReturnModule
The module to which the current code return to.
Definition: intro_types.h:1547
WORD Offset
The page offset from which the pattern was extracted. The page is considered to be StartAddress...
Definition: intro_types.h:1055
#define REM_MAX_DETECTION_LEN
The maximum detection name size in bytes, including the NULL terminator.
Definition: intro_types.h:2147
struct _ENG_NOTIFICATION_HEADER * PENG_NOTIFICATION_HEADER
The thread which created the process has started execution on some suspicious code.
Definition: intro_types.h:1672
AGENT_REM_EVENT_HEADER Header
Event header.
Definition: intro_types.h:2174
Virtual SYSCALL (user-mode, Linux-only).
Definition: intro_types.h:257
QWORD Rsp
The value of the guest RSP register at the moment of execution.
Definition: intro_types.h:1001
INTRO_PROCESS Debugger
The debugger of the current process. May or may not be the parent.
Definition: intro_types.h:1689
A translation inside the #VE agent was changed.
Definition: intro_types.h:1534
INTRO_ACTION Action
The action that was taken as the result of this alert.
Definition: intro_types.h:1194
The agent or the process stub reports an error.
Definition: intro_types.h:2104
Holds the data related to an execution attempt.
Definition: intro_types.h:1128
BOOLEAN SidsBufferTooSmall
If TRUE, not all the entries from the guest&#39;s SidsAndAttributes were returned.
Definition: intro_types.h:879
int8_t INT8
Definition: intro_types.h:42
INTRO_DPI_EXTRA_INFO DpiExtraInfo
A structure which contains extra information regarding the DPI violation that was detected...
Definition: intro_types.h:1831
WORD AceCount
Definition: intro_types.h:811
QWORD BaseAddress
The guest virtual address at which the monitored integrity region starts.
Definition: intro_types.h:1614
AGENT_LGT_EVENT_TYPE
Log gather tool events.
Definition: intro_types.h:2238
DWORD Reserved1
Reserved for padding/future use.
Definition: intro_types.h:2263
QWORD Rip
The RIP at which the exception was triggered.
Definition: intro_types.h:1990
uint16_t UINT16
Definition: intro_types.h:38
Holds information about an execution attempt.
Definition: intro_types.h:999
struct _INTRO_VIOLATION_HEADER * PINTRO_VIOLATION_HEADER
INTRO_DEP_AG_TAGS
Deployable agents tags.
Definition: intro_types.h:2312
struct _EVENT_MEMCOPY_VIOLATION * PEVENT_MEMCOPY_VIOLATION
The action was blocked because no exception signature matched.
Definition: intro_types.h:187
QWORD VirtualPage
The guest virtual page in which the access was made.
Definition: intro_types.h:1272
DWORD Size
Event size. Should match LGT_EVENT_SIZE/.
Definition: intro_types.h:2262
Extra Window Memory Injection.
Definition: intro_types.h:1155
int16_t * PINT16
Definition: intro_types.h:43
Virtual dynamic shared object (user-mode, Linux-only).
Definition: intro_types.h:256
The virtualization exception driver.
Definition: intro_types.h:2333
QWORD RegFlags
Definition: intro_types.h:1107
_INTRO_ENG_NOTIFICATION_TYPE
Scan engine alert types.
Definition: intro_types.h:126
INTRO_PROCESS Child
The child process that received the command line.
Definition: intro_types.h:2084
INTRO_PROCESS Process
The module to which the current code return to.
Definition: intro_types.h:1579
The visibility tool used to extract information from inside the guest.
Definition: intro_types.h:2321
QWORD StackBase
The stack base for the thread that attempted the execution.
Definition: intro_types.h:1002
QWORD OldAddress
The old security descriptor address.
Definition: intro_types.h:1013
INTRO_DRVOBJ DriverObject
The driver object that was modified. Valid only if Type is introObjectTypeDriverObject.
Definition: intro_types.h:1243
struct _EVENT_PROCESS_EVENT EVENT_PROCESS_EVENT
Event structure for process creation/termination.
AGENT_REM_EVENT_TYPE
Remediation tool events types.
Definition: intro_types.h:2133
INTRO_PROCESS CurrentProcess
The current process.
Definition: intro_types.h:1197
Describes a driver object.
Definition: intro_types.h:945
INTRO_VIOLATION_HEADER Header
The alert header.
Definition: intro_types.h:1318
BOOLEAN Crashed
True if the process crashed.
Definition: intro_types.h:1921
The action was blocked because there was no exception for it.
Definition: intro_types.h:189
DWORD Cr
The number of the modified control register.
Definition: intro_types.h:1361
No access.
Definition: intro_types.h:770
enum _INTRO_EVENT_TYPE INTRO_EVENT_TYPE
Event classes.
Sent for integrity violation alerts. See EVENT_INTEGRITY_VIOLATION.
Definition: intro_types.h:92
INTRO_EXEC_CONTEXT ExecContext
Information about the instruction that triggered the alert.
Definition: intro_types.h:1370
_INTRO_OBJECT_TYPE
The type of the object protected by an EPT hook.
Definition: intro_types.h:231
INTRO_MODULE Module
The module that did the malicious access.
Definition: intro_types.h:1221
Event structure for connections.
Definition: intro_types.h:2006
Scripting.
Definition: intro_types.h:1147
The agent process started execution.
Definition: intro_types.h:2101
Holds the CPU context for an event.
Definition: intro_types.h:962
INTRO_MODULE Module
The module that attempted the write.
Definition: intro_types.h:1355
After a page was swapped-in, its hash no longer matches the one it had when it was swapped-out...
Definition: intro_types.h:1529
#define ALERT_MAX_ENGINES_VERSION
The maximum size of the third party scan engines version.
Definition: intro_types.h:710
INTRO_EXEC_CONTEXT ExecContext
Information about the instruction that triggered the alert.
Definition: intro_types.h:1644
struct _INTRO_SID_ATTRIBUTES INTRO_SID_ATTRIBUTES
Windows SID attributes.
INTRO_EXEC_INFO ExecInfo
Execution information. Valid only if Violation is IG_EPT_HOOK_EXECUTE.
Definition: intro_types.h:1260
Event structure for EPT violations.
Definition: intro_types.h:1215
DWORD RestrictedSidCount
The number of valid entries in the RestrictedSids array.
Definition: intro_types.h:874
INTRO_PROCESS Parent
The parent of the process.
Definition: intro_types.h:1935
Informational event sent when a hardware exception is triggered by a guest process. See EVENT_EXCEPTION_EVENT.
Definition: intro_types.h:111
DWORD Msr
The ID of the MSR as defined by the Intel documentation.
Definition: intro_types.h:1331
QWORD SourceVirtualAddress
The virtual address of the source buffer.
Definition: intro_types.h:1464
enum _INTRO_NET_AF INTRO_NET_AF
Address family.
Sent when a MSR violation triggers an alert.See EVENT_MSR_VIOLATION.
Definition: intro_types.h:86
struct _INTRO_SEC_DESC_INFO * PINTRO_SEC_DESC_INFO
struct _INTRO_WIN_TOKEN * PINTRO_WIN_TOKEN
DWORD Xcr
The number of the modified extended control register.
Definition: intro_types.h:1393
QWORD NewPointerValue
New value.
Definition: intro_types.h:1753
The parent of a process has an altered access control entry (inside SACL or DACL).
Definition: intro_types.h:1678
INTRO_MODULE Module
The module that modified the DTR.
Definition: intro_types.h:1631
INTRO_WIN_SID Sid
The SID structure.
Definition: intro_types.h:850
QWORD DestinationVirtualAddress
The virtual address of the destination buffer.
Definition: intro_types.h:1474
Exploitation for Client Execution.
Definition: intro_types.h:1157
_MEMCOPY_VIOLATION_TYPE
The type of a memory copy violation.
Definition: intro_types.h:1408
The process killer agent.
Definition: intro_types.h:2330
DWORD Length
The length of the instruction.
Definition: intro_types.h:1004
The agent has been initialized.
Definition: intro_types.h:2100
Process Doppelganging.
Definition: intro_types.h:1156
char CHAR
Definition: intro_types.h:56
DWORD FunctionNameHash
The hash of the modified function name. This is the same as Export.Hash[0].
Definition: intro_types.h:1291
DWORD OsVersion
Definition: intro_types.h:2384
unsigned long long * PQWORD
Definition: intro_types.h:53
Invalid.
Definition: intro_types.h:2106
The version of the provided CAMI file is not supported.
Definition: intro_types.h:2442
DWORD Pid
The PID of the process.
Definition: intro_types.h:905
Structure for keeping the relevant DPI violation information.
Definition: intro_types.h:1685
Describes a user-mode or kernel-mode module.
Definition: intro_types.h:925
This represents a read done from another process.
Definition: intro_types.h:1414
Exploitation of Remote Services.
Definition: intro_types.h:1159
Internal user-mode structure.
Definition: intro_types.h:243
Describes a guest process.
Definition: intro_types.h:901
struct _EVENT_CRASH_EVENT * PEVENT_CRASH_EVENT
Process security descriptor pointer.
Definition: intro_types.h:271
Access Token pointer.
Definition: intro_types.h:250
AGENT_LGT_EVENT LogGatherEvent
Log gather tool event.
Definition: intro_types.h:2369
DWORD ErrorCode
The error code reported by the tool.
Definition: intro_types.h:2299
QWORD Present
The present privileges.
Definition: intro_types.h:798
QWORD Param2
Second parameter.
Definition: intro_types.h:1971
WORD Revision
Revision.
Definition: intro_types.h:2402
The Linux version of the remediation tool.
Definition: intro_types.h:2324
DWORD NewSecDescSize
The size of the new security descriptor buffer (valid only if INTRO_OBJECT_TYPE is introObjectTypeSec...
Definition: intro_types.h:1030
AGENT_REM_EVENT RemediationEvent
Remediation tool event.
Definition: intro_types.h:2365
AGENT_REM_EVENT_TYPE EventType
Event type.
Definition: intro_types.h:2163
QWORD Address
The guest linear address at which the driver object structure was allocated.
Definition: intro_types.h:950
Process creation violation without any DPI heuristic being triggered.
Definition: intro_types.h:1654
The SYSCALL/SYSENTER code pattern was not recognized.
Definition: intro_types.h:2436
Read access.
Definition: intro_types.h:771
Notification header for scan engines alerts.
Definition: intro_types.h:2052
DWORD Ipv4
Valid only if Family is introNetAfIpv4.
Definition: intro_types.h:2015
INTRO_EXEC_DATA ExecViolation
Execution context.
Definition: intro_types.h:1880
INTRO_MODULE ReturnModule
The module to which the current code return to.
Definition: intro_types.h:1356
DWORD Reserved
Reserved for padding/future use.
Definition: intro_types.h:2162
INTRO_WRITE_INFO WriteInfo
The original value of the MSR and the value that the guest tried to write.
Definition: intro_types.h:1335
Common header for all log gather tool events.
Definition: intro_types.h:2259
struct _EVENT_INTROSPECTION_MESSAGE * PEVENT_INTROSPECTION_MESSAGE
Holds version information for Introcore and the currently loaded exceptions and CAMI files...
Definition: intro_types.h:1066
INTRO_VIOLATION_HEADER Header
The alert header.
Definition: intro_types.h:1840
INTRO_NET_STATE State
The state of the connection.
Definition: intro_types.h:2009
BOOLEAN Protected
True if the module is protected.
Definition: intro_types.h:1950
INTRO_GUEST_TYPE Type
Type.
Definition: intro_types.h:2379
BYTE AclRevision
Definition: intro_types.h:809
DWORD Version
Event version. Should match LGT_EVENT_VERSION.
Definition: intro_types.h:2261
INTRO_SEC_DESC_INFO SecDescWriteInfo
Definition: intro_types.h:1610
Event structure for XCR violation.
Definition: intro_types.h:1378
INTRO_MODULE ReturnModule
The module to which the current code returns to.
Definition: intro_types.h:1222
A translation was modified without us intercepting it. This points to a bug in Introcore.
Definition: intro_types.h:1533
size_t SIZE_T
Definition: intro_types.h:60
The log gathering agent.
Definition: intro_types.h:2327
INTRO_OBJECT_TYPE Type
The type of the accessed memory area.
Definition: intro_types.h:1237
struct _AGENT_LGT_EVENT AGENT_LGT_EVENT
Describes an event sent by the log gathering tool.
INTRO_DRVOBJ DriverObject
The modified driver object. Valid only if Type is introObjectTypeDriverObject.
Definition: intro_types.h:1597
Event structure for plain data/message passing.
Definition: intro_types.h:1899
QWORD PhysicalPage
The guest physical page in which the access was made.
Definition: intro_types.h:1273
The exception (and signature, where&#39;s the case) matched, but the extra checks failed.
Definition: intro_types.h:191