fidius-evasiondb 0.0.1

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 (55) hide show
  1. data/.gitignore +9 -0
  2. data/.yardopts +6 -0
  3. data/Gemfile +5 -0
  4. data/LICENSE +57 -0
  5. data/README.md +180 -0
  6. data/Rakefile +33 -0
  7. data/bin/fidius-evasiondb +111 -0
  8. data/evasion-db.gemspec +37 -0
  9. data/lib/db/db-install.rb +103 -0
  10. data/lib/db/migrations/001_create_packets.rb +18 -0
  11. data/lib/db/migrations/002_create_idmef_events.rb +23 -0
  12. data/lib/db/migrations/003_create_attack_modules.rb +14 -0
  13. data/lib/db/migrations/004_create_attack_options.rb +14 -0
  14. data/lib/db/migrations/005_create_attack_payloads.rb +13 -0
  15. data/lib/evasion-db/base.rb +80 -0
  16. data/lib/evasion-db/idmef-fetchers/fetchers.rb +67 -0
  17. data/lib/evasion-db/idmef-fetchers/prelude-db/fetcher.rb +8 -0
  18. data/lib/evasion-db/idmef-fetchers/prelude-db/lib/models/additional_data.rb +16 -0
  19. data/lib/evasion-db/idmef-fetchers/prelude-db/lib/models/address.rb +8 -0
  20. data/lib/evasion-db/idmef-fetchers/prelude-db/lib/models/alert.rb +46 -0
  21. data/lib/evasion-db/idmef-fetchers/prelude-db/lib/models/analyzer.rb +18 -0
  22. data/lib/evasion-db/idmef-fetchers/prelude-db/lib/models/classification.rb +10 -0
  23. data/lib/evasion-db/idmef-fetchers/prelude-db/lib/models/connection.rb +10 -0
  24. data/lib/evasion-db/idmef-fetchers/prelude-db/lib/models/detect_time.rb +10 -0
  25. data/lib/evasion-db/idmef-fetchers/prelude-db/lib/models/impact.rb +19 -0
  26. data/lib/evasion-db/idmef-fetchers/prelude-db/lib/models/prelude_event.rb +120 -0
  27. data/lib/evasion-db/idmef-fetchers/prelude-db/lib/models/service.rb +10 -0
  28. data/lib/evasion-db/idmef-fetchers/prelude-db/lib/patches/postgres_patch.rb +12 -0
  29. data/lib/evasion-db/idmef-fetchers/prelude-db/lib/prelude_event_fetcher.rb +67 -0
  30. data/lib/evasion-db/idmef-fetchers/test-fetcher/fetcher.rb +6 -0
  31. data/lib/evasion-db/idmef-fetchers/test-fetcher/lib/test_fetcher.rb +19 -0
  32. data/lib/evasion-db/knowledge/attack_module.rb +41 -0
  33. data/lib/evasion-db/knowledge/attack_option.rb +12 -0
  34. data/lib/evasion-db/knowledge/attack_payload.rb +13 -0
  35. data/lib/evasion-db/knowledge/connection.rb +7 -0
  36. data/lib/evasion-db/knowledge/idmef_event.rb +21 -0
  37. data/lib/evasion-db/knowledge/packet.rb +17 -0
  38. data/lib/evasion-db/knowledge.rb +128 -0
  39. data/lib/evasion-db/log_matches_helper.rb +43 -0
  40. data/lib/evasion-db/recorders/msf-recorder/lib/msf-recorder.rb +78 -0
  41. data/lib/evasion-db/recorders/msf-recorder/recorder.rb +6 -0
  42. data/lib/evasion-db/recorders/recorders.rb +61 -0
  43. data/lib/evasion-db/version.rb +5 -0
  44. data/lib/fidius-evasiondb.rb +27 -0
  45. data/lib/msf-plugins/database.yml.example +24 -0
  46. data/lib/msf-plugins/evasiondb.rb +378 -0
  47. data/test/config/database.yml +11 -0
  48. data/test/config/prelude.sql +439 -0
  49. data/test/helper.rb +50 -0
  50. data/test/preludedb_helper.rb +70 -0
  51. data/test/test_fetchers.rb +34 -0
  52. data/test/test_knowledge.rb +102 -0
  53. data/test/test_preludedb.rb +41 -0
  54. data/test/test_recorders.rb +115 -0
  55. metadata +238 -0
