intrigue-ident 0.9.9 → 0.31

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 (484) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -10
  3. data/Gemfile.lock +20 -35
  4. data/ident.rb +346 -0
  5. data/intrigue-ident.gemspec +7 -8
  6. data/lib/check_factory.rb +22 -0
  7. data/lib/checks/akamai.rb +22 -0
  8. data/lib/checks/amazon.rb +26 -0
  9. data/lib/checks/aruba.rb +20 -0
  10. data/lib/checks/asp_net.rb +70 -0
  11. data/lib/checks/atlassian.rb +55 -0
  12. data/lib/checks/base.rb +13 -0
  13. data/lib/checks/chef.rb +31 -0
  14. data/lib/checks/cisco.rb +33 -0
  15. data/lib/checks/citrix.rb +24 -0
  16. data/lib/checks/cloudflare.rb +59 -0
  17. data/lib/checks/cloudfront.rb +41 -0
  18. data/lib/checks/cpanel.rb +23 -0
  19. data/lib/checks/django.rb +22 -0
  20. data/lib/checks/drupal.rb +26 -0
  21. data/lib/checks/f5.rb +24 -0
  22. data/lib/checks/fastly.rb +22 -0
  23. data/lib/checks/generic.rb +23 -0
  24. data/lib/checks/gitlab.rb +22 -0
  25. data/lib/checks/google.rb +23 -0
  26. data/lib/checks/grafana.rb +22 -0
  27. data/lib/checks/jenkins.rb +40 -0
  28. data/lib/checks/joomla.rb +23 -0
  29. data/lib/checks/limesuvey.rb +22 -0
  30. data/lib/checks/lithium.rb +30 -0
  31. data/lib/checks/magento.rb +22 -0
  32. data/lib/checks/mcafee.rb +22 -0
  33. data/lib/checks/mediawiki.rb +38 -0
  34. data/lib/checks/microsoft.rb +69 -0
  35. data/lib/checks/nagios.rb +22 -0
  36. data/lib/checks/oracle.rb +38 -0
  37. data/lib/checks/palo_alto.rb +23 -0
  38. data/lib/checks/pardot.rb +22 -0
  39. data/lib/checks/pfsense.rb +25 -0
  40. data/lib/checks/phpmyadmin.rb +22 -0
  41. data/lib/checks/rabbitmq.rb +29 -0
  42. data/lib/checks/spring.rb +31 -0
  43. data/lib/checks/team_city.rb +22 -0
  44. data/lib/checks/telerik.rb +25 -0
  45. data/lib/checks/tomcat.rb +22 -0
  46. data/lib/checks/varnish.rb +27 -0
  47. data/lib/checks/wordpress.rb +120 -0
  48. data/lib/checks/wp_engine.rb +22 -0
  49. metadata +55 -487
  50. data/.circleci/config.yml +0 -21
  51. data/.gitignore +0 -3
  52. data/.ruby-version +0 -1
  53. data/Dockerfile +0 -39
  54. data/LICENSE.md +0 -12
  55. data/README.md +0 -79
  56. data/checks/ftp/base.rb +0 -15
  57. data/checks/ftp/filezilla.rb +0 -28
  58. data/checks/ftp/microsoft.rb +0 -27
  59. data/checks/ftp/proftp.rb +0 -28
  60. data/checks/ftp/pureftpd.rb +0 -27
  61. data/checks/ftp/vsftp.rb +0 -28
  62. data/checks/http/123reg.rb +0 -31
  63. data/checks/http/acme.rb +0 -28
  64. data/checks/http/acquia.rb +0 -28
  65. data/checks/http/adeptia.rb +0 -30
  66. data/checks/http/adobe.rb +0 -168
  67. data/checks/http/advantshop.rb +0 -33
  68. data/checks/http/afrihost.rb +0 -29
  69. data/checks/http/aftermarketpl.rb +0 -46
  70. data/checks/http/agility.rb +0 -34
  71. data/checks/http/akamai.rb +0 -88
  72. data/checks/http/alkacon.rb +0 -30
  73. data/checks/http/allegro.rb +0 -28
  74. data/checks/http/almuba.rb +0 -30
  75. data/checks/http/amazon.rb +0 -263
  76. data/checks/http/amirocms.rb +0 -30
  77. data/checks/http/anelectron.rb +0 -29
  78. data/checks/http/anquanbao.rb +0 -32
  79. data/checks/http/aol.rb +0 -29
  80. data/checks/http/apache.rb +0 -358
  81. data/checks/http/appdynamics.rb +0 -43
  82. data/checks/http/arris.rb +0 -30
  83. data/checks/http/artifactory.rb +0 -30
  84. data/checks/http/aruba.rb +0 -27
  85. data/checks/http/atlassian.rb +0 -152
  86. data/checks/http/auth0.rb +0 -44
  87. data/checks/http/automattic.rb +0 -292
  88. data/checks/http/axinom.rb +0 -30
  89. data/checks/http/axios.rb +0 -29
  90. data/checks/http/axis.rb +0 -27
  91. data/checks/http/axway.rb +0 -33
  92. data/checks/http/backdrop.rb +0 -30
  93. data/checks/http/banu.rb +0 -30
  94. data/checks/http/barracuda.rb +0 -99
  95. data/checks/http/base.rb +0 -139
  96. data/checks/http/beehive.rb +0 -30
  97. data/checks/http/bigcartel.rb +0 -33
  98. data/checks/http/bigcommerce.rb +0 -33
  99. data/checks/http/binarysec.rb +0 -47
  100. data/checks/http/bitly.rb +0 -40
  101. data/checks/http/blackboard.rb +0 -44
  102. data/checks/http/blueimp.rb +0 -27
  103. data/checks/http/bomgar.rb +0 -27
  104. data/checks/http/bootstrap.rb +0 -27
  105. data/checks/http/bower.rb +0 -28
  106. data/checks/http/broadcom.rb +0 -29
  107. data/checks/http/brocade.rb +0 -39
  108. data/checks/http/browsermedia.rb +0 -29
  109. data/checks/http/bsm.rb +0 -29
  110. data/checks/http/bynder.rb +0 -31
  111. data/checks/http/calibre.rb +0 -33
  112. data/checks/http/centos.rb +0 -28
  113. data/checks/http/cerberus.rb +0 -28
  114. data/checks/http/charity_engine.rb +0 -27
  115. data/checks/http/checkpoint.rb +0 -56
  116. data/checks/http/cherokee.rb +0 -29
  117. data/checks/http/cisco.rb +0 -134
  118. data/checks/http/citrix.rb +0 -137
  119. data/checks/http/cloud_city.rb +0 -30
  120. data/checks/http/cloudflare.rb +0 -219
  121. data/checks/http/cmsimple.rb +0 -30
  122. data/checks/http/codeigniter.rb +0 -26
  123. data/checks/http/communigate.rb +0 -32
  124. data/checks/http/concrete5.rb +0 -30
  125. data/checks/http/contenido.rb +0 -33
  126. data/checks/http/content/analytics.rb +0 -40
  127. data/checks/http/content/authentication.rb +0 -111
  128. data/checks/http/content/content.rb +0 -92
  129. data/checks/http/content/security_headers.rb +0 -70
  130. data/checks/http/cpanel.rb +0 -56
  131. data/checks/http/cradlepoint.rb +0 -30
  132. data/checks/http/craft.rb +0 -42
  133. data/checks/http/crazydomains.rb +0 -31
  134. data/checks/http/crowdstrike.rb +0 -27
  135. data/checks/http/dan.rb +0 -30
  136. data/checks/http/danneo.rb +0 -30
  137. data/checks/http/day.rb +0 -31
  138. data/checks/http/debian.rb +0 -27
  139. data/checks/http/dell.rb +0 -43
  140. data/checks/http/dev_php.rb +0 -30
  141. data/checks/http/discourse.rb +0 -30
  142. data/checks/http/discuz!.rb +0 -30
  143. data/checks/http/distil.rb +0 -27
  144. data/checks/http/django.rb +0 -27
  145. data/checks/http/dmanager.rb +0 -29
  146. data/checks/http/dns_made_easy.rb +0 -29
  147. data/checks/http/docuwiki.rb +0 -27
  148. data/checks/http/docverify.rb +0 -29
  149. data/checks/http/domain_parking_ru.rb +0 -31
  150. data/checks/http/domainname_shop.rb +0 -30
  151. data/checks/http/dosarrest.rb +0 -29
  152. data/checks/http/dreamhost.rb +0 -31
  153. data/checks/http/drupal.rb +0 -91
  154. data/checks/http/duo.rb +0 -45
  155. data/checks/http/dyn.rb +0 -41
  156. data/checks/http/dynamicweb.rb +0 -29
  157. data/checks/http/dynatrace.rb +0 -40
  158. data/checks/http/easyname.rb +0 -44
  159. data/checks/http/eclipse.rb +0 -64
  160. data/checks/http/enservio.rb +0 -29
  161. data/checks/http/envoy.rb +0 -26
  162. data/checks/http/epiccom.rb +0 -31
  163. data/checks/http/ergon.rb +0 -31
  164. data/checks/http/expressjs.rb +0 -27
  165. data/checks/http/ezproxy.rb +0 -28
  166. data/checks/http/f5.rb +0 -122
  167. data/checks/http/facebook.rb +0 -27
  168. data/checks/http/fastly.rb +0 -67
  169. data/checks/http/first_domains.rb +0 -31
  170. data/checks/http/flywheel.rb +0 -30
  171. data/checks/http/forgerock.rb +0 -43
  172. data/checks/http/fortinet.rb +0 -29
  173. data/checks/http/fresh_service.rb +0 -30
  174. data/checks/http/frontify.rb +0 -29
  175. data/checks/http/generic.rb +0 -272
  176. data/checks/http/github.rb +0 -40
  177. data/checks/http/gitlab.rb +0 -30
  178. data/checks/http/glimpse.rb +0 -32
  179. data/checks/http/globalscape.rb +0 -27
  180. data/checks/http/goahead.rb +0 -31
  181. data/checks/http/godaddy.rb +0 -31
  182. data/checks/http/google.rb +0 -164
  183. data/checks/http/google_cloud.rb +0 -27
  184. data/checks/http/grafana.rb +0 -27
  185. data/checks/http/gunicorn.rb +0 -30
  186. data/checks/http/haskell.rb +0 -31
  187. data/checks/http/heroku.rb +0 -77
  188. data/checks/http/hikvision.rb +0 -29
  189. data/checks/http/hp.rb +0 -27
  190. data/checks/http/hubspot.rb +0 -104
  191. data/checks/http/ibm.rb +0 -182
  192. data/checks/http/icewarp.rb +0 -29
  193. data/checks/http/impresspages.rb +0 -30
  194. data/checks/http/imunify360.rb +0 -28
  195. data/checks/http/incapsula.rb +0 -54
  196. data/checks/http/ingram_micro.rb +0 -28
  197. data/checks/http/innovative_interfaces_inc.rb +0 -27
  198. data/checks/http/inside_sales.rb +0 -27
  199. data/checks/http/instra.rb +0 -61
  200. data/checks/http/intercom.rb +0 -27
  201. data/checks/http/ivanti.rb +0 -28
  202. data/checks/http/jamf.rb +0 -31
  203. data/checks/http/jekyll.rb +0 -31
  204. data/checks/http/jenkins.rb +0 -59
  205. data/checks/http/jetbrains.rb +0 -27
  206. data/checks/http/jetty.rb +0 -27
  207. data/checks/http/jforum.rb +0 -27
  208. data/checks/http/jitbit.rb +0 -30
  209. data/checks/http/jive.rb +0 -27
  210. data/checks/http/joomla.rb +0 -43
  211. data/checks/http/jquery.rb +0 -58
  212. data/checks/http/jupyter.rb +0 -28
  213. data/checks/http/kentico.rb +0 -27
  214. data/checks/http/kerio.rb +0 -34
  215. data/checks/http/kibana.rb +0 -56
  216. data/checks/http/kong.rb +0 -32
  217. data/checks/http/kubernetes.rb +0 -66
  218. data/checks/http/laravel.rb +0 -27
  219. data/checks/http/lastpass.rb +0 -27
  220. data/checks/http/lcn.rb +0 -27
  221. data/checks/http/leadpages.rb +0 -29
  222. data/checks/http/lighttpd.rb +0 -31
  223. data/checks/http/limelight_networks.rb +0 -43
  224. data/checks/http/limesuvey.rb +0 -27
  225. data/checks/http/link1.rb +0 -31
  226. data/checks/http/linksys.rb +0 -38
  227. data/checks/http/litespeed.rb +0 -29
  228. data/checks/http/lithium.rb +0 -43
  229. data/checks/http/lotus.rb +0 -55
  230. data/checks/http/magento.rb +0 -96
  231. data/checks/http/magnolia.rb +0 -27
  232. data/checks/http/mailchimp.rb +0 -27
  233. data/checks/http/manage_engine.rb +0 -27
  234. data/checks/http/markmonitor.rb +0 -27
  235. data/checks/http/mbf_bioscience.rb +0 -29
  236. data/checks/http/mcafee.rb +0 -27
  237. data/checks/http/media_temple.rb +0 -27
  238. data/checks/http/mediawiki.rb +0 -54
  239. data/checks/http/mhcsoftwareinc.rb +0 -29
  240. data/checks/http/microsoft.rb +0 -1325
  241. data/checks/http/mikrotik.rb +0 -44
  242. data/checks/http/modwsgi.rb +0 -30
  243. data/checks/http/mojolicious.rb +0 -32
  244. data/checks/http/moodle.rb +0 -28
  245. data/checks/http/mura.rb +0 -30
  246. data/checks/http/nagios.rb +0 -27
  247. data/checks/http/namesilo.rb +0 -31
  248. data/checks/http/nationbuilder.rb +0 -30
  249. data/checks/http/nec.rb +0 -32
  250. data/checks/http/netlify.rb +0 -40
  251. data/checks/http/netobjects_inc.rb +0 -30
  252. data/checks/http/netscape.rb +0 -29
  253. data/checks/http/neustar.rb +0 -29
  254. data/checks/http/new_relic.rb +0 -27
  255. data/checks/http/nexicom.rb +0 -44
  256. data/checks/http/nginx.rb +0 -82
  257. data/checks/http/nisource.rb +0 -29
  258. data/checks/http/nodejs.rb +0 -79
  259. data/checks/http/okta.rb +0 -53
  260. data/checks/http/ookla.rb +0 -28
  261. data/checks/http/openbsd.rb +0 -30
  262. data/checks/http/openresty.rb +0 -41
  263. data/checks/http/openscholar.rb +0 -27
  264. data/checks/http/opensolution.rb +0 -46
  265. data/checks/http/openssl.rb +0 -43
  266. data/checks/http/opentext.rb +0 -46
  267. data/checks/http/openvpn.rb +0 -27
  268. data/checks/http/opscode.rb +0 -43
  269. data/checks/http/oracle.rb +0 -335
  270. data/checks/http/orion_technology.rb +0 -30
  271. data/checks/http/ovh.rb +0 -46
  272. data/checks/http/palo_alto.rb +0 -27
  273. data/checks/http/pantheon.rb +0 -54
  274. data/checks/http/papercut.rb +0 -29
  275. data/checks/http/parallels.rb +0 -44
  276. data/checks/http/pardot.rb +0 -44
  277. data/checks/http/parkingcrew.rb +0 -47
  278. data/checks/http/pbworks.rb +0 -27
  279. data/checks/http/perfectsense.rb +0 -28
  280. data/checks/http/perl.rb +0 -62
  281. data/checks/http/pfsense.rb +0 -27
  282. data/checks/http/php.rb +0 -72
  283. data/checks/http/phpmyadmin.rb +0 -40
  284. data/checks/http/phpwind.rb +0 -30
  285. data/checks/http/phusion.rb +0 -59
  286. data/checks/http/ping_identity.rb +0 -28
  287. data/checks/http/pivotal_software.rb +0 -97
  288. data/checks/http/pjax.rb +0 -40
  289. data/checks/http/plesk.rb +0 -58
  290. data/checks/http/porkbun.rb +0 -31
  291. data/checks/http/progress.rb +0 -30
  292. data/checks/http/proofpoint.rb +0 -30
  293. data/checks/http/pulsesecure.rb +0 -91
  294. data/checks/http/python.rb +0 -30
  295. data/checks/http/qnap.rb +0 -43
  296. data/checks/http/qualys.rb +0 -69
  297. data/checks/http/rapid7.rb +0 -27
  298. data/checks/http/rbs.rb +0 -30
  299. data/checks/http/readmeio.rb +0 -28
  300. data/checks/http/red_hat.rb +0 -95
  301. data/checks/http/redmine.rb +0 -38
  302. data/checks/http/restlet.rb +0 -30
  303. data/checks/http/ritecms.rb +0 -30
  304. data/checks/http/roadiz.rb +0 -30
  305. data/checks/http/rock.rb +0 -30
  306. data/checks/http/rollbar.rb +0 -27
  307. data/checks/http/roundcube.rb +0 -42
  308. data/checks/http/ruby.rb +0 -92
  309. data/checks/http/ruckus_wireless.rb +0 -26
  310. data/checks/http/sailpoint.rb +0 -30
  311. data/checks/http/salesforce.rb +0 -28
  312. data/checks/http/sap.rb +0 -149
  313. data/checks/http/seamless_cms.rb +0 -30
  314. data/checks/http/securi.rb +0 -54
  315. data/checks/http/sedo.rb +0 -63
  316. data/checks/http/segment.rb +0 -27
  317. data/checks/http/sencha.rb +0 -31
  318. data/checks/http/sentry.rb +0 -27
  319. data/checks/http/serendipity.rb +0 -30
  320. data/checks/http/shopfactory.rb +0 -30
  321. data/checks/http/sip.rb +0 -29
  322. data/checks/http/sitecore.rb +0 -39
  323. data/checks/http/smartling.rb +0 -27
  324. data/checks/http/smf.rb +0 -30
  325. data/checks/http/snews.rb +0 -30
  326. data/checks/http/software_ag.rb +0 -47
  327. data/checks/http/soha.rb +0 -66
  328. data/checks/http/solarwinds.rb +0 -41
  329. data/checks/http/sonatype.rb +0 -43
  330. data/checks/http/sonicwall.rb +0 -63
  331. data/checks/http/sophos.rb +0 -40
  332. data/checks/http/southriver.rb +0 -43
  333. data/checks/http/splash.rb +0 -29
  334. data/checks/http/splunk.rb +0 -27
  335. data/checks/http/springfox.rb +0 -43
  336. data/checks/http/squarespace.rb +0 -41
  337. data/checks/http/stackpath.rb +0 -29
  338. data/checks/http/stibo_systems.rb +0 -35
  339. data/checks/http/subrion.rb +0 -29
  340. data/checks/http/symantec.rb +0 -27
  341. data/checks/http/synacor.rb +0 -26
  342. data/checks/http/tableau_software.rb +0 -42
  343. data/checks/http/telerik.rb +0 -46
  344. data/checks/http/tengine.rb +0 -29
  345. data/checks/http/tibco.rb +0 -57
  346. data/checks/http/townnews.rb +0 -33
  347. data/checks/http/tridium.rb +0 -28
  348. data/checks/http/twiki.rb +0 -27
  349. data/checks/http/typo3.rb +0 -27
  350. data/checks/http/uberflip.rb +0 -28
  351. data/checks/http/ucoz.rb +0 -31
  352. data/checks/http/umbraco.rb +0 -29
  353. data/checks/http/unbounce.rb +0 -28
  354. data/checks/http/united_domains.rb +0 -27
  355. data/checks/http/vanilla_forums.rb +0 -27
  356. data/checks/http/varnish.rb +0 -79
  357. data/checks/http/vbulletin.rb +0 -66
  358. data/checks/http/verizon.rb +0 -27
  359. data/checks/http/vmware.rb +0 -53
  360. data/checks/http/vue_js.rb +0 -27
  361. data/checks/http/webflow.rb +0 -44
  362. data/checks/http/webgui.rb +0 -30
  363. data/checks/http/webmin.rb +0 -44
  364. data/checks/http/webpagetest_project.rb +0 -30
  365. data/checks/http/wftpserver.rb +0 -28
  366. data/checks/http/wildfly.rb +0 -29
  367. data/checks/http/wix.rb +0 -28
  368. data/checks/http/woltlab_gmbh.rb +0 -30
  369. data/checks/http/wordpress/ithemes.rb +0 -50
  370. data/checks/http/wordpress/john_godley.rb +0 -29
  371. data/checks/http/wordpress/pixelcraft.rb +0 -31
  372. data/checks/http/wordpress/rocklobster.rb +0 -29
  373. data/checks/http/wordpress/team_heateor.rb +0 -31
  374. data/checks/http/wordpress/w3_total_cache.rb +0 -30
  375. data/checks/http/wordpress/wp_fastest_cache.rb +0 -30
  376. data/checks/http/wordpress/wp_super_cache.rb +0 -46
  377. data/checks/http/wordpress/wpbakery.rb +0 -30
  378. data/checks/http/world4you.rb +0 -46
  379. data/checks/http/wp_engine.rb +0 -57
  380. data/checks/http/xcms.rb +0 -30
  381. data/checks/http/xelion.rb +0 -27
  382. data/checks/http/xerox.rb +0 -27
  383. data/checks/http/xmb.rb +0 -30
  384. data/checks/http/xtec.rb +0 -30
  385. data/checks/http/yaf.rb +0 -30
  386. data/checks/http/yaws.rb +0 -30
  387. data/checks/http/yoast.rb +0 -31
  388. data/checks/http/zeit.rb +0 -30
  389. data/checks/http/zendesk.rb +0 -41
  390. data/checks/http/zengenti.rb +0 -30
  391. data/checks/http/zoho.rb +0 -69
  392. data/checks/http/zscaler.rb +0 -30
  393. data/checks/smtp/base.rb +0 -16
  394. data/checks/smtp/exim.rb +0 -30
  395. data/checks/snmp/base.rb +0 -15
  396. data/checks/snmp/cisco.rb +0 -59
  397. data/checks/ssh/array_networks.rb +0 -28
  398. data/checks/ssh/base.rb +0 -16
  399. data/checks/ssh/openssh.rb +0 -26
  400. data/checks/telnet/base.rb +0 -16
  401. data/checks/telnet/huawei.rb +0 -26
  402. data/data/logos/acquia.png +0 -0
  403. data/data/logos/amazon_cloudfront.png +0 -0
  404. data/data/logos/apache_coyote.png +0 -0
  405. data/data/logos/apache_tomcat.png +0 -0
  406. data/data/logos/atlassian_bamboo.png +0 -0
  407. data/data/logos/atlassian_bitbucket.png +0 -0
  408. data/data/logos/atlassian_confluence.png +0 -0
  409. data/data/logos/atlassian_crowd.png +0 -0
  410. data/data/logos/atlassian_crucible.png +0 -0
  411. data/data/logos/atlassian_fisheye.png +0 -0
  412. data/data/logos/atlassian_jira.png +0 -0
  413. data/data/logos/atlassian_sourcetree.png +0 -0
  414. data/data/logos/automattic_wordpress.png +0 -0
  415. data/data/logos/calibre.png +0 -0
  416. data/data/logos/cisco_ssl_vpn.png +0 -0
  417. data/data/logos/citrix_netscaler_gateway.png +0 -0
  418. data/data/logos/cloudflare_cdn.png +0 -0
  419. data/data/logos/drupal.png +0 -0
  420. data/data/logos/f5_big-ip.png +0 -0
  421. data/data/logos/f5_big-ip_apm.png +0 -0
  422. data/data/logos/fastly.png +0 -0
  423. data/data/logos/generic.png +0 -0
  424. data/data/logos/gitlab.png +0 -0
  425. data/data/logos/ibm_axway_securetransport.png +0 -0
  426. data/data/logos/lithium.png +0 -0
  427. data/data/logos/microsoft_asp.net.png +0 -0
  428. data/data/logos/microsoft_iis.png +0 -0
  429. data/data/logos/microsoft_outlook_web_access.png +0 -0
  430. data/data/logos/microsoft_sharepoint.png +0 -0
  431. data/data/logos/microtik_routeros.png +0 -0
  432. data/data/logos/mikrotik_routeros.png +0 -0
  433. data/data/logos/newrelic.png +0 -0
  434. data/data/logos/nginx.png +0 -0
  435. data/data/logos/okta.png +0 -0
  436. data/data/logos/oracle_glassfish.png +0 -0
  437. data/data/logos/oracle_java_application_server.png +0 -0
  438. data/data/logos/oracle_java_server_pages.png +0 -0
  439. data/data/logos/oracle_weblogic.png +0 -0
  440. data/data/logos/phpmyadmin.png +0 -0
  441. data/data/logos/tableau.png +0 -0
  442. data/data/logos/vmware_esxi.png +0 -0
  443. data/data/logos/vmware_horizon.png +0 -0
  444. data/data/logos/zendesk.png +0 -0
  445. data/data/logos/zimbra_server.png +0 -0
  446. data/data/microsoft_sharepoint_versions.csv +0 -224
  447. data/lib/banner_helpers.rb +0 -36
  448. data/lib/ftp/check_factory.rb +0 -24
  449. data/lib/ftp/content.rb +0 -13
  450. data/lib/ftp/ftp.rb +0 -52
  451. data/lib/ftp/matchers.rb +0 -26
  452. data/lib/http/browser.rb +0 -260
  453. data/lib/http/check_factory.rb +0 -47
  454. data/lib/http/content.rb +0 -45
  455. data/lib/http/http.rb +0 -463
  456. data/lib/http/matchers.rb +0 -132
  457. data/lib/ident.rb +0 -263
  458. data/lib/recog_wrapper.rb +0 -70
  459. data/lib/simple_socket.rb +0 -41
  460. data/lib/smtp/check_factory.rb +0 -24
  461. data/lib/smtp/content.rb +0 -13
  462. data/lib/smtp/matchers.rb +0 -28
  463. data/lib/smtp/smtp.rb +0 -53
  464. data/lib/snmp/check_factory.rb +0 -24
  465. data/lib/snmp/content.rb +0 -13
  466. data/lib/snmp/matchers.rb +0 -25
  467. data/lib/snmp/snmp.rb +0 -55
  468. data/lib/ssh/check_factory.rb +0 -24
  469. data/lib/ssh/content.rb +0 -13
  470. data/lib/ssh/matchers.rb +0 -26
  471. data/lib/ssh/ssh.rb +0 -52
  472. data/lib/telnet/check_factory.rb +0 -24
  473. data/lib/telnet/content.rb +0 -13
  474. data/lib/telnet/matchers.rb +0 -26
  475. data/lib/telnet/telnet.rb +0 -52
  476. data/lib/utils.rb +0 -19
  477. data/lib/version.rb +0 -3
  478. data/lib/vulndb_client.rb +0 -43
  479. data/util/console.rb +0 -9
  480. data/util/docker.sh +0 -2
  481. data/util/ident.rb +0 -375
  482. data/util/list_paths.rb +0 -12
  483. data/util/tags.rb +0 -36
  484. data/utils.rb +0 -19
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 32cb17663810844bd445fbd30fc87ed296e432dee65c809c55c0103c2018223f
4
- data.tar.gz: ab582bae1548877adda260b27b3cc36c3c399f5dfac4bc2120df58ff11c028c5
3
+ metadata.gz: bfcd9572780f9884f183354ecc7e868075ebe1c134030cb1929638201e6d4ec1
4
+ data.tar.gz: 04b36417bf4285fe5b9779595ac3e53a89292b70e514ce13db0c6865df1b0536
5
5
  SHA512:
