recog-intrigue 2.3.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (130) hide show
  1. checksums.yaml +7 -0
  2. data/.github/ISSUE_TEMPLATE/bug_report.md +37 -0
  3. data/.github/ISSUE_TEMPLATE/feature_request.md +17 -0
  4. data/.github/ISSUE_TEMPLATE/fingerprint_request.md +27 -0
  5. data/.github/PULL_REQUEST_TEMPLATE +24 -0
  6. data/.gitignore +14 -0
  7. data/.rbenv-gemset +1 -0
  8. data/.rspec +3 -0
  9. data/.ruby-gemset +1 -0
  10. data/.ruby-version +1 -0
  11. data/.travis.yml +25 -0
  12. data/.yardopts +1 -0
  13. data/CONTRIBUTING.md +171 -0
  14. data/COPYING +23 -0
  15. data/Gemfile +10 -0
  16. data/LICENSE +7 -0
  17. data/README.md +85 -0
  18. data/Rakefile +22 -0
  19. data/bin/recog_export +81 -0
  20. data/bin/recog_match +55 -0
  21. data/bin/recog_standardize +118 -0
  22. data/bin/recog_verify +64 -0
  23. data/cpe-remap.yaml +134 -0
  24. data/features/data/failing_banners_fingerprints.xml +20 -0
  25. data/features/data/matching_banners_fingerprints.xml +23 -0
  26. data/features/data/multiple_banners_fingerprints.xml +32 -0
  27. data/features/data/no_tests.xml +3 -0
  28. data/features/data/sample_banner.txt +2 -0
  29. data/features/data/successful_tests.xml +18 -0
  30. data/features/data/tests_with_failures.xml +20 -0
  31. data/features/data/tests_with_warnings.xml +17 -0
  32. data/features/match.feature +36 -0
  33. data/features/support/aruba.rb +3 -0
  34. data/features/support/env.rb +6 -0
  35. data/features/verify.feature +48 -0
  36. data/identifiers/README.md +47 -0
  37. data/identifiers/os_architecture.txt +20 -0
  38. data/identifiers/os_device.txt +52 -0
  39. data/identifiers/os_family.txt +160 -0
  40. data/identifiers/os_product.txt +199 -0
  41. data/identifiers/service_family.txt +185 -0
  42. data/identifiers/service_product.txt +255 -0
  43. data/identifiers/software_class.txt +26 -0
  44. data/identifiers/software_family.txt +91 -0
  45. data/identifiers/software_product.txt +333 -0
  46. data/identifiers/vendor.txt +405 -0
  47. data/lib/recog.rb +4 -0
  48. data/lib/recog/db.rb +78 -0
  49. data/lib/recog/db_manager.rb +31 -0
  50. data/lib/recog/fingerprint.rb +280 -0
  51. data/lib/recog/fingerprint/regexp_factory.rb +56 -0
  52. data/lib/recog/fingerprint/test.rb +18 -0
  53. data/lib/recog/formatter.rb +51 -0
  54. data/lib/recog/match_reporter.rb +77 -0
  55. data/lib/recog/matcher.rb +94 -0
  56. data/lib/recog/matcher_factory.rb +14 -0
  57. data/lib/recog/nizer.rb +347 -0
  58. data/lib/recog/verifier.rb +39 -0
  59. data/lib/recog/verifier_factory.rb +13 -0
  60. data/lib/recog/verify_reporter.rb +86 -0
  61. data/lib/recog/version.rb +3 -0
  62. data/misc/convert_mysql_err +61 -0
  63. data/misc/order.xsl +17 -0
  64. data/recog-intrigue.gemspec +45 -0
  65. data/requirements.txt +2 -0
  66. data/spec/data/best_os_match_1.yml +17 -0
  67. data/spec/data/best_os_match_2.yml +17 -0
  68. data/spec/data/best_service_match_1.yml +17 -0
  69. data/spec/data/smb_native_os.txt +25 -0
  70. data/spec/data/test_fingerprints.xml +36 -0
  71. data/spec/data/verification_fingerprints.xml +86 -0
  72. data/spec/data/whitespaced_fingerprint.xml +5 -0
  73. data/spec/lib/fingerprint_self_test_spec.rb +174 -0
  74. data/spec/lib/recog/db_spec.rb +98 -0
  75. data/spec/lib/recog/fingerprint/regexp_factory_spec.rb +73 -0
  76. data/spec/lib/recog/fingerprint_spec.rb +112 -0
  77. data/spec/lib/recog/formatter_spec.rb +69 -0
  78. data/spec/lib/recog/match_reporter_spec.rb +91 -0
  79. data/spec/lib/recog/nizer_spec.rb +330 -0
  80. data/spec/lib/recog/verify_reporter_spec.rb +113 -0
  81. data/spec/spec_helper.rb +82 -0
  82. data/update_cpes.py +186 -0
  83. data/xml/apache_modules.xml +1911 -0
  84. data/xml/apache_os.xml +273 -0
  85. data/xml/architecture.xml +36 -0
  86. data/xml/dns_versionbind.xml +761 -0
  87. data/xml/fingerprints.xsd +128 -0
  88. data/xml/ftp_banners.xml +1553 -0
  89. data/xml/h323_callresp.xml +603 -0
  90. data/xml/hp_pjl_id.xml +358 -0
  91. data/xml/html_title.xml +1630 -0
  92. data/xml/http_cookies.xml +411 -0
  93. data/xml/http_servers.xml +3195 -0
  94. data/xml/http_wwwauth.xml +595 -0
  95. data/xml/imap_banners.xml +245 -0
  96. data/xml/ldap_searchresult.xml +711 -0
  97. data/xml/mdns_device-info_txt.xml +1796 -0
  98. data/xml/mdns_workstation_txt.xml +15 -0
  99. data/xml/mysql_banners.xml +1649 -0
  100. data/xml/mysql_error.xml +871 -0
  101. data/xml/nntp_banners.xml +82 -0
  102. data/xml/ntp_banners.xml +1223 -0
  103. data/xml/operating_system.xml +629 -0
  104. data/xml/pop_banners.xml +499 -0
  105. data/xml/rsh_resp.xml +76 -0
  106. data/xml/rtsp_servers.xml +76 -0
  107. data/xml/sip_banners.xml +359 -0
  108. data/xml/sip_user_agents.xml +221 -0
  109. data/xml/smb_native_lm.xml +62 -0
  110. data/xml/smb_native_os.xml +662 -0
  111. data/xml/smtp_banners.xml +1690 -0
  112. data/xml/smtp_debug.xml +39 -0
  113. data/xml/smtp_ehlo.xml +49 -0
  114. data/xml/smtp_expn.xml +82 -0
  115. data/xml/smtp_help.xml +157 -0
  116. data/xml/smtp_mailfrom.xml +20 -0
  117. data/xml/smtp_noop.xml +44 -0
  118. data/xml/smtp_quit.xml +29 -0
  119. data/xml/smtp_rcptto.xml +25 -0
  120. data/xml/smtp_rset.xml +26 -0
  121. data/xml/smtp_turn.xml +26 -0
  122. data/xml/smtp_vrfy.xml +89 -0
  123. data/xml/snmp_sysdescr.xml +6507 -0
  124. data/xml/snmp_sysobjid.xml +430 -0
  125. data/xml/ssh_banners.xml +1968 -0
  126. data/xml/telnet_banners.xml +1595 -0
  127. data/xml/x11_banners.xml +232 -0
  128. data/xml/x509_issuers.xml +134 -0
  129. data/xml/x509_subjects.xml +1268 -0
  130. metadata +304 -0
