RubyIOC 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -16,7 +16,107 @@ module RubyIOC
16
16
  def get_type
17
17
  "ServiceItem"
18
18
  end
19
+
20
+ def scan(indicator)
21
+ if RubyIOC::Platform.windows?
22
+ return search_windows_services(indicator)
23
+ else
24
+ puts "Not implemented on this platform yet"
25
+ end
26
+ end
27
+
28
+ def search_windows_services(indicator)
29
+ wmi = WIN32OLE.connect("winmgmts:\\")
30
+ query = "Select * from Win32_Service where "
31
+ getLogicalDisk = false
32
+
33
+ servicemodetypes = Hash[
34
+ "SERVICE_AUTO_START" => "Auto",
35
+ "SERVICE_BOOT_START" => "Boot",
36
+ "SERVICE_DEMAND_START" => "Manual",
37
+ "SERVICE_DISABLED" => "Disabled",
38
+ "SERVICE_SYSTEM_START" => "System",
39
+ ]
40
+
41
+ servicestatustypes = Hash[
42
+ "SERVICE_CONTINUE_PENDING" => "Continue Pending",
43
+ "SERVICE_PAUSE_PENDING" => "Pause Pending",
44
+ "SERVICE_PAUSED" => "Paused",
45
+ "SERVICE_RUNNING" => "Running",
46
+ "SERVICE_START_PENDING" => "Start Pending",
47
+ "SERVICE_STOP_PENDING" => "Stop Pending",
48
+ "SERVICE_STOPPED" => "Stopped",
49
+ #***#
50
+ "SERVICE_UNKNOWN" => "Unknown"
51
+ ]
52
+
53
+ servicetypetypes = Hash[
54
+ "SERVICE_KERNEL_DRIVER" => "Kernel Driver",
55
+ "SERVICE_FILE_SYSTEM_DRIVER" => "File System Driver",
56
+ "SERVICE_WIN32_OWN_PROCESS" => "Own Process",
57
+ "SERVICE_WIN32_SHARE_PROCESS" => "Share Process",
58
+ #***#
59
+ "SERVICE_ADAPTER" => "Adapter",
60
+ "SERVICE_RECOGNIZER_DRIVER" => "Recognizer Driver",
61
+ "SERVICE_WIN32_INTERACTIVE_PROCESS" => "Interactive Process"
62
+ ]
63
+
64
+ indicator.each { |i|
65
+ case i[:search]
66
+ when "ServiceItem/arguments"
67
+ when "ServiceItem/description"
68
+ query += "Description like '%#{i[:content]}%' "
69
+ when "ServiceItem/descriptiveName"
70
+ query += "DisplayName = '#{i[:content]}' "
71
+ when "ServiceItem/serviceDLL"
72
+ when "ServiceItem/serviceDLLCertificateIssuer"
73
+ when "ServiceItem/serviceDLLCertificateSubject"
74
+ when "ServiceItem/serviceDLLmd5sum"
75
+ when "ServiceItem/serviceDLLsha1sum"
76
+ when "ServiceItem/serviceDLLsha256sum"
77
+ when "ServiceItem/serviceDLLSignatureDescription"
78
+ when "ServiceItem/serviceDLLSignatureVerified"
79
+ when "ServiceItem/serviceDLLSignatureExists"
80
+ when "ServiceItem/mode"
81
+ query += "StartMode = '#{servicemodetypes[i[:content]]}' "
82
+ when "ServiceItem/name"
83
+ query += "Name = '#{i[:content]}' "
84
+ when "ServiceItem/path"
85
+ content = i[:content].gsub("\\", "\\\\\\\\")
86
+ query += "PathName like '%#{[content]}%' "
87
+ when "ServiceItem/pathCertificateIssuer"
88
+ when "ServiceItem/pathCertificateSubject"
89
+ when "ServiceItem/pathmd5sum"
90
+ when "ServiceItem/pathsha1sum"
91
+ when "ServiceItem/pathsha256sum"
92
+ when "ServiceItem/pathSignatureDescription"
93
+ when "ServiceItem/pathSignatureExists"
94
+ when "ServiceItem/pathSignatureVerified"
95
+ when "ServiceItem/pid"
96
+ query += "ProcessID = #{i[:content]} "
97
+ when "ServiceItem/startedAs"
98
+ query += "StartName = '#{i[:content]}' "
99
+ when "ServiceItem/status"
100
+ query += "State = '#{servicestatustypes[i[:content]]}' "
101
+ when "ServiceItem/type"
102
+ query += "ServiceType = '#{servicetypetypes[i[:content]]}' "
103
+ when "ServiceItem/serviceDLLMd54Ksum"
104
+ when "ServiceItem/serviceDLLSha512Sum"
105
+ when "ServiceItem/serviceDLLSsdeep"
106
+ when "ServiceItem/pathMd54ksum"
107
+ when "ServiceItem/pathSha512sum"
108
+ when "ServiceItem/pathSsdeep"
109
+ end
110
+ }
111
+
112
+ services = wmi.ExecQuery(query)
113
+ services.each { |s|
114
+ return true
115
+ }
116
+ return false
117
+ end
19
118
  end