6
- metadata.gz: cdb9095cd2c3b4eef1515260b929f9685293d9a888a50cf30942c875557e736ddf328e13fc60a14302f1a92489ca5f1658839ac1294e29c2e2d6a5567d58226d
7
- data.tar.gz: '09a8a0beb4ccca2821c8543f8939491dbbec030b873e7211cde9966f5367a7cd599b67cd77908ebf69a59c85d8f26611adb6b1dcc5fdc41c433ef074c7ce6b54'
6
+ metadata.gz: 1dc5cf125e462aa1bde4ee84042ff61b868815f2e63b17bb9af7570cacdeacd80600bd3d3bc760f5b0ffdf7d2c7e65ea4efd405fd8d1422c1ac54644f0c02d8b
7
+ data.tar.gz: 99275af23d905d30604ee9966e60979a01432539fe595492b3dc4a1b606853ba93012ab05e5257a75953f51efb98b96c0f1ae66462da8c876a97f22229f05bd3
data/Gemfile CHANGED
@@ -1,12 +1,5 @@
1
1
  source 'https://rubygems.org'
2
- ruby '2.6.5'
2
+ ruby '2.5.1'
3
3
 
4
- gem 'pry'
5
- gem 'socketry'
6
- gem 'recog-intrigue', :git => 'https://github.com/intrigueio/recog.git'
7
- #gem 'recog-intrigue', :path => "/Users/jcran/work/intrigue/local/recog"
8
- gem 'slop'
9
- gem 'snmp'
10
- gem 'json'
11
- gem 'rspec-core'
12
- gem 'rspec-expectations'
4
+ gem "rspec"
5
+ gem "pry"
data/Gemfile.lock CHANGED
@@ -1,50 +1,35 @@
1
- GIT
2
- remote: https://github.com/intrigueio/recog.git
3
- revision: d6be4b8008add1cc90c69b276c223cf7345e31f1
4
- specs:
5
- recog-intrigue (2.3.7)
6
- nokogiri
7
-
8
1
  GEM
