def test_thread_v3_type_group_1_type4(self): payload = b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0&s\x03\xf8\xff\xff\x00`&s\x03\xf8\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xd0O|m\x03\xf8\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00' mof = build_mof(EventTraceGroup.EVENT_TRACE_GROUP_THREAD, 3, 4, payload) self.assertIsInstance(mof, Thread_TypeGroup1), self.assertEqual(mof.get_process_id(), 0) self.assertEqual(mof.get_thread_id(), 0)
def test_image_load_type2(self): """ Test Parsing image load event when type is 2 """ payload = b'\x00\x00\xdc\x81\xfe\x7f\x00\x00\x00`\x02\x00\x00\x00\x00\x00\xcc\x01\x00\x00c\xf7\x02\x00\x00\x00\x00\x00\x0c\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\\\x00D\x00e\x00v\x00i\x00c\x00e\x00\\\x00H\x00a\x00r\x00d\x00d\x00i\x00s\x00k\x00V\x00o\x00l\x00u\x00m\x00e\x004\x00\\\x00W\x00i\x00n\x00d\x00o\x00w\x00s\x00\\\x00S\x00y\x00s\x00t\x00e\x00m\x003\x002\x00\\\x00g\x00d\x00i\x003\x002\x00.\x00d\x00l\x00l\x00\x00\x00' mof = build_mof(EventTraceGroup.EVENT_TRACE_GROUP_IMAGE, 3, 2, payload) self.assertIsInstance(mof, ImageLoad)
def get_mof(self) -> Mof: """ This function try to build mof structure for SystemInfo container MOF structure is a common way to send infos from kernel :return: Mof structure """ return build_mof(self.source.system_header.header.group, self.source.system_header.marker.version, self.source.system_header.header.type, self.source.mof_data)
def test_thread_v3_type_group_1_type2(self): payload = b'\x04\x00\x00\x00\\\x01\x00\x00\x00\x10S\x17\x8b\x9e\xff\xff\x00\xa0R\x17\x8b\x9e\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00\x00\x00\x00\x80\x9a\xb8q\x03\xf8\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x05\x02\x00\x00\x00' obj = build_mof(EventTraceGroup.EVENT_TRACE_GROUP_THREAD, 3, 2, payload) self.assertIsInstance(obj, Thread_TypeGroup1), self.assertEqual(obj.get_process_id(), 4) self.assertEqual(obj.get_thread_id(), 348)
def test_thread_v3_type_group_1_type1(self): payload = b'\x04\x00\x00\x00\x18\x01\x00\x00\x00\x90K\x17\x8b\x9e\xff\xff\x00 K\x17\x8b\x9e\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00\x00\x00\x00\x00\xcfkm\x03\xf8\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x05\x02\x00\x00\x00' obj = build_mof(EventTraceGroup.EVENT_TRACE_GROUP_THREAD, 3, 1, payload) self.assertIsInstance(obj, Thread_TypeGroup1), self.assertEqual(obj.get_process_id(), 4) self.assertEqual(obj.get_thread_id(), 280)
def get_mof(self) -> Mof: """ This function try to build mof structure for PerfInfo MOF structure is a common way to send infos from kernel :return: """ return build_mof(self.source.header.group, self.source.marker.version, self.source.header.type, self.source.mof_data)
def test_image_load_type4(self): """ Test Parsing image load event when type is 4 """ payload = b'\x00\x00`m\x03\xf8\xff\xff\x00`\xab\x00\x00\x00\x00\x00\x00\x00\x00\x00\x91\x05\x98\x00\x90\xa7iB\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\\\x00S\x00y\x00s\x00t\x00e\x00m\x00R\x00o\x00o\x00t\x00\\\x00s\x00y\x00s\x00t\x00e\x00m\x003\x002\x00\\\x00n\x00t\x00o\x00s\x00k\x00r\x00n\x00l\x00.\x00e\x00x\x00e\x00\x00\x00' mof = build_mof(EventTraceGroup.EVENT_TRACE_GROUP_IMAGE, 3, 4, payload) self.assertIsInstance(mof, ImageLoad) self.assertEqual(mof.get_image_filename(), '\\SystemRoot\\system32\\ntoskrnl.exe')
def test_process_v4_type_group1_type2(self): payload = b'\x80 \xa6\x98\x0b\xa5\xff\xff\xdc\x01\x00\x00\xcc\x01\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00\x00\xe0r\x95\x04\x00\x00\x00\x00\x00\x00\x00\xd0x\x91\x10\x8b\x8d\xff\xff\x00\x00\x00\x00F\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x05\x12\x00\x00\x00autochk.exe\x00\\\x00?\x00?\x00\\\x00C\x00:\x00\\\x00W\x00i\x00n\x00d\x00o\x00w\x00s\x00\\\x00s\x00y\x00s\x00t\x00e\x00m\x003\x002\x00\\\x00a\x00u\x00t\x00o\x00c\x00h\x00k\x00.\x00e\x00x\x00e\x00 \x00*\x00\x00\x00\x00\x00\x00\x00' mof = build_mof(EventTraceGroup.EVENT_TRACE_GROUP_PROCESS, 4, 2, payload) self.assertIsInstance(mof, Process_V4_TypeGroup1) self.assertEqual(mof.get_process_id(), 476) self.assertEqual(mof.get_command_line(), '\\??\\C:\\Windows\\system32\\autochk.exe *') self.assertEqual(mof.get_image_file_name(), 'autochk.exe')
def test_process_v4_type_group1_type1(self): payload = b'\x800\xa9\x98\x0b\xa5\xff\xff\x1c\x02\x00\x00\xcc\x01\x00\x00\x00\x00\x00\x00\x03\x01\x00\x00\x00po\n\x04\x00\x00\x00\x04\x00\x00\x00\xd0\x19\xeb\x0f\x8b\x8d\xff\xff\x00\x00\x00\x00\x03\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x05\x12\x00\x00\x00smss.exe\x00\\\x00S\x00y\x00s\x00t\x00e\x00m\x00R\x00o\x00o\x00t\x00\\\x00S\x00y\x00s\x00t\x00e\x00m\x003\x002\x00\\\x00s\x00m\x00s\x00s\x00.\x00e\x00x\x00e\x00 \x000\x000\x000\x000\x000\x000\x00e\x004\x00 \x000\x000\x000\x000\x000\x000\x008\x004\x00 \x00\x00\x00\x00\x00\x00\x00' mof = build_mof(EventTraceGroup.EVENT_TRACE_GROUP_PROCESS, 4, 1, payload) self.assertIsInstance(mof, Process_V4_TypeGroup1) self.assertEqual(mof.get_process_id(), 540) self.assertEqual( mof.get_command_line(), '\\SystemRoot\\System32\\smss.exe 000000e4 00000084 ') self.assertEqual(mof.get_image_file_name(), 'smss.exe')
def test_image_load(self): payload = b'\x00\x00?\x87\x03\xf8\xff\xff\x00\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9]\x01\x00\xef\xa4\xef]\x04\x01\x00\x00\x00\x00?\x87\x03\xf8\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\\\x00D\x00e\x00v\x00i\x00c\x00e\x00\\\x00H\x00a\x00r\x00d\x00d\x00i\x00s\x00k\x00V\x00o\x00l\x00u\x00m\x00e\x004\x00\\\x00W\x00i\x00n\x00d\x00o\x00w\x00s\x00\\\x00S\x00y\x00s\x00t\x00e\x00m\x003\x002\x00\\\x00d\x00r\x00i\x00v\x00e\x00r\x00s\x00\\\x00w\x00i\x00n\x00t\x00u\x00n\x00.\x00s\x00y\x00s\x00\x00\x00' mof = build_mof(EventTraceGroup.EVENT_TRACE_GROUP_PROCESS, 3, 10, payload) self.assertIsInstance(mof, ImageLoad) self.assertEqual(mof.get_process_id(), 0) self.assertEqual( mof.get_image_filename(), "\\Device\\HarddiskVolume4\\Windows\\System32\\drivers\\wintun.sys" )
def test_process_terminate(self): payload = b'\xdc\x01\x00\x00' mof = build_mof(EventTraceGroup.EVENT_TRACE_GROUP_PROCESS, 2, 11, payload) self.assertIsInstance(mof, Process_Terminate_TypeGroup1) self.assertEqual(mof.get_process_id(), 476)
def test_header_extension_typegroup_type32(self): payload = b'\x07\x03\x00\x00\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00F\x00\x00\x00' mof = build_mof(EventTraceGroup.EVENT_TRACE_GROUP_HEADER, 2, 32, payload) self.assertIsInstance(mof, Header_Extension_TypeGroup)