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
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'feeds/ET_block-ip_reputation.feed', :feed do
4
+ let(:provider) { 'emergingthreats' }
5
+ let(:name) { 'block_ip_reputation' }
6
+
7
+ it_fetches_url 'http://rules.emergingthreats.net/fwrules/emerging-Block-IPs.txt'
8
+
9
+ describe_parsing_the_file feed_data('ET_block-ip_reputation.txt') do
10
+ it "should have parsed 12 records" do
11
+ expect(num_records_parsed).to eq(12)
12
+ end
13
+ it "should have filtered 68 records" do
14
+ expect(num_records_filtered).to eq(68)
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 '103.230.84.239' 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: ['103.230.84.239'])) }
32
+ end
33
+ end
34
+
35
+ describe_parsing_a_record '97.107.134.249' 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: ['97.107.134.249'])) }
46
+ end
47
+ end
48
+ end
49
+
50
+
@@ -13,9 +13,6 @@ describe 'feeds/ET_compromised-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.90' do
@@ -28,7 +25,7 @@ describe 'feeds/ET_compromised-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.90']) }
28
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['1.93.24.90'])) }
32
29
  end
33
30
  end
34
31
 
@@ -42,7 +39,7 @@ describe 'feeds/ET_compromised-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.26.32']) }
42
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['1.93.26.32'])) }
46
43
  end
47
44
  end
48
45
  end
@@ -0,0 +1,56 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'feeds/ET_openbadlist-ip_reputation.feed', :feed do
4
+ let(:provider) { 'emergingthreats' }
5
+ let(:name) { 'openbadlist_ip_reputation' }
6
+
7
+ it_fetches_url 'https://raw.githubusercontent.com/EmergingThreats/et-open-bad-ip-list/master/IPs.txt'
8
+
9
+ describe_parsing_the_file feed_data('ET_openbadlist-ip_reputation.txt') do
10
+ it "should have parsed 44 records" do
11
+ expect(num_records_parsed).to eq(44)
12
+ end
13
+ it "should have filtered 18 records" do
14
+ expect(num_records_filtered).to eq(18)
15
+ end
16
+ end
17
+
18
+
19
+ describe_parsing_a_record 'Feb 18 2014; 89.45.14.0/24; Infinity/Redkit2/Goon EK landing or EK gate.' do
20
+ it "should have been filtered" do
21
+ expect(status).to eq(:filtered)
22
+ end
23
+ it "should have parsed 0 events" do
24
+ expect(events.count).to eq(0)
25
+ end
26
+ end
27
+ describe_parsing_a_record 'Jan 24 2014; 212.83.160.187/32; Neutrino EK' do
28
+ it "should have parsed" do
29
+ expect(status).to eq(:parsed)
30
+ end
31
+ it "should have parsed 1 event" do
32
+ expect(events.count).to eq(1)
33
+ end
34
+ describe 'event 0' do
35
+ subject { events[0] }
36
+ its(:type) { is_expected.to be(:c2) }
37
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['212.83.160.187'])) }
38
+ end
39
+ end
40
+
41
+ describe_parsing_a_record 'Jan 28 2014; 149.154.64.180/32; [a-z]{3,6}\.pp\.ua DGA cesspool' do
42
+ it "should have parsed" do
43
+ expect(status).to eq(:parsed)
44
+ end
45
+ it "should have parsed 1 event" do
46
+ expect(events.count).to eq(1)
47
+ end
48
+ describe 'event 0' do
49
+ subject { events[0] }
50
+ its(:type) { is_expected.to be(:c2) }
51
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['149.154.64.180'])) }
52
+ end
53
+ end
54
+ end
55
+
56
+
@@ -13,9 +13,6 @@ describe 'feeds/alienvault-ip_reputation.feed', :feed do
13
13
  it "should have filtered 8 records" do
14
14
  expect(num_records_filtered).to eq(8)
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 '37.205.198.162 # Scanning Host IT,,42.8333015442,12.8332996368' do
@@ -28,7 +25,7 @@ describe 'feeds/alienvault-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(['37.205.198.162']) }
28
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['37.205.198.162'])) }
32
29
  end
