threatinator 0.1.6 → 0.2.0

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 (197) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +13 -2
  3. data/Gemfile +18 -13
  4. data/Rakefile +1 -1
  5. data/VERSION +1 -1
  6. data/feeds/ET_block-ip_reputation.feed +26 -0
  7. data/feeds/ET_openbadlist-ip_reputation.feed +35 -0
  8. data/feeds/bambenek_c2_masterlist-domain_reputation.feed +15 -0
  9. data/feeds/bambenek_c2_masterlist-ip_reputation.feed +15 -0
  10. data/feeds/bambenek_dga_feed-domain_reputation.feed +15 -0
  11. data/feeds/berkeley-ip_reputation.feed +23 -0
  12. data/feeds/bitcash_cz_blacklist.feed +20 -0
  13. data/feeds/botscout-ip_reputation.feed +24 -0
  14. data/feeds/cert_mxpoison-ip_reputation.feed +21 -0
  15. data/feeds/chaosreigns-ip_reputation.feed +36 -0
  16. data/feeds/cydef_torexit-ip_reputation.feed +24 -0
  17. data/feeds/danger_bruteforce-ip_reputation.feed +23 -0
  18. data/feeds/falconcrest-ip_reputation.feed +18 -0
  19. data/feeds/h3x_asprox.feed +17 -0
  20. data/feeds/hosts-file_hphostspartial-domain_reputation.feed +18 -0
  21. data/feeds/infiltrated_vabl-ip_reputation.feed +29 -0
  22. data/feeds/isc_suspicious_high-domain_reputation.feed +25 -0
  23. data/feeds/isc_suspicious_low-domain_reputation.feed +25 -0
  24. data/feeds/isc_suspicious_medium-domain_reputation.feed +25 -0
  25. data/feeds/malwaredomainlist-url_reputation.feed +16 -0
  26. data/feeds/malwaredomains-domain_reputation.feed +27 -0
  27. data/feeds/malwaredomains_dyndns-domain_reputation.feed +27 -0
  28. data/feeds/malwaredomains_justdomains-domain_reputation.feed +18 -0
  29. data/feeds/multiproxy-ip_reputation.feed +20 -0
  30. data/feeds/openphish-url_reputation.feed +22 -0
  31. data/feeds/packetmail_perimeterbad-ip_reputation.feed +26 -0
  32. data/feeds/phishtank.feed +1 -1
  33. data/feeds/sigmaproject_atma.feed +25 -0
  34. data/feeds/sigmaproject_spyware.feed +24 -0
  35. data/feeds/sigmaproject_webexploit.feed +26 -0
  36. data/feeds/snort_bpf-ip_reputation.feed +19 -0
  37. data/feeds/steeman-ip_reputation.feed +19 -0
  38. data/feeds/trustedsec-ip_reputation.feed +17 -0
  39. data/feeds/virbl-ip_reputation.feed +24 -0
  40. data/feeds/vxvault-url_reputation.feed +22 -0
  41. data/feeds/yoyo_adservers-domain_reputation.feed +16 -0
  42. data/lib/threatinator/actions/run/action.rb +15 -3
  43. data/lib/threatinator/actions/run/coverage_observer.rb +12 -7
  44. data/lib/threatinator/actions/run/status_observer.rb +37 -0
  45. data/lib/threatinator/cli.rb +9 -3
  46. data/lib/threatinator/cli/parser.rb +14 -4
  47. data/lib/threatinator/config.rb +1 -0
  48. data/lib/threatinator/config/logger.rb +14 -0
  49. data/lib/threatinator/event.rb +28 -18
  50. data/lib/threatinator/event_builder.rb +52 -23
  51. data/lib/threatinator/exceptions.rb +3 -6
  52. data/lib/threatinator/feed.rb +1 -1
  53. data/lib/threatinator/feed_runner.rb +63 -7
  54. data/lib/threatinator/logger.rb +66 -0
  55. data/lib/threatinator/logging.rb +20 -0
  56. data/lib/threatinator/model/base.rb +23 -0
  57. data/lib/threatinator/model/collection.rb +64 -0
  58. data/lib/threatinator/model/observables/fqdn_collection.rb +13 -0
  59. data/lib/threatinator/model/observables/ipv4.rb +30 -0
  60. data/lib/threatinator/model/observables/ipv4_collection.rb +14 -0
  61. data/lib/threatinator/model/observables/url_collection.rb +16 -0
  62. data/lib/threatinator/model/validations.rb +1 -0
  63. data/lib/threatinator/model/validations/type.rb +21 -0
  64. data/lib/threatinator/plugins/output/csv.rb +20 -9
  65. data/spec/feeds/ET_block-ip_reputation_spec.rb +50 -0
  66. data/spec/feeds/ET_compromised-ip_reputation_spec.rb +2 -5
  67. data/spec/feeds/ET_openbadlist-ip_reputation_spec.rb +56 -0
  68. data/spec/feeds/alienvault-ip_reputation_spec.rb +2 -5
  69. data/spec/feeds/arbor_fastflux-domain_reputation_spec.rb +0 -3
  70. data/spec/feeds/arbor_ssh-ip_reputation_spec.rb +2 -5
  71. data/spec/feeds/autoshun_shunlist_spec.rb +1 -4
  72. data/spec/feeds/bambenek_c2_masterlist-domain_reputation_spec.rb +39 -0
  73. data/spec/feeds/bambenek_c2_masterlist-ip_reputation_spec.rb +39 -0
  74. data/spec/feeds/bambenek_dga_feed-domain_reputation_spec.rb +39 -0
  75. data/spec/feeds/berkeley-ip_reputation_spec.rb +47 -0
  76. data/spec/feeds/bitcash_cz_blacklist-ip_reputation_spec.rb +50 -0
  77. data/spec/feeds/blocklist_de_apache-ip_reputation_spec.rb +2 -5
  78. data/spec/feeds/blocklist_de_bots-ip_reputation_spec.rb +2 -5
  79. data/spec/feeds/blocklist_de_ftp-ip_reputation_spec.rb +2 -5
  80. data/spec/feeds/blocklist_de_imap-ip_reputation_spec.rb +2 -5
  81. data/spec/feeds/blocklist_de_pop3-ip_reputation_spec.rb +2 -5
  82. data/spec/feeds/blocklist_de_proftpd-ip_reputation_spec.rb +2 -5
  83. data/spec/feeds/blocklist_de_sip-ip_reputation_spec.rb +2 -5
  84. data/spec/feeds/blocklist_de_ssh-ip_reputation_spec.rb +2 -5
  85. data/spec/feeds/blocklist_de_strongips-ip_reputation_spec.rb +2 -5
  86. data/spec/feeds/botscout-ip_reputation_spec.rb +50 -0
  87. data/spec/feeds/cert_mxpoison-ip_reputation_spec.rb +47 -0
  88. data/spec/feeds/chaosreigns-ip_reputation_spec.rb +50 -0
  89. data/spec/feeds/ciarmy-ip_reputation_spec.rb +2 -5
  90. data/spec/feeds/cruzit-ip_reputation_spec.rb +2 -5
  91. data/spec/feeds/cydef_torexit-ip_reputation_spec.rb +47 -0
  92. data/spec/feeds/dan_me_uk_torlist-ip_reputation_spec.rb +2 -5
  93. data/spec/feeds/danger_bruteforce-ip_reputation_spec.rb +47 -0
  94. data/spec/feeds/data/ET_block-ip_reputation.txt +80 -0
  95. data/spec/feeds/data/ET_openbadlist-ip_reputation.txt +62 -0
  96. data/spec/feeds/data/bambenek_c2-dommasterlist.csv +30 -0
  97. data/spec/feeds/data/bambenek_c2-ipmasterlist.csv +27 -0
  98. data/spec/feeds/data/bambenek_dga_feed.csv +42 -0
  99. data/spec/feeds/data/berkeley.txt +29 -0
  100. data/spec/feeds/data/bitcash_cz_blacklist.txt +7 -0
  101. data/spec/feeds/data/botscout-ip-reputation.txt +713 -0
  102. data/spec/feeds/data/cert_mxpoison-ip_reputation.txt +17 -0
  103. data/spec/feeds/data/chaosreigns-ip-reputation.txt +26 -0
  104. data/spec/feeds/data/cydef_torexit-ip_reputation.txt +27 -0
  105. data/spec/feeds/data/danger_bruteforce-ip_reputation.txt +12 -0
  106. data/spec/feeds/data/falconcrest_iplist.txt +345 -0
  107. data/spec/feeds/data/h3x_asprox.txt +20 -0
  108. data/spec/feeds/data/hosts-file_hphostspartial_domainlist.txt +24 -0
  109. data/spec/feeds/data/infiltrated_vabl_iplist.txt +33 -0
  110. data/spec/feeds/data/isc_suspicious_high_domainlist.txt +26 -0
  111. data/spec/feeds/data/isc_suspicious_low_domainlist.txt +34 -0
  112. data/spec/feeds/data/isc_suspicious_medium_domainlist.txt +32 -0
  113. data/spec/feeds/data/malwaredomainlist-url-reputation.txt +8 -0
  114. data/spec/feeds/data/malwaredomains_domainlist.txt +24 -0
  115. data/spec/feeds/data/malwaredomains_dyndns_domainlist.txt +34 -0
  116. data/spec/feeds/data/malwaredomains_justdomains_domainlist.txt +18 -0
  117. data/spec/feeds/data/multiproxy_iplist.txt +15 -0
  118. data/spec/feeds/data/openphish-url-reputation.txt +16 -0
  119. data/spec/feeds/data/packetmail_perimeterbad-ip_reputation.txt +44 -0
  120. data/spec/feeds/data/sigmaproject_atma.return.gz +0 -0
  121. data/spec/feeds/data/sigmaproject_spyware.return.gz +0 -0
  122. data/spec/feeds/data/sigmaproject_webexploit.return.gz +0 -0
  123. data/spec/feeds/data/snort_bpf-ip_reputation.txt +16 -0
  124. data/spec/feeds/data/steeman-ip-reputation.txt +13 -0
  125. data/spec/feeds/data/trustedsec-ip-reputation.txt +12 -0
  126. data/spec/feeds/data/virbl-ip_reputation.txt +14 -0
  127. data/spec/feeds/data/vxvault-url-reputation.txt +15 -0
  128. data/spec/feeds/data/yoyo_adservers.txt +25 -0
  129. data/spec/feeds/dshield_attackers-top1000_spec.rb +1 -4
  130. data/spec/feeds/falconcrest-ip_reputation_spec.rb +37 -0
  131. data/spec/feeds/feodo-domain_reputation_spec.rb +0 -3
  132. data/spec/feeds/feodo-ip_reputation_spec.rb +2 -5
  133. data/spec/feeds/h3x_asprox-ip_reputation_spec.rb +50 -0
  134. data/spec/feeds/hosts-file_hphostspartial-domain_reputation_spec.rb +47 -0
  135. data/spec/feeds/infiltrated-ip_reputation_spec.rb +2 -5
  136. data/spec/feeds/infiltrated_vabl-ip_reputation_spec.rb +47 -0
  137. data/spec/feeds/isc_suspicious_high-domain_reputation_spec.rb +47 -0
  138. data/spec/feeds/isc_suspicious_low-domain_reputation_spec.rb +47 -0
  139. data/spec/feeds/isc_suspicious_medium-domain_reputation_spec.rb +47 -0
  140. data/spec/feeds/malc0de-domain_reputation_spec.rb +0 -3
  141. data/spec/feeds/malc0de-ip_reputation_spec.rb +2 -5
  142. data/spec/feeds/malwaredomainlist_url_reputation_spec.rb +50 -0
  143. data/spec/feeds/malwaredomains-domain_reputation_spec.rb +47 -0
  144. data/spec/feeds/malwaredomains_dyndns-domain_reputation_spec.rb +47 -0
  145. data/spec/feeds/malwaredomains_justdomains-domain_reputation_spec.rb +47 -0
  146. data/spec/feeds/mirc-domain_reputation_spec.rb +0 -3
  147. data/spec/feeds/multiproxy-ip_reputation_spec.rb +47 -0
  148. data/spec/feeds/nothink_irc-ip_reputation_spec.rb +2 -5
  149. data/spec/feeds/nothink_ssh-ip_reputation_spec.rb +2 -5
  150. data/spec/feeds/openbl-ip_reputation_spec.rb +2 -5
  151. data/spec/feeds/openphish_url_reputation_spec.rb +50 -0
  152. data/spec/feeds/packetmail_perimeterbad-ip_reputation_spec.rb +47 -0
  153. data/spec/feeds/palevo-domain_reputation_spec.rb +0 -3
  154. data/spec/feeds/palevo-ip_reputation_spec.rb +2 -5
  155. data/spec/feeds/phishtank_spec.rb +2 -5
  156. data/spec/feeds/sigmaproject_atma_spec.rb +63 -0
  157. data/spec/feeds/sigmaproject_spyware_spec.rb +64 -0
  158. data/spec/feeds/sigmaproject_webexploit_spec.rb +63 -0
  159. data/spec/feeds/snort_bpf-ip_reputation_spec.rb +47 -0
  160. data/spec/feeds/spyeye-domain_reputation_spec.rb +0 -3
  161. data/spec/feeds/spyeye-ip_reputation_spec.rb +2 -5
  162. data/spec/feeds/steeman-ip_reputation_spec.rb +50 -0
  163. data/spec/feeds/t-arend-de_ssh-ip_reputation_spec.rb +2 -5
  164. data/spec/feeds/the_haleys_ssh-ip_reputation_spec.rb +2 -5
  165. data/spec/feeds/trustedsec-ip_reputation_spec.rb +47 -0
  166. data/spec/feeds/virbl-ip_reputation_spec.rb +47 -0
  167. data/spec/feeds/vxvault_url_reputation_spec.rb +50 -0
  168. data/spec/feeds/yourcmc_ssh-ip_reputation_spec.rb +2 -5
  169. data/spec/feeds/yoyo_adservers_spec.rb +47 -0
  170. data/spec/feeds/zeus-domain_reputation_spec.rb +0 -3
  171. data/spec/feeds/zeus-ip_reputation_spec.rb +2 -5
  172. data/spec/spec_helper.rb +2 -0
  173. data/spec/support/factories/event.rb +11 -7
  174. data/spec/support/factories/feed.rb +28 -1
  175. data/spec/support/factories/ipv4.rb +36 -0
  176. data/spec/support/factories/url.rb +34 -0
  177. data/spec/support/shared/feed_runner_observer.rb +136 -0
  178. data/spec/support/shared/feeds.rb +19 -4
  179. data/spec/support/shared/model/collection.rb +164 -0
  180. data/spec/threatinator/actions/run/action_spec.rb +27 -10
  181. data/spec/threatinator/actions/run/coverage_observer_spec.rb +39 -4
  182. data/spec/threatinator/actions/run/status_observer_spec.rb +86 -0
  183. data/spec/threatinator/event_builder_spec.rb +111 -21
  184. data/spec/threatinator/event_spec.rb +237 -13
  185. data/spec/threatinator/event_spec.rb.new +319 -0
  186. data/spec/threatinator/feed_builder_spec.rb +0 -3
  187. data/spec/threatinator/feed_runner_spec.rb +254 -70
  188. data/spec/threatinator/logger_spec.rb +29 -0
  189. data/spec/threatinator/model/observables/fqdn_collection_spec.rb +42 -0
  190. data/spec/threatinator/model/observables/ipv4_collection_spec.rb +36 -0
  191. data/spec/threatinator/model/observables/ipv4_spec.rb +75 -0
  192. data/spec/threatinator/model/observables/url_collection_spec.rb +45 -0
  193. data/spec/threatinator/model/validations/type_spec.rb +37 -0
  194. data/spec/threatinator/plugins/output/csv_spec.rb +4 -3
  195. metadata +216 -19
  196. data/lib/threatinator/property_definer.rb +0 -101
  197. data/spec/threatinator/property_definer_spec.rb +0 -155
