stix_schema_spy 1.0 → 1.1

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.
Files changed (175) hide show
  1. checksums.yaml +8 -8
  2. data/config/1.1/stix/cybox/objects/Win_Hook_Object.xsd +1 -1
  3. data/config/1.1.1/stix/campaign.xsd +220 -0
  4. data/config/1.1.1/stix/course_of_action.xsd +191 -0
  5. data/config/1.1.1/stix/cybox/cybox_common.xsd +2700 -0
  6. data/config/1.1.1/stix/cybox/cybox_core.xsd +1145 -0
  7. data/config/1.1.1/stix/cybox/cybox_default_vocabularies.xsd +5180 -0
  8. data/config/1.1.1/stix/cybox/extensions/location/ciq_address_3.0.xsd +27 -0
  9. data/config/1.1.1/stix/cybox/extensions/platform/cpe2.3.xsd +34 -0
  10. data/config/1.1.1/stix/cybox/external/cpe_2.3/cpe-language_2.3.xsd +234 -0
  11. data/config/1.1.1/stix/cybox/external/cpe_2.3/cpe-naming_2.3.xsd +45 -0
  12. data/config/1.1.1/stix/cybox/external/cpe_2.3/xml.xsd +145 -0
  13. data/config/1.1.1/stix/cybox/external/oasis_ciq_3.0/CommonTypes.xsd +104 -0
  14. data/config/1.1.1/stix/cybox/external/oasis_ciq_3.0/xAL-types.xsd +511 -0
  15. data/config/1.1.1/stix/cybox/external/oasis_ciq_3.0/xAL.xsd +672 -0
  16. data/config/1.1.1/stix/cybox/external/oasis_ciq_3.0/xNAL-types.xsd +36 -0
  17. data/config/1.1.1/stix/cybox/external/oasis_ciq_3.0/xNAL.xsd +126 -0
  18. data/config/1.1.1/stix/cybox/external/oasis_ciq_3.0/xNL-types.xsd +222 -0
  19. data/config/1.1.1/stix/cybox/external/oasis_ciq_3.0/xNL.xsd +284 -0
  20. data/config/1.1.1/stix/cybox/external/oasis_ciq_3.0/xPIL-types.xsd +854 -0
  21. data/config/1.1.1/stix/cybox/external/oasis_ciq_3.0/xPIL.xsd +1621 -0
  22. data/config/1.1.1/stix/cybox/external/oasis_ciq_3.0/xlink-2003-12-31.xsd +90 -0
  23. data/config/1.1.1/stix/cybox/objects/API_Object.xsd +55 -0
  24. data/config/1.1.1/stix/cybox/objects/ARP_Cache_Object.xsd +98 -0
  25. data/config/1.1.1/stix/cybox/objects/AS_Object.xsd +50 -0
  26. data/config/1.1.1/stix/cybox/objects/Account_Object.xsd +501 -0
  27. data/config/1.1.1/stix/cybox/objects/Address_Object.xsd +127 -0
  28. data/config/1.1.1/stix/cybox/objects/Archive_File_Object.xsd +134 -0
  29. data/config/1.1.1/stix/cybox/objects/Artifact_Object.xsd +212 -0
  30. data/config/1.1.1/stix/cybox/objects/Code_Object.xsd +417 -0
  31. data/config/1.1.1/stix/cybox/objects/Custom_Object.xsd +42 -0
  32. data/config/1.1.1/stix/cybox/objects/DNS_Cache_Object.xsd +53 -0
  33. data/config/1.1.1/stix/cybox/objects/DNS_Query_Object.xsd +164 -0
  34. data/config/1.1.1/stix/cybox/objects/DNS_Record_Object.xsd +92 -0
  35. data/config/1.1.1/stix/cybox/objects/Device_Object.xsd +65 -0
  36. data/config/1.1.1/stix/cybox/objects/Disk_Object.xsd +117 -0
  37. data/config/1.1.1/stix/cybox/objects/Disk_Partition_Object.xsd +199 -0
  38. data/config/1.1.1/stix/cybox/objects/Domain_Name_Object.xsd +57 -0
  39. data/config/1.1.1/stix/cybox/objects/Email_Message_Object.xsd +278 -0
  40. data/config/1.1.1/stix/cybox/objects/File_Object.xsd +397 -0
  41. data/config/1.1.1/stix/cybox/objects/GUI_Dialogbox_Object.xsd +41 -0
  42. data/config/1.1.1/stix/cybox/objects/GUI_Object.xsd +40 -0
  43. data/config/1.1.1/stix/cybox/objects/GUI_Window_Object.xsd +46 -0
  44. data/config/1.1.1/stix/cybox/objects/HTTP_Session_Object.xsd +633 -0
  45. data/config/1.1.1/stix/cybox/objects/Hostname_Object.xsd +45 -0
  46. data/config/1.1.1/stix/cybox/objects/Image_File_Object.xsd +124 -0
  47. data/config/1.1.1/stix/cybox/objects/Library_Object.xsd +114 -0
  48. data/config/1.1.1/stix/cybox/objects/Link_Object.xsd +36 -0
  49. data/config/1.1.1/stix/cybox/objects/Linux_Package_Object.xsd +75 -0
  50. data/config/1.1.1/stix/cybox/objects/Memory_Object.xsd +141 -0
  51. data/config/1.1.1/stix/cybox/objects/Mutex_Object.xsd +40 -0
  52. data/config/1.1.1/stix/cybox/objects/Network_Connection_Object.xsd +540 -0
  53. data/config/1.1.1/stix/cybox/objects/Network_Flow_Object.xsd +1559 -0
  54. data/config/1.1.1/stix/cybox/objects/Network_Packet_Object.xsd +2934 -0
  55. data/config/1.1.1/stix/cybox/objects/Network_Route_Entry_Object.xsd +155 -0
  56. data/config/1.1.1/stix/cybox/objects/Network_Route_Object.xsd +93 -0
  57. data/config/1.1.1/stix/cybox/objects/Network_Socket_Object.xsd +529 -0
  58. data/config/1.1.1/stix/cybox/objects/Network_Subnet_Object.xsd +64 -0
  59. data/config/1.1.1/stix/cybox/objects/PDF_File_Object.xsd +595 -0
  60. data/config/1.1.1/stix/cybox/objects/Pipe_Object.xsd +40 -0
  61. data/config/1.1.1/stix/cybox/objects/Port_Object.xsd +40 -0
  62. data/config/1.1.1/stix/cybox/objects/Process_Object.xsd +199 -0
  63. data/config/1.1.1/stix/cybox/objects/Product_Object.xsd +65 -0
  64. data/config/1.1.1/stix/cybox/objects/SMS_Message_Object.xsd +79 -0
  65. data/config/1.1.1/stix/cybox/objects/Semaphore_Object.xsd +50 -0
  66. data/config/1.1.1/stix/cybox/objects/Socket_Address_Object.xsd +50 -0
  67. data/config/1.1.1/stix/cybox/objects/System_Object.xsd +410 -0
  68. data/config/1.1.1/stix/cybox/objects/URI_Object.xsd +62 -0
  69. data/config/1.1.1/stix/cybox/objects/URL_History_Object.xsd +104 -0
  70. data/config/1.1.1/stix/cybox/objects/Unix_File_Object.xsd +164 -0
  71. data/config/1.1.1/stix/cybox/objects/Unix_Network_Route_Entry_Object.xsd +56 -0
  72. data/config/1.1.1/stix/cybox/objects/Unix_Pipe_Object.xsd +36 -0
  73. data/config/1.1.1/stix/cybox/objects/Unix_Process_Object.xsd +143 -0
  74. data/config/1.1.1/stix/cybox/objects/Unix_User_Account_Object.xsd +78 -0
  75. data/config/1.1.1/stix/cybox/objects/Unix_Volume_Object.xsd +41 -0
  76. data/config/1.1.1/stix/cybox/objects/User_Account_Object.xsd +110 -0
  77. data/config/1.1.1/stix/cybox/objects/User_Session_Object.xsd +60 -0
  78. data/config/1.1.1/stix/cybox/objects/Volume_Object.xsd +235 -0
  79. data/config/1.1.1/stix/cybox/objects/Whois_Object.xsd +430 -0
  80. data/config/1.1.1/stix/cybox/objects/Win_Computer_Account_Object.xsd +135 -0
  81. data/config/1.1.1/stix/cybox/objects/Win_Critical_Section_Object.xsd +40 -0
  82. data/config/1.1.1/stix/cybox/objects/Win_Driver_Object.xsd +270 -0
  83. data/config/1.1.1/stix/cybox/objects/Win_Event_Log_Object.xsd +137 -0
  84. data/config/1.1.1/stix/cybox/objects/Win_Event_Object.xsd +80 -0
  85. data/config/1.1.1/stix/cybox/objects/Win_Executable_File_Object.xsd +1311 -0
  86. data/config/1.1.1/stix/cybox/objects/Win_File_Object.xsd +269 -0
  87. data/config/1.1.1/stix/cybox/objects/Win_Filemapping_Object.xsd +175 -0
  88. data/config/1.1.1/stix/cybox/objects/Win_Handle_Object.xsd +351 -0
  89. data/config/1.1.1/stix/cybox/objects/Win_Hook_Object.xsd +152 -0
  90. data/config/1.1.1/stix/cybox/objects/Win_Kernel_Hook_Object.xsd +109 -0
  91. data/config/1.1.1/stix/cybox/objects/Win_Kernel_Object.xsd +128 -0
  92. data/config/1.1.1/stix/cybox/objects/Win_Mailslot_Object.xsd +56 -0
  93. data/config/1.1.1/stix/cybox/objects/Win_Memory_Page_Region_Object.xsd +198 -0
  94. data/config/1.1.1/stix/cybox/objects/Win_Mutex_Object.xsd +42 -0
  95. data/config/1.1.1/stix/cybox/objects/Win_Network_Route_Entry_Object.xsd +200 -0
  96. data/config/1.1.1/stix/cybox/objects/Win_Network_Share_Object.xsd +205 -0
  97. data/config/1.1.1/stix/cybox/objects/Win_Pipe_Object.xsd +73 -0
  98. data/config/1.1.1/stix/cybox/objects/Win_Prefetch_Object.xsd +113 -0
  99. data/config/1.1.1/stix/cybox/objects/Win_Process_Object.xsd +174 -0
  100. data/config/1.1.1/stix/cybox/objects/Win_Registry_Key_Object.xsd +290 -0
  101. data/config/1.1.1/stix/cybox/objects/Win_Semaphore_Object.xsd +42 -0
  102. data/config/1.1.1/stix/cybox/objects/Win_Service_Object.xsd +287 -0
  103. data/config/1.1.1/stix/cybox/objects/Win_System_Object.xsd +126 -0
  104. data/config/1.1.1/stix/cybox/objects/Win_System_Restore_Object.xsd +207 -0
  105. data/config/1.1.1/stix/cybox/objects/Win_Task_Object.xsd +755 -0
  106. data/config/1.1.1/stix/cybox/objects/Win_Thread_Object.xsd +146 -0
  107. data/config/1.1.1/stix/cybox/objects/Win_User_Account_Object.xsd +73 -0
  108. data/config/1.1.1/stix/cybox/objects/Win_Volume_Object.xsd +161 -0
  109. data/config/1.1.1/stix/cybox/objects/Win_Waitable_Timer_Object.xsd +90 -0
  110. data/config/1.1.1/stix/cybox/objects/X509_Certificate_Object.xsd +275 -0
  111. data/config/1.1.1/stix/data_marking.xsd +97 -0
  112. data/config/1.1.1/stix/exploit_target.xsd +324 -0
  113. data/config/1.1.1/stix/extensions/address/ciq_3.0_address.xsd +27 -0
  114. data/config/1.1.1/stix/extensions/attack_pattern/capec_2.7_attack_pattern.xsd +31 -0
  115. data/config/1.1.1/stix/extensions/identity/ciq_3.0_identity.xsd +113 -0
  116. data/config/1.1.1/stix/extensions/malware/maec_4.1_malware.xsd +31 -0
  117. data/config/1.1.1/stix/extensions/marking/simple_marking.xsd +31 -0
  118. data/config/1.1.1/stix/extensions/marking/terms_of_use_marking.xsd +31 -0
  119. data/config/1.1.1/stix/extensions/marking/tlp_marking.xsd +40 -0
  120. data/config/1.1.1/stix/extensions/structured_coa/generic_structured_coa.xsd +46 -0
  121. data/config/1.1.1/stix/extensions/test_mechanism/generic_test_mechanism.xsd +46 -0
  122. data/config/1.1.1/stix/extensions/test_mechanism/open_ioc_2010_test_mechanism.xsd +32 -0
  123. data/config/1.1.1/stix/extensions/test_mechanism/oval_5.10_test_mechanism.xsd +37 -0
  124. data/config/1.1.1/stix/extensions/test_mechanism/snort_test_mechanism.xsd +56 -0
  125. data/config/1.1.1/stix/extensions/test_mechanism/yara_test_mechanism.xsd +36 -0
  126. data/config/1.1.1/stix/extensions/vulnerability/cvrf_1.1_vulnerability.xsd +33 -0
  127. data/config/1.1.1/stix/external/capec_2.7/ap_schema_v2.7.xsd +3618 -0
  128. data/config/1.1.1/stix/external/cvrf_1.1/common.xsd +176 -0
  129. data/config/1.1.1/stix/external/cvrf_1.1/cpe-language_2.2a.xsd +182 -0
  130. data/config/1.1.1/stix/external/cvrf_1.1/cvrf.xsd +487 -0
  131. data/config/1.1.1/stix/external/cvrf_1.1/cvss-v2_0.9.xsd +415 -0
  132. data/config/1.1.1/stix/external/cvrf_1.1/dc.xsd +118 -0
  133. data/config/1.1.1/stix/external/cvrf_1.1/prod.xsd +292 -0
  134. data/config/1.1.1/stix/external/cvrf_1.1/scap-core_0.9.xsd +170 -0
  135. data/config/1.1.1/stix/external/cvrf_1.1/vuln.xsd +631 -0
  136. data/config/1.1.1/stix/external/cvrf_1.1/xml.xsd +287 -0
  137. data/config/1.1.1/stix/external/maec_4.1/maec_bundle_schema.xsd +1228 -0
  138. data/config/1.1.1/stix/external/maec_4.1/maec_container_schema.xsd +62 -0
  139. data/config/1.1.1/stix/external/maec_4.1/maec_default_vocabularies.xsd +5325 -0
  140. data/config/1.1.1/stix/external/maec_4.1/maec_package_schema.xsd +1095 -0
  141. data/config/1.1.1/stix/external/maec_4.1/metadataSharing.xsd +1712 -0
  142. data/config/1.1.1/stix/external/oasis_ciq_3.0/CommonTypes.xsd +104 -0
  143. data/config/1.1.1/stix/external/oasis_ciq_3.0/xAL-types.xsd +511 -0
  144. data/config/1.1.1/stix/external/oasis_ciq_3.0/xAL.xsd +672 -0
  145. data/config/1.1.1/stix/external/oasis_ciq_3.0/xNAL-types.xsd +36 -0
  146. data/config/1.1.1/stix/external/oasis_ciq_3.0/xNAL.xsd +126 -0
  147. data/config/1.1.1/stix/external/oasis_ciq_3.0/xNL-types.xsd +222 -0
  148. data/config/1.1.1/stix/external/oasis_ciq_3.0/xNL.xsd +284 -0
  149. data/config/1.1.1/stix/external/oasis_ciq_3.0/xPIL-types.xsd +854 -0
  150. data/config/1.1.1/stix/external/oasis_ciq_3.0/xPIL.xsd +1621 -0
  151. data/config/1.1.1/stix/external/oasis_ciq_3.0/xlink-2003-12-31.xsd +90 -0
  152. data/config/1.1.1/stix/external/open_ioc_2010/ioc-TR.xsd +25 -0
  153. data/config/1.1.1/stix/external/open_ioc_2010/ioc.xsd +105 -0
  154. data/config/1.1.1/stix/external/oval_5.10/oval-common-schema.xsd +781 -0
  155. data/config/1.1.1/stix/external/oval_5.10/oval-definitions-schema.xsd +1608 -0
  156. data/config/1.1.1/stix/external/oval_5.10/oval-variables-schema.xsd +84 -0
  157. data/config/1.1.1/stix/external/oval_5.10/xmldsig-core-schema.xsd +309 -0
  158. data/config/1.1.1/stix/incident.xsd +762 -0
  159. data/config/1.1.1/stix/indicator.xsd +368 -0
  160. data/config/1.1.1/stix/stix_common.xsd +923 -0
  161. data/config/1.1.1/stix/stix_core.xsd +253 -0
  162. data/config/1.1.1/stix/stix_default_vocabularies.xsd +2081 -0
  163. data/config/1.1.1/stix/threat_actor.xsd +182 -0
  164. data/config/1.1.1/stix/ttp.xsd +430 -0
  165. data/config/1.1.1/uber_schema.xsd +149 -0
  166. data/lib/stix_schema_spy/models/attribute.rb +1 -1
  167. data/lib/stix_schema_spy/models/element.rb +2 -9
  168. data/lib/stix_schema_spy/models/external_type.rb +29 -0
  169. data/lib/stix_schema_spy/models/has_children.rb +9 -9
  170. data/lib/stix_schema_spy/models/node.rb +7 -6
  171. data/lib/stix_schema_spy/models/schema.rb +6 -4
  172. data/lib/stix_schema_spy/models/type.rb +44 -5
  173. data/lib/stix_schema_spy/util/tasks.rb +15 -14
  174. data/lib/stix_schema_spy/version.rb +1 -1
  175. metadata +171 -9