119
+
20
120
 
21
121
  class ServiceItemFactory < RubyIOC::IOCItem::IOCItemFactory
22
122
  def get_type
@@ -78,4 +78,4 @@ module RubyIOC
78
78
 
79
79
  UserItemFactory.add_factory(UserItemFactory)
80
80
  end
81
- end
81
+ end
@@ -16,6 +16,71 @@ module RubyIOC
16
16
  def get_type
17
17
  "VolumeItem"
18
18
  end
19
+
20
+ def scan(indicator)
21
+ if RubyIOC::Platform.windows?
22
+ return search_windows_volumes(indicator)
23
+ else
24
+ puts "Not implemented on this platform yet"
25
+ end
26
+ end
27
+
28
+ def search_windows_volumes(indicator)
29
+ wmi = WIN32OLE.connect("winmgmts:\\")
30
+ query = ""
31
+ getLogicalDisk = false
32
+
33
+ voltypes = Hash[
34
+ "DRIVE_UNKNOWN" => "0",
35
+ "DRIVE_NO_ROOT_DIR" => "1",
36
+ "DRIVE_REMOVABLE" => "2",
37
+ "DRIVE_FIXED" => "3",
38
+ "DRIVE_REMOTE" => "4",
39
+ "DRIVE_CDROM" => "5",
40
+ "DRIVE_RAMDISK" => "6"
41
+ ]
42
+
43
+ indicator.each { |i|
44
+ case i[:search]
45
+ when "VolumeItem/ActualAvailableAllocationUnits"
46
+ query += "FreeSpace = #{i[:content]} "
47
+ when "VolumeItem/BytesPerSector"
48
+ query += "BlockSize = #{i[:content]} "
49
+ when "VolumeItem/CreationTime"
50
+ query += "InstallDate = '#{i[:content]}' "
51
+ when "VolumeItem/DevicePath"
52
+ when "VolumeItem/DriveLetter"
53
+ query += "DriveLetter = '#{i[:content]}' "
54
+ when "VolumeItem/FileSystemFlags"
55
+ when "VolumeItem/FileSystemName"
56
+ query += "FileSystem = '#{i[:content]}' "
57
+ getLogicalDisk = true
58
+ when "VolumeItem/IsMounted"
59
+ when "VolumeItem/Name"
60
+ query += "VolumeName = '#{i[:content]}' "
61
+ getLogicalDisk = true
62
+ when "VolumeItem/SectorsPerAllocationUnit"
63
+ when "VolumeItem/SerialNumber"
64
+ query += "SerialNumber = '#{i[:content]}' "
65
+ when "VolumeItem/TotalAllocationUnits"
66
+ query += "Capacity = #{i[:content]} "
67
+ when "VolumeItem/Type"
68
+ query += "DriveType = #{voltypes[i[:content]]} "
69
+ end
70
+ }
71
+
72
+ if getLogicalDisk then
73
+ query = "Select * from Win32_LogicalDisk where " + query
74
+ else
75
+ query = "Select * from Win32_Volume where " + query
76
+ end
77
+
78
+ volumes = wmi.ExecQuery(query)
79
+ volumes.each { |v|
80
+ return true
81
+ }
82
+ return false
83
+ end
19
84
  end