@@ -13,9 +13,6 @@ describe 'feeds/blocklist_de_bots-ip_reputation.feed', :feed do
13
13
  it "should have filtered 2 records" do
14
14
  expect(num_records_filtered).to eq(2)
15
15
  end
16
- it "should have missed 0 records" do
17
- expect(num_records_missed).to eq(0)
18
- end
19
16
  end
20
17
 
21
18
  describe_parsing_a_record '101.71.196.164' do
@@ -28,7 +25,7 @@ describe 'feeds/blocklist_de_bots-ip_reputation.feed', :feed do
28
25
  describe 'event 0' do
29
26
  subject { events[0] }
30
27
  its(:type) { is_expected.to be(:scanning) }
31
- its(:ipv4s) { is_expected.to match_array(['101.71.196.164']) }
28
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['101.71.196.164'])) }
32
29
  end
33
30
  end
34
31
 
@@ -42,7 +39,7 @@ describe 'feeds/blocklist_de_bots-ip_reputation.feed', :feed do
42
39
  describe 'event 0' do
43
40
  subject { events[0] }
44
41
  its(:type) { is_expected.to be(:scanning) }
45
- its(:ipv4s) { is_expected.to match_array(['200.93.43.157']) }
42
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['200.93.43.157'])) }
46
43
  end