33
30
  end
34
31
 
@@ -42,7 +39,7 @@ describe 'feeds/alienvault-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(['108.59.1.5']) }
42
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['108.59.1.5'])) }
46
43
  end
47
44
  end
48
45
  end
@@ -13,9 +13,6 @@ describe 'feeds/arbor_fastflux-domain_reputation.feed', :feed do
13
13
  it "should have filtered 9 records" do
14
14
  expect(num_records_filtered).to eq(9)
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 'brylanehome.com' do
@@ -13,9 +13,6 @@ describe 'feeds/arbor_ssh-ip_reputation.feed', :feed do
13
13
  it "should have filtered 1 records" do
14
14
  expect(num_records_filtered).to eq(1)
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 '190.255.48.99' do
@@ -28,7 +25,7 @@ describe 'feeds/arbor_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(['190.255.48.99']) }
28
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['190.255.48.99'])) }
32
29
  end
33
30
  end
34
31
 
@@ -42,7 +39,7 @@ describe 'feeds/arbor_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(['184.172.196.132']) }
42
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['184.172.196.132'])) }
46
43
  end
47
44
  end
48
45
  end
@@ -13,9 +13,6 @@ describe 'feeds/autoshun_shunlist.feed', :feed do
13
13
  it "should have filtered 1 records" do
14
14
  expect(num_records_filtered).to eq(1)
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.34.230,2014-07-16 08:01:23,SSH Brute Force' do
@@ -28,7 +25,7 @@ describe 'feeds/autoshun_shunlist.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.34.230']) }
28
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['1.93.34.230'])) }
32
29
  end
33
30
  end
34
31
 
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'feeds/bambenek_c2_masterlist-domain_reputation.feed', :feed do
4
+ let(:provider) { 'bambenek' }
5
+ let(:name) { 'c2_masterlist' }
6
+
7
+ it_fetches_url 'http://osint.bambenekconsulting.com/feeds/c2-dommasterlist.txt'
8
+
9
+ describe_parsing_the_file feed_data('bambenek_c2-dommasterlist.csv') do
10
+ it "should have parsed 14 records" do
11
+ expect(num_records_parsed).to eq(14)
12
+ end
13
+ it "should have filtered 16 records" do
14
+ expect(num_records_filtered).to eq(16)
15
+ end
16
+ end
17
+
18
+ describe_parsing_a_record 'hhvohslwvpww.ru,Domain used by tinba,2014-11-03 16:30,http://osint.bambenekconsulting.com/manual/tinba-iplist.txt' 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(:c2) }
28
+ its(:fqdns) { is_expected.to match_array(['hhvohslwvpww.ru']) }
29
+ end
30
+ end
31
+
32
+ describe_parsing_a_record '## jcb@bambenekconsulting.com // http://bambenekconsulting.com' do
33
+ it "should have been filtered" do
34
+ expect(status).to eq(:filtered)
35
+ end
36
+ end
37
+ end
38
+
39
+
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'feeds/bambenek_c2_masterlist-ip_reputation.feed', :feed do
4
+ let(:provider) { 'bambenek' }
5
+ let(:name) { 'c2_masterlist_ip' }
6
+
7
+ it_fetches_url 'http://osint.bambenekconsulting.com/feeds/c2-ipmasterlist.txt'
8
+
9
+ describe_parsing_the_file feed_data('bambenek_c2-ipmasterlist.csv') do
10
+ it "should have parsed 11 records" do
11
+ expect(num_records_parsed).to eq(11)
12
+ end
13
+ it "should have filtered 16 records" do
14
+ expect(num_records_filtered).to eq(16)
15
+ end
16
+ end
17
+
18
+ describe_parsing_a_record '212.175.66.70,IP used by matsnu C&C,2014-11-03 16:40,http://osint.bambenekconsulting.com/manual/matsnu-iplist.txt' 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(:c2) }
28
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['212.175.66.70'])) }
29
+ end
30
+ end
31
+
32
+ describe_parsing_a_record '## jcb@bambenekconsulting.com // http://bambenekconsulting.com' do
33
+ it "should have been filtered" do
34
+ expect(status).to eq(:filtered)
35
+ end
36
+ end
37
+ end
38
+
39
+
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'feeds/bambenek_dga_feed-domain_reputation.feed', :feed do
4
+ let(:provider) { 'bambenek' }
5
+ let(:name) { 'dga_feed' }
6
+
7
+ it_fetches_url 'http://osint.bambenekconsulting.com/feeds/dga-feed.txt'
8
+
9
+ describe_parsing_the_file feed_data('bambenek_dga_feed.csv') do
10
+ it "should have parsed 28 records" do
11
+ expect(num_records_parsed).to eq(28)
12
+ end
13
+ it "should have filtered 14 records" do
14
+ expect(num_records_filtered).to eq(14)
15
+ end
16
+ end
17
+
18
+ describe_parsing_a_record 'rjfifeogqukyjdw.ru,Domain used by Wikipedia 25 DGA for 01 Nov 2014,20141101,http://osint.bambenekconsulting.com/manual/wiki25.txt' 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(:c2) }
28
+ its(:fqdns) { is_expected.to match_array(['rjfifeogqukyjdw.ru']) }
29
+ end
30
+ end
31
+
32
+ describe_parsing_a_record '## http://osint.bambenekconsulting.com/manual/dga-feed.txt' do
33
+ it "should have been filtered" do
34
+ expect(status).to eq(:filtered)
35
+ end
36
+ end
37
+ end
38
+
39
+
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'feeds/berkeley-ip_reputation.feed', :feed do
4
+ let(:provider) { 'berkeley' }
5
+ let(:name) { 'ip_reputation' }
6
+
7
+ it_fetches_url 'https://security.berkeley.edu/aggressive_ips/ips'
8
+
9
+ describe_parsing_the_file feed_data('berkeley.txt') do
10
+ it "should have parsed 16 records" do
11
+ expect(num_records_parsed).to eq(16)
12
+ end
13
+ it "should have filtered 13 records" do
14
+ expect(num_records_filtered).to eq(13)
15
+ end
16
+ end
17
+
18
+ describe_parsing_a_record 'HOSTILE_IP: 116.10.191.182 LAST_SEEN: 1403615662' 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: ['116.10.191.182'])) }
29
+ end
30
+ end
31
+
32
+ describe_parsing_a_record 'HOSTILE_IP: 144.0.0.22 LAST_SEEN: 1404389169' 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: ['144.0.0.22'])) }
43
+ end
44
+ end
45
+ end
46
+
47
+
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'feeds/bitcash_cz_blacklist.feed', :feed do
4
+ let(:provider) { 'bitcash_cz' }
5
+ let(:name) { 'blacklist' }
6
+
7
+ it_fetches_url 'http://bitcash.cz/misc/log/blacklist'
8
+
9
+ describe_parsing_the_file feed_data('bitcash_cz_blacklist.txt') do
10
+ it "should have parsed 3 records" do
11
+ expect(num_records_parsed).to eq(3)
12
+ end
13
+ it "should have filtered 4 records" do
14
+ expect(num_records_filtered).to eq(4)
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 '107.22.93.75 # ec2-107-22-93-75.compute-1.amazonaws.com last access 2014-07-30 01:45:02' 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: ['107.22.93.75'])) }
32
+ end
33
+ end
34
+
35
+ describe_parsing_a_record '195.98.179.106 # broadband-195-98-179-106.2com.net last access 2014-09-02 17:01:01' 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: ['195.98.179.106'])) }
46
+ end
47
+ end
48
+ end
49
+
50
+
@@ -13,9 +13,6 @@ describe 'feeds/blocklist_de_apache-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 '109.228.235.167' do
@@ -28,7 +25,7 @@ describe 'feeds/blocklist_de_apache-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(['109.228.235.167']) }
28
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['109.228.235.167'])) }
32
29
  end
33
30
  end
34
31
 
@@ -42,7 +39,7 @@ describe 'feeds/blocklist_de_apache-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(['109.70.54.11']) }
42
+ its(:ipv4s) { is_expected.to eq(build(:ipv4s, values: ['109.70.54.11'])) }
46
43
  end
47
44
  end
48
45
  end