20
85
 
21
86
  class VolumeItemFactory < RubyIOC::IOCItem::IOCItemFactory
@@ -33,7 +33,7 @@ module RubyIOC
33
33
  end
34
34
 
35
35
  def mac?
36
- RubyIOC::Platform.is? /mac|darwin/
36
+ RubyIOC::Platform.is? /darwin|mac/
37
37
  end
38
38
 
39
39
  def bsd?
@@ -41,7 +41,7 @@ module RubyIOC
41
41
  end
42
42
 
43
43
  def windows?
44
- RubyIOC::Platform.is? /mswin|win|mingw/
44
+ RubyIOC::Platform.is? /mswin|mingw/
45
45
  end
46
46
 
47
47
  def solaris?
@@ -26,7 +26,7 @@ module RubyIOC
26
26
  @ioc.indicators.each { |i|
27
27
  results << process_indicators(i, results)
28
28
  }
29
- puts results.to_yaml
29
+ return results
30
30
  end
31
31
 
32
32
  def get_all_results(items, results)
@@ -68,42 +68,29 @@ module RubyIOC
68
68
 
69
69
  def process_indicators(i, results)
70
70
  res = {}
71
- search_item = []
72
71
  res[i.id] = {}
73
72
  res[i.id]['items'] = []
74
73
  res[i.id]['operator'] = i.operator
75
74
  res[i.id]['indicators'] = []
76
- if i.operator === "AND"
77
- i.indicator_item.each { | inditem |
78
- tmp = {}
79
- tmp[:document] = inditem.document
80
- tmp[:search] = inditem.search
81
- tmp[:condition] = inditem.condition
82
- tmp[:content_type] = inditem.content_type
83
- tmp[:content] = inditem.content
84
- tmp[:context_type] = inditem.context_type
85
- search_item << tmp
86
- }
87
- res[i.id]['indicators'] << RubyIOC::IOCItem::IOCItemFactory.item_for(search_item[0][:document]).scan(search_item)
88
- puts res[i.id]['indicators'].inspect
89
- else
90
- i.indicator_item.each { | inditem |
91
- tmp = {}
92
- tmp[:document] = inditem.document
93
- tmp[:search] = inditem.search
94
- tmp[:condition] = inditem.condition
95
- tmp[:content_type] = inditem.content_type
96
- tmp[:content] = inditem.content
97
- tmp[:context_type] = inditem.context_type
98
- search_item << tmp
99
- res[i.id]['indicators'] << RubyIOC::IOCItem::IOCItemFactory.item_for(inditem.document).scan(search_item)
100
- }
101
- end
75
+ i.indicator_item.each { | inditem |
76
+ search_item = []
77
+ tmp = {}
78
+ tmp[:document] = inditem.document
79
+ tmp[:search] = inditem.search
80
+ tmp[:condition] = inditem.condition
81
+ tmp[:content_type] = inditem.content_type
82
+ tmp[:content] = inditem.content
83
+ tmp[:context_type] = inditem.context_type
84
+ search_item << tmp
85
+ res[i.id]['indicators'] << RubyIOC::IOCItem::IOCItemFactory.item_for(inditem.document).scan(search_item)
86
+ }
87
+
102
88
  i.indicators.each { |ii |
103
89
  process_indicators(ii, res[i.id]['items'])
104
90
  }
105
91
  res[i.id]['result'] = get_result(i.operator, res[i.id])
106
92
  results << res
93
+ return results
107
94
  end
108
95
 
109
96
  end