47
44
  end
48
45
  end
@@ -13,9 +13,6 @@ describe 'feeds/blocklist_de_ftp-ip_reputation.feed', :feed do
13
13
  it "should have filtered 0 records" do
14
14
  expect(num_records_filtered).to eq(0)
15
15
  end
16
- it "should have missed 0 records" do
17
- expect(num_records_missed).to eq(0)
18
- end
19
16
  end
20
17
 
21
18
  describe_parsing_a_record '111.192.138.169' do
@@ -28,7 +25,7 @@ describe 'feeds/blocklist_de_ftp-ip_reputation.feed', :feed do
28
25
  describe 'event 0' do
29
26
  subject { events[0] }
30
27
  its(:type) { is_expected.to be(:scanning) }
31
- its(:ipv4s) { is_expected.to match_array(['111.192.138.169']) }
28
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['111.192.138.169'])) }
32
29
  end
33
30
  end
34
31
 
@@ -42,7 +39,7 @@ describe 'feeds/blocklist_de_ftp-ip_reputation.feed', :feed do
42
39
  describe 'event 0' do
43
40
  subject { events[0] }
44
41
  its(:type) { is_expected.to be(:scanning) }
45
- its(:ipv4s) { is_expected.to match_array(['112.198.77.229']) }
42
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['112.198.77.229'])) }
46
43
  end
