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/dshield_attackers-top1000.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
 
20
17
  describe "the records" do
21
18
  it "should total 10" do
@@ -33,7 +30,7 @@ describe 'feeds/dshield_attackers-top1000.feed', :feed do
33
30
  subject { event }
34
31
 
35
32
  its(:type) { is_expected.to be(:attacker) }
36
- its(:ipv4s) { is_expected.to match_array(['150.164.82.10']) }
33
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['150.164.82.10'])) }
37
34
  end
38
35
  end
39
36
  end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'feeds/falconcrest-ip_reputation.feed', :feed do
4
+ let(:provider) { 'falconcrest' }
5
+ let(:name) { 'ip_reputation' }
6
+
7
+ it_fetches_url 'http://www.falconcrest.eu/IPBL.aspx'
8
+
9
+ describe_parsing_the_file feed_data('falconcrest_iplist.txt') do
10
+ it "should have parsed 10 records" do
11
+ expect(num_records_parsed).to eq(29)
12
+ end
13
+ it "should have filtered 0 records" do
14
+ expect(num_records_filtered).to eq(0)
15
+ end
16
+
17
+ describe "the records" do
18
+ it "should total 10" do
19
+ expect(num_records).to eq(29)
20
+ end
21
+
22
+ it "each record should have generated exactly one event" do
23
+ counts = events.map { |event_array| event_array.count }
24
+ expect(counts).to eq([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
25
+ end
26
+
27
+ describe "the event for record 0" do
28
+ let(:record) { records[0] }
29
+ let(:event) { events[0].first }
30
+ subject { event }
31
+
32
+ its(:type) { is_expected.to be(:spamming) }
33
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['175.44.5.227'])) }
34
+ end
35
+ end
36
+ end
37
+ end
@@ -13,9 +13,6 @@ describe 'feeds/feodo-domain_reputation.feed', :feed do
13
13
  it "should have filtered 6 records" do
14
14
  expect(num_records_filtered).to eq(6)
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 'buriymishka.ru' do
@@ -13,9 +13,6 @@ describe 'feeds/feodo-ip_reputation.feed', :feed do
13
13
  it "should have filtered 6 records" do
14
14
  expect(num_records_filtered).to eq(6)
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 '103.25.59.120' do
@@ -28,7 +25,7 @@ describe 'feeds/feodo-ip_reputation.feed', :feed do
28
25
  describe 'event 0' do
29
26
  subject { events[0] }
30
27
  its(:type) { is_expected.to be(:c2) }
31
- its(:ipv4s) { is_expected.to match_array(['103.25.59.120']) }
28
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['103.25.59.120'])) }
32
29
  end
33
30
  end
34
31
 
@@ -42,7 +39,7 @@ describe 'feeds/feodo-ip_reputation.feed', :feed do
42
39
  describe 'event 0' do
43
40
  subject { events[0] }
44
41
  its(:type) { is_expected.to be(:c2) }
45
- its(:ipv4s) { is_expected.to match_array(['173.236.86.214']) }
42
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['173.236.86.214'])) }
46
43
  end
47
44
  end
48
45
  end
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'feeds/h3x_asprox.feed', :feed do
4
+ let(:provider) { 'h3x' }
5
+ let(:name) { 'asprox' }
6
+
7
+ it_fetches_url 'http://atrack.h3x.eu/api/asprox_all.php'
8
+
9
+ describe_parsing_the_file feed_data('h3x_asprox.txt') do
10
+ it "should have parsed 20 records" do
11
+ expect(num_records_parsed).to eq(20)
12
+ end
13
+ it "should have filtered 0 records" do
14
+ expect(num_records_filtered).to eq(0)
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 '178.79.161.146:443' 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(:c2) }
31
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['178.79.161.146'])) }
32
+ end
33
+ end
34
+
35
+ describe_parsing_a_record '162.218.236.73:8080' 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(:c2) }
45
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['162.218.236.73'])) }
46
+ end
47
+ end
48
+ end
49
+
50
+
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'feeds/hosts-file_hphostspartial-domain_reputation.feed', :feed do
4
+ let(:provider) { 'hosts-file' }
5
+ let(:name) { 'hphostspartial_domain_reputation' }
6
+
7
+ it_fetches_url 'http://hosts-file.net/hphosts-partial.txt'
8
+
9
+ describe_parsing_the_file feed_data('hosts-file_hphostspartial_domainlist.txt') do
10
+ it "should have parsed 13 records" do
11
+ expect(num_records_parsed).to eq(13)
12
+ end
13
+ it "should have filtered 11 records" do
14
+ expect(num_records_filtered).to eq(11)
15
+ end
16
+ end
17
+
18
+ describe_parsing_a_record '127.0.0.1 0.cordelia8.waslittrefxwpc.eu' 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(:fqdns) { is_expected.to match_array(['0.cordelia8.waslittrefxwpc.eu']) }
29
+ end
30
+ end
31
+
32
+ describe_parsing_a_record '127.0.0.1 009.blogfoxnewsators.ru' 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(:fqdns) { is_expected.to match_array(['009.blogfoxnewsators.ru']) }
43
+ end
44
+ end
45
+ end
46
+
47
+
@@ -13,9 +13,6 @@ describe 'feeds/infiltrated-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 '95.221.71.219' do
@@ -28,7 +25,7 @@ describe 'feeds/infiltrated-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(['95.221.71.219']) }
28
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['95.221.71.219'])) }
32
29
  end
33
30
  end
34
31
 
@@ -42,7 +39,7 @@ describe 'feeds/infiltrated-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(['94.41.71.52']) }
42
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['94.41.71.52'])) }
46
43
  end
47
44
  end