@@ -0,0 +1,405 @@
1
+ 2Wire
2
+ 3Com
3
+ 4D
4
+ ACC
5
+ ACME Laboratories
6
+ Acorn
7
+ Actiontec
8
+ ActiveState
9
+ Adaptec
10
+ ADC
11
+ Adobe
12
+ Adtran
13
+ AIM
14
+ Aironet
15
+ Alcatel
16
+ Allegro Software
17
+ Allied Telesyn
18
+ Alpha Micro
19
+ Alpine
20
+ Alteon
21
+ Alt-N
22
+ Amazon
23
+ AMD
24
+ Amiga
25
+ AnalogX
26
+ Apache
27
+ APC
28
+ Apollo
29
+ Apple
30
+ Aprelium Technologies
31
+ Arescom
32
+ ArGoSoft
33
+ Arlan
34
+ ARM
35
+ ARRIS
36
+ Artifex Software Inc.
37
+ Asante
38
+ Ascend
39
+ Ascom
40
+ Asianux
41
+ Atari
42
+ ATG
43
+ AtheOS
44
+ Atrium Software
45
+ Attachmate
46
+ Auspex
47
+ Avaya
48
+ Avocent
49
+ Axent
50
+ Axis
51
+ Bay Networks
52
+ Be
53
+ BEA
54
+ Bell Labs
55
+ Bintec
56
+ Bitvise
57
+ Blue Coat
58
+ Borderware
59
+ Brix Networks
60
+ Brocade
61
+ Brother
62
+ BSDi
63
+ BT
64
+ Buffalo
65
+ Business Objects
66
+ Cabletron
67
+ Cacheflow
68
+ Canon
69
+ Canonical
70
+ Cantillion
71
+ Capellix
72
+ Castelle
73
+ CastleNet
74
+ Caucho
75
+ Cayman
76
+ CentOS
77
+ Chase
78
+ Check Point
79
+ CherryPy
80
+ Cisco
81
+ Citrix
82
+ Clearswift
83
+ CNET
84
+ CNT
85
+ Cobalt
86
+ Commodore
87
+ Compaq
88
+ Compatible Systems
89
+ Computer Associates
90
+ Computone
91
+ Conectiva
92
+ Conexant
93
+ Convex
94
+ Copper Mountain
95
+ Corega
96
+ Cray
97
+ Critical Path
98
+ CSM
99
+ CyberArk
100
+ CyberGuard
101
+ Cyclades
102
+ Data General
103
+ Datamax
104
+ DataVoice
105
+ Debian
106
+ DEC
107
+ Dell
108
+ Digital Link
109
+ Digital Networks
110
+ DigiTel
111
+ D-Link
112
+ Docker Inc.
113
+ DrayTek
114
+ EasyTel
115
+ Eaton
116
+ Edimax
117
+ Eicon
118
+ Ektron
119
+ ELSA
120
+ Embedthis
121
+ EMC
122
+ EMWAC
123
+ Enterasys
124
+ Epson
125
+ EqualLogic
126
+ Ericsson
127
+ Eudora
128
+ EUSSO
129
+ Exabyte
130
+ exim
131
+ ExtendNet
132
+ Extreme Networks
133
+ F5
134
+ FastComm
135
+ FatWire
136
+ FiberLine
137
+ Floosietek
138
+ FlowPoint
139
+ Fore
140
+ FortiNet
141
+ Foundry
142
+ Foxit Software Inc.
143
+ FreeBSD
144
+ FreeScale
145
+ FreeSCO
146
+ Fujitsu Siemens
147
+ GalactiComm
148
+ Gandalf
149
+ Gauntlet
150
+ Genius
151
+ Gentoo
152
+ Gigamon
153
+ Global Technology Associates
154
+ GlobalScape
155
+ GNet
156
+ GNU
157
+ Google
158
+ Gordano
159
+ Hawking
160
+ Hitachi
161
+ Hospira
162
+ HP
163
+ Huawei
164
+ Hydra
165
+ IBM
166
+ Imagistics
167
+ Innovaphone
168
+ Intel
169
+ Intergraph
170
+ IPCop
171
+ Ipswitch
172
+ Isolation
173
+ IXIA
174
+ Juniper
175
+ KA9Q
176
+ Kaspersky Lab
177
+ Kentrox
178
+ Kerio
179
+ Konica
180
+ Kronos
181
+ Kyocera
182
+ Labtam
183
+ LANCOM Systems
184
+ Lantronix
185
+ Leunig
186
+ Lexmark
187
+ LG Goldstream
188
+ Linksys
189
+ Linux
190
+ Linux Foundation
191
+ Livingston
192
+ LogMeIn
193
+ Lotus
194
+ Lucent
195
+ LWIP
196
+ Lyris
197
+ Macromedia
198
+ Madge
199
+ Magna
200
+ Mail-Max
201
+ Mandrake
202
+ Mandriva
203
+ Maxim IC
204
+ McAfee
205
+ Megabit
206
+ Merak
207
+ Meridian
208
+ MetaInfo
209
+ Microbase
210
+ Microplex
211
+ Microsoft
212
+ MikroTik
213
+ Minix
214
+ Minolta
215
+ Mirapoint
216
+ Mocana
217
+ Moodle
218
+ Mort Bay
219
+ Motorola
220
+ Mozilla
221
+ MRV Communications
222
+ MultiTech
223
+ MySQL
224
+ NAT
225
+ NCD
226
+ NcFTP Software
227
+ NCR
228
+ NEC
229
+ Neoware
230
+ NetApp
231
+ NetBSD
232
+ Netgear
233
+ NetJet
234
+ NetMatrix
235
+ Netopia
236
+ Netscape
237
+ NetScreen
238
+ NetSilicon
239
+ Network Systems
240
+ Nexland
241
+ NeXT
242
+ Nokia
243
+ Nortel
244
+ Norton
245
+ Novell
246
+ NSG
247
+ NTT
248
+ Oce
249
+ Okidata
250
+ Omron
251
+ OpenBSD
252
+ OpenJDK
253
+ OpenSUSE
254
+ Opera Software
255
+ Oracle
256
+ Overland
257
+ Oversee
258
+ ownCloud
259
+ Packet Engines
260
+ Packeteer
261
+ Palm
262
+ Palo Alto Networks
263
+ Panasonic
264
+ Paul Smith Computer Services
265
+ Philips
266
+ PHP
267
+ phpMyAdmin
268
+ Pigtail
269
+ Piriform
270
+ Pitney Bowes
271
+ Plain Black
272
+ Planet
273
+ PLD
274
+ Polycom
275
+ Postgres
276
+ PowerWare
277
+ Pragma Systems
278
+ PreEmptive Solutions
279
+ Process Software
280
+ Proteon
281
+ Proxim
282
+ qmail
283
+ QMS
284
+ QNX
285
+ Qualcomm
286
+ Quanterra
287
+ Quantum
288
+ Racal
289
+ Radionics
290
+ Rapid7
291
+ Raptor
292
+ Rarlab
293
+ RCA
294
+ RealMedia
295
+ Red Hat
296
+ Redback
297
+ Rhino Software
298
+ Ricoh
299
+ Ringdale
300
+ Riverbed Technology
301
+ Riverstone Networks
302
+ RoadLanner
303
+ Rockliffe
304
+ Rockwell
305
+ Roxen
306
+ rPath
307
+ SafeNet
308
+ SAP
309
+ SAR
310
+ Savin
311
+ SBLIM
312
+ Schneider Electric
313
+ SCO
314
+ Seattle Labs
315
+ Secure Computing
316
+ Sega
317
+ Sendmail
318
+ Sequent
319
+ SGI
320
+ Sharp
321
+ Shiva
322
+ Siebel
323
+ Siemens
324
+ Simon Tatham
325
+ Slackware
326
+ SMC
327
+ SmoothWall
328
+ SonicWALL
329
+ SonoSite
330
+ Sony
331
+ Sophos
332
+ Source Technologies
333
+ Sourcefire
334
+ SpeedStream
335
+ Sphera
336
+ SSH Communications Security
337
+ StackTools
338
+ Standard Networks
339
+ StartCom
340
+ Stratus
341
+ Sun
342
+ SUSE
343
+ Sybase
344
+ Symantec
345
+ Symbol
346
+ SysTech
347
+ Tahoe
348
+ Tally
349
+ Tandberg
350
+ Tandem
351
+ Tasman Networks
352
+ Tekelec
353
+ Tektonix
354
+ Telebit
355
+ Telindus
356
+ Telocity
357
+ Teltrend
358
+ Thomson
359
+ TIS
360
+ TOR
361
+ Toshiba
362
+ Trancell
363
+ Trend Micro
364
+ Truetime
365
+ Trustix
366
+ Turbolinux
367
+ Turtle Beach
368
+ Twisted Matrix Labs
369
+ TYPO3
370
+ Ubuntu
371
+ Unica
372
+ UnitedLinux
373
+ US Robotics
374
+ VanDyke Software
375
+ Vanguard
376
+ VersaNet
377
+ VideoLAN
378
+ Vignette
379
+ Vine
380
+ Vircom
381
+ Virtual Access
382
+ VMware
383
+ WatchGuard
384
+ Webmin
385
+ WebTrends
386
+ White Box
387
+ Wind River
388
+ Wireshark
389
+ Wordpress
390
+ WTI
391
+ XCD
392
+ Xerox
393
+ Xitami
394
+ XMach
395
+ XnSoft
396
+ Xylan
397
+ Xylogics
398
+ Xyplex
399
+ Yahoo
400
+ Yamaha
401
+ Zero One
402
+ ZMailer
403
+ Zoom
404
+ ZoomAir
405
+ Zyxel
@@ -0,0 +1,4 @@
1
+ require_relative 'recog/version'
2
+ require_relative 'recog/db_manager'
3
+ require_relative 'recog/matcher_factory'
4
+ require_relative 'recog/nizer'
@@ -0,0 +1,78 @@
1
+ module Recog
2
+
3
+ # A collection of {Fingerprint fingerprints} for matching against a particular
4
+ # kind of fingerprintable data, e.g. an HTTP `Server` header
5
+ class DB
6
+ require 'nokogiri'
7
+ require_relative 'fingerprint'
8
+
9
+ # @return [String]
10
+ attr_reader :path
11
+
12
+ # @return [Array<Fingerprint>] {Fingerprint} objects that can be matched
13
+ # against strings that make sense for the {#match_key}
14
+ attr_reader :fingerprints
15
+
16
+ # @return [String] Taken from the `fingerprints/matches` attribute, or
17
+ # defaults to the basename of {#path} without the `.xml` extension.
18
+ attr_reader :match_key
19
+
20
+ # @return [String] Taken from the `fingerprints/protocol` attribute, or
21
+ # defaults to an empty string
22
+ attr_reader :protocol
23
+
24
+ # @return [String] Taken from the `fingerprints/database_type` attribute
25
+ # defaults to an empty string
26
+ attr_reader :database_type
27
+
28
+ # @return [Float] Taken from the `fingerprints/preference` attribute,
29
+ # defaults to 0.10. Used when ordering databases, highest numbers
30
+ # are given priority and are processed first.
31
+ attr_reader :preference
32
+
33
+ # Default Fingerprint database preference when it isn't specified in file
34
+ # Do not use a value below 0.10 so as to allow users to specify lower
35
+ # values in their own custom XML that will always run last.
36
+ DEFAULT_FP_PREFERENCE = 0.10
37
+
38
+ # @param path [String]
39
+ def initialize(filename)
40
+ @match_key = nil
41
+ @protocol = ''
42
+ @database_type = ''
43
+ @preference = DEFAULT_FP_PREFERENCE.to_f
44
+ @path = "#{File.dirname(__FILE__)}/../../xml/#{filename}"
45
+ @fingerprints = []
46
+
47
+ parse_fingerprints
48
+ end
49
+
50
+ # @return [void]
51
+ def parse_fingerprints
52
+ xml = nil
53
+
54
+ File.open(self.path, 'rb') do |fd|
55
+ xml = Nokogiri::XML(fd.read(fd.stat.size))
56
+ end
57
+
58
+ raise "#{self.path} is invalid XML: #{xml.errors.join(',')}" unless xml.errors.empty?
59
+
60
+ xml.xpath('/fingerprints').each do |fbase|
61
+
62
+ @match_key = fbase['matches'].to_s if fbase['matches']
63
+ @protocol = fbase['protocol'].to_s if fbase['protocol']
64
+ @database_type = fbase['database_type'].to_s if fbase['database_type']
65
+ @preference = fbase['preference'].to_f if fbase['preference']
66
+
67
+ end
68
+
69
+ @match_key = File.basename(self.path).sub(/\.xml$/, '') unless @match_key
70
+
71
+ xml.xpath('/fingerprints/fingerprint').each do |fprint|
72
+ @fingerprints << Fingerprint.new(fprint, @match_key, @protocol)
73
+ end
74
+
75
+ xml = nil
76
+ end
77
+ end
78
+ end