47
44
  end
48
45
  end
@@ -13,9 +13,6 @@ describe 'feeds/blocklist_de_imap-ip_reputation.feed', :feed do
13
13
  it "should have filtered 0 records" do
14
14
  expect(num_records_filtered).to eq(0)
15
15
  end
16
- it "should have missed 0 records" do
17
- expect(num_records_missed).to eq(0)
18
- end
19
16
  end
20
17
 
21
18
  describe_parsing_a_record '1.93.46.156' do
@@ -28,7 +25,7 @@ describe 'feeds/blocklist_de_imap-ip_reputation.feed', :feed do
28
25
  describe 'event 0' do
29
26
  subject { events[0] }
30
27
  its(:type) { is_expected.to be(:scanning) }
31
- its(:ipv4s) { is_expected.to match_array(['1.93.46.156']) }
28
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['1.93.46.156'])) }
32
29
  end
33
30
  end
34
31
 
@@ -42,7 +39,7 @@ describe 'feeds/blocklist_de_imap-ip_reputation.feed', :feed do
42
39
  describe 'event 0' do
43
40
  subject { events[0] }
44
41
  its(:type) { is_expected.to be(:scanning) }
45
- its(:ipv4s) { is_expected.to match_array(['103.10.134.220']) }
42
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['103.10.134.220'])) }
46
43
  end