@@ -0,0 +1,41 @@
1
+ require_relative 'helper'
2
+ class TestPreludeDB < Test::Unit::TestCase
3
+ def test_prelude_event
4
+ PreludeDBHelper.setup_prelude_db($yml_config["ids_db"])
5
+ PreludeDBHelper.insert_event(223,"BadExploit","snort")
6
+
7
+ p = FIDIUS::PreludeDB::Alert.first
8
+ p = FIDIUS::PreludeDB::Classification.first
9
+ p1 = FIDIUS::PreludeDB::PreludeEvent.find :first
10
+ p2 = FIDIUS::PreludeDB::PreludeEvent.find :last
11
+ assert_equal p1.id, p2.id
12
+ assert_equal [p1],FIDIUS::PreludeDB::PreludeEvent.find(:all)
13
+ assert_equal p1, FIDIUS::PreludeDB::PreludeEvent.find(p1.id)
14
+
15
+ assert_equal "127.0.0.1", p1.source_ip
16
+ assert_equal "127.0.0.1", p1.dest_ip
17
+ assert_equal 445, p1.source_port
18
+ assert_equal 446, p1.dest_port
19
+ assert_equal FIDIUS::PreludeDB::DetectTime.first.time, p1.detect_time
20
+ assert_equal "BadExploit", p1.text
21
+ assert_equal "high", p1.severity
22
+ assert_equal "snort", p1.analyzer_model
23
+ assert_equal 223, p1.id
24
+ assert_equal "00042a60-1fd5-11df-ad31", p1.messageid
25
+ assert_equal "BadExploit: 127.0.0.1:445 -> 127.0.0.1:446", p1.to_s
26
+
27
+ p1 = FIDIUS::PreludeDB::PreludeEvent.new(nil)
28
+ assert_equal "No Ref", p1.source_ip
29
+ assert_equal "No Ref", p1.dest_ip
30
+ assert_equal "No Ref", p1.source_port
31
+ assert_equal "No Ref", p1.dest_port
32
+ assert_equal "No Ref", p1.detect_time
33
+ assert_equal "No Ref", p1.text
34
+ assert_equal "No Ref", p1.analyzer_model
35
+ assert_equal "No Ref", p1.severity
36
+ assert_equal "No Ref", p1.id
37
+ assert_equal "No Ref", p1.messageid
38
+ assert_equal "No Ref: No Ref:No Ref -> No Ref:No Ref", p1.to_s
39
+
40
+ end
41
+ end
@@ -0,0 +1,115 @@
1
+ require_relative 'helper'
2
+
3
+ module FIDIUS
4
+ module EvasionDB
5
+ module TestFetcher
6
+ def fetch_events(*args)
7
+ result = []
8
+ 5.times do |i|
9
+ result << FIDIUS::EvasionDB::Knowledge::IdmefEvent.create(:payload=>"payload",
10
+ :detect_time=>Time.now,
11
+ :dest_ip=>"10.0.0.1",:src_ip=>"10.20.20.1",
12
+ :dest_port=>445,:src_port=>4465,
13
+ :text=>"Hard Event",:severity=>"High",
14
+ :analyzer_model=>"Snort",:ident=>i)
15
+ end
16
+ result
17
+ end
18
+ end
19
+ end
20
+ end
21
+ class TestRecorders < Test::Unit::TestCase
22
+ class SocketStub
23
+ def localhost
24
+ "10.0.0.1"
25
+ end
26
+ def localport
27
+ 4446
28
+ end
29
+ def peerhost
30
+ "10.20.20.1"
31
+ end
32
+ def peerport
33
+ 445
34
+ end
35
+ end
36
+
37
+ class MsfModuleInstanceStub
38
+ def datastore
39
+ {"RHOST"=>"127.0.0.1","Payload" => "windows/meterpreter/bind_tcp","RHOSTS"=>"127.0.0.1"}
40
+ end
41
+ def fullname
42
+ "windows/smb/ms08_067_netapi"
43
+ end
44
+ end
45
+
46
+ def test_msf_recorder
47
+ FIDIUS::EvasionDB::Knowledge::AttackModule.destroy_all
48
+ instance = MsfModuleInstanceStub.new
49
+ socket = SocketStub.new
50
+ FIDIUS::EvasionDB.use_recoder "Msf-Recorder"
51
+ FIDIUS::EvasionDB.use_fetcher "TestFetcher"
52
+
53
+ FIDIUS::EvasionDB.current_recorder.module_started(instance)
54
+ assert_equal 1, FIDIUS::EvasionDB::Knowledge::AttackModule.all.size
55
+ assert_equal instance.fullname, FIDIUS::EvasionDB::Knowledge::AttackModule.first.name
56
+ 10.times do |i|
57
+ FIDIUS::EvasionDB.current_recorder.log_packet(instance,"payload#{i}",socket)
58
+ end
59
+ FIDIUS::EvasionDB.current_recorder.module_completed(instance)
60
+ assert_equal "127.0.0.1", FIDIUS::EvasionDB.current_fetcher.local_ip
61
+ assert_equal 10, FIDIUS::EvasionDB::Knowledge::AttackModule.first.packets.size
62
+ end
63
+
64
+ def test_meterpreter_record
65
+ FIDIUS::EvasionDB::Knowledge::AttackModule.destroy_all
66
+
67
+ instance = MsfModuleInstanceStub.new
68
+ socket = SocketStub.new
69
+ FIDIUS::EvasionDB.use_recoder "Msf-Recorder"
70
+ FIDIUS::EvasionDB.use_fetcher "TestFetcher"
71
+
72
+ FIDIUS::EvasionDB.current_recorder.module_started(instance)
73
+ assert_equal 1, FIDIUS::EvasionDB::Knowledge::AttackModule.all.size
74
+ assert_equal instance.fullname, FIDIUS::EvasionDB::Knowledge::AttackModule.first.name
75
+
76
+ FIDIUS::EvasionDB.current_recorder.module_completed(instance)
77
+ 10.times do |i|
78
+ FIDIUS::EvasionDB.current_recorder.log_packet("Meterpreter","payload#{i}",socket)
79
+ end
80
+ FIDIUS::EvasionDB.current_recorder.module_completed(instance)
81
+ assert_equal "127.0.0.1", FIDIUS::EvasionDB.current_fetcher.local_ip
82
+ assert_equal 10, FIDIUS::EvasionDB::Knowledge::AttackModule.first.attack_payload.packets.size
83
+ end
84
+
85
+ def test_module_error
86
+ FIDIUS::EvasionDB::Knowledge::AttackModule.destroy_all
87
+ instance = MsfModuleInstanceStub.new
88
+ socket = SocketStub.new
89
+ FIDIUS::EvasionDB.use_recoder "Msf-Recorder"
90
+ FIDIUS::EvasionDB.use_fetcher "TestFetcher"
91
+
92
+ FIDIUS::EvasionDB.current_recorder.module_started(instance)
93
+ assert_equal 1, FIDIUS::EvasionDB::Knowledge::AttackModule.all.size
94
+ assert_equal instance.fullname, FIDIUS::EvasionDB::Knowledge::AttackModule.first.name
95
+ 10.times do |i|
96
+ FIDIUS::EvasionDB.current_recorder.log_packet(instance,"payload#{i}",socket)
97
+ end
98
+ FIDIUS::EvasionDB.current_recorder.module_error(instance,"ERROR")
99
+ assert_equal "127.0.0.1", FIDIUS::EvasionDB.current_fetcher.local_ip
100
+ assert_equal 10, FIDIUS::EvasionDB::Knowledge::AttackModule.first.packets.size
101
+
102
+ end
103
+
104
+ def test_overwrites
105
+ recorder = FIDIUS::EvasionDB::Recorder.new("a") do
106
+
107
+ end
108
+ assert_raises RuntimeError do
109
+ recorder.start
110
+ end
111
+ assert_raises RuntimeError do
112
+ recorder.log_packet
113
+ end
114
+ end
115
+ end
metadata ADDED
@@ -0,0 +1,238 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fidius-evasiondb
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 1
9
+ version: 0.0.1
10
+ platform: ruby
11
+ authors:
12
+ - "Jens F\xC3\xA4rber"
13
+ - Bernhard Katzmarski
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-04-20 00:00:00 +02:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: fidius-common
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ segments:
30
+ - 0
31
+ version: "0"
32
+ type: :runtime
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: activerecord
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ segments:
43
+ - 0
44
+ version: "0"
45
+ type: :runtime
46
+ version_requirements: *id002
47
+ - !ruby/object:Gem::Dependency
48
+ name: activerecord
49
+ prerelease: false
50
+ requirement: &id003 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ segments:
56
+ - 3
57
+ - 0
58
+ - 0
59
+ version: 3.0.0
60
+ type: :runtime
61
+ version_requirements: *id003
62
+ - !ruby/object:Gem::Dependency
63
+ name: activesupport
64
+ prerelease: false
65
+ requirement: &id004 !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ segments:
71
+ - 3
72
+ - 0
73
+ - 0
74
+ version: 3.0.0
75
+ type: :runtime
76
+ version_requirements: *id004
77
+ - !ruby/object:Gem::Dependency
78
+ name: fidius-common
79
+ prerelease: false
80
+ requirement: &id005 !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ segments:
86
+ - 0
87
+ - 0
88
+ - 4
89
+ version: 0.0.4
90
+ type: :runtime
91
+ version_requirements: *id005
92
+ description: |-
93
+ The FIDIUS EvasionDB Gem provides a database which contains knowledge about metasploit exploits and their corresponding alerts/events produced by intrusion detection systems (IDS).
94
+
95
+ It includes a Metasploit plugin which supports the recording of thrown alerts during the execution of an exploit.
96
+ email:
97
+ - jfaerber+evasiondb@tzi.de
98
+ - bkatzm+evasiondb@tzi.de
99
+ executables:
100
+ - fidius-evasiondb
101
+ extensions: []
102
+
103
+ extra_rdoc_files: []
104
+
105
+ files:
106
+ - .gitignore
107
+ - .yardopts
108
+ - Gemfile
109
+ - LICENSE
110
+ - README.md
111
+ - Rakefile
112
+ - bin/fidius-evasiondb
113
+ - evasion-db.gemspec
114
+ - lib/db/db-install.rb
115
+ - lib/db/migrations/001_create_packets.rb
116
+ - lib/db/migrations/002_create_idmef_events.rb
117
+ - lib/db/migrations/003_create_attack_modules.rb
118
+ - lib/db/migrations/004_create_attack_options.rb
119
+ - lib/db/migrations/005_create_attack_payloads.rb
120
+ - lib/evasion-db/base.rb
121
+ - lib/evasion-db/idmef-fetchers/fetchers.rb
122
+ - lib/evasion-db/idmef-fetchers/prelude-db/fetcher.rb
123
+ - lib/evasion-db/idmef-fetchers/prelude-db/lib/models/additional_data.rb
124
+ - lib/evasion-db/idmef-fetchers/prelude-db/lib/models/address.rb
125
+ - lib/evasion-db/idmef-fetchers/prelude-db/lib/models/alert.rb
126
+ - lib/evasion-db/idmef-fetchers/prelude-db/lib/models/analyzer.rb
127
+ - lib/evasion-db/idmef-fetchers/prelude-db/lib/models/classification.rb
128
+ - lib/evasion-db/idmef-fetchers/prelude-db/lib/models/connection.rb
129
+ - lib/evasion-db/idmef-fetchers/prelude-db/lib/models/detect_time.rb
130
+ - lib/evasion-db/idmef-fetchers/prelude-db/lib/models/impact.rb
131
+ - lib/evasion-db/idmef-fetchers/prelude-db/lib/models/prelude_event.rb
132
+ - lib/evasion-db/idmef-fetchers/prelude-db/lib/models/service.rb
133
+ - lib/evasion-db/idmef-fetchers/prelude-db/lib/patches/postgres_patch.rb
134
+ - lib/evasion-db/idmef-fetchers/prelude-db/lib/prelude_event_fetcher.rb
135
+ - lib/evasion-db/idmef-fetchers/test-fetcher/fetcher.rb
136
+ - lib/evasion-db/idmef-fetchers/test-fetcher/lib/test_fetcher.rb
137
+ - lib/evasion-db/knowledge.rb
138
+ - lib/evasion-db/knowledge/attack_module.rb
139
+ - lib/evasion-db/knowledge/attack_option.rb
140
+ - lib/evasion-db/knowledge/attack_payload.rb
141
+ - lib/evasion-db/knowledge/connection.rb
142
+ - lib/evasion-db/knowledge/idmef_event.rb
143
+ - lib/evasion-db/knowledge/packet.rb
144
+ - lib/evasion-db/log_matches_helper.rb
145
+ - lib/evasion-db/recorders/msf-recorder/lib/msf-recorder.rb
146
+ - lib/evasion-db/recorders/msf-recorder/recorder.rb
147
+ - lib/evasion-db/recorders/recorders.rb
148
+ - lib/evasion-db/version.rb
149
+ - lib/fidius-evasiondb.rb
150
+ - lib/msf-plugins/database.yml.example
151
+ - lib/msf-plugins/evasiondb.rb
152
+ - test/config/database.yml
153
+ - test/config/prelude.sql
154
+ - test/helper.rb
155
+ - test/preludedb_helper.rb
156
+ - test/test_fetchers.rb
157
+ - test/test_knowledge.rb
158
+ - test/test_preludedb.rb
159
+ - test/test_recorders.rb
160
+ has_rdoc: true
161
+ homepage: http://fidius.me
162
+ licenses: []
163
+
164
+ post_install_message:
165
+ rdoc_options:
166
+ - --title
167
+ - fidius-evasiondb
168
+ - --main
169
+ - README.md
170
+ - --show-hash
171
+ - - lib/db/db-install.rb
172
+ - lib/db/migrations/001_create_packets.rb
173
+ - lib/db/migrations/002_create_idmef_events.rb
174
+ - lib/db/migrations/003_create_attack_modules.rb
175
+ - lib/db/migrations/004_create_attack_options.rb
176
+ - lib/db/migrations/005_create_attack_payloads.rb
177
+ - lib/evasion-db/base.rb
178
+ - lib/evasion-db/idmef-fetchers/fetchers.rb
179
+ - lib/evasion-db/idmef-fetchers/prelude-db/fetcher.rb
180
+ - lib/evasion-db/idmef-fetchers/prelude-db/lib/models/additional_data.rb
181
+ - lib/evasion-db/idmef-fetchers/prelude-db/lib/models/address.rb
182
+ - lib/evasion-db/idmef-fetchers/prelude-db/lib/models/alert.rb
183
+ - lib/evasion-db/idmef-fetchers/prelude-db/lib/models/analyzer.rb
184
+ - lib/evasion-db/idmef-fetchers/prelude-db/lib/models/classification.rb
185
+ - lib/evasion-db/idmef-fetchers/prelude-db/lib/models/connection.rb
186
+ - lib/evasion-db/idmef-fetchers/prelude-db/lib/models/detect_time.rb
187
+ - lib/evasion-db/idmef-fetchers/prelude-db/lib/models/impact.rb
188
+ - lib/evasion-db/idmef-fetchers/prelude-db/lib/models/prelude_event.rb
189
+ - lib/evasion-db/idmef-fetchers/prelude-db/lib/models/service.rb
190
+ - lib/evasion-db/idmef-fetchers/prelude-db/lib/patches/postgres_patch.rb
191
+ - lib/evasion-db/idmef-fetchers/prelude-db/lib/prelude_event_fetcher.rb
192
+ - lib/evasion-db/idmef-fetchers/test-fetcher/fetcher.rb
193
+ - lib/evasion-db/idmef-fetchers/test-fetcher/lib/test_fetcher.rb
194
+ - lib/evasion-db/knowledge.rb
195
+ - lib/evasion-db/knowledge/attack_module.rb
196
+ - lib/evasion-db/knowledge/attack_option.rb
197
+ - lib/evasion-db/knowledge/attack_payload.rb
198
+ - lib/evasion-db/knowledge/connection.rb
199
+ - lib/evasion-db/knowledge/idmef_event.rb
200
+ - lib/evasion-db/knowledge/packet.rb
201
+ - lib/evasion-db/log_matches_helper.rb
202
+ - lib/evasion-db/recorders/msf-recorder/lib/msf-recorder.rb
203
+ - lib/evasion-db/recorders/msf-recorder/recorder.rb
204
+ - lib/evasion-db/recorders/recorders.rb
205
+ - lib/evasion-db/version.rb
206
+ - lib/fidius-evasiondb.rb
207
+ - lib/msf-plugins/database.yml.example
208
+ - lib/msf-plugins/evasiondb.rb
209
+ - README.md
210
+ - LICENSE
211
+ - CREDITS.md
212
+ require_paths:
213
+ - lib
214
+ required_ruby_version: !ruby/object:Gem::Requirement
215
+ none: false
216
+ requirements:
217
+ - - ">="
218
+ - !ruby/object:Gem::Version
219
+ segments:
220
+ - 0
221
+ version: "0"
222
+ required_rubygems_version: !ruby/object:Gem::Requirement
223
+ none: false
224
+ requirements:
225
+ - - ">="
226
+ - !ruby/object:Gem::Version
227
+ segments:
228
+ - 0
229
+ version: "0"
230
+ requirements: []
231
+
232
+ rubyforge_project: ""
233
+ rubygems_version: 1.3.7
234
+ signing_key:
235
+ specification_version: 3
236
+ summary: The FIDIUS EvasionDB Gem provides a database which contains knowledge about metasploit exploits and their corresponding alerts/events produced by intrusion detection systems (IDS).
237
+ test_files: []
238
+