@@ -1,15 +1,15 @@
1
- # Copyright (c) 2013 Matt Jezorek
2
- #
3
- # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
4
- # to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
5
- # and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
- #
7
- # The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
- #
9
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
10
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
11
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
12
- # IN THE SOFTWARE.
13
- module RubyIOC
14
- VERSION = "0.0.1"
15
- end
1
+ # Copyright (c) 2013 Matt Jezorek
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
4
+ # to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
5
+ # and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
+ #
7
+ # The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
+ #
9
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
10
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
11
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
12
+ # IN THE SOFTWARE.
13
+ module RubyIOC
14
+ VERSION = "0.0.2"
15
+ end
@@ -0,0 +1,57 @@
1
+ <?xml version="1.0" encoding="us-ascii"?>
2
+ <ioc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" id="868b1eaa-7d68-4634-9572-a0d442e71814" last-modified="2013-08-04T03:44:46" xmlns="http://schemas.mandiant.com/2010/ioc">
3
+ <short_description>*ARP Entry Test IOC*</short_description>
4
+ <authored_by>IOCAware</authored_by>
5
+ <authored_date>2013-06-17T18:00:55</authored_date>
6
+ <links />
7
+ <definition>
8
+ <Indicator operator="OR" id="063979a1-df60-48c8-b514-5d226f192322">
9
+ <Indicator operator="AND" id="ea7f3691-a790-4295-93ce-58ef7ccdcebb">
10
+ <IndicatorItem id="7cc9932d-64e5-478e-ae28-b676ce033fa1" condition="contains">
11
+ <Context document="ArpEntryItem" search="ArpEntryItem/IPv4Address" type="mir" />
12
+ <Content type="IP">192.168.1.1</Content>
13
+ </IndicatorItem>
14
+ <IndicatorItem id="8f2280f7-ad34-4718-8f7c-32ba28c71f5c" condition="contains">
15
+ <Context document="ArpEntryItem" search="ArpEntryItem/PhysicalAddress" type="mir" />
16
+ <Content type="string">f0:d1:a9:08:6a:60</Content>
17
+ </IndicatorItem>
18
+ <IndicatorItem id="17c2ad4f-3f8f-43fa-8aee-e19df4afbae9" condition="contains">
19
+ <Context document="ArpEntryItem" search="ArpEntryItem/Interface" type="mir" />
20
+ <Content type="IP">en1</Content>
21
+ </IndicatorItem>
22
+ </Indicator>
23
+ <Indicator operator="AND" id="8757b126-6b67-47f6-b77a-8158c0a71116">
24
+ <IndicatorItem id="ba09a245-63b0-4657-9402-f8ecb13693a6" condition="contains">
25
+ <Context document="ArpEntryItem" search="ArpEntryItem/Interface" type="mir" />
26
+ <Content type="IP">eth0</Content>
27
+ </IndicatorItem>
28
+ <IndicatorItem id="4269d1ab-0b04-4a67-8946-9ca23d6257e0" condition="contains">
29
+ <Context document="ArpEntryItem" search="ArpEntryItem/IPv4Address" type="mir" />
30
+ <Content type="IP">192.168.1.1</Content>
31
+ </IndicatorItem>
32
+ <IndicatorItem id="7c19b193-86be-455f-8be0-13075cb08b04" condition="contains">
33
+ <Context document="ArpEntryItem" search="ArpEntryItem/PhysicalAddress" type="mir" />
34
+ <Content type="string">f0:d1:a9:08:6a:60</Content>
35
+ </IndicatorItem>
36
+ </Indicator>
37
+ <Indicator operator="AND" id="c2a54d35-2c29-4526-8177-db9829985bb6">
38
+ <IndicatorItem id="6776d766-9ef9-445c-8e94-f1da9364a8f9" condition="contains">
39
+ <Context document="ArpEntryItem" search="ArpEntryItem/Interface" type="mir" />
40
+ <Content type="IP">0xc</Content>
41
+ </IndicatorItem>
42
+ <IndicatorItem id="656d1f71-8bde-4ed0-8a6f-7667d523aedb" condition="contains">
43
+ <Context document="ArpEntryItem" search="ArpEntryItem/CacheType" type="mir" />
44
+ <Content type="string">Dynamic</Content>
45
+ </IndicatorItem>
46
+ <IndicatorItem id="d4533bab-5a5d-4869-9a31-3da0b4a82e45" condition="contains">
47
+ <Context document="ArpEntryItem" search="ArpEntryItem/IPv4Address" type="mir" />
48
+ <Content type="IP">192.168.237.2</Content>
49
+ </IndicatorItem>
50
+ <IndicatorItem id="ab9d4e19-d472-4ec3-a63e-f1e9606daed3" condition="contains">
51
+ <Context document="ArpEntryItem" search="ArpEntryItem/PhysicalAddress" type="mir" />
52
+ <Content type="string">00:50:56:ff:ad:9a</Content>
53
+ </IndicatorItem>
54
+ </Indicator>
55
+ </Indicator>
56
+ </definition>
57
+ </ioc>
@@ -1,14 +1,35 @@
1
1
  <?xml version="1.0" encoding="us-ascii"?>