47
44
  end
48
45
  end
@@ -13,9 +13,6 @@ describe 'feeds/blocklist_de_pop3-ip_reputation.feed', :feed do
13
13
  it "should have filtered 0 records" do
14
14
  expect(num_records_filtered).to eq(0)
15
15
  end
16
- it "should have missed 0 records" do
17
- expect(num_records_missed).to eq(0)
18
- end
19
16
  end
20
17
 
21
18
  describe_parsing_a_record '1.175.64.9' do
@@ -28,7 +25,7 @@ describe 'feeds/blocklist_de_pop3-ip_reputation.feed', :feed do
28
25
  describe 'event 0' do
29
26
  subject { events[0] }
30
27
  its(:type) { is_expected.to be(:scanning) }
31
- its(:ipv4s) { is_expected.to match_array(['1.175.64.9']) }
28
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['1.175.64.9'])) }
32
29
  end
33
30
  end
34
31
 
@@ -42,7 +39,7 @@ describe 'feeds/blocklist_de_pop3-ip_reputation.feed', :feed do
42
39
  describe 'event 0' do
43
40
  subject { events[0] }
44
41
  its(:type) { is_expected.to be(:scanning) }
45
- its(:ipv4s) { is_expected.to match_array(['1.53.0.215']) }
42
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['1.53.0.215'])) }
46
43
  end
47
44
  end
48
45
  end
@@ -13,9 +13,6 @@ describe 'feeds/blocklist_de_proftpd-ip_reputation.feed', :feed do
13
13
  it "should have filtered 0 records" do
14
14
  expect(num_records_filtered).to eq(0)
15
15
  end
16
- it "should have missed 0 records" do
17
- expect(num_records_missed).to eq(0)
18
- end
19
16
  end
20
17
 
21
18
  describe_parsing_a_record '111.192.148.129' do
@@ -28,7 +25,7 @@ describe 'feeds/blocklist_de_proftpd-ip_reputation.feed', :feed do
28
25
  describe 'event 0' do
29
26
  subject { events[0] }
30
27
  its(:type) { is_expected.to be(:scanning) }
31
- its(:ipv4s) { is_expected.to match_array(['111.192.148.129']) }
28
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['111.192.148.129'])) }
32
29
  end
33
30
  end
34
31
 
@@ -42,7 +39,7 @@ describe 'feeds/blocklist_de_proftpd-ip_reputation.feed', :feed do
42
39
  describe 'event 0' do
43
40
  subject { events[0] }
44
41
  its(:type) { is_expected.to be(:scanning) }