@@ -0,0 +1,1712 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ Created on : September 15 2011
4
+ Author : Ivan Kirillov
5
+ Last Revised : October 19 2011
6
+ Description : malware MetaData sharing version 1.2
7
+ -->
8
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
9
+ targetNamespace="http://xml/metadataSharing.xsd" xmlns="http://xml/metadataSharing.xsd"
10
+ elementFormDefault="qualified" version="1.8">
11
+
12
+ <xs:annotation>
13
+ <xs:documentation xml:lang="en">
14
+ A schema for sharing data associated with malicious software.
15
+ </xs:documentation>
16
+ </xs:annotation>
17
+
18
+ <!-- some definitions of types -->
19
+ <xs:simpleType name="intBetween0and100">
20
+ <xs:annotation>
21
+ <xs:documentation xml:lang="en">
22
+ Utility type for integers between 0 and 100. Used in field data for commonality and importance.
23
+ </xs:documentation>
24
+ </xs:annotation>
25
+ <xs:restriction base="xs:integer">
26
+ <xs:minInclusive value="0"/>
27
+ <xs:maxInclusive value="100"/>
28
+ </xs:restriction>
29
+ </xs:simpleType>
30
+
31
+ <xs:simpleType name="NoQuestionMark">
32
+ <xs:annotation>
33
+ <xs:documentation xml:lang="en">
34
+ Utility type for a string not including a question mark (?) for uri objects.
35
+ </xs:documentation>
36
+ </xs:annotation>
37
+ <xs:restriction base="xs:string">
38
+ <xs:pattern value="[^?]+"/>
39
+ </xs:restriction>
40
+ </xs:simpleType>
41
+
42
+ <xs:simpleType name="IPRange">
43
+ <xs:annotation>
44
+ <xs:documentation xml:lang="en">
45
+ Utility type for ip ranges, for example 111.112.113.0-111.112.113.100.
46
+ </xs:documentation>
47
+ </xs:annotation>
48
+ <xs:restriction base="xs:string">
49
+ <xs:pattern value="[0-9\.]+-[0-9\.]+"/>
50
+ </xs:restriction>
51
+ </xs:simpleType>
52
+
53
+ <!-- Enumerations -->
54
+
55
+ <!-- These are the types of relationships between objects (and classifications -->
56
+ <xs:simpleType name="RelationshipTypeEnum">
57
+ <xs:annotation>
58
+ <xs:documentation xml:lang="en">
59
+ All the different types of relationship that are possible.
60
+ </xs:documentation>
61
+ </xs:annotation>
62
+ <xs:restriction base="xs:string">
63
+
64
+ <xs:enumeration value="relatedTo">
65
+ <xs:annotation>
66
+ <xs:documentation xml:lang="en">
67
+ relatedTo - generic relationship.
68
+ </xs:documentation>
69
+ </xs:annotation>
70
+ </xs:enumeration>
71
+
72
+ <xs:enumeration value="isClassifiedAs">
73
+ <xs:annotation>
74
+ <xs:documentation xml:lang="en">
75
+ isClassifiedAs - Used to match an object to a classification to provide a "name" for the object.
76
+ </xs:documentation>
77
+ </xs:annotation>
78
+ </xs:enumeration>
79
+
80
+ <xs:enumeration value="hosts">
81
+ <xs:annotation>
82
+ <xs:documentation xml:lang="en">
83
+ hosts - Used when a web site hosts a file.
84
+ </xs:documentation>
85
+ </xs:annotation>
86
+ </xs:enumeration>
87
+
88
+ <xs:enumeration value="installed">
89
+ <xs:annotation>
90
+ <xs:documentation xml:lang="en">
91
+ installed - Used to relate files that install one another.
92
+ </xs:documentation>
93
+ </xs:annotation>
94
+ </xs:enumeration>
95
+
96
+ <xs:enumeration value="isParentOf">
97
+ <xs:annotation>
98
+ <xs:documentation xml:lang="en">
99
+ isParentOf - Used to relate files that creates another one.
100
+ </xs:documentation>
101
+ </xs:annotation>
102
+ </xs:enumeration>
103
+
104
+ <xs:enumeration value="causesToInstall">
105
+ <xs:annotation>
106
+ <xs:documentation xml:lang="en">
107
+ causesToInstall - As in web site causes file to be installed.
108
+ </xs:documentation>
109
+ </xs:annotation>
110
+ </xs:enumeration>
111
+
112
+ <xs:enumeration value="downloads">
113
+ <xs:annotation>
114
+ <xs:documentation xml:lang="en">
115
+ downloads - As in file retrieves data from a url, or file downloads file.
116
+ </xs:documentation>
117
+ </xs:annotation>
118
+ </xs:enumeration>
119
+
120
+
121
+ <xs:enumeration value="runs">
122
+ <xs:annotation>
123
+ <xs:documentation xml:lang="en">
124
+ runs - File that a url with an exploit runs. Or a file (parent) that runs another file (child).
125
+ </xs:documentation>
126
+ </xs:annotation>
127
+ </xs:enumeration>
128
+
129
+ <xs:enumeration value="usesCNC">
130
+ <xs:annotation>
131
+ <xs:documentation xml:lang="en">
132
+ usesCNC - As in classification/object uses command and control url/domain/ip.
133
+ </xs:documentation>
134
+ </xs:annotation>
135
+ </xs:enumeration>
136
+
137
+ <xs:enumeration value="isNameServerOf">
138
+ <xs:annotation>
139
+ <xs:documentation xml:lang="en">
140
+ isNameServerOf - Maps name server ip to domain.
141
+ </xs:documentation>
142
+ </xs:annotation>
143
+ </xs:enumeration>
144
+
145
+ <xs:enumeration value="resolvesTo">
146
+ <xs:annotation>
147
+ <xs:documentation xml:lang="en">
148
+ resolvesTo - Maps domain/url to ip address, could also use for ip address and asn.
149
+ </xs:documentation>
150
+ </xs:annotation>
151
+ </xs:enumeration>
152
+
153
+ <xs:enumeration value="verifiedBy">
154
+ <xs:annotation>
155
+ <xs:documentation xml:lang="en">
156
+ verifiedBy - Mapping from object information (e.g. url) to entity, with date indicating verified time.
157
+ </xs:documentation>
158
+ </xs:annotation>
159
+ </xs:enumeration>
160
+
161
+ <xs:enumeration value="isServerOfService">
162
+ <xs:annotation>
163
+ <xs:documentation xml:lang="en">
164
+ isServerOfService - Map from domain/ip to service object.
165
+ </xs:documentation>
166
+ </xs:annotation>
167
+ </xs:enumeration>
168
+
169
+ <xs:enumeration value="hasAssociatedConfiguration">
170
+ <xs:annotation>
171
+ <xs:documentation xml:lang="en">
172
+ hasAssociatedConfiguration - Map from file to associated registry information.
173
+ </xs:documentation>
174
+ </xs:annotation>
175
+ </xs:enumeration>
176
+
177
+ <xs:enumeration value="operatedByEntity">
178
+ <xs:annotation>
179
+ <xs:documentation xml:lang="en">
180
+ operatedByEntity - Map from object to operating entity.
181
+ </xs:documentation>
182
+ </xs:annotation>
183
+ </xs:enumeration>
184
+
185
+ <xs:enumeration value="downloadedFrom">
186
+ <xs:annotation>
187
+ <xs:documentation xml:lang="en">
188
+ downloadedFrom - Map from file to url.
189
+ </xs:documentation>
190
+ </xs:annotation>
191
+ </xs:enumeration>
192
+
193
+ <xs:enumeration value="contactedBy">
194
+ <xs:annotation>
195
+ <xs:documentation xml:lang="en">
196
+ contactedBy - Map from file to url.
197
+ </xs:documentation>
198
+ </xs:annotation>
199
+ </xs:enumeration>
200
+ <xs:enumeration value="partOfPackage"/>
201
+ <xs:enumeration value="sourcedFrom"/>
202
+ <xs:enumeration value="createdBy"/>
203
+ <xs:enumeration value="hasSignature"/>
204
+ <xs:enumeration value="hasTaggant"/>
205
+ </xs:restriction>
206
+ </xs:simpleType>
207
+
208
+
209
+
210
+
211
+ <!-- the types of classification -->
212
+ <!-- clean is normal program, dirty is malware/malicious. a file infected with a file infector would be dirty -->
213
+ <xs:simpleType name="ClassificationTypeEnum">
214
+ <xs:annotation>
215
+ <xs:documentation xml:lang="en">
216
+ Top level types of classification. This is a high level type, not to be confused with the detailed category.
217
+ </xs:documentation>
218
+ </xs:annotation>
219
+ <xs:restriction base="xs:string">
220
+ <xs:enumeration value="clean">
221
+ <xs:annotation>
222
+ <xs:documentation xml:lang="en">
223
+ clean - the object can be regarded as not malicious.
224
+ </xs:documentation>
225
+ </xs:annotation>
226
+ </xs:enumeration>
227
+ <xs:enumeration value="dirty">
228
+ <xs:annotation>
229
+ <xs:documentation xml:lang="en">
230
+ dirty - the object can be regarded as malicious.
231
+ </xs:documentation>
232
+ </xs:annotation>
233
+ </xs:enumeration>
234
+ <xs:enumeration value="unknown">
235
+ <xs:annotation>
236
+ <xs:documentation xml:lang="en">
237
+ unknown - the object classification type is unknown.
238
+ </xs:documentation>
239
+ </xs:annotation>
240
+ </xs:enumeration>
241
+ <xs:enumeration value="unwanted">
242
+ <xs:annotation>
243
+ <xs:documentation xml:lang="en">
244
+ unwanted - the object can be regarded as potentially unwanted. This is intended to cover the well known case of "potentially unwanted programs".
245
+ </xs:documentation>
246
+ </xs:annotation>
247
+ </xs:enumeration>
248
+ <xs:enumeration value="neutral">
249
+ <xs:annotation>
250
+ <xs:documentation xml:lang="en">
251
+ neutral - the object can be regarded as neutral, neither malicious nor legitimate.
252
+ </xs:documentation>
253
+ </xs:annotation>
254
+ </xs:enumeration>
255
+ </xs:restriction>
256
+ </xs:simpleType>
257
+
258
+
259
+ <xs:simpleType name="LocationTypeEnum">
260
+ <xs:annotation>
261
+ <xs:documentation xml:lang="en">
262
+ A list of the various ways that geographical location can be represented.
263
+ The elements correspond to various levels of granularity of geographical data.
264
+ </xs:documentation>
265
+ </xs:annotation>
266
+ <xs:restriction base="xs:string">
267
+ <xs:enumeration value="countryCodeISO3166-2"/>
268
+ <xs:enumeration value="countryCodeISO3166-3"/>
269
+ <xs:enumeration value="countryCodeFIPS"/>
270
+ <xs:enumeration value="city"/>
271
+ <xs:enumeration value="region"/>
272
+ <xs:enumeration value="isp"/>
273
+ </xs:restriction>
274
+ </xs:simpleType>
275
+
276
+
277
+ <xs:simpleType name="VolumeUnitsEnum">
278
+ <xs:annotation>
279
+ <xs:documentation xml:lang="en">
280
+ A list of the various units allowed to be used in volume tag in fieldDataEntry.
281
+ </xs:documentation>
282
+ </xs:annotation>
283
+ <xs:restriction base="xs:string">
284
+ <xs:enumeration value="numberUsersAffected">
285
+ <xs:annotation>
286
+ <xs:documentation xml:lang="en">
287
+ numberUsersAffected - The count of users (humans) affected by the items referenced by the field data entry.
288
+ </xs:documentation>
289
+ </xs:annotation>
290
+ </xs:enumeration>
291
+ <xs:enumeration value="numberMachinesAffected">
292
+ <xs:annotation>
293
+ <xs:documentation xml:lang="en">
294
+ numberMachinesAffected - The count of computers affected by the items referenced by the field data entry.
295
+ </xs:documentation>
296
+ </xs:annotation>
297
+ </xs:enumeration>
298
+ <xs:enumeration value="numberSeenInSpam">
299
+ <xs:annotation>
300
+ <xs:documentation xml:lang="en">
301
+ numberSeenInSpam - The count of spam messages containing the items referenced by the field data entry. Most commonly used for uris.
302
+ </xs:documentation>
303
+ </xs:annotation>
304
+ </xs:enumeration>
305
+ <xs:enumeration value="numberSeenInMalwareSamples">
306
+ <xs:annotation>
307
+ <xs:documentation xml:lang="en">
308
+ numberSeenInMalwareSamples - The count of malware samples containing the items referenced by the field data entry. Most commonly used for uris.
309
+ </xs:documentation>
310
+ </xs:annotation>
311
+ </xs:enumeration>
312
+ <xs:enumeration value="numberOfWebsitesHosting">
313
+ <xs:annotation>
314
+ <xs:documentation xml:lang="en">
315
+ numberOfWebsitesHosting - The count of web sites hosting the items referenced by the field data entry. Most commonly used for uris.
316
+ </xs:documentation>
317
+ </xs:annotation>
318
+ </xs:enumeration>
319
+ <xs:enumeration value="numberOfWebsitesRedirecting">
320
+ <xs:annotation>
321
+ <xs:documentation xml:lang="en">
322
+ numberOfWebsitesRedirecting - The count of web sites redirecting the items referenced by the field data entry. Most commonly used for uris.
323
+ </xs:documentation>
324
+ </xs:annotation>
325
+ </xs:enumeration>
326
+ </xs:restriction>
327
+ </xs:simpleType>
328
+
329
+ <!-- types of ip addresses -->
330
+ <xs:simpleType name="IPTypeEnum">
331
+ <xs:annotation>
332
+ <xs:documentation xml:lang="en">
333
+ Types of IP addresses
334
+ </xs:documentation>
335
+ </xs:annotation>
336
+ <xs:restriction base="xs:string">
337
+ <xs:enumeration value="ipv4"/>
338
+ <xs:enumeration value="ipv6"/>
339
+ </xs:restriction>
340
+ </xs:simpleType>
341
+
342
+ <!-- regions -->
343
+ <xs:simpleType name="RegionTypeEnum">
344
+ <xs:annotation>
345
+ <xs:documentation xml:lang="en">
346
+ A list of regions, currently not used, but encouraged as values for 'region' when describing location.
347
+ </xs:documentation>
348
+ </xs:annotation>
349
+ <xs:restriction base="xs:string">
350
+ <xs:enumeration value="NorthAmerica"/>
351
+ <xs:enumeration value="SouthAmerica"/>
352
+ <xs:enumeration value="CentralAmerica"/>
353
+ <xs:enumeration value="Europe"/>
354
+ <xs:enumeration value="Africa"/>
355
+ <xs:enumeration value="APAC"/>
356
+ </xs:restriction>
357
+ </xs:simpleType>
358
+
359
+ <!-- user/desktop/network/gateway/isp/honeypot/collection/spam/web/internal -->
360
+ <xs:simpleType name="OriginTypeEnum">
361
+ <xs:annotation>
362
+ <xs:documentation xml:lang="en">
363
+ A list of origins, used in fieldData, to show where objects originated.
364
+ </xs:documentation>
365
+ </xs:annotation>
366
+ <xs:restriction base="xs:string">
367
+
368
+ <xs:enumeration value="user">
369
+ <xs:annotation>
370
+ <xs:documentation xml:lang="en">
371
+ user - Data originated from a user, normally meaning manual submissions from a user.
372
+ </xs:documentation>
373
+ </xs:annotation>
374
+ </xs:enumeration>
375
+
376
+ <xs:enumeration value="desktop">
377
+ <xs:annotation>
378
+ <xs:documentation xml:lang="en">
379
+ desktop - Data originated from a computer, normally meaning automated submissions from a product running on a users computer.
380
+ </xs:documentation>
381
+ </xs:annotation>
382
+ </xs:enumeration>
383
+
384
+ <xs:enumeration value="lan">
385
+ <xs:annotation>
386
+ <xs:documentation xml:lang="en">
387
+ network - Data originated from a local network.
388
+ </xs:documentation>
389
+ </xs:annotation>
390
+ </xs:enumeration>
391
+
392
+ <xs:enumeration value="gateway">
393
+ <xs:annotation>
394
+ <xs:documentation xml:lang="en">
395
+ gateway - Data originated from measurements at a gateway.
396
+ </xs:documentation>
397
+ </xs:annotation>
398
+ </xs:enumeration>
399
+
400
+ <xs:enumeration value="isp">
401
+ <xs:annotation>
402
+ <xs:documentation xml:lang="en">
403
+ isp - Data originated from measurements at an ISP.
404
+ </xs:documentation>
405
+ </xs:annotation>
406
+ </xs:enumeration>
407
+
408
+ <xs:enumeration value="honeypot">
409
+ <xs:annotation>
410
+ <xs:documentation xml:lang="en">
411
+ honeypot - Data originated from internally gathered data using a honeypot or other collection device.
412
+ </xs:documentation>
413
+ </xs:annotation>
414
+ </xs:enumeration>
415
+
416
+ <xs:enumeration value="collection">
417
+ <xs:annotation>
418
+ <xs:documentation xml:lang="en">
419
+ collection - Data from a malware collection.
420
+ </xs:documentation>
421
+ </xs:annotation>
422
+ </xs:enumeration>
423
+
424
+ <xs:enumeration value="spam">
425
+ <xs:annotation>
426
+ <xs:documentation xml:lang="en">
427
+ spam - Data originated from spam (e.g. spam Email had a link to malware or the malware itself).
428
+ </xs:documentation>
429
+ </xs:annotation>
430
+ </xs:enumeration>
431
+
432
+ <xs:enumeration value="wan">
433
+ <xs:annotation>
434
+ <xs:documentation xml:lang="en">
435
+ web - Data originated from the Internet.
436
+ </xs:documentation>
437
+ </xs:annotation>
438
+ </xs:enumeration>
439
+
440
+ <xs:enumeration value="internal">
441
+ <xs:annotation>
442
+ <xs:documentation xml:lang="en">
443
+ internal - Internally generated object (e.g. replicants of a polymorphic malware) .
444
+ </xs:documentation>
445
+ </xs:annotation>
446
+ </xs:enumeration>
447
+
448
+ <xs:enumeration value="partner">
449
+ <xs:annotation>
450
+ <xs:documentation xml:lang="en">
451
+ partner - Data originated from a partner.
452
+ </xs:documentation>
453
+ </xs:annotation>
454
+ </xs:enumeration>
455
+
456
+ <xs:enumeration value="unknown">
457
+ <xs:annotation>
458
+ <xs:documentation xml:lang="en">
459
+ unknown - unknown.
460
+ </xs:documentation>
461
+ </xs:annotation>
462
+ </xs:enumeration>
463
+
464
+ </xs:restriction>
465
+ </xs:simpleType>
466
+
467
+ <!-- property type enum -->
468
+ <xs:simpleType name="PropertyTypeEnum">
469
+ <xs:annotation>
470
+ <xs:documentation xml:lang="en">
471
+ Property types allowed in an objectProperty.
472
+ </xs:documentation>
473
+ </xs:annotation>
474
+ <xs:restriction base="xs:string">
475
+ <!-- file related -->
476
+
477
+ <xs:enumeration value="filename">
478
+ <xs:annotation>
479
+ <xs:documentation xml:lang="en">
480
+ filename - names of files, normally associated with file objects.
481
+ </xs:documentation>
482
+ </xs:annotation>
483
+ </xs:enumeration>
484
+ <xs:enumeration value="filepath">
485
+ <xs:annotation>
486
+ <xs:documentation xml:lang="en">
487
+ filepath - directory path of files, normally associated with file objects.
488
+ </xs:documentation>
489
+ </xs:annotation>
490
+ </xs:enumeration>
491
+ <xs:enumeration value="locationUrl">
492
+ <xs:annotation>
493
+ <xs:documentation xml:lang="en">
494
+ locationUrl - a url at which the file sample can be retrieved, associated with file objects.
495
+ </xs:documentation>
496
+ </xs:annotation>
497
+ </xs:enumeration>
498
+
499
+ <!-- file related properties that used to be in category -->
500
+ <xs:enumeration value="isKernel">
501
+ <xs:annotation>
502
+ <xs:documentation xml:lang="en">
503
+ isKernel - true/false if the malware has a kernel component. This can be applied either to a classification
504
+ or to a file object.
505
+ </xs:documentation>
506
+ </xs:annotation>
507
+ </xs:enumeration>
508
+ <xs:enumeration value="isParasitic">
509
+ <xs:annotation>
510
+ <xs:documentation xml:lang="en">
511
+ isParasitic - true/false if the malware infects other files by attaching to them (if it also replicates then it is a parasitic virus). This can be applied
512
+ either to a classification or to a file object.
513
+ </xs:documentation>
514
+ </xs:annotation>
515
+ </xs:enumeration>
516
+ <xs:enumeration value="isStealth">
517
+ <xs:annotation>
518
+ <xs:documentation xml:lang="en">
519
+ isStealth - true/false if the malware uses rootkit style techniques to hide from users or security software. This can be applied
520
+ either to a classification or to a file object.
521
+ </xs:documentation>
522
+ </xs:annotation>
523
+ </xs:enumeration>
524
+ <xs:enumeration value="isPolymorphic">
525
+ <xs:annotation>
526
+ <xs:documentation xml:lang="en">
527
+ isPolymorphic - true/false if the malware is polymorphic, changing its appearance either through replication or server-side techniques.
528
+ This can be applied either to a classification or to a file object.
529
+ </xs:documentation>
530
+ </xs:annotation>
531
+ </xs:enumeration>
532
+ <xs:enumeration value="isVirus">
533
+ <xs:annotation>
534
+ <xs:documentation xml:lang="en">
535
+ isVirus - true/false if the malware is a virus (replicates and propagates recursively). This can be applied either to a classification or to a file object.
536
+ </xs:documentation>
537
+ </xs:annotation>
538
+ </xs:enumeration>
539
+ <xs:enumeration value="isNonReplicating">
540
+ <xs:annotation>
541
+ <xs:documentation xml:lang="en">
542
+ isNonReplicating - true/false if the malware is non replicating. This can be applied either to a classification or to a file object.
543
+ </xs:documentation>
544
+ </xs:annotation>
545
+ </xs:enumeration>
546
+ <xs:enumeration value="isDamaged">
547
+ <xs:annotation>
548
+ <xs:documentation xml:lang="en">
549
+ isDamaged - true/false if the malware sample is damaged. This can be applied to a file object.
550
+ </xs:documentation>
551
+ </xs:annotation>
552
+ </xs:enumeration>
553
+
554
+
555
+
556
+ <!-- registry related -->
557
+ <xs:enumeration value="registryValueData">
558
+ <xs:annotation>
559
+ <xs:documentation xml:lang="en">
560
+ registryValueData - data from the registry from Microsoft operating systems. This is normally applied to a registry object.
561
+ It could also be applied to a relationship between a malware sample (file object) and a registry object, to indicate the data
562
+ that was written by the malware.
563
+ </xs:documentation>
564
+ </xs:annotation>
565
+ </xs:enumeration>
566
+
567
+ <!-- url related -->
568
+ <xs:enumeration value="urlParameterString">
569
+ <xs:annotation>
570
+ <xs:documentation xml:lang="en">
571
+ urlParameterString - parameter string information associated with a GET http request. This is normally applied to a uri object.
572
+ It could also be applied to a relationship between a malware sample (file object) and a uri object, indicating the parameters
573
+ associated with the communication.
574
+ </xs:documentation>
575
+ </xs:annotation>
576
+ </xs:enumeration>
577
+ <xs:enumeration value="postData">
578
+ <xs:annotation>
579
+ <xs:documentation xml:lang="en">
580
+ postData - parameter information associated with a POST http request. This is normally applied to a relationship between a
581
+ malware sample (file object) and a uri object, indicating the data sent with the communication.
582
+ </xs:documentation>
583
+ </xs:annotation>
584
+ </xs:enumeration>
585
+
586
+ <!-- domain related -->
587
+ <xs:enumeration value="registrant">
588
+ <xs:annotation>
589
+ <xs:documentation xml:lang="en">
590
+ registrant - the registrant of a domain name, used for domain objects.
591
+ </xs:documentation>
592
+ </xs:annotation>
593
+ </xs:enumeration>
594
+ <xs:enumeration value="registrationDate">
595
+ <xs:annotation>
596
+ <xs:documentation xml:lang="en">
597
+ registrationDate - the registration date of a domain name, used for domain objects.
598
+ </xs:documentation>
599
+ </xs:annotation>
600
+ </xs:enumeration>
601
+ <xs:enumeration value="ownerAddress">
602
+ <xs:annotation>
603
+ <xs:documentation xml:lang="en">
604
+ ownerAddress - the address associated with the owner of a domain name, used for domain objects.
605
+ </xs:documentation>
606
+ </xs:annotation>
607
+ </xs:enumeration>
608
+ <xs:enumeration value="adminContact">
609
+ <xs:annotation>
610
+ <xs:documentation xml:lang="en">
611
+ adminContact - the administrative contact address associated with a domain name, used for domain objects.
612
+ </xs:documentation>
613
+ </xs:annotation>
614
+ </xs:enumeration>
615
+ <xs:enumeration value="technicalContact">
616
+ <xs:annotation>
617
+ <xs:documentation xml:lang="en">
618
+ technicalContact - the technical contact address associated with a domain name, used for domain objects.
619
+ </xs:documentation>
620
+ </xs:annotation>
621
+ </xs:enumeration>
622
+ <xs:enumeration value="nameServer">
623
+ <xs:annotation>
624
+ <xs:documentation xml:lang="en">
625
+ nameServer - the name server associated with a domain name, used for domain objects.
626
+ </xs:documentation>
627
+ </xs:annotation>
628
+ </xs:enumeration>
629
+
630
+ <!-- ip related -->
631
+ <xs:enumeration value="countryCodeISO3166-2">
632
+ <xs:annotation>
633
+ <xs:documentation xml:lang="en">
634
+ countryCodeISO3166-2 - the ISO3166-2 code for country, usually associated with an ip address object,
635
+ e.g. the country where that IP address is hosted.
636
+ </xs:documentation>
637
+ </xs:annotation>
638
+ </xs:enumeration>
639
+ <xs:enumeration value="countryCodeISO3166-3">
640
+ <xs:annotation>
641
+ <xs:documentation xml:lang="en">
642
+ countryCodeISO3166-3 - the ISO3166-3 code for country, usually associated with an ip address object.
643
+ e.g. the country where that IP address is hosted.
644
+ </xs:documentation>
645
+ </xs:annotation>
646
+ </xs:enumeration>
647
+ <xs:enumeration value="countryCodeFIPS">
648
+ <xs:annotation>
649
+ <xs:documentation xml:lang="en">
650
+ countryCodeFIPS - theFIPS code for country, usually associated with an ip address object.
651
+ e.g. the country where that IP address is hosted.
652
+ </xs:documentation>
653
+ </xs:annotation>
654
+ </xs:enumeration>
655
+ <xs:enumeration value="city">
656
+ <xs:annotation>
657
+ <xs:documentation xml:lang="en">
658
+ city - the name of a city, usually associated with an ip address object, e.g. the city in which that IP address is hosted.
659
+ </xs:documentation>
660
+ </xs:annotation>
661
+ </xs:enumeration>
662
+ <xs:enumeration value="region">
663
+ <xs:annotation>
664
+ <xs:documentation xml:lang="en">
665
+ region - the name of a region, usually associated with an ip address object, e.g. the region in which that IP address is hosted.
666
+ </xs:documentation>
667
+ </xs:annotation>
668
+ </xs:enumeration>
669
+ <xs:enumeration value="isp">
670
+ <xs:annotation>
671
+ <xs:documentation xml:lang="en">
672
+ isp - the name of a Internet Service Provider, usually associated with an ip address object,
673
+ e.g. the isp that hosts the IP address.
674
+ </xs:documentation>
675
+ </xs:annotation>
676
+ </xs:enumeration>
677
+
678
+ <!-- other -->
679
+ <xs:enumeration value="httpMethod">
680
+ <xs:annotation>
681
+ <xs:documentation xml:lang="en">
682
+ httpMethod - the http method (e.g. GET/POST/etc.) associated with an http request. This is usually associated with a
683
+ relationship between malware (file object), and a uri (uri object), to indicate the type of http request made.
684
+ </xs:documentation>
685
+ </xs:annotation>
686
+ </xs:enumeration>
687
+
688
+ <!-- -->
689
+ <xs:enumeration value="referrer">
690
+ <xs:annotation>
691
+ <xs:documentation xml:lang="en">
692
+ referrer - the referrer uri, used when accessing a uri, associated with a uri object, or applied to a relationship between an
693
+ entity and a uri, for the user agent used when that entity visited that uri.
694
+ </xs:documentation>
695
+ </xs:annotation>
696
+ </xs:enumeration>
697
+ <xs:enumeration value="operatingSystem">
698
+ <xs:annotation>
699
+ <xs:documentation xml:lang="en">
700
+ operatingSystem - environmental information of the operating system used. Normally used as a property of a relationship
701
+ between malware (file object) and some other object.
702
+ </xs:documentation>
703
+ </xs:annotation>
704
+ </xs:enumeration>
705
+ <xs:enumeration value="userAgent">
706
+ <xs:annotation>
707
+ <xs:documentation xml:lang="en">
708
+ userAgent - User agent used when accessing a uri, associated with a uri object, or applied to a relationship between an
709
+ entity and a uri, for the user agent used when that entity visited that uri.
710
+ </xs:documentation>
711
+ </xs:annotation>
712
+ </xs:enumeration>
713
+ <xs:enumeration value="browser">
714
+ <xs:annotation>
715
+ <xs:documentation xml:lang="en">
716
+ browser - browser used when accessing a uri, associated with a uri object, or applied to a relationship between an
717
+ entity and a uri, for the browser used when that entity visited that uri
718
+ </xs:documentation>
719
+ </xs:annotation>
720
+ </xs:enumeration>
721
+
722
+ <!-- a comment field -->
723
+ <xs:enumeration value="comment">
724
+ <xs:annotation>
725
+ <xs:documentation xml:lang="en">
726
+ comment - a human readable comment that can be applied to any object or relationship.
727
+ </xs:documentation>
728
+ </xs:annotation>
729
+ </xs:enumeration>
730
+ </xs:restriction>
731
+ </xs:simpleType>
732
+
733
+
734
+
735
+ <!-- The root element and basic structure -->
736
+ <xs:element name="malwareMetaData">
737
+ <xs:annotation>
738
+ <xs:documentation xml:lang="en">
739
+
740
+ This is the top level element for the xml document. Required attribute is version.
741
+
742
+ Open issues:
743
+
744
+
745
+ 2. Right way to express commonality in field data so that it can be combined properly
746
+
747
+ 3. How to handle unicode in urls
748
+
749
+
750
+ Change list
751
+
752
+ 08/26/2011
753
+ Clean-file attribute based changes
754
+
755
+ 1. added digitalSignature to objects
756
+ 2. added softwarePackage to objects
757
+ 3. added taggant to objects
758
+ 4. added numerous elements to fileObject
759
+
760
+ 11/12/2009
761
+
762
+ 1. adding documentation across the schema
763
+ 2. added partner to OriginTypeEnum
764
+ 3. made sha1 in fileObject optional
765
+ 4. added isDamaged as a propertyType
766
+ 5. changed property name isNon-replicating to isNonReplicating
767
+
768
+ 6/11/2009
769
+
770
+ 1. incremented version
771
+ 2.Rename parents/children in relationship to source/target
772
+ 3. Add generic relationship, ‘relatedTo’
773
+ 4. Make commonality element in fieldDataEntry optional
774
+ 5. Add unknown element to origintypeenum
775
+ 6. Remove ipv4 and ipv6 from locationenum
776
+ 7. Make id on ip object startaddress-endaddress even if startaddress == endaddress. Added IPRange type
777
+ 8. Add optional firstSeenDate to fieldDataEntry, for first time entity providing data saw the object
778
+
779
+
780
+ 6/4/2009
781
+
782
+ 1. File - id should be a xs:hexBinary
783
+ 2. File - extraHash should be a xs:string
784
+ 3. Uri – add optional ipProtocol field, with enumeration of values tcp/udp/icmp etc.
785
+ 4. Uri – add documentation that protocol in uri needs to be either from well known list (from iana.org) or ‘unknown’
786
+ 5. Domain - need to fix documentation for domain – example is wrong
787
+ 6. registry – remove valuedata – it is in a property
788
+ 7. ip object – rename to ip, and give it a start address and end address. Share a single address by making start and end the same. Id will be address or startaddress-endaddress
789
+ 8. service – delete – subsumed by uri with extra data elements in it
790
+ 9. classification – remove modifiers (attributes) on category and put in properties
791
+ 10. classification – add documentation that category is companyname:category
792
+ 11. objectProperty – move timestamp to be top level instead of on each property and make it required
793
+ 12. relationship – make timestamp required
794
+ 13. relationship – add doc on runs. removed 'exploits' - it refers to environment object that no longer exists
795
+ 14. added comment field to propertyenum
796
+ 15. made timeStamp -&gt; timestamp for consistency
797
+ 16.incremented version
798
+
799
+ 5/31/2009
800
+
801
+ 1. incremented version
802
+ 2. changed url to uri
803
+ 3. removed environment object and related enumerations
804
+ 4. added restriction on uri to not allow a question mark (?)
805
+
806
+
807
+ 5/15/2009
808
+
809
+ 1. incremented version
810
+ 2. Added neutral classification type
811
+ 3. Added numberOfWebsitesHosting and numberOfWebsitesRedirecting to volume units enumeration
812
+ 4. added referrer, operatingSystem, userAgent and browser to properties
813
+ 5. made classification type attribute required
814
+
815
+ 5/8/2009
816
+
817
+ 1. added new object type for asn
818
+ 2. moved domain information to properties, so that domains info can be timestamped
819
+ 3. added properties for geolocation of an ip address
820
+ 4. added property for location url for a file
821
+ 5. added VolumeUnitsEnum and volume tag in fieldData. This is to allow sharing of actual prevalence numbers,
822
+ with various units.
823
+ 6. Added ipProtocol (tcp/udp) to service object. Also changed names of expectedProtocol and actualProtocol to be
824
+ expectedApplicationProtocol and actualApplicationProtocol
825
+ 7. added 'references' surrounding tag to ref tag in fieldDataEntry and objectProperty, so that can assign multiple references if required
826
+ 8. made id on file back to hexBinary. Use length to figure out what hash it is.
827
+ 9. incremented version
828
+ 10. added properties for httpMethod and postData
829
+ 11. added relationship types 'contactedBy' and 'downloadedFrom'
830
+
831
+
832
+ 4/17/2009
833
+
834
+ 1. Incremented version
835
+ 2. Added unwanted to ClassificationTypeEnum
836
+ 3. Added text about ids for files to documentation
837
+ 4. Removed filename from file object definition
838
+ 5. Relaxed requirement on id of file to be an xs:hexString to be an xs:string to allow e.g. md5:aaaaabbbbccc as an id. Not enormously happy about that…
839
+ 6. Made sha256 optional and sha1 required in files
840
+ 7. Added “open issues” section in documentation for top level element
841
+ 8. Category is now an xs:string; deleted CategoryTypeEnum
842
+ 9. Added comment to doc on fieldDataEntry about using standard time periods, but kept start date and end date
843
+ 10. Added objectProperties element, and example illustratingProperties.xml. Currently allowed properties are filename, filepath, registryValueData and urlParameterString. There is an optional timestamp on each property. I allowed objectProperty to have an id, so that it can be referenced elsewhere, although we might want to re-think that.
844
+ 11. Added some better documentation to relationships
845
+ 12. Added more documentation throughout
846
+
847
+
848
+ </xs:documentation>
849
+ </xs:annotation>
850
+ <xs:complexType>
851
+ <xs:sequence>
852
+ <xs:element name="company" type="xs:string">
853
+ <xs:annotation>
854
+ <xs:documentation xml:lang="en">
855
+ The company name for the entity generating the xml document, for example "AVG Technologies".
856
+ </xs:documentation>
857
+ </xs:annotation>
858
+ </xs:element>
859
+ <xs:element name="author" type="xs:string">
860
+ <xs:annotation>
861
+ <xs:documentation xml:lang="en">
862
+ The author of the document, for example "Matt Williamson" or "Igor Muttik".
863
+ </xs:documentation>
864
+ </xs:annotation>
865
+ </xs:element>
866
+ <xs:element name="comment" type="xs:string">
867
+ <xs:annotation>
868
+ <xs:documentation xml:lang="en">
869
+ A human readable comment.
870
+ </xs:documentation>
871
+ </xs:annotation>
872
+ </xs:element>
873
+ <xs:element name="timestamp" type="xs:dateTime">
874
+ <xs:annotation>
875
+ <xs:documentation xml:lang="en">
876
+ The time that the document was created.
877
+ </xs:documentation>
878
+ </xs:annotation>
879
+ </xs:element>
880
+
881
+ <!-- objects is optional and contains and unbounded number of 'object' elements -->
882
+ <xs:element name="objects" minOccurs="0">
883
+ <xs:annotation>
884
+ <xs:documentation xml:lang="en">
885
+ Objects are globally unique files, urls, domain, registry, ipAddress etc. The data within the object is supporting data for the globally unique object.
886
+ For example, files have an id (by convention the hash, sha256 if available, else weaker ones), and the data for the file is the hashes, sizes etc.
887
+ Urls have an id (the url itself), and data which is simply the url parts broken out.
888
+ There are no dates, etc in the objects. These are first class, global objects.
889
+ </xs:documentation>
890
+ </xs:annotation>
891
+ <xs:complexType>
892
+ <xs:sequence>
893
+ <xs:element name="file" type="fileObject" minOccurs="0" maxOccurs="unbounded">
894
+ <xs:annotation>
895
+ <xs:documentation xml:lang="en">
896
+ Files or samples
897
+ </xs:documentation>
898
+ </xs:annotation>
899
+ </xs:element>
900
+ <xs:element name="uri" type="uriObject" minOccurs="0" maxOccurs="unbounded">
901
+ <xs:annotation>
902
+ <xs:documentation xml:lang="en">
903
+ URI (Uniform Resource Identifier) objects.
904
+ </xs:documentation>
905
+ </xs:annotation>
906
+ </xs:element>
907
+ <xs:element name="domain" type="domainObject" minOccurs="0" maxOccurs="unbounded">
908
+ <xs:annotation>
909
+ <xs:documentation xml:lang="en">
910
+ Domain names as administered by ICANN.
911
+ </xs:documentation>
912
+ </xs:annotation>
913
+ </xs:element>
914
+ <xs:element name="registry" type="registryObject" minOccurs="0" maxOccurs="unbounded">
915
+ <xs:annotation>
916
+ <xs:documentation xml:lang="en">
917
+ Configuration information from the registry on Microsoft Windows operating systems.
918
+ </xs:documentation>
919
+ </xs:annotation>
920
+ </xs:element>
921
+ <xs:element name="ip" type="IPObject" minOccurs="0" maxOccurs="unbounded">
922
+ <xs:annotation>
923
+ <xs:documentation xml:lang="en">
924
+ Internet Protocol (IP) addresses, both ipv4 and ipv6.
925
+ </xs:documentation>
926
+ </xs:annotation>
927
+ </xs:element>
928
+ <xs:element name="asn" type="ASNObject" minOccurs="0" maxOccurs="unbounded">
929
+ <xs:annotation>
930
+ <xs:documentation xml:lang="en">
931
+ Autonomous System (AS).
932
+ </xs:documentation>
933
+ </xs:annotation>
934
+ </xs:element>
935
+ <xs:element name="entity" type="entityObject" minOccurs="0" maxOccurs="unbounded">
936
+ <xs:annotation>
937
+ <xs:documentation xml:lang="en">
938
+ A corporation or other entity.
939
+ </xs:documentation>
940
+ </xs:annotation>
941
+ </xs:element>
942
+ <xs:element name="classification" type="classificationObject" minOccurs="0"
943
+ maxOccurs="unbounded">
944
+ <xs:annotation>
945
+ <xs:documentation xml:lang="en">
946
+ Labels or names, for example detection names associated with malware samples.
947
+ </xs:documentation>
948
+ </xs:annotation>
949
+ </xs:element>
950
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="softwarePackage"
951
+ type="softwarePackageObject">
952
+ <xs:annotation>
953
+ <xs:documentation>Software packages, typically used for associating with the files that they install or create.</xs:documentation>
954
+ </xs:annotation>
955
+ </xs:element>
956
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="digitalSignature"
957
+ type="digitalSignatureObject">
958
+ <xs:annotation>
959
+ <xs:documentation>Digital signatures, for use in assocating with &gt;1 binaries that may have the same signature. If only one binary with a signature is wished to be profiled, then the digitalSignature element inside the fileObject should be utilized.</xs:documentation>
960
+ </xs:annotation>
961
+ </xs:element>
962
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="taggant" type="taggantObject">
963
+ <xs:annotation>
964
+ <xs:documentation>Digital signatures, for use in assocating with &gt;1 binaries that may have the same signature. If only one binary with a taggant is wished to be profiled, then the taggant element inside the fileObject should be utilized.</xs:documentation>
965
+ </xs:annotation>
966
+ </xs:element>
967
+ </xs:sequence>
968
+ </xs:complexType>
969
+ </xs:element>
970
+
971
+ <!-- properties are properties of objects that do not make sense as relationships, e.g. file names -->
972
+ <xs:element name="objectProperties" minOccurs="0">
973
+ <xs:annotation>
974
+ <xs:documentation xml:lang="en">
975
+ Properties of objects that do not make sense as relationships. e.g. file names, url parameter strings, registry value data.
976
+ </xs:documentation>
977
+ </xs:annotation>
978
+ <xs:complexType>
979
+ <xs:sequence>
980
+ <xs:element name="objectProperty" type="objectProperty" maxOccurs="unbounded"/>
981
+ </xs:sequence>
982
+ </xs:complexType>
983
+ </xs:element>
984
+
985
+ <!-- relationships contain an unbounded number of relationship elements -->
986
+ <xs:element name="relationships" minOccurs="0">
987
+ <xs:annotation>
988
+ <xs:documentation xml:lang="en">
989
+ Relationships between objects.
990
+ </xs:documentation>
991
+ </xs:annotation>
992
+ <xs:complexType>
993
+ <xs:sequence>
994
+ <xs:element name="relationship" type="relationship" maxOccurs="unbounded"/>
995
+ </xs:sequence>
996
+ </xs:complexType>
997
+ </xs:element>
998
+
999
+
1000
+
1001
+ <!-- fieldData is an unbounded number of fieldDataEntry elements -->
1002
+ <xs:element name="fieldData" minOccurs="0">
1003
+ <xs:annotation>
1004
+ <xs:documentation xml:lang="en">
1005
+ Prevalence data.
1006
+ </xs:documentation>
1007
+ </xs:annotation>
1008
+ <xs:complexType>
1009
+ <xs:sequence>
1010
+ <xs:element name="fieldDataEntry" type="fieldDataEntry" maxOccurs="unbounded"/>
1011
+ </xs:sequence>
1012
+ </xs:complexType>
1013
+ </xs:element>
1014
+ </xs:sequence>
1015
+ <!-- attributes on the top level element -->
1016
+ <xs:attribute use="required" name="version" type="xs:decimal" fixed="1.2">
1017
+ <xs:annotation>
1018
+ <xs:documentation xml:lang="en">
1019
+ The version of the schema. This is currently fixed to be 1.1.
1020
+ </xs:documentation>
1021
+ </xs:annotation>
1022
+ </xs:attribute>
1023
+ <!-- globally unique identifier for the file -->
1024
+ <xs:attribute use="required" name="id" type="xs:string">
1025
+ <xs:annotation>
1026
+ <xs:documentation xml:lang="en">
1027
+ A required identifier for the document.
1028
+ </xs:documentation>
1029
+ </xs:annotation>
1030
+ </xs:attribute>
1031
+ </xs:complexType>
1032
+ </xs:element>
1033
+
1034
+
1035
+
1036
+ <!-- definition of file -->
1037
+ <xs:complexType name="fileObject">
1038
+ <xs:annotation>
1039
+ <xs:documentation xml:lang="en">
1040
+ Object definition for files. The required attribute is the id, which needs to be globally unique.
1041
+ By convention, the value used is a hash, the stronger the better.
1042
+
1043
+ The choice should be: use sha256 if you have it, if not use sha1, if not use md5.
1044
+
1045
+ Other hashes and file sizes are recorded in the elements.
1046
+
1047
+ File names are put in as properties.
1048
+
1049
+ </xs:documentation>
1050
+ </xs:annotation>
1051
+ <xs:sequence>
1052
+ <xs:element name="md5" type="xs:hexBinary" minOccurs="1"/>
1053
+ <xs:element name="sha1" type="xs:hexBinary" minOccurs="0"/>
1054
+ <xs:element name="sha256" type="xs:hexBinary" minOccurs="0"/>
1055
+ <xs:element name="sha512" type="xs:hexBinary" minOccurs="0"/>
1056
+ <xs:element name="size" type="xs:int" minOccurs="0">
1057
+ <xs:annotation>
1058
+ <xs:documentation xml:lang="en">
1059
+ The file size in bytes.
1060
+ </xs:documentation>
1061
+ </xs:annotation>
1062
+ </xs:element>
1063
+ <xs:element name="crc32" type="xs:string" minOccurs="0"/>
1064
+ <xs:element name="fileType" type="xs:string" minOccurs="0" maxOccurs="unbounded">
1065
+ <xs:annotation>
1066
+ <xs:documentation xml:lang="en">
1067
+ String describing the type of file, for example executable, script etc.
1068
+ </xs:documentation>
1069
+ </xs:annotation>
1070
+ </xs:element>
1071
+ <xs:element name="extraHash" minOccurs="0" maxOccurs="unbounded">
1072
+ <xs:annotation>
1073
+ <xs:documentation xml:lang="en">
1074
+ Element for inserting fuzzy hashes for example pehash, ssdeep. These are put in with this element, with a required attribute 'type' used
1075
+ to hold the type of hash.
1076
+ </xs:documentation>
1077
+ </xs:annotation>
1078
+ <xs:complexType>
1079
+ <xs:simpleContent>
1080
+ <xs:extension base="xs:string">
1081
+ <xs:attribute name="type" use="required" type="xs:string"/>
1082
+ </xs:extension>
1083
+ </xs:simpleContent>
1084
+ </xs:complexType>
1085
+ </xs:element>
1086
+
1087
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="filename" type="xs:string"/>
1088
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="normalizedNativePath" type="xs:string">
1089
+ <xs:annotation>
1090
+ <xs:documentation>The normalized native path of the file, using standardized system path variables (for Windows see http://en.wikipedia.org/wiki/Environment_variable#System_path_variables) with prepended and appended percentage characters. E.g. %ProgramFiles%/Microsoft Visual Studio.</xs:documentation>
1091
+ </xs:annotation>
1092
+ </xs:element>
1093
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="filenameWithinInstaller" type="xs:string">
1094
+ <xs:annotation>
1095
+ <xs:documentation>The name of the file within an installer or archive.</xs:documentation>
1096
+ </xs:annotation>
1097
+ </xs:element>
1098
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="folderWithinInstaller" type="xs:string">
1099
+ <xs:annotation>
1100
+ <xs:documentation>The folder the file resides in within an installer or archive.</xs:documentation>
1101
+ </xs:annotation>
1102
+ </xs:element>
1103
+ <xs:element minOccurs="0" name="vendor" type="xs:string">
1104
+ <xs:annotation>
1105
+ <xs:documentation>The name of the vendor, if extractable from the file.</xs:documentation>
1106
+ </xs:annotation>
1107
+ </xs:element>
1108
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="internalName" type="xs:string">
1109
+ <xs:annotation>
1110
+ <xs:documentation>The internal name(s) of hte file, if applicable.</xs:documentation>
1111
+ </xs:annotation>
1112
+ </xs:element>
1113
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="language" type="xs:string">
1114
+ <xs:annotation>
1115
+ <xs:documentation>The language(s) the file is in.</xs:documentation>
1116
+ </xs:annotation>
1117
+ </xs:element>
1118
+ <xs:element maxOccurs="1" minOccurs="0" name="productName" type="xs:string">
1119
+ <xs:annotation>
1120
+ <xs:documentation>The name of the product the file belongs to, if applicable.</xs:documentation>
1121
+ </xs:annotation>
1122
+ </xs:element>
1123
+ <xs:element minOccurs="0" name="fileVersion" type="xs:string"/>
1124
+ <xs:element minOccurs="0" name="productVersion" type="xs:string">
1125
+ <xs:annotation>
1126
+ <xs:documentation>The version of the product the file belongs to, if applicable.</xs:documentation>
1127
+ </xs:annotation>
1128
+ </xs:element>
1129
+ <xs:element minOccurs="0" name="developmentEnvironment" type="xs:string">
1130
+ <xs:annotation>
1131
+ <xs:documentation>The development environment used to build the file, if applicable.</xs:documentation>
1132
+ </xs:annotation>
1133
+ </xs:element>
1134
+ <xs:element minOccurs="0" name="checksum" type="xs:hexBinary">
1135
+ <xs:annotation>
1136
+ <xs:documentation>The checksum of the file, if applicable.</xs:documentation>
1137
+ </xs:annotation>
1138
+ </xs:element>
1139
+ <xs:element minOccurs="0" name="architecture" type="xs:string">
1140
+ <xs:annotation>
1141
+ <xs:documentation>The processor architecture of the file, if applicable.</xs:documentation>
1142
+ </xs:annotation>
1143
+ </xs:element>
1144
+ <xs:element minOccurs="0" name="buildTimeDateStamp" type="xs:dateTime">
1145
+ <xs:annotation>
1146
+ <xs:documentation>The build timestamp of the file, if applicable.</xs:documentation>
1147
+ </xs:annotation>
1148
+ </xs:element>
1149
+ <xs:element minOccurs="0" name="compilerVersion" type="xs:string">
1150
+ <xs:annotation>
1151
+ <xs:documentation>The version of the compiler used to compile the file, if applicable.</xs:documentation>
1152
+ </xs:annotation>
1153
+ </xs:element>
1154
+ <xs:element minOccurs="0" name="linkerVersion" type="xs:float">
1155
+ <xs:annotation>
1156
+ <xs:documentation>The version of the linker used to link the file, if applicable.</xs:documentation>
1157
+ </xs:annotation>
1158
+ </xs:element>
1159
+ <xs:element minOccurs="0" name="minOSVersionCPE" type="xs:string">
1160
+ <xs:annotation>
1161
+ <xs:documentation>The minimum operating system version needed to run the file, specifeid as a CPE name. The Common Platform Enumeration, or CPE, name of the package if one exists. CPE is a structured naming scheme for IT systems, software, and packages. For more information on CPE see http://cpe.mitre.org. For the official CPE dictionary see http://nvd.nist.gov/cpe.cfm.</xs:documentation>
1162
+ </xs:annotation>
1163
+ </xs:element>
1164
+ <xs:element maxOccurs="1" minOccurs="0" name="numberOfSections" type="xs:int">
1165
+ <xs:annotation>
1166
+ <xs:documentation>The number of sections in the file, if applicable.</xs:documentation>
1167
+ </xs:annotation>
1168
+ </xs:element>
1169
+ <xs:element minOccurs="0" name="MIMEType" type="xs:string"/>
1170
+ <xs:element minOccurs="0" name="requiredPrivilege" type="xs:string">
1171
+ <xs:annotation>
1172
+ <xs:documentation>The minimum required to run the file, e.g. Administrator, if applicable.</xs:documentation>
1173
+ </xs:annotation>
1174
+ </xs:element>
1175
+ <xs:element minOccurs="0" name="digitalSignature" type="digitalSignatureObject">
1176
+ <xs:annotation>
1177
+ <xs:documentation>Information on the digital signature of the file, if applicable.</xs:documentation>
1178
+ </xs:annotation>
1179
+ </xs:element>
1180
+ <xs:element maxOccurs="1" minOccurs="0" name="taggant" type="taggantObject">
1181
+ <xs:annotation>
1182
+ <xs:documentation>Information on the taggant used to tag the file, if applicable.</xs:documentation>
1183
+ </xs:annotation>
1184
+ </xs:element>
1185
+ </xs:sequence>
1186
+ <xs:attribute name="id" use="required" type="xs:hexBinary"/>
1187
+ </xs:complexType>
1188
+
1189
+ <!-- definition of registry -->
1190
+ <xs:complexType name="registryObject">
1191
+ <xs:annotation>
1192
+ <xs:documentation xml:lang="en">
1193
+ Registry object. The required attribute is 'id', which is taken to be key\\valueName.
1194
+ Keys end in a \, value names start with a \, so you have e.g.
1195
+ key = hklm\software\microsoft\currentversion\windows\run\
1196
+ value =\foo
1197
+ making the id hklm\software\microsoft\currentversion\windows\run\\foo
1198
+ </xs:documentation>
1199
+ </xs:annotation>
1200
+ <xs:sequence>
1201
+ <xs:element name="key" type="xs:string"/>
1202
+ <xs:element name="valueName" type="xs:string" minOccurs="0"/>
1203
+ </xs:sequence>
1204
+ <xs:attribute name="id" use="required" type="xs:string"/>
1205
+ </xs:complexType>
1206
+
1207
+ <!-- definition of entity -->
1208
+ <xs:complexType name="entityObject">
1209
+ <xs:annotation>
1210
+ <xs:documentation xml:lang="en">
1211
+ Entity Object. This is used to record groups, companies etc., and departments within organizations.
1212
+ The globally unique id (attribute) should be constructed from the company and department name,
1213
+ e.g. "Company name:Department name", "Mcafee:AVERT labs", or "Russian Business Network".
1214
+ </xs:documentation>
1215
+ </xs:annotation>
1216
+ <xs:sequence>
1217
+ <xs:element name="name" type="xs:string"/>
1218
+ </xs:sequence>
1219
+ <xs:attribute name="id" use="required" type="xs:string"/>
1220
+ </xs:complexType>
1221
+
1222
+ <!-- definition of url -->
1223
+ <xs:complexType name="uriObject">
1224
+ <xs:annotation>
1225
+ <xs:documentation xml:lang="en">
1226
+ Uri object. Only required element is uri string itself. There are elements for each of the broken out elements.
1227
+ The protocol should be take from the list at http://www.iana.org/assignments/port-numbers, or if not in that list have the value 'unknown'.
1228
+ The ipProtocol should be taken from the list http://www.iana.org/assignments/protocol-numbers/.
1229
+
1230
+ The elements correspond to the usual breakdown of a uri into its component domain, hostname, path, port etc, as
1231
+ described at http://en.wikipedia.org/wiki/Uniform_Resource_Locator.
1232
+ </xs:documentation>
1233
+ </xs:annotation>
1234
+ <xs:sequence>
1235
+ <xs:element name="uriString" type="NoQuestionMark"/>
1236
+ <xs:element name="protocol" type="xs:string" minOccurs="0">
1237
+ <xs:annotation>
1238
+ <xs:documentation xml:lang="en">
1239
+ Protocol, for example http, ftp. value must match an element in the list hosted at http://www.iana.org/assignments/port-numbers.
1240
+ </xs:documentation>
1241
+ </xs:annotation>
1242
+ </xs:element>
1243
+ <xs:element name="hostname" type="xs:string" minOccurs="0"/>
1244
+ <xs:element name="domain" type="xs:string" minOccurs="0"/>
1245
+ <xs:element name="port" type="xs:int" minOccurs="0"/>
1246
+ <xs:element name="path" type="xs:string" minOccurs="0"/>
1247
+ <xs:element name="ipProtocol" type="xs:string" minOccurs="0">
1248
+ <xs:annotation>
1249
+ <xs:documentation xml:lang="en">
1250
+ IP protocol, for example. tcp, udp. value must match an element in the list hosted at http://www.iana.org/assignments/protocol-numbers/.
1251
+ </xs:documentation>
1252
+ </xs:annotation>
1253
+ </xs:element>
1254
+ </xs:sequence>
1255
+ <xs:attribute name="id" use="required" type="NoQuestionMark"/>
1256
+ </xs:complexType>
1257
+
1258
+
1259
+ <!-- definition of ip address -->
1260
+ <xs:complexType name="IPObject">
1261
+ <xs:annotation>
1262
+ <xs:documentation xml:lang="en">
1263
+ IP object. Used to hold ipv4, ipv6 ip addresses and address ranges. The globally unique id is 'startAddress-endAddress'.
1264
+
1265
+ There are two required elements, startAddress and endAddress, make these the same if you are
1266
+ specifying a single address.
1267
+
1268
+ Thus for ip range id, would be e.g. 213.23.45.7-213.23.45.19
1269
+ For a single ip, id would be e.g. 12.34.56.1-12.34.56.1
1270
+
1271
+ </xs:documentation>
1272
+ </xs:annotation>
1273
+ <xs:sequence>
1274
+ <xs:element name="startAddress" type="IPAddress"/>
1275
+ <xs:element name="endAddress" type="IPAddress"/>
1276
+ </xs:sequence>
1277
+ <xs:attribute name="id" use="required" type="IPRange"/>
1278
+ </xs:complexType>
1279
+
1280
+ <!-- definition of IPAddress -->
1281
+ <xs:complexType name="IPAddress">
1282
+ <xs:annotation>
1283
+ <xs:documentation xml:lang="en">
1284
+ ip address - string for the actual address and attribute either ipv4, ipv6.
1285
+ </xs:documentation>
1286
+ </xs:annotation>
1287
+ <xs:simpleContent>
1288
+ <xs:extension base="xs:string">
1289
+ <xs:attribute name="type" type="IPTypeEnum" use="required"/>
1290
+ </xs:extension>
1291
+ </xs:simpleContent>
1292
+ </xs:complexType>
1293
+
1294
+ <!-- definition of domain -->
1295
+ <xs:complexType name="domainObject">
1296
+ <xs:annotation>
1297
+ <xs:documentation xml:lang="en">
1298
+ Domain object, used to hold internet domains, e.g.yahoo.com. The globally unique identifier (id attribute) is the domain itself.
1299
+ whois information on domain is recorded using object properties.
1300
+ </xs:documentation>
1301
+ </xs:annotation>
1302
+ <xs:sequence>
1303
+ <xs:element name="domain" type="xs:string"/>
1304
+ </xs:sequence>
1305
+ <xs:attribute name="id" use="required" type="xs:string"/>
1306
+ </xs:complexType>
1307
+
1308
+ <!-- defintion of asn -->
1309
+ <xs:complexType name="ASNObject">
1310
+ <xs:annotation>
1311
+ <xs:documentation xml:lang="en">
1312
+ Object used to hold information on Autonomous System Numbers. An autonomous system (AS) is a collection of connected
1313
+ Internet Protocol (IP) routing prefixes under the control of one or more network operators that presents a common,
1314
+ clearly defined routing policy to the Internet.
1315
+
1316
+ The id is the number, written as an integer for both 16 and 32 bit numbers.
1317
+ </xs:documentation>
1318
+ </xs:annotation>
1319
+ <xs:sequence>
1320
+ <xs:element name="as-number" type="xs:int"/>
1321
+ </xs:sequence>
1322
+ <xs:attribute name="id" use="required" type="xs:int"/>
1323
+ </xs:complexType>
1324
+
1325
+ <!-- definition of classification -->
1326
+ <xs:complexType name="classificationObject">
1327
+ <xs:annotation>
1328
+ <xs:documentation xml:lang="en">
1329
+ Classification object, used to hold names or classifications of objects. The most common use case for this is detection
1330
+ names for files from av scanners. However, this object could be used for general classification. The globally unique id (attribute)
1331
+ should be created from "Company name:internal classification name", e.g. "Mcafee:Generic.DX". The other required attribute is the
1332
+ type of classification, e.g. clean, dirty, unknown.
1333
+
1334
+ There are elements to capture the category of the classification. The category should be entered in the same way to the
1335
+ classification name, e.g. company name:category name, e..g Mcafee:Trojan.
1336
+
1337
+ </xs:documentation>
1338
+ </xs:annotation>
1339
+ <xs:sequence>
1340
+ <xs:element name="classificationName" type="xs:string"> </xs:element>
1341
+ <xs:element name="companyName" type="xs:string"/>
1342
+ <xs:element name="category" minOccurs="0" type="xs:string">
1343
+ <xs:annotation>
1344
+ <xs:documentation xml:lang="en">
1345
+ Category is "companyname:category".
1346
+ </xs:documentation>
1347
+ </xs:annotation>
1348
+ </xs:element>
1349
+ <xs:element name="classificationDetails" minOccurs="0">
1350
+ <xs:annotation>
1351
+ <xs:documentation xml:lang="en">
1352
+ Details of the classification, giving product details, particularly useful for anti-virus scanner detections.
1353
+ </xs:documentation>
1354
+ </xs:annotation>
1355
+ <xs:complexType>
1356
+ <xs:sequence>
1357
+ <xs:element name="definitionVersion" type="xs:string" minOccurs="0"/>
1358
+ <xs:element name="detectionAddedTimeStamp" type="xs:dateTime" minOccurs="0"/>
1359
+ <xs:element name="detectionShippedTimeStamp" type="xs:dateTime" minOccurs="0"/>
1360
+ <xs:element name="product" type="xs:string" minOccurs="0"/>
1361
+ <xs:element name="productVersion" type="xs:string" minOccurs="0"/>
1362
+ </xs:sequence>
1363
+ </xs:complexType>
1364
+ </xs:element>
1365
+
1366
+ </xs:sequence>
1367
+ <!-- the id of the classification = companyName:classificationName -->
1368
+ <xs:attribute name="id" type="xs:string" use="required"/>
1369
+ <!-- classification type - can only have certain values -->
1370
+ <xs:attribute name="type" type="ClassificationTypeEnum" use="required"/>
1371
+ </xs:complexType>
1372
+
1373
+
1374
+
1375
+
1376
+ <!-- definition of fieldDataEntry.
1377
+ Required fields are subject (xpath to id) dates and origin
1378
+ everything else is optional
1379
+ add multiple lines if necessary
1380
+ -->
1381
+ <xs:complexType name="fieldDataEntry">
1382
+ <xs:annotation>
1383
+ <xs:documentation xml:lang="en">
1384
+ Data structure to hold prevalence information. The data includes a reference to another object (which is an xpath
1385
+ expression pointing to an object inside the 'ref' element), together with a time period (startDate -&gt; endDate),
1386
+ an origin - where the object came from, and various location tags. This allows rich information on prevalence to be recorded.
1387
+
1388
+ By convention, time periods should be wherever possible standard time periods, e.g. minute, hour, 24 hours, week, month, quarter, year. This
1389
+ will facilitate combination of data from multiple sources.
1390
+
1391
+ To represent a single entry, make startDate == endDate.
1392
+
1393
+ Commonality is calculated from the sightings of malware objects (and so such calculation is easier to automate).
1394
+ Importance is reserved for cases when “commonality” is not available or if there is a need to communicate the
1395
+ importance when commonality is low.
1396
+
1397
+ We define the commonality on a scale 0 to 100 (0 means “never found in the field” and 100 means “found very frequently”). Scaling commonality to 0..100 range instead of using actual sample counts is to avoid the effect of the user base size on the commonality. We derive commonality from the number of affected computers – not from the number of samples (for example, a hundred parasitic infections of the same virus on a single computer are to be counted as one).
1398
+
1399
+ To calculate the commonality we use two-stage approach and logarithmic scale:
1400
+ - If the number of affected users exceeds 0.1% of your user base (more frequent than 1 in a 1000) set commonality to “100”
1401
+ - Otherwise, calculate the ratio of infected computers amongst your user base by dividing the real number of affected computers ‘n’ by the total number ‘N’
1402
+ - Apply the following formula to get the commonality –( log2(1+n*1000/N) ) * 100
1403
+ - Round to the closest integer
1404
+
1405
+
1406
+ Obviously, the calculation above can only be applied to counting of malware sightings on desktops.
1407
+ If telemetry is collected from a fraction of such desktops then an appropriate correction should be used.
1408
+ For all other cases (e.g. sighting on gateways, in some network security appliance, on an ISP level, etc.)
1409
+ please exercise your best judgment and apply provided desktop guideline as an example to make sure
1410
+ the commonality factor is as comparable as possible.
1411
+
1412
+ For a URL object the commonality could reflect, for example, how widely it was spammed.
1413
+
1414
+ “Importance” should not be used together with “commonality” (unless commonality=“0”) to avoid possible confusion. High “importance”, for example, can be assigned to samples that are over-hyped by media when their commonality is still “0”.
1415
+
1416
+ Use the following guidelines for “importance” which is also defined on a scale 0..100:
1417
+ 100 – you’d expect your CEO and/or media to call you any second about this object
1418
+ 80 – you might get a call from your CEO and/or media
1419
+ 60 – you’d expect your boss to call you any second
1420
+ 40 – you might get a call from your boss
1421
+ 20 – someone is very likely to contact you about this object
1422
+ 10 – you might get contacted about this object
1423
+ 0 – you’d be surprised if anyone would ever contact you about this object
1424
+
1425
+ </xs:documentation>
1426
+ </xs:annotation>
1427
+
1428
+ <xs:sequence>
1429
+ <xs:element name="references">
1430
+ <xs:annotation>
1431
+ <xs:documentation xml:lang="en">
1432
+ The objects the prevalence information pertains to.
1433
+ </xs:documentation>
1434
+ </xs:annotation>
1435
+ <xs:complexType>
1436
+ <xs:sequence>
1437
+ <xs:element name="ref" type="reference" minOccurs="1" maxOccurs="unbounded"/>
1438
+ </xs:sequence>
1439
+ </xs:complexType>
1440
+ </xs:element>
1441
+ <xs:element name="startDate" type="xs:dateTime">
1442
+ <xs:annotation>
1443
+ <xs:documentation xml:lang="en">
1444
+ The start date for this field data entry - the start date of the period over which the prevalence (commonality) and importance is measured.
1445
+ </xs:documentation>
1446
+ </xs:annotation>
1447
+ </xs:element>
1448
+ <xs:element name="endDate" type="xs:dateTime">
1449
+ <xs:annotation>
1450
+ <xs:documentation xml:lang="en">
1451
+ The end date for this field data entry - the end date of the period over which the prevalence (commonality) and importance is measured.
1452
+ </xs:documentation>
1453
+ </xs:annotation>
1454
+ </xs:element>
1455
+ <xs:element name="firstSeenDate" type="xs:dateTime" minOccurs="0">
1456
+ <xs:annotation>
1457
+ <xs:documentation xml:lang="en">
1458
+ The date that the object was first seen by the reporting entity.
1459
+ </xs:documentation>
1460
+ </xs:annotation>
1461
+ </xs:element>
1462
+ <xs:element name="origin" type="OriginTypeEnum">
1463
+ <xs:annotation>
1464
+ <xs:documentation xml:lang="en">
1465
+ An enumeration of common sources or origins of data associated with the field data.
1466
+ </xs:documentation>
1467
+ </xs:annotation>
1468
+ </xs:element>
1469
+ <xs:element name="commonality" type="intBetween0and100" minOccurs="0">
1470
+ <xs:annotation>
1471
+ <xs:documentation xml:lang="en">
1472
+ Qualitative measurements of prevalence.
1473
+ </xs:documentation>
1474
+ </xs:annotation>
1475
+ </xs:element>
1476
+ <xs:element name="volume" minOccurs="0" maxOccurs="unbounded">
1477
+ <xs:annotation>
1478
+ <xs:documentation xml:lang="en">
1479
+ Quantitive measurements of prevalence.
1480
+ </xs:documentation>
1481
+ </xs:annotation>
1482
+ <xs:complexType>
1483
+ <xs:simpleContent>
1484
+ <xs:extension base="xs:int">
1485
+ <xs:attribute name="units" type="VolumeUnitsEnum" use="required"/>
1486
+ </xs:extension>
1487
+ </xs:simpleContent>
1488
+ </xs:complexType>
1489
+ </xs:element>
1490
+ <xs:element name="importance" type="intBetween0and100" minOccurs="0">
1491
+ <xs:annotation>
1492
+ <xs:documentation xml:lang="en">
1493
+ Qualitative measurement of risk associated with the object.
1494
+ </xs:documentation>
1495
+ </xs:annotation>
1496
+ </xs:element>
1497
+ <xs:element name="location" minOccurs="0">
1498
+ <xs:annotation>
1499
+ <xs:documentation xml:lang="en">
1500
+ Geolocation information for prevalence.
1501
+ </xs:documentation>
1502
+ </xs:annotation>
1503
+ <xs:complexType>
1504
+ <xs:simpleContent>
1505
+ <xs:extension base="xs:string">
1506
+ <xs:attribute name="type" type="LocationTypeEnum"/>
1507
+ </xs:extension>
1508
+ </xs:simpleContent>
1509
+ </xs:complexType>
1510
+ </xs:element>
1511
+ </xs:sequence>
1512
+ </xs:complexType>
1513
+
1514
+ <!-- definition of reference which is xpath to object id -->
1515
+ <xs:complexType name="reference">
1516
+ <xs:annotation>
1517
+ <xs:documentation xml:lang="en">
1518
+ Reference element used to hold xpath expressions to objects, for example file[@id="12345"].
1519
+ </xs:documentation>
1520
+ </xs:annotation>
1521
+ <xs:simpleContent>
1522
+ <xs:extension base="xs:string"> </xs:extension>
1523
+ </xs:simpleContent>
1524
+ </xs:complexType>
1525
+
1526
+
1527
+ <!-- type definition for attributes -->
1528
+ <xs:complexType name="property">
1529
+ <xs:annotation>
1530
+ <xs:documentation xml:lang="en">
1531
+ A property.
1532
+ </xs:documentation>
1533
+ </xs:annotation>
1534
+ <xs:simpleContent>
1535
+ <xs:extension base="xs:string">
1536
+ <xs:attribute name="type" type="PropertyTypeEnum" use="required"/>
1537
+ </xs:extension>
1538
+ </xs:simpleContent>
1539
+ </xs:complexType>
1540
+
1541
+
1542
+ <!-- definition of property -->
1543
+ <xs:complexType name="objectProperty">
1544
+ <xs:annotation>
1545
+ <xs:documentation xml:lang="en">
1546
+ Property; a reference to the object, a timestamp and an unbounded set of properties.
1547
+
1548
+ This is used to describe extra information about an object. For example, to show the url parameter strings
1549
+ associated with a particular URI object. Or to show file names associated with a particular file.
1550
+
1551
+ Properties can also be applied to relationships, by referencing the relationship by id. This allows use such as
1552
+ e.g. recording the post data sent in an http request between a malware (file object) and a uri (uri object).
1553
+ </xs:documentation>
1554
+ </xs:annotation>
1555
+ <xs:sequence>
1556
+ <xs:element name="references">
1557
+ <xs:annotation>
1558
+ <xs:documentation xml:lang="en">
1559
+ The objects the properties pertain to.
1560
+ </xs:documentation>
1561
+ </xs:annotation>
1562
+ <xs:complexType>
1563
+ <xs:sequence>
1564
+ <xs:element name="ref" type="reference" minOccurs="1" maxOccurs="unbounded"/>
1565
+ </xs:sequence>
1566
+ </xs:complexType>
1567
+ </xs:element>
1568
+ <xs:element name="timestamp" type="xs:dateTime"/>
1569
+ <xs:element name="property" type="property" maxOccurs="unbounded"/>
1570
+ </xs:sequence>
1571
+ <xs:attribute name="id" type="xs:anySimpleType" use="optional"/>
1572
+ </xs:complexType>
1573
+
1574
+ <!-- definition of relationship -->
1575
+ <xs:complexType name="relationship">
1576
+ <xs:annotation>
1577
+ <xs:documentation xml:lang="en">
1578
+ Relationships are used to express relationships between objects, and dates. Relationships have
1579
+ a type (an attribute with a defined list of allowed relationships), source (a set of xpath references to the parent end of
1580
+ the relationship), target (xpath references to the other end of the relationship) and an optional date.
1581
+
1582
+ The linking of objects with types is a powerful way of describing data. The dates can be used to provide context.
1583
+
1584
+ For example, to assign a classification to an object, that can done with an "isClassifiedAs" relationship, with the date meaning
1585
+ that that was the data that that classification was assigned.
1586
+
1587
+ To show urls and the last visited data, this can be expressed as a "verifiedBy" relationship between the urls and the entity doing the
1588
+ verification, with the date interpreted as the verification date.
1589
+
1590
+ </xs:documentation>
1591
+ </xs:annotation>
1592
+ <xs:sequence>
1593
+ <!-- relationship is source section with multiple parent elements each of which contains xpath to it-->
1594
+ <xs:element name="source">
1595
+ <xs:annotation>
1596
+ <xs:documentation xml:lang="en">
1597
+ References to objects at the parent end of the relationship.
1598
+ </xs:documentation>
1599
+ </xs:annotation>
1600
+ <xs:complexType>
1601
+ <xs:sequence>
1602
+ <xs:element name="ref" minOccurs="1" maxOccurs="unbounded" type="reference"/>
1603
+ </xs:sequence>
1604
+ </xs:complexType>
1605
+ </xs:element>
1606
+
1607
+ <!-- and target element with multiple child elements, each of which is xpath to id -->
1608
+ <xs:element name="target">
1609
+ <xs:annotation>
1610
+ <xs:documentation xml:lang="en">
1611
+ References to objects at the child end of the relationship.
1612
+ </xs:documentation>
1613
+ </xs:annotation>
1614
+ <xs:complexType>
1615
+ <xs:sequence>
1616
+ <xs:element name="ref" minOccurs="1" maxOccurs="unbounded" type="reference"/>
1617
+ </xs:sequence>
1618
+ </xs:complexType>
1619
+ </xs:element>
1620
+
1621
+ <xs:element name="timestamp" type="xs:dateTime"/>
1622
+ </xs:sequence>
1623
+
1624
+ <!-- attributes on relationship element relationships can have an optional id-->
1625
+ <xs:attribute name="type" type="RelationshipTypeEnum" use="required"/>
1626
+ <xs:attribute name="id" type="xs:anySimpleType" use="optional"/>
1627
+ </xs:complexType>
1628
+
1629
+ <xs:complexType name="softwarePackageObject">
1630
+ <xs:annotation>
1631
+ <xs:documentation>Software package object, used to store information about a software package, such as the vendor and version. Intended primarily for the clean-file metadata sharing use case.</xs:documentation>
1632
+ </xs:annotation>
1633
+ <xs:sequence>
1634
+ <xs:element minOccurs="1" name="vendor" type="xs:string"/>
1635
+ <xs:element minOccurs="0" name="productgroup" type="xs:string">
1636
+ <xs:annotation>
1637
+ <xs:documentation>The product group that the product belongs to, e.g. Microsoft Office.</xs:documentation>
1638
+ </xs:annotation>
1639
+ </xs:element>
1640
+ <xs:element minOccurs="1" name="product" type="xs:string"/>
1641
+ <xs:element minOccurs="0" name="version" type="xs:string"/>
1642
+ <xs:element minOccurs="0" name="update" type="xs:string"/>
1643
+ <xs:element minOccurs="0" name="edition" type="xs:string"/>
1644
+ <xs:element minOccurs="0" name="language" type="xs:string"/>
1645
+ <xs:element minOccurs="0" name="CPEname">
1646
+ <xs:annotation>
1647
+ <xs:documentation>The Common Platform Enumeration, or CPE, name of the package if one exists. CPE is a structured naming scheme for IT systems, software, and packages. For more information on CPE see http://cpe.mitre.org. For the official CPE dictionary see http://nvd.nist.gov/cpe.cfm.</xs:documentation>
1648
+ </xs:annotation>
1649
+ <xs:complexType>
1650
+ <xs:simpleContent>
1651
+ <xs:extension base="xs:string">
1652
+ <xs:attribute name="cpeVersion" type="xs:string">
1653
+ <xs:annotation>
1654
+ <xs:documentation>The version of CPE that is used for the name in the CPEname element. As of 10/04/2011 this is 2.2.</xs:documentation>
1655
+ </xs:annotation>
1656
+ </xs:attribute>
1657
+ </xs:extension>
1658
+ </xs:simpleContent>
1659
+ </xs:complexType>
1660
+ </xs:element>
1661
+ </xs:sequence>
1662
+ <xs:attribute name="id" type="xs:string" use="required"/>
1663
+ </xs:complexType>
1664
+ <xs:complexType name="digitalSignatureObject">
1665
+ <xs:annotation>
1666
+ <xs:documentation>Digital signature object, used to hold information about digitally signed binaries with regards to the certificate used and its validity.</xs:documentation>
1667
+ </xs:annotation>
1668
+ <xs:sequence>
1669
+ <xs:element minOccurs="1" name="certificateIssuer" type="xs:string"/>
1670
+ <xs:element minOccurs="0" name="certificateSubject" type="xs:string"/>
1671
+ <xs:element minOccurs="1" name="certificateValidity" type="xs:boolean"/>
1672
+ <xs:element minOccurs="0" name="certificateRevocationTimestamp" type="xs:dateTime"/>
1673
+ <xs:element minOccurs="0" name="signingTimestamp">
1674
+ <xs:complexType>
1675
+ <xs:simpleContent>
1676
+ <xs:extension base="xs:dateTime">
1677
+ <xs:attribute name="valid" type="xs:boolean"/>
1678
+ </xs:extension>
1679
+ </xs:simpleContent>
1680
+ </xs:complexType>
1681
+ </xs:element>
1682
+ </xs:sequence>
1683
+ <xs:attribute name="id" type="xs:string" use="required"/>
1684
+ <xs:attribute name="type">
1685
+ <xs:simpleType>
1686
+ <xs:restriction base="xs:string">
1687
+ <xs:enumeration value="CatalogSigned"/>
1688
+ <xs:enumeration value="CodeSigned"/>
1689
+ </xs:restriction>
1690
+ </xs:simpleType>
1691
+ </xs:attribute>
1692
+ </xs:complexType>
1693
+ <xs:complexType name="taggantObject">
1694
+ <xs:annotation>
1695
+ <xs:documentation>Taggant object, for use in characterizing the software taggant that may be associated with a file or multiple files. For more information on the taggant system or the IEEE Malware Working Group that created it, please see http://standards.ieee.org/develop/indconn/icsg/malware.html.</xs:documentation>
1696
+ </xs:annotation>
1697
+ <xs:sequence>
1698
+ <xs:element minOccurs="1" name="vendorID" type="xs:string"/>
1699
+ <xs:element minOccurs="0" name="taggantValidity" type="xs:boolean"/>
1700
+ <xs:element minOccurs="0" name="signingTimestamp">
1701
+ <xs:complexType>
1702
+ <xs:simpleContent>
1703
+ <xs:extension base="xs:dateTime">
1704
+ <xs:attribute name="valid" type="xs:boolean"/>
1705
+ </xs:extension>
1706
+ </xs:simpleContent>
1707
+ </xs:complexType>
1708
+ </xs:element>
1709
+ </xs:sequence>
1710
+ <xs:attribute name="id" type="xs:string" use="required"/>
1711
+ </xs:complexType>
1712
+ </xs:schema>