2
- <ioc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" id="efce87c7-f78f-4e32-8f3f-b470d1ec693f" last-modified="2013-01-07T01:29:04" xmlns="http://schemas.mandiant.com/2010/ioc">
3
- <short_description>*New Unsaved Indicator*</short_description>
2
+ <ioc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" id="efce87c7-f78f-4e32-8f3f-b470d1ec693f" last-modified="2013-08-04T03:43:19" xmlns="http://schemas.mandiant.com/2010/ioc">
3
+ <short_description>*DNS Entry Test IOC*</short_description>
4
+ <authored_by>IOCAware</authored_by>
4
5
  <authored_date>2013-01-07T01:25:50</authored_date>
5
6
  <links />
6
7
  <definition>
7
8
  <Indicator operator="OR" id="336a594b-3302-4ac8-9512-4f329d660515">
8
9
  <IndicatorItem id="1d1ca6f3-6bf9-4c8a-812e-3e9879f5ad29" condition="contains">
9
- <Context document="DnsEntryItem" search="DnsEntryItem/Host" type="mir" />
10
- <Content type="string">www.google.com</Content>
11
- </IndicatorItem>
10
+ <Context document="DnsEntryItem" search="DnsEntryItem/Host" type="mir" />
11
+ <Content type="string">www.yahoo.com</Content>
12
+ </IndicatorItem>
13
+ <IndicatorItem id="03ff5739-b4e8-47ba-9731-cc05399e3bb1" condition="is">
14
+ <Context document="DnsEntryItem" search="DnsEntryItem/DataLength" type="mir" />
15
+ <Content type="int">8</Content>
16
+ </IndicatorItem>
17
+ <IndicatorItem id="82b571d3-9432-4cf2-af87-f9d1926cebf5" condition="contains">
18
+ <Context document="DnsEntryItem" search="DnsEntryItem/RecordName" type="mir" />
19
+ <Content type="string">www.yahoo.com</Content>
20
+ </IndicatorItem>
21
+ <IndicatorItem id="5263a013-3877-4038-a441-e7fae573820f" condition="contains">
22
+ <Context document="DnsEntryItem" search="DnsEntryItem/RecordType" type="mir" />
23
+ <Content type="string">5</Content>
24
+ </IndicatorItem>
25
+ <IndicatorItem id="1d8e01c5-9840-4244-97d9-72c3ea50e61a" condition="contains">
26
+ <Context document="DnsEntryItem" search="DnsEntryItem/TimeToLive" type="mir" />
27
+ <Content type="string">2</Content>
28
+ </IndicatorItem>
29
+ <IndicatorItem id="cf3a83a1-aac3-4730-9efb-302e919f841f" condition="contains">
30
+ <Context document="DnsEntryItem" search="DnsEntryItem/RecordData/IPv4Address" type="mir" />
31
+ <Content type="IP">192.168.237.128</Content>
32
+ </IndicatorItem>
12
33
  </Indicator>
13
34
  </definition>
14
35
  </ioc>