45
- its(:ipv4s) { is_expected.to match_array(['112.90.37.220']) }
42
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['112.90.37.220'])) }
46
43
  end
47
44
  end
48
45
  end
@@ -13,9 +13,6 @@ describe 'feeds/blocklist_de_sip-ip_reputation.feed', :feed do
13
13
  it "should have filtered 0 records" do
14
14
  expect(num_records_filtered).to eq(0)
15
15
  end
16
- it "should have missed 0 records" do
17
- expect(num_records_missed).to eq(0)
18
- end
19
16
  end
20
17
 
21
18
  describe_parsing_a_record '178.32.229.159' do
@@ -28,7 +25,7 @@ describe 'feeds/blocklist_de_sip-ip_reputation.feed', :feed do
28
25
  describe 'event 0' do
29
26
  subject { events[0] }
30
27
  its(:type) { is_expected.to be(:scanning) }
31
- its(:ipv4s) { is_expected.to match_array(['178.32.229.159']) }
28
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['178.32.229.159'])) }
32
29
  end
33
30
  end
34
31
 
@@ -42,7 +39,7 @@ describe 'feeds/blocklist_de_sip-ip_reputation.feed', :feed do
42
39
  describe 'event 0' do
43
40
  subject { events[0] }
44
41
  its(:type) { is_expected.to be(:scanning) }
45
- its(:ipv4s) { is_expected.to match_array(['198.204.224.10']) }
42
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['198.204.224.10'])) }
46
43
  end
47
44
  end
48
45
  end
@@ -13,9 +13,6 @@ describe 'feeds/blocklist_de_ssh-ip_reputation.feed', :feed do
13
13
  it "should have filtered 0 records" do
14
14
  expect(num_records_filtered).to eq(0)
15
15
  end
16
- it "should have missed 0 records" do
17
- expect(num_records_missed).to eq(0)
18
- end
19
16
  end
20
17
 
21
18
  describe_parsing_a_record '1.93.24.83' do
@@ -28,7 +25,7 @@ describe 'feeds/blocklist_de_ssh-ip_reputation.feed', :feed do
28
25
  describe 'event 0' do
29
26
  subject { events[0] }
30
27
  its(:type) { is_expected.to be(:scanning) }
31
- its(:ipv4s) { is_expected.to match_array(['1.93.24.83']) }
28
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['1.93.24.83'])) }
32
29
  end
33
30
  end
34
31
 
@@ -42,7 +39,7 @@ describe 'feeds/blocklist_de_ssh-ip_reputation.feed', :feed do
42
39
  describe 'event 0' do
43
40
  subject { events[0] }
44
41
  its(:type) { is_expected.to be(:scanning) }
45
- its(:ipv4s) { is_expected.to match_array(['1.93.25.251']) }
42
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['1.93.25.251'])) }
46
43
  end
47
44
  end
48
45
  end
@@ -13,9 +13,6 @@ describe 'feeds/blocklist_de_strongips-ip_reputation.feed', :feed do
13
13
  it "should have filtered 0 records" do
14
14
  expect(num_records_filtered).to eq(0)
15
15
  end
16
- it "should have missed 0 records" do
17
- expect(num_records_missed).to eq(0)
18
- end
19
16
  end
20
17
 
21
18
  describe_parsing_a_record '188.143.232.211' do
@@ -28,7 +25,7 @@ describe 'feeds/blocklist_de_strongips-ip_reputation.feed', :feed do
28
25
  describe 'event 0' do
29
26
  subject { events[0] }
30
27
  its(:type) { is_expected.to be(:scanning) }
31
- its(:ipv4s) { is_expected.to match_array(['188.143.232.211']) }
28
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['188.143.232.211'])) }
32
29
  end
33
30
  end
34
31
 
@@ -42,7 +39,7 @@ describe 'feeds/blocklist_de_strongips-ip_reputation.feed', :feed do
42
39
  describe 'event 0' do
43
40
  subject { events[0] }
44
41
  its(:type) { is_expected.to be(:scanning) }
45
- its(:ipv4s) { is_expected.to match_array(['142.54.173.130']) }
42
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['142.54.173.130'])) }
46
43
  end
47
44
  end
