@@ -109,21 +109,6 @@ func TestStringFields(t *testing.T) {
109109}
110110
111111func TestProcFilter (t * testing.T ) {
112- pars := event.Params {
113- params .Cmdline : {Name : params .Cmdline , Type : params .UnicodeString , Value : "C:\\ Windows\\ system32\\ svchost-fake.exe -k RPCSS" },
114- params .ProcessName : {Name : params .ProcessName , Type : params .AnsiString , Value : "svchost-fake.exe" },
115- params .ProcessID : {Name : params .ProcessID , Type : params .PID , Value : uint32 (1234 )},
116- params .ProcessParentID : {Name : params .ProcessParentID , Type : params .PID , Value : uint32 (345 )},
117- params .UserSID : {Name : params .UserSID , Type : params .WbemSID , Value : []byte {224 , 8 , 226 , 31 , 15 , 167 , 255 , 255 , 0 , 0 , 0 , 0 , 15 , 167 , 255 , 255 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 5 , 18 , 0 , 0 , 0 }},
118- params .Username : {Name : params .Username , Type : params .UnicodeString , Value : "loki" },
119- params .Domain : {Name : params .Domain , Type : params .UnicodeString , Value : "TITAN" },
120- params .ProcessFlags : {Name : params .ProcessFlags , Type : params .Flags , Value : uint32 (0x000000E )},
121- }
122-
123- pars1 := event.Params {
124- params .DesiredAccess : {Name : params .DesiredAccess , Type : params .Flags , Value : uint32 (0x1400 ), Flags : event .PsAccessRightFlags },
125- }
126-
127112 ps1 := & pstypes.PS {
128113 Name : "wininit.exe" ,
129114 Username : "SYSTEM" ,
@@ -138,17 +123,32 @@ func TestProcFilter(t *testing.T) {
138123 Name : "System" ,
139124 },
140125 },
141- IsWOW64 : false ,
142- IsProtected : true ,
143- IsPackaged : false ,
126+ IsWOW64 : false ,
127+ IsProtected : true ,
128+ IsPackaged : false ,
129+ TokenIntegrityLevel : "SYSTEM" ,
130+ IsTokenElevated : false ,
131+ TokenElevationType : "DEFAULT" ,
144132 }
145133
146134 evt := & event.Event {
147135 Type : event .CreateProcess ,
148136 Category : event .Process ,
149- Params : pars ,
150- Name : "CreateProcess" ,
151- PID : 1023 ,
137+ Params : event.Params {
138+ params .Cmdline : {Name : params .Cmdline , Type : params .UnicodeString , Value : "C:\\ Windows\\ system32\\ svchost-fake.exe -k RPCSS" },
139+ params .ProcessName : {Name : params .ProcessName , Type : params .AnsiString , Value : "svchost-fake.exe" },
140+ params .ProcessID : {Name : params .ProcessID , Type : params .PID , Value : uint32 (1234 )},
141+ params .ProcessParentID : {Name : params .ProcessParentID , Type : params .PID , Value : uint32 (345 )},
142+ params .UserSID : {Name : params .UserSID , Type : params .WbemSID , Value : []byte {224 , 8 , 226 , 31 , 15 , 167 , 255 , 255 , 0 , 0 , 0 , 0 , 15 , 167 , 255 , 255 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 5 , 18 , 0 , 0 , 0 }},
143+ params .Username : {Name : params .Username , Type : params .UnicodeString , Value : "loki" },
144+ params .Domain : {Name : params .Domain , Type : params .UnicodeString , Value : "TITAN" },
145+ params .ProcessFlags : {Name : params .ProcessFlags , Type : params .Flags , Value : uint32 (0x000000E )},
146+ params .ProcessTokenIntegrityLevel : {Name : params .ProcessTokenIntegrityLevel , Type : params .AnsiString , Value : "SYSTEM" },
147+ params .ProcessTokenIsElevated : {Name : params .ProcessTokenIsElevated , Type : params .Bool , Value : true },
148+ params .ProcessTokenElevationType : {Name : params .ProcessTokenElevationType , Type : params .AnsiString , Value : "FULL" },
149+ },
150+ Name : "CreateProcess" ,
151+ PID : 1023 ,
152152 PS : & pstypes.PS {
153153 Name : "svchost.exe" ,
154154 Cmdline : "C:\\ Windows\\ System32\\ svchost.exe" ,
@@ -171,19 +171,24 @@ func TestProcFilter(t *testing.T) {
171171 {Size : 34545 , BaseAddress : va .Address (144229524944769 ), Protection : 4653056 , File : "C:\\ Windows\\ System32\\ ucrtbase.dll" , Type : "IMAGE" }, //EXECUTE_READWRITE|READONLY
172172 {Size : 4096 , BaseAddress : va .Address (145229445447666 ), Protection : 12845056 , Type : "PAGEFILE" }, // READWRITE 12845056
173173 },
174- IsProtected : false ,
175- IsPackaged : true ,
176- IsWOW64 : false ,
174+ IsProtected : false ,
175+ IsPackaged : true ,
176+ IsWOW64 : false ,
177+ TokenIntegrityLevel : "SYSTEM" ,
178+ IsTokenElevated : false ,
179+ TokenElevationType : "DEFAULT" ,
177180 },
178181 }
179182 evt .Timestamp , _ = time .Parse (time .RFC3339 , "2011-05-03T15:04:05.323Z" )
180183
181184 evt1 := & event.Event {
182185 Type : event .OpenProcess ,
183186 Category : event .Process ,
184- Params : pars1 ,
185- Name : "OpenProcess" ,
186- PID : 1023 ,
187+ Params : event.Params {
188+ params .DesiredAccess : {Name : params .DesiredAccess , Type : params .Flags , Value : uint32 (0x1400 ), Flags : event .PsAccessRightFlags },
189+ },
190+ Name : "OpenProcess" ,
191+ PID : 1023 ,
187192 PS : & pstypes.PS {
188193 Name : "svchost.exe" ,
189194 Parent : ps1 ,
@@ -240,6 +245,16 @@ func TestProcFilter(t *testing.T) {
240245 {`ps.parent.is_wow64` , false },
241246 {`ps.parent.is_packaged` , false },
242247 {`ps.parent.is_protected` , true },
248+ {`ps.token.integrity_level = 'SYSTEM'` , true },
249+ {`ps.token.is_elevated = false` , true },
250+ {`ps.token.elevation_type = 'DEFAULT'` , true },
251+ {`ps.child.token.integrity_level = 'SYSTEM'` , true },
252+ {`ps.child.token.is_elevated = true` , true },
253+ {`ps.child.token.elevation_type = 'FULL'` , true },
254+ {`ps.parent.token.integrity_level = 'SYSTEM'` , true },
255+ {`ps.parent.token.is_elevated = false` , true },
256+ {`ps.parent.token.elevation_type = 'DEFAULT'` , true },
257+
243258 {`evt.name = 'CreateProcess' and ps.name contains 'svchost'` , true },
244259
245260 {`ps.modules IN ('kernel32.dll')` , true },
@@ -262,6 +277,7 @@ func TestProcFilter(t *testing.T) {
262277 {`foreach(ps._ancestors, $proc, $proc.username = 'SYSTEM')` , true },
263278 {`foreach(ps._ancestors, $proc, $proc.domain = 'NT AUTHORITY')` , true },
264279 {`foreach(ps._ancestors, $proc, $proc.username = upper('system'))` , true },
280+ {`foreach(ps._ancestors, $proc, $proc.token.integrity_level = 'SYSTEM' and $proc.token.is_elevated = false and $proc.token.elevation_type = 'DEFAULT')` , true },
265281
266282 {`ps.args intersects ('-k', 'DcomLaunch')` , true },
267283 {`ps.args intersects ('-w', 'DcomLaunch')` , false },
0 commit comments