48
45
  end
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'feeds/infiltrated_vabl-ip_reputation.feed', :feed do
4
+ let(:provider) { 'infiltrated' }
5
+ let(:name) { 'vabl_ip_reputation' }
6
+
7
+ it_fetches_url 'http://www.infiltrated.net/vabl.txt'
8
+
9
+ describe_parsing_the_file feed_data('infiltrated_vabl_iplist.txt') do
10
+ it "should have parsed 21 records" do
11
+ expect(num_records_parsed).to eq(21)
12
+ end
13
+ it "should have filtered 12 records" do
14
+ expect(num_records_filtered).to eq(12)
15
+ end
16
+ end
17
+
18
+ describe_parsing_a_record '108.59.1.205 | BRU | VABL | 20110609 | e22b6e201b3533a0dd1ac8bb47426169 | 30633 | 108.59.0.0/20 | LEASEWEB-US | US | - | LEASEWEB USA INC' 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: ['108.59.1.205'])) }
29
+ end
30
+ end
31
+
32
+ describe_parsing_a_record '109.169.60.121 | BRU | VABL | 20110621 | 8850509672ee7d983d9a511e31b13a9a | 29761 | 109.169.60.0/23 | OC3-NETWORKS-AS-NUMB | US | BMTRADAGROUP.COM | RAPIDSWITCH LTD' 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: ['109.169.60.121'])) }
43
+ end
44
+ end
45
+ end
46
+
47
+
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'feeds/isc_suspicious_high-domain_reputation.feed', :feed do
4
+ let(:provider) { 'isc' }
5
+ let(:name) { 'suspicious_high_domain_reputation' }
6
+
7
+ it_fetches_url 'https://isc.sans.edu/feeds/suspiciousdomains_High.txt'
8
+
9
+ describe_parsing_the_file feed_data('isc_suspicious_high_domainlist.txt') do
10
+ it "should have parsed 9 records" do
11
+ expect(num_records_parsed).to eq(9)
12
+ end
13
+ it "should have filtered 17 records" do
14
+ expect(num_records_filtered).to eq(17)
15
+ end
16
+ end
17
+
18
+ describe_parsing_a_record '1-verygoods.ru' 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(:fqdns) { is_expected.to match_array(['1-verygoods.ru']) }
29
+ end
30
+ end
31
+
32
+ describe_parsing_a_record '123kochi.com' 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(:fqdns) { is_expected.to match_array(['123kochi.com']) }
43
+ end
44
+ end
45
+ end
46
+
47
+
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'feeds/isc_suspicious_low-domain_reputation.feed', :feed do
4
+ let(:provider) { 'isc' }
5
+ let(:name) { 'suspicious_low_domain_reputation' }
6
+
7
+ it_fetches_url 'https://isc.sans.edu/feeds/suspiciousdomains_Low.txt'
8
+
9
+ describe_parsing_the_file feed_data('isc_suspicious_low_domainlist.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 17 records" do
14
+ expect(num_records_filtered).to eq(17)
15
+ end
16
+ end
17
+
18
+ describe_parsing_a_record '10kpictures.com' 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(:fqdns) { is_expected.to match_array(['10kpictures.com']) }
29
+ end
30
+ end
31
+
32
+ describe_parsing_a_record '1492tapasbar.com' 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(:fqdns) { is_expected.to match_array(['1492tapasbar.com']) }
43
+ end
44
+ end
45
+ end
46
+
47
+
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'feeds/isc_suspicious_medium-domain_reputation.feed', :feed do
4
+ let(:provider) { 'isc' }
5
+ let(:name) { 'suspicious_medium_domain_reputation' }
6
+
7
+ it_fetches_url 'https://isc.sans.edu/feeds/suspiciousdomains_Medium.txt'
8
+
9
+ describe_parsing_the_file feed_data('isc_suspicious_medium_domainlist.txt') do
10
+ it "should have parsed 15 records" do
11
+ expect(num_records_parsed).to eq(15)
12
+ end
13
+ it "should have filtered 17 records" do
14
+ expect(num_records_filtered).to eq(17)
15
+ end
16
+ end
17
+
18
+ describe_parsing_a_record '114oldest.com' 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(:fqdns) { is_expected.to match_array(['114oldest.com']) }
29
+ end
30
+ end
31
+
32
+ describe_parsing_a_record '168asia.com' 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(:fqdns) { is_expected.to match_array(['168asia.com']) }
43
+ end
44
+ end
45
+ end
46
+
47
+
@@ -13,9 +13,6 @@ describe 'feeds/malc0de-domain_reputation.feed', :feed do
13
13
  it "should have filtered 6 records" do
14
14
  expect(num_records_filtered).to eq(6)
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 'PRIMARY opencandy.com blockeddomain.hosts' do
@@ -13,9 +13,6 @@ describe 'feeds/malc0de-ip_reputation.feed', :feed do
13
13
  it "should have filtered 4 records" do
14
14
  expect(num_records_filtered).to eq(4)
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 '216.151.164.53' do
@@ -28,7 +25,7 @@ describe 'feeds/malc0de-ip_reputation.feed', :feed do
28
25
  describe 'event 0' do
29
26
  subject { events[0] }
30
27
  its(:type) { is_expected.to be(:malware_host) }
31
- its(:ipv4s) { is_expected.to match_array(['216.151.164.53']) }
28
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['216.151.164.53'])) }
32
29
  end
33
30
  end
34
31
 
@@ -42,7 +39,7 @@ describe 'feeds/malc0de-ip_reputation.feed', :feed do
42
39
  describe 'event 0' do
43
40
  subject { events[0] }
44
41
  its(:type) { is_expected.to be(:malware_host) }
45
- its(:ipv4s) { is_expected.to match_array(['176.32.99.47']) }
42
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['176.32.99.47'])) }
46
43
  end
47
44
  end
48
45
  end