48
45
  end
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'feeds/botscout-ip_reputation.feed', :feed do
4
+ let(:provider) { 'botscout' }
5
+ let(:name) { 'ip_reputation' }
6
+
7
+ it_fetches_url 'http://botscout.com/last_caught_cache.htm'
8
+
9
+ describe_parsing_the_file feed_data('botscout-ip-reputation.txt') do
10
+ it "should have parsed 100 records" do
11
+ expect(num_records_parsed).to eq(100)
12
+ end
13
+ it "should have filtered 613 records" do
14
+ expect(num_records_filtered).to eq(613)
15
+ end
16
+ it "should have missed 0 records" do
17
+ expect(num_records_missed).to eq(0)
18
+ end
19
+ end
20
+
21
+ describe_parsing_a_record '<td><a href="/ipcheck.htm?ip=71.173.145.58">71.173.145.58</a></td>' do
22
+ it "should have parsed" do
23
+ expect(status).to eq(:parsed)
24
+ end
25
+ it "should have parsed 1 event" do
26
+ expect(events.count).to eq(1)
27
+ end
28
+ describe 'event 0' do
29
+ subject { events[0] }
30
+ its(:type) { is_expected.to be(:scanning) }
31
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['71.173.145.58'])) }
32
+ end
33
+ end
34
+
35
+ describe_parsing_a_record '<td><a href="/ipcheck.htm?ip=91.200.13.5">91.200.13.5</a></td>' do
36
+ it "should have parsed" do
37
+ expect(status).to eq(:parsed)
38
+ end
39
+ it "should have parsed 1 event" do
40
+ expect(events.count).to eq(1)
41
+ end
42
+ describe 'event 0' do
43
+ subject { events[0] }
44
+ its(:type) { is_expected.to be(:scanning) }
45
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['91.200.13.5'])) }
46
+ end
47
+ end
48
+ end
49
+
50
+
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'feeds/cert_mxpoison-ip_reputation.feed', :feed do
4
+ let(:provider) { 'cert' }
5
+ let(:name) { 'mxpoison_ip_reputation' }
6
+
7
+ it_fetches_url 'http://www.cert.org/downloads/mxlist.ips.txt'
8
+
9
+ describe_parsing_the_file feed_data('cert_mxpoison-ip_reputation.txt') do
10
+ it "should have parsed 17 records" do
11
+ expect(num_records_parsed).to eq(17)
12
+ end
13
+ it "should have filtered 0 records" do
14
+ expect(num_records_filtered).to eq(0)
15
+ end
16
+ end
17
+
18
+ describe_parsing_a_record '74.125.196.27' do
19
+ it "should have parsed" do
20
+ expect(status).to eq(:parsed)
21
+ end
22
+ it "should have parsed 1 event" do
23
+ expect(events.count).to eq(1)
24
+ end
25
+ describe 'event 0' do
26
+ subject { events[0] }
27
+ its(:type) { is_expected.to be(:malware_host) }
28
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['74.125.196.27'])) }
29
+ end
30
+ end
31
+
32
+ describe_parsing_a_record '74.53.119.26' do
33
+ it "should have parsed" do
34
+ expect(status).to eq(:parsed)
35
+ end
36
+ it "should have parsed 1 event" do
37
+ expect(events.count).to eq(1)
38
+ end
39
+ describe 'event 0' do
40
+ subject { events[0] }
41
+ its(:type) { is_expected.to be(:malware_host) }
42
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['74.53.119.26'])) }
43
+ end
44
+ end
45
+ end
46
+
47
+
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'feeds/chaosreigns-ip_reputation.feed', :feed do
4
+ let(:provider) { 'chaosreigns' }
5
+ let(:name) { 'ip_reputation' }
6
+
7
+ it_fetches_url 'http://www.chaosreigns.com/iprep/iprep.txt'
8
+
9
+ describe_parsing_the_file feed_data('chaosreigns-ip-reputation.txt') do
10
+ it "should have parsed 5 records" do
11
+ expect(num_records_parsed).to eq(5)
12
+ end
13
+ it "should have filtered 21 records" do
14
+ expect(num_records_filtered).to eq(21)
15
+ end
16
+ it "should have missed 0 records" do
17
+ expect(num_records_missed).to eq(0)
18
+ end
19
+ end
20
+
21
+ describe_parsing_a_record ' 5.9.94.3 0 17' do
22
+ it "should have parsed" do
23
+ expect(status).to eq(:parsed)
24
+ end
25
+ it "should have parsed 1 event" do
26
+ expect(events.count).to eq(1)
27
+ end
28
+ describe 'event 0' do
29
+ subject { events[0] }
30
+ its(:type) { is_expected.to be(:scanning) }
31
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['5.9.94.3'])) }
32
+ end
33
+ end
34
+
35
+ describe_parsing_a_record ' 1.52.9.7 0 0' do
36
+ it "should have parsed" do
37
+ expect(status).to eq(:parsed)
38
+ end
39
+ it "should have parsed 1 event" do
40
+ expect(events.count).to eq(1)
41
+ end
42
+ describe 'event 0' do
43
+ subject { events[0] }
44
+ its(:type) { is_expected.to be(:scanning) }
45
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['1.52.9.7'])) }
46
+ end
47
+ end
48
+ end
49
+
50
+
@@ -13,9 +13,6 @@ describe 'feeds/ciarmy-ip_reputation.feed', :feed do
13
13
  it "should have filtered 0 records" do
