RubyIOC 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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>