9
2
  remote: https://rubygems.org/
10
3
  specs:
11
- coderay (1.1.3)
4
+ coderay (1.1.2)
12
5
  diff-lcs (1.3)
13
- hitimes (1.3.1)
14
- json (2.3.0)
15
- method_source (1.0.0)
16
- mini_portile2 (2.4.0)
17
- nokogiri (1.10.9)
18
- mini_portile2 (~> 2.4.0)
19
- pry (0.13.1)
20
- coderay (~> 1.1)
21
- method_source (~> 1.0)
22
- rspec-core (3.9.2)
23
- rspec-support (~> 3.9.3)
24
- rspec-expectations (3.9.2)
6
+ method_source (0.9.0)
7
+ pry (0.11.3)
8
+ coderay (~> 1.1.0)
9
+ method_source (~> 0.9.0)
10
+ rspec (3.7.0)
11
+ rspec-core (~> 3.7.0)
12
+ rspec-expectations (~> 3.7.0)
13
+ rspec-mocks (~> 3.7.0)
14
+ rspec-core (3.7.1)
15
+ rspec-support (~> 3.7.0)
16
+ rspec-expectations (3.7.0)
17
+ diff-lcs (>= 1.2.0, < 2.0)
18
+ rspec-support (~> 3.7.0)
19
+ rspec-mocks (3.7.0)
25
20
  diff-lcs (>= 1.2.0, < 2.0)