14
14
  expect(num_records_filtered).to eq(0)
15
15
  end
16
- it "should have missed 0 records" do
17
- expect(num_records_missed).to eq(0)
18
- end
19
16
  end
20
17
 
21
18
  describe_parsing_a_record '5.79.68.161' do
@@ -28,7 +25,7 @@ describe 'feeds/ciarmy-ip_reputation.feed', :feed do
28
25
  describe 'event 0' do
29
26
  subject { events[0] }
30
27
  its(:type) { is_expected.to be(:scanning) }
31
- its(:ipv4s) { is_expected.to match_array(['5.79.68.161']) }
28
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['5.79.68.161'])) }
32
29
  end
33
30
  end
34
31
 
@@ -42,7 +39,7 @@ describe 'feeds/ciarmy-ip_reputation.feed', :feed do
42
39
  describe 'event 0' do
43
40
  subject { events[0] }
44
41
  its(:type) { is_expected.to be(:scanning) }
45
- its(:ipv4s) { is_expected.to match_array(['10.0.100.121']) }
42
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['10.0.100.121'])) }
46
43
  end
47
44
  end
48
45
  end
@@ -13,9 +13,6 @@ describe 'feeds/cruzit-ip_reputation.feed', :feed do
13
13
  it "should have filtered 0 records" do
14
14
  expect(num_records_filtered).to eq(0)
15
15
  end
16
- it "should have missed 0 records" do
17
- expect(num_records_missed).to eq(0)
18
- end
19
16
  end
20
17
 
21
18
  describe_parsing_a_record '107.170.248.56' do
@@ -28,7 +25,7 @@ describe 'feeds/cruzit-ip_reputation.feed', :feed do
28
25
  describe 'event 0' do
29
26
  subject { events[0] }
30
27
  its(:type) { is_expected.to be(:scanning) }
31
- its(:ipv4s) { is_expected.to match_array(['107.170.248.56']) }
28
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['107.170.248.56'])) }
32
29
  end
33
30
  end
34
31
 
@@ -42,7 +39,7 @@ describe 'feeds/cruzit-ip_reputation.feed', :feed do
42
39
  describe 'event 0' do
43
40
  subject { events[0] }
44
41
  its(:type) { is_expected.to be(:scanning) }
45
- its(:ipv4s) { is_expected.to match_array(['80.82.64.114']) }
42
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['80.82.64.114'])) }
46
43
  end
47
44
  end
48
45
  end
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'feeds/cydef_torexit-ip_reputation.feed', :feed do
4
+ let(:provider) { 'cydef' }
5
+ let(:name) { 'torexit_ip_reputation' }
6
+
7
+ it_fetches_url 'https://cydef.us/torexit.txt'
8
+
9
+ describe_parsing_the_file feed_data('cydef_torexit-ip_reputation.txt') do
10
+ it "should have parsed 26 records" do
11
+ expect(num_records_parsed).to eq(26)
12
+ end
13
+ it "should have filtered 1 records" do
14
+ expect(num_records_filtered).to eq(1)
15
+ end
16
+ end
17
+
18
+ describe_parsing_a_record '5.9.195.140' do
19
+ it "should have parsed" do
20
+ expect(status).to eq(:parsed)
21
+ end
22
+ it "should have parsed 1 event" do
23
+ expect(events.count).to eq(1)
24
+ end
25
+ describe 'event 0' do
26
+ subject { events[0] }
27
+ its(:type) { is_expected.to be(:scanning) }
28
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['5.9.195.140'])) }
29
+ end
30
+ end
31
+
32
+ describe_parsing_a_record '5.45.104.141' do
33
+ it "should have parsed" do
34
+ expect(status).to eq(:parsed)
35
+ end
36
+ it "should have parsed 1 event" do
37
+ expect(events.count).to eq(1)
38
+ end
39
+ describe 'event 0' do
40
+ subject { events[0] }
41
+ its(:type) { is_expected.to be(:scanning) }
42
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['5.45.104.141'])) }
43
+ end
44
+ end
45
+ end
46
+
47
+