@@ -0,0 +1,55 @@
1
+ <?xml version="1.0" encoding="us-ascii"?>
2
+ <ioc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" id="5a36460c-a57c-4cfd-9731-f3494af1fd19" last-modified="2013-08-04T03:43:19" xmlns="http://schemas.mandiant.com/2010/ioc">
3
+ <short_description>*EventLog Entry Test IOC*</short_description>
4
+ <authored_by>IOCAware</authored_by>
5
+ <authored_date>2013-08-01T15:25:30</authored_date>
6
+ <links />
7
+ <definition>
8
+ <Indicator operator="OR" id="8909fba8-d368-4dfb-80e9-3c5bc1414d18">
9
+ <IndicatorItem id="2011b44a-3ae5-4913-b3e5-9de81449cdcb" condition="contains">
10
+ <Context document="EventLogItem" search="EventLogItem/category" type="mir" />
11
+ <Content type="string">Startup of the UMDF reflector</Content>
12
+ </IndicatorItem>
13
+ <IndicatorItem id="a60acc9e-677f-4e3f-853c-fa4d3a55d800" condition="contains">
14
+ <Context document="EventLogItem" search="EventLogItem/categoryNum" type="mir" />
15
+ <Content type="string">101</Content>
16
+ </IndicatorItem>
17
+ <IndicatorItem id="23a5f59d-8aa0-4301-a4e0-f2dbcad956ab" condition="is">
18
+ <Context document="EventLogItem" search="EventLogItem/genTime" type="mir" />
19
+ <Content type="date">20121120204608.735041-000</Content>
20
+ </IndicatorItem>
21
+ <IndicatorItem id="38c618d6-8699-46d6-b9dc-c772911b21c8" condition="is">
22
+ <Context document="EventLogItem" search="EventLogItem/EID" type="mir" />
23
+ <Content type="int">5615</Content>
24
+ </IndicatorItem>
25
+ <IndicatorItem id="eb983742-4953-4c76-94fb-5b2c699acd94" condition="contains">
26
+ <Context document="EventLogItem" search="EventLogItem/log" type="mir" />
27
+ <Content type="string">System</Content>
28
+ </IndicatorItem>
29
+ <IndicatorItem id="a567613d-f99f-4030-b232-47dd49fd0c16" condition="contains">
30
+ <Context document="EventLogItem" search="EventLogItem/machine" type="mir" />
31
+ <Content type="string">Win8</Content>
32
+ </IndicatorItem>
33
+ <IndicatorItem id="3b5758ac-d356-4912-921f-99744e9a8716" condition="contains">
34
+ <Context document="EventLogItem" search="EventLogItem/message" type="mir" />
35
+ <Content type="string">P1: 7.8.9200.16465</Content>
36
+ </IndicatorItem>
37
+ <IndicatorItem id="89ba60af-ab43-47dd-aa22-46dbbe9c8c19" condition="contains">
38
+ <Context document="EventLogItem" search="EventLogItem/source" type="mir" />
39
+ <Content type="string">MsiInstaller</Content>
40
+ </IndicatorItem>
41
+ <IndicatorItem id="f4618c66-92f1-468e-bee9-288404469100" condition="contains">
42
+ <Context document="EventLogItem" search="EventLogItem/type" type="mir" />
43
+ <Content type="string">Error</Content>
44
+ </IndicatorItem>
45
+ <IndicatorItem id="77ae9c7e-c1cf-4ebd-8abc-c9156351249f" condition="contains">
46
+ <Context document="EventLogItem" search="EventLogItem/user" type="mir" />
47
+ <Content type="string">SYSTEM</Content>
48
+ </IndicatorItem>
49
+ <IndicatorItem id="55b298ba-7fa2-4faf-9853-c9ae4c2964fb" condition="is">
50
+ <Context document="EventLogItem" search="EventLogItem/writeTime" type="mir" />
51
+ <Content type="date">20121228232521.930418-000</Content>
52
+ </IndicatorItem>
53
+ </Indicator>
54
+ </definition>
55
+ </ioc>