26
- rspec-support (~> 3.9.0)
27
- rspec-support (3.9.3)
28
- slop (4.8.1)
29
- snmp (1.3.2)
30
- socketry (0.5.1)
31
- hitimes (~> 1.2)
21
+ rspec-support (~> 3.7.0)
22
+ rspec-support (3.7.1)
32
23
 
33
24
  PLATFORMS
34
25
  ruby
35
26
 
36
27
  DEPENDENCIES
37
- json
38
28
  pry
39
- recog-intrigue!
40
- rspec-core
41
- rspec-expectations
42
- slop
43
- snmp
44
- socketry
29
+ rspec
45
30
 
46
31
  RUBY VERSION
47
- ruby 2.6.5p114
32
+ ruby 2.5.1p57
48
33
 
49
34
  BUNDLED WITH
50
- 2.1.4
35
+ 1.16.1
data/ident.rb ADDED
@@ -0,0 +1,346 @@
1
+ #!/usr/bin/env ruby
2
+ require 'net/http'
3
+ require 'openssl'
4
+ require 'zlib'
5
+
6
+ require_relative 'lib/check_factory'
7
+ require_relative 'lib/checks/base'
8
+ check_folder = File.expand_path('lib/checks', File.dirname(__FILE__)) # get absolute directory
9
+ Dir["#{check_folder}/*.rb"].each { |file| require_relative file }
10
+
11
+ module Intrigue
12
+ module Ident
13
+
14
+ VERSION=0.31
15
+
16
+ def generate_requests_and_check(url)
17
+
18
+ results = []
19
+
20
+ # gather all fingeprints for each product
21
+ # this will look like an array of checks, each with a uri and a SET of checks
22
+ generated_checks = Intrigue::Ident::CheckFactory.all.map{|x| x.new.generate_checks(url) }.flatten
23
+
24
+ # group by the uris, with the associated checks
25
+ # TODO - this only currently supports the first path of the group!!!!
26
+ grouped_generated_checks = generated_checks.group_by{|x| x[:paths].first }
27
+
28
+ # call the check on each uri
29
+ grouped_generated_checks.each do |ggc|
30
+
31
+ target_url = ggc.first
32
+
33
+ # get the response
34
+ response = _http_request :get, "#{target_url}"
35
+
36
+ unless response
37
+ puts "Unable to get a response at: #{target_url}, failing"
38
+ return nil
39
+ end
40
+
41
+ # Go ahead and match it up if we got a response!
42
+ if response
43
+ # call each check, collecting the product if it's a match
44
+ ggc.last.each do |check|
45
+ results << _match_http_response(check, response)
46
+ end
47
+ end
48
+ end
49
+
50
+ # Return all matches, minus the nils (non-matches)
51
+ results.compact
52
+ end
53
+
54
+ def check_intrigue_uri(intrigue_uri_data)
55
+
56
+ results = []
57
+
58
+ # gather all fingeprints for each product
59
+ # this will look like an array of checks, each with a uri and a SET of checks
60
+ generated_checks = Intrigue::Ident::CheckFactory.all.map{|x| x.new.generate_checks(url) }.flatten
61
+
62
+ # group by the uris, with the associated checks
63
+ # TODO - this only currently supports the first path of the group!!!!
64
+ grouped_generated_checks = generated_checks.group_by{|x| x[:paths].first }
65
+
66
+ # call the check on each uri
67
+ grouped_generated_checks.each do |ggc|
68
+
69
+ target_url = ggc.first
70
+
71
+ # call each check, collecting the product if it's a match
72
+ ggc.last.each do |check|
73
+ results << _match_uri(check, intrigue_uri_data)
74
+ end
75
+ end
76
+
77
+ # Return all matches, minus the nils (non-matches)
78
+ results.compact
79
+ end
80
+
81
+ private
82
+
83
+ def _construct_match_response(check, data)
84
+ {
85
+ :version => (check[:dynamic_version].call(data) if check[:dynamic_version]) || check[:version],
86
+ :name => check[:name],
87
+ :tags => check[:tags],
88
+ :match => check[:type],
89
+ :hide => check[:hide]
90
+ }
91
+ end
92
+
93
+ def _match_uri(check,data)
94
+
95
+ # data[:body] => page body
96
+ # data[:headers] => block of text with headers, one per line
97
+ # data[:cookies] => set_cookie header
98
+ # data[:body_md5] => md5 hash of the body
99
+ # if type "content", do the content check
100
+
101
+
102
+ if check[:type] == :content_body
103
+ match = _construct_match_response(check,data) if data["details"]["hidden_response_data"] =~ check[:content]
104
+ elsif check[:type] == :content_headers
105
+ match = _construct_match_response(check,data) if data["details"]["headers"].join("\n") =~ check[:content]
106
+ elsif check[:type] == :content_cookies
107
+ # Check only the set-cookie header
108
+ match = _construct_match_response(check,data) if data["details"]["cookies"] =~ check[:content]
109
+ elsif check[:type] == :checksum_body
110
+ match = _construct_match_response(check,data) if Digest::MD5.hexdigest(data["details"]["response_data_hash"]) == check[:checksum]
111
+ end
112
+
113
+ match
114
+ end
115
+
116
+ # this method takes a check and a net/http response object and
117
+ # constructs it into a format that's matchable. it then attempts
118
+ # to match, and returns a match object if it matches, otherwise
119
+ # returns nil.
120
+ def _match_http_response(check, response)
121
+
122
+ # Construct an Intrigue Entity of type Uri so we can match it
123
+ data = []
124
+ =begin
125
+ json = '{
126
+ "id": 1572,
127
+ "type": "Intrigue::Entity::Uri",
128
+ "name": "http://69.162.37.69:80",
129
+ "deleted": false,
130
+ "hidden": false,
131
+ "detail_string": "Server: | App: | Title: Index page",
132
+ "details": {
133
+ "uri": "http://69.162.37.69:80",
134
+ "code": "200",
135
+ "port": 80,
136
+ "forms": false,
137
+ "title": "Index page",
138
+ "verbs": null,
139
+ "headers": ["content-length: 701", "last-modified: Tue, 03 Jul 2018 16:55:36 GMT", "cache-control: no-cache", "content-type: text/html"],
140
+ "host_id": 1571,
141
+ "scripts": [],
142
+ "products": [],
143
+ "protocol": "tcp",
144
+ "ip_address": "69.162.37.69",
145
+ "javascript": [],
146
+ "fingerprint": [],
147
+ "api_endpoint": false,
148
+ "masscan_string": "sudo masscan -p80,443,2004,3389,7001,8000,8080,8081,8443,U:161,U:500 --max-rate 10000 -oL /tmp/masscan20180703-9816-18n0ri --range 69.162.0.0/18",
149
+ "app_fingerprint": [],
150
+ "hidden_original": "http://69.162.37.69:80",
151
+ "response_data_hash": "7o0r6ie5DOrJJnz1sS7RGO4XWsNn3hWykbwGkGnySWU=",
152
+ "server_fingerprint": [],
153
+ "enrichment_complete": ["enrich/uri"],
154
+ "include_fingerprint": [],
155
+ "enrichment_scheduled": ["enrich/uri"],
156
+ "hidden_response_data": "",
157
+ "hidden_screenshot_contents": """
158
+ },
159
+ "task_results": [{
160
+ "id": 32,
161
+ "name": "masscan_scan_on_69.162.0.0/18",
162
+ "base_entity_name": "69.162.0.0/18",
163
+ "base_entity_type": "Intrigue::Entity::NetBlock"
164
+ }],
165
+ "generated_at": "2018-07-04T03:43:11+00:00"
166
+ }'
167
+ =end
168
+ data = {}
169
+ data["details"] = {}
170
+ data["details"]["hidden_response_data"] = "#{response.body}"
171
+ # construct the headers into a big string block
172
+ headers = []
173
+ response.each_header do |h,v|
174
+ headers << "#{h}: #{v}"
175
+ end
176
+ data["details"]["headers"] = headers
177
+ data["details"]["cookies"] = response.header['set-cookie']
178
+ data["details"]["response_data_hash"] = Digest::SHA256.base64digest("#{response.body}")
179
+
180
+ # call the actual matcher & return
181
+ _match_uri check, data
182
+ end
183
+
184
+ def _http_request(method, uri_string, credentials=nil, headers={}, data=nil, limit = 10, open_timeout=15, read_timeout=15)
185
+
186
+ response = nil
187
+ begin
188
+
189
+ # set user agent
190
+ headers["User-Agent"] = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36"
191
+
192
+ attempts=0
193
+ max_attempts=10
194
+ found = false
195
+
196
+ uri = URI.parse uri_string
197
+
198
+ unless uri
199
+ _log error "Unable to parse URI from: #{uri_string}"
200
+ return
201
+ end
202
+
203
+ until( found || attempts >= max_attempts)
204
+ attempts+=1
205
+
206
+ # proxy configuration, disabled for now
207
+ #if $config["http_proxy"]
208
+ # proxy_addr = $config["http_proxy"]["host"]
209
+ # proxy_port = $config["http_proxy"]["port"]
210
+ # proxy_user = $config["http_proxy"]["user"]
211
+ # proxy_pass = $config["http_proxy"]["pass"]
212
+ #end
213
+ proxy_addr = nil
214
+ proxy_port = nil
215
+
216
+ # set options
217
+ opts = {}
218
+ if uri.instance_of? URI::HTTPS
219
+ opts[:use_ssl] = true
220
+ opts[:verify_mode] = OpenSSL::SSL::VERIFY_NONE
221
+ end
222
+
223
+ http = Net::HTTP.start(uri.host, uri.port, proxy_addr, proxy_port, opts)
224
+ #http.set_debug_output($stdout) if _get_system_config "debug"
225
+ http.read_timeout = 20
226
+ http.open_timeout = 20
227
+
228
+ path = "#{uri.path}"
229
+ path = "/" if path==""
230
+
231
+ # add in the query parameters
232
+ if uri.query
233
+ path += "?#{uri.query}"
234
+ end
235
+
236
+ ### ALLOW DIFFERENT VERBS HERE
237
+ if method == :get
238
+ request = Net::HTTP::Get.new(uri)
239
+ elsif method == :post
240
+ # see: https://coderwall.com/p/c-mu-a/http-posts-in-ruby
241
+ request = Net::HTTP::Post.new(uri)
242
+ request.body = data
243
+ elsif method == :head
244
+ request = Net::HTTP::Head.new(uri)
245
+ elsif method == :propfind
246
+ request = Net::HTTP::Propfind.new(uri.request_uri)
247
+ request.body = "Here's the body." # Set your body (data)
248
+ request["Depth"] = "1" # Set your headers: one header per line.
249
+ elsif method == :options
250
+ request = Net::HTTP::Options.new(uri.request_uri)
251
+ elsif method == :trace
252
+ request = Net::HTTP::Trace.new(uri.request_uri)
253
+ request.body = "intrigue"
254
+ end
255
+ ### END VERBS
256
+
257
+ # set the headers
258
+ headers.each do |k,v|
259
+ request[k] = v
260
+ end
261
+
262
+ # handle credentials
263
+ #if credentials
264
+ # request.basic_auth(credentials[:username],credentials[:password])
265
+ #end
266
+
267
+ # get the response
268
+ response = http.request(request)
269
+
270
+ if response.code=="200"
271
+ break
272
+ end
273
+
274
+ if (response.header['location']!=nil)
275
+ newuri=URI.parse(response.header['location'])
276
+ if(newuri.relative?)
277
+ newuri=uri+response.header['location']
278
+ end
279
+ uri=newuri
280
+
281
+ else
282
+ found=true #resp was 404, etc
283
+ end #end if location
284
+ end #until
285
+
286
+ ### TODO - this code may be be called outside the context of a task,
287
+ ### meaning @task_result is not available to it. Below, we check to
288
+ ### make sure that it exists before attempting to log anything,
289
+ ### but there may be a cleaner way to do this (hopefully?). Maybe a
290
+ ### global logger or logging queue?
291
+ ###
292
+ #rescue TypeError
293
+ # # https://github.com/jaimeiniesta/metainspector/issues/125
294
+ # puts "TypeError - unknown failure"
295
+ rescue ArgumentError => e
296
+ puts "Unable to open connection: #{e}"
297
+ rescue Net::OpenTimeout => e
298
+ puts "Timeout : #{e}"
299
+ rescue Net::ReadTimeout => e
300
+ puts "Timeout : #{e}"
301
+ rescue Errno::ETIMEDOUT => e
302
+ puts "Timeout : #{e}"
303
+ rescue Errno::EINVAL => e
304
+ puts "Unable to connect: #{e}"
305
+ rescue Errno::ENETUNREACH => e
306
+ puts "Unable to connect: #{e}"
307
+ rescue Errno::EHOSTUNREACH => e
308
+ puts "Unable to connect: #{e}"
309
+ rescue URI::InvalidURIError => e
310
+ #
311
+ # XXX - This is an issue. We should catch this and ensure it's not
312
+ # due to an underscore / other acceptable character in the URI
313
+ # http://stackoverflow.com/questions/5208851/is-there-a-workaround-to-open-urls-containing-underscores-in-ruby
314
+ #
315
+ puts "Unable to request URI: #{uri} #{e}"
316
+ rescue OpenSSL::SSL::SSLError => e
317
+ puts "SSL connect error : #{e}"
318
+ rescue Errno::ECONNREFUSED => e
319
+ puts "Unable to connect: #{e}"
320
+ rescue Errno::ECONNRESET => e
321
+ puts "Unable to connect: #{e}"
322
+ rescue Net::HTTPBadResponse => e
323
+ puts "Unable to connect: #{e}"
324
+ rescue Zlib::BufError => e
325
+ puts "Unable to connect: #{e}"
326
+ rescue Zlib::DataError => e # "incorrect header check - may be specific to ruby 2.0"
327
+ puts "Unable to connect: #{e}"
328
+ rescue EOFError => e
329
+ puts "Unable to connect: #{e}"
330
+ rescue SocketError => e
331
+ puts "Unable to connect: #{e}"
332
+ #rescue SystemCallError => e
333
+ # puts "Unable to connect: #{e}"
334
+ #rescue ArgumentError => e
335
+ # puts "Argument Error: #{e}"
336
+ rescue Encoding::InvalidByteSequenceError => e
337
+ puts "Encoding error: #{e}"
338
+ rescue Encoding::UndefinedConversionError => e
339
+ puts "Encoding error: #{e}"
340
+ end
341
+
342
+ response
343
+ end
344
+
345
+ end
346
+ end
@@ -1,23 +1,22 @@
1
1
  # coding: utf-8
2
+ require './ident'
3
+
2
4
  Gem::Specification.new do |spec|
3
5
  spec.name = "intrigue-ident"
4
- spec.version = "0.9.9"
6
+ spec.version = Intrigue::Ident::VERSION
5
7
  spec.authors = ["jcran"]
6
8
  spec.email = ["jcran@intrigue.io"]
7
9
 
8
- spec.summary = %q{Intrigue Asset Fingerprinting Library}
9
- spec.description = %q{Intrigue Asset Fingerprinting Library}
10
+ spec.summary = %q{Fingerprinter for Intrigue Data}
11
+ spec.description = %q{Fingerprinter for Intrigue Data}
10
12
  spec.homepage = "https://intrigue.io"
11
- spec.license = "BSD-3-Clause"
13
+ spec.license = "BSD"
12
14
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
13
15
  spec.bindir = "exe"
14
16
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
15
17
  spec.require_paths = ["lib"]
16
18
 
17
19
  spec.add_development_dependency "bundler", "~> 1.11"
18
- spec.add_development_dependency "rake", ">= 12.3.3"
20
+ spec.add_development_dependency "rake", "~> 10.0"
19
21
  spec.add_development_dependency "rspec", "~> 3.0"
20
- spec.add_runtime_dependency "socketry"
21
- spec.add_runtime_dependency "snmp"
22
- spec.add_runtime_dependency "recog-intrigue"
23
22
  end