metasploit_data_models 0.7.0-java

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 (214) hide show
  1. data/.gitignore +24 -0
  2. data/.rspec +3 -0
  3. data/.simplecov +38 -0
  4. data/.travis.yml +6 -0
  5. data/.yardopts +4 -0
  6. data/Gemfile +27 -0
  7. data/LICENSE +27 -0
  8. data/README.md +72 -0
  9. data/Rakefile +53 -0
  10. data/app/models/mdm/api_key.rb +20 -0
  11. data/app/models/mdm/client.rb +9 -0
  12. data/app/models/mdm/cred.rb +93 -0
  13. data/app/models/mdm/event.rb +30 -0
  14. data/app/models/mdm/exploit_attempt.rb +14 -0
  15. data/app/models/mdm/exploited_host.rb +11 -0
  16. data/app/models/mdm/host.rb +134 -0
  17. data/app/models/mdm/host_detail.rb +15 -0
  18. data/app/models/mdm/host_tag.rb +13 -0
  19. data/app/models/mdm/imported_cred.rb +10 -0
  20. data/app/models/mdm/listener.rb +24 -0
  21. data/app/models/mdm/loot.rb +63 -0
  22. data/app/models/mdm/macro.rb +20 -0
  23. data/app/models/mdm/mod_ref.rb +3 -0
  24. data/app/models/mdm/module_action.rb +24 -0
  25. data/app/models/mdm/module_arch.rb +24 -0
  26. data/app/models/mdm/module_author.rb +25 -0
  27. data/app/models/mdm/module_detail.rb +59 -0
  28. data/app/models/mdm/module_mixin.rb +24 -0
  29. data/app/models/mdm/module_platform.rb +24 -0
  30. data/app/models/mdm/module_ref.rb +24 -0
  31. data/app/models/mdm/module_target.rb +26 -0
  32. data/app/models/mdm/nexpose_console.rb +20 -0
  33. data/app/models/mdm/note.rb +49 -0
  34. data/app/models/mdm/profile.rb +9 -0
  35. data/app/models/mdm/ref.rb +14 -0
  36. data/app/models/mdm/report.rb +50 -0
  37. data/app/models/mdm/report_template.rb +27 -0
  38. data/app/models/mdm/route.rb +9 -0
  39. data/app/models/mdm/service.rb +56 -0
  40. data/app/models/mdm/session.rb +48 -0
  41. data/app/models/mdm/session_event.rb +9 -0
  42. data/app/models/mdm/tag.rb +46 -0
  43. data/app/models/mdm/task.rb +41 -0
  44. data/app/models/mdm/user.rb +25 -0
  45. data/app/models/mdm/vuln.rb +60 -0
  46. data/app/models/mdm/vuln_attempt.rb +15 -0
  47. data/app/models/mdm/vuln_detail.rb +14 -0
  48. data/app/models/mdm/vuln_ref.rb +13 -0
  49. data/app/models/mdm/web_form.rb +16 -0
  50. data/app/models/mdm/web_page.rb +16 -0
  51. data/app/models/mdm/web_site.rb +47 -0
  52. data/app/models/mdm/web_vuln.rb +190 -0
  53. data/app/models/mdm/wmap_request.rb +3 -0
  54. data/app/models/mdm/wmap_target.rb +3 -0
  55. data/app/models/mdm/workspace.rb +196 -0
  56. data/bin/mdm_console +68 -0
  57. data/console_db.yml +9 -0
  58. data/db/migrate/000_create_tables.rb +79 -0
  59. data/db/migrate/001_add_wmap_tables.rb +35 -0
  60. data/db/migrate/002_add_workspaces.rb +36 -0
  61. data/db/migrate/003_move_notes.rb +20 -0
  62. data/db/migrate/004_add_events_table.rb +16 -0
  63. data/db/migrate/005_expand_info.rb +58 -0
  64. data/db/migrate/006_add_timestamps.rb +26 -0
  65. data/db/migrate/007_add_loots.rb +20 -0
  66. data/db/migrate/008_create_users.rb +16 -0
  67. data/db/migrate/009_add_loots_ctype.rb +10 -0
  68. data/db/migrate/010_add_alert_fields.rb +16 -0
  69. data/db/migrate/011_add_reports.rb +19 -0
  70. data/db/migrate/012_add_tasks.rb +24 -0
  71. data/db/migrate/013_add_tasks_result.rb +10 -0
  72. data/db/migrate/014_add_loots_fields.rb +12 -0
  73. data/db/migrate/015_rename_user.rb +16 -0
  74. data/db/migrate/016_add_host_purpose.rb +10 -0
  75. data/db/migrate/017_expand_info2.rb +58 -0
  76. data/db/migrate/018_add_workspace_user_info.rb +29 -0
  77. data/db/migrate/019_add_workspace_desc.rb +23 -0
  78. data/db/migrate/020_add_user_preferences.rb +11 -0
  79. data/db/migrate/021_standardize_info_and_data.rb +18 -0
  80. data/db/migrate/022_enlarge_event_info.rb +10 -0
  81. data/db/migrate/023_add_report_downloaded_at.rb +10 -0
  82. data/db/migrate/024_convert_service_info_to_text.rb +12 -0
  83. data/db/migrate/025_add_user_admin.rb +19 -0
  84. data/db/migrate/026_add_creds_table.rb +19 -0
  85. data/db/migrate/20100819123300_migrate_cred_data.rb +154 -0
  86. data/db/migrate/20100824151500_add_exploited_table.rb +16 -0
  87. data/db/migrate/20100908001428_add_owner_to_workspaces.rb +9 -0
  88. data/db/migrate/20100911122000_add_report_templates.rb +18 -0
  89. data/db/migrate/20100916151530_require_admin_flag.rb +15 -0
  90. data/db/migrate/20100916175000_add_campaigns_and_templates.rb +61 -0
  91. data/db/migrate/20100920012100_add_generate_exe_column.rb +8 -0
  92. data/db/migrate/20100926214000_add_template_prefs.rb +11 -0
  93. data/db/migrate/20101001000000_add_web_tables.rb +57 -0
  94. data/db/migrate/20101002000000_add_query.rb +10 -0
  95. data/db/migrate/20101007000000_add_vuln_info.rb +15 -0
  96. data/db/migrate/20101008111800_add_clients_to_campaigns.rb +10 -0
  97. data/db/migrate/20101009023300_add_campaign_attachments.rb +15 -0
  98. data/db/migrate/20101104135100_add_imported_creds.rb +17 -0
  99. data/db/migrate/20101203000000_fix_web_tables.rb +34 -0
  100. data/db/migrate/20101203000001_expand_host_comment.rb +12 -0
  101. data/db/migrate/20101206212033_add_limit_to_network_to_workspaces.rb +9 -0
  102. data/db/migrate/20110112154300_add_module_uuid_to_tasks.rb +9 -0
  103. data/db/migrate/20110204112800_add_host_tags.rb +28 -0
  104. data/db/migrate/20110317144932_add_session_table.rb +110 -0
  105. data/db/migrate/20110414180600_add_local_id_to_session_table.rb +11 -0
  106. data/db/migrate/20110415175705_add_routes_table.rb +18 -0
  107. data/db/migrate/20110422000000_convert_binary.rb +73 -0
  108. data/db/migrate/20110425095900_add_last_seen_to_sessions.rb +8 -0
  109. data/db/migrate/20110513143900_track_successful_exploits.rb +31 -0
  110. data/db/migrate/20110517160800_rename_and_prune_nessus_vulns.rb +26 -0
  111. data/db/migrate/20110527000000_add_task_id_to_reports_table.rb +11 -0
  112. data/db/migrate/20110527000001_add_api_keys_table.rb +12 -0
  113. data/db/migrate/20110606000001_add_macros_table.rb +16 -0
  114. data/db/migrate/20110622000000_add_settings_to_tasks_table.rb +12 -0
  115. data/db/migrate/20110624000001_add_listeners_table.rb +19 -0
  116. data/db/migrate/20110625000001_add_macro_to_listeners_table.rb +12 -0
  117. data/db/migrate/20110630000001_add_nexpose_consoles_table.rb +21 -0
  118. data/db/migrate/20110630000002_add_name_to_nexpose_consoles_table.rb +12 -0
  119. data/db/migrate/20110717000001_add_profiles_table.rb +15 -0
  120. data/db/migrate/20110727163801_expand_cred_ptype_column.rb +9 -0
  121. data/db/migrate/20110730000001_add_initial_indexes.rb +85 -0
  122. data/db/migrate/20110812000001_prune_indexes.rb +23 -0
  123. data/db/migrate/20110922000000_expand_notes.rb +9 -0
  124. data/db/migrate/20110928101300_add_mod_ref_table.rb +17 -0
  125. data/db/migrate/20111011110000_add_display_name_to_reports_table.rb +24 -0
  126. data/db/migrate/20111203000000_inet_columns.rb +13 -0
  127. data/db/migrate/20111204000000_more_inet_columns.rb +17 -0
  128. data/db/migrate/20111210000000_add_scope_to_hosts.rb +9 -0
  129. data/db/migrate/20120126110000_add_virtual_host_to_hosts.rb +9 -0
  130. data/db/migrate/20120411173220_rename_workspace_members.rb +9 -0
  131. data/db/migrate/20120601152442_add_counter_caches_to_hosts.rb +21 -0
  132. data/db/migrate/20120625000000_add_vuln_details.rb +34 -0
  133. data/db/migrate/20120625000001_add_host_details.rb +16 -0
  134. data/db/migrate/20120625000002_expand_details.rb +16 -0
  135. data/db/migrate/20120625000003_expand_details2.rb +24 -0
  136. data/db/migrate/20120625000004_add_vuln_attempts.rb +19 -0
  137. data/db/migrate/20120625000005_add_vuln_and_host_counter_caches.rb +14 -0
  138. data/db/migrate/20120625000006_add_module_details.rb +118 -0
  139. data/db/migrate/20120625000007_add_exploit_attempts.rb +26 -0
  140. data/db/migrate/20120625000008_add_fail_message.rb +12 -0
  141. data/db/migrate/20120718202805_add_owner_and_payload_to_web_vulns.rb +13 -0
  142. data/db/migrate/20130228214900_change_required_columns_to_null_false_in_web_vulns.rb +35 -0
  143. data/db/migrate/20130423211152_add_creds_counter_cache.rb +24 -0
  144. data/lib/mdm.rb +12 -0
  145. data/lib/mdm/host/operating_system_normalization.rb +984 -0
  146. data/lib/metasploit_data_models.rb +60 -0
  147. data/lib/metasploit_data_models/base64_serializer.rb +103 -0
  148. data/lib/metasploit_data_models/engine.rb +23 -0
  149. data/lib/metasploit_data_models/serialized_prefs.rb +23 -0
  150. data/lib/metasploit_data_models/validators/ip_format_validator.rb +13 -0
  151. data/lib/metasploit_data_models/validators/password_is_strong_validator.rb +70 -0
  152. data/lib/metasploit_data_models/version.rb +8 -0
  153. data/lib/tasks/yard.rake +26 -0
  154. data/metasploit_data_models.gemspec +54 -0
  155. data/script/rails +8 -0
  156. data/spec/app/models/mdm/module_action_spec.rb +38 -0
  157. data/spec/app/models/mdm/module_arch_spec.rb +38 -0
  158. data/spec/app/models/mdm/module_author_spec.rb +50 -0
  159. data/spec/app/models/mdm/module_detail_spec.rb +291 -0
  160. data/spec/app/models/mdm/module_mixin_spec.rb +38 -0
  161. data/spec/app/models/mdm/module_platform_spec.rb +38 -0
  162. data/spec/app/models/mdm/module_ref_spec.rb +38 -0
  163. data/spec/app/models/mdm/module_target_spec.rb +41 -0
  164. data/spec/app/models/mdm/web_vuln_spec.rb +126 -0
  165. data/spec/dummy/Rakefile +7 -0
  166. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  167. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  168. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  169. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  170. data/spec/dummy/app/mailers/.gitkeep +0 -0
  171. data/spec/dummy/app/models/.gitkeep +0 -0
  172. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  173. data/spec/dummy/config.ru +4 -0
  174. data/spec/dummy/config/application.rb +61 -0
  175. data/spec/dummy/config/boot.rb +10 -0
  176. data/spec/dummy/config/database.yml.example +22 -0
  177. data/spec/dummy/config/database.yml.travis +22 -0
  178. data/spec/dummy/config/environment.rb +5 -0
  179. data/spec/dummy/config/environments/development.rb +37 -0
  180. data/spec/dummy/config/environments/production.rb +67 -0
  181. data/spec/dummy/config/environments/test.rb +37 -0
  182. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  183. data/spec/dummy/config/initializers/inflections.rb +15 -0
  184. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  185. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  186. data/spec/dummy/config/initializers/session_store.rb +8 -0
  187. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  188. data/spec/dummy/config/routes.rb +2 -0
  189. data/spec/dummy/db/schema.rb +639 -0
  190. data/spec/dummy/lib/assets/.gitkeep +0 -0
  191. data/spec/dummy/log/.gitkeep +0 -0
  192. data/spec/dummy/public/404.html +26 -0
  193. data/spec/dummy/public/422.html +26 -0
  194. data/spec/dummy/public/500.html +25 -0
  195. data/spec/dummy/public/favicon.ico +0 -0
  196. data/spec/dummy/script/rails +6 -0
  197. data/spec/factories/mdm/addresses.rb +7 -0
  198. data/spec/factories/mdm/hosts.rb +18 -0
  199. data/spec/factories/mdm/module_actions.rb +14 -0
  200. data/spec/factories/mdm/module_archs.rb +14 -0
  201. data/spec/factories/mdm/module_authors.rb +22 -0
  202. data/spec/factories/mdm/module_details.rb +9 -0
  203. data/spec/factories/mdm/module_mixins.rb +14 -0
  204. data/spec/factories/mdm/module_platforms.rb +14 -0
  205. data/spec/factories/mdm/module_refs.rb +14 -0
  206. data/spec/factories/mdm/module_targets.rb +19 -0
  207. data/spec/factories/mdm/services.rb +35 -0
  208. data/spec/factories/mdm/users.rb +22 -0
  209. data/spec/factories/mdm/web_sites.rb +8 -0
  210. data/spec/factories/mdm/web_vulns.rb +64 -0
  211. data/spec/factories/mdm/workspaces.rb +23 -0
  212. data/spec/lib/base64_serializer_spec.rb +174 -0
  213. data/spec/spec_helper.rb +36 -0
  214. metadata +472 -0
@@ -0,0 +1,16 @@
1
+ class AddExploitedTable < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :exploited_hosts do |t|
4
+ t.integer :host_id, :null => false
5
+ t.integer :service_id
6
+ t.string :session_uuid, :limit => 8
7
+ t.string :name, :limit => 2048
8
+ t.string :payload, :limit => 2048
9
+ t.timestamps
10
+ end
11
+ end
12
+ def self.down
13
+ drop_table :exploited_hosts
14
+ end
15
+ end
16
+
@@ -0,0 +1,9 @@
1
+ class AddOwnerToWorkspaces < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :workspaces, :owner_id, :integer
4
+ end
5
+
6
+ def self.down
7
+ remove_column :workspaces, :owner_id
8
+ end
9
+ end
@@ -0,0 +1,18 @@
1
+ class AddReportTemplates < ActiveRecord::Migration
2
+
3
+ def self.up
4
+ create_table :report_templates do |t|
5
+ t.integer :workspace_id, :null => false, :default => 1
6
+ t.string :created_by
7
+ t.string :path, :limit => 1024
8
+ t.text :name
9
+ t.timestamps
10
+ end
11
+ end
12
+
13
+ def self.down
14
+ drop_table :reports
15
+ end
16
+
17
+ end
18
+
@@ -0,0 +1,15 @@
1
+ class RequireAdminFlag < ActiveRecord::Migration
2
+
3
+ # Make the admin flag required.
4
+ def self.up
5
+ # update any existing records
6
+ Mdm::User.update_all({:admin => true}, {:admin => nil})
7
+
8
+ change_column :users, :admin, :boolean, :null => false, :default => true
9
+ end
10
+
11
+ def self.down
12
+ change_column :users, :admin, :boolean, :default => true
13
+ end
14
+
15
+ end
@@ -0,0 +1,61 @@
1
+
2
+ class AddCampaignsAndTemplates < ActiveRecord::Migration
3
+
4
+ def self.up
5
+ create_table :campaigns do |t|
6
+ t.integer :workspace_id, :null => false
7
+ t.string :name, :limit => 512
8
+ # Serialized, stores SMTP/other protocol config options etc.
9
+ t.text :prefs
10
+ t.integer :status, :default => 0
11
+ t.timestamp :started_at
12
+ t.timestamps
13
+ end
14
+
15
+ create_table :email_templates do |t|
16
+ t.string :name, :limit => 512
17
+ t.string :subject, :limit => 1024
18
+ t.text :body
19
+ t.integer :parent_id
20
+ t.integer :campaign_id
21
+ end
22
+ create_table :attachments do |t|
23
+ t.string :name, :limit => 512
24
+ t.binary :data
25
+ t.string :content_type, :limit => 512
26
+ t.boolean :inline, :null => false, :default => true
27
+ t.boolean :zip, :null => false, :default => false
28
+ end
29
+ create_table :attachments_email_templates, :id => false do |t|
30
+ t.integer :attachment_id
31
+ t.integer :email_template_id
32
+ end
33
+
34
+ create_table :email_addresses do |t|
35
+ t.integer :campaign_id, :null => false
36
+ t.string :first_name, :limit => 512
37
+ t.string :last_name, :limit => 512
38
+ t.string :address, :limit => 512
39
+ t.boolean :sent, :null => false, :default => false
40
+ t.timestamp :clicked_at
41
+ end
42
+
43
+ create_table :web_templates do |t|
44
+ t.string :name, :limit => 512
45
+ t.string :title, :limit => 512
46
+ t.string :body, :limit => 524288
47
+ t.integer :campaign_id
48
+ end
49
+ end
50
+
51
+ def self.down
52
+ drop_table :campaigns
53
+ drop_table :email_templates
54
+ drop_table :attachments
55
+ drop_table :attachments_email_templates
56
+ drop_table :email_addresses
57
+ drop_table :web_templates
58
+ end
59
+
60
+ end
61
+
@@ -0,0 +1,8 @@
1
+ class AddGenerateExeColumn < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :email_templates, :generate_exe, :boolean, :null => false, :default => false
4
+ end
5
+ def self.down
6
+ remove_column :email_templates, :generate_exe
7
+ end
8
+ end
@@ -0,0 +1,11 @@
1
+ class AddTemplatePrefs < ActiveRecord::Migration
2
+ def self.up
3
+ remove_column :email_templates, :generate_exe
4
+ add_column :email_templates, :prefs, :text
5
+ add_column :web_templates, :prefs, :text
6
+ end
7
+ def self.down
8
+ remove_column :email_templates, :prefs
9
+ remove_column :web_templates, :prefs
10
+ end
11
+ end
@@ -0,0 +1,57 @@
1
+ class AddWebTables < ActiveRecord::Migration
2
+
3
+ def self.up
4
+ create_table :web_sites do |t|
5
+ t.integer :service_id, :null => false
6
+ t.timestamps
7
+ t.string :vhost, :limit => 2048
8
+ t.text :comments
9
+ t.text :options
10
+ end
11
+
12
+ create_table :web_pages do |t|
13
+ t.integer :web_site_id, :null => false
14
+ t.timestamps
15
+ t.text :path
16
+ t.text :query
17
+ t.integer :code, :null => false
18
+ t.text :cookie
19
+ t.text :auth
20
+ t.text :ctype
21
+ t.timestamp :mtime
22
+ t.text :location
23
+ t.text :body
24
+ t.text :headers
25
+ end
26
+
27
+ create_table :web_forms do |t|
28
+ t.integer :web_site_id, :null => false
29
+ t.timestamps
30
+ t.text :path
31
+ t.string :method, :limit => 1024
32
+ t.text :params
33
+ end
34
+
35
+ create_table :web_vulns do |t|
36
+ t.integer :web_site_id, :null => false
37
+ t.timestamps
38
+ t.text :path
39
+ t.string :method, :limit => 1024
40
+ t.text :params
41
+ t.text :pname
42
+ t.text :proof
43
+ t.integer :risk
44
+ t.string :name, :limit => 1024
45
+ end
46
+
47
+ end
48
+
49
+ def self.down
50
+ drop_table :web_sites
51
+ drop_table :web_pages
52
+ drop_table :web_forms
53
+ drop_table :web_vulns
54
+ end
55
+ end
56
+
57
+
@@ -0,0 +1,10 @@
1
+ class AddQuery < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :web_forms, :query, :text
4
+ add_column :web_vulns, :query, :text
5
+ end
6
+ def self.down
7
+ remove_column :web_forms, :query
8
+ remove_column :web_vulns, :query
9
+ end
10
+ end
@@ -0,0 +1,15 @@
1
+ class AddVulnInfo < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :web_vulns, :category, :text
4
+ add_column :web_vulns, :confidence, :text
5
+ add_column :web_vulns, :description, :text
6
+ add_column :web_vulns, :blame, :text
7
+ end
8
+ def self.down
9
+ remove_column :web_forms, :category
10
+ remove_column :web_vulns, :confidence
11
+ remove_column :web_vulns, :description
12
+ remove_column :web_vulns, :blame
13
+ end
14
+ end
15
+
@@ -0,0 +1,10 @@
1
+
2
+ class AddClientsToCampaigns < ActiveRecord::Migration
3
+ def self.up
4
+ add_column :clients, :campaign_id, :integer
5
+ end
6
+
7
+ def self.down
8
+ remove_column :clients, :campaign_id
9
+ end
10
+ end
@@ -0,0 +1,15 @@
1
+
2
+
3
+ class AddCampaignAttachments < ActiveRecord::Migration
4
+
5
+ def self.up
6
+ add_column :attachments, :campaign_id, :integer
7
+ end
8
+
9
+ def self.down
10
+ remove_column :attachments, :campaign_id
11
+ end
12
+
13
+ end
14
+
15
+
@@ -0,0 +1,17 @@
1
+ class AddImportedCreds < ActiveRecord::Migration
2
+
3
+ def self.up
4
+ create_table :imported_creds do |t|
5
+ t.integer :workspace_id, :null => false, :default => 1
6
+ t.string :user, :limit => 512
7
+ t.string :pass, :limit => 512
8
+ t.string :ptype, :limit => 16, :default => "password"
9
+ end
10
+ end
11
+
12
+ def self.down
13
+ drop_table :imported_creds
14
+ end
15
+
16
+ end
17
+
@@ -0,0 +1,34 @@
1
+ class FixWebTables < ActiveRecord::Migration
2
+
3
+ def self.up
4
+ change_column :web_pages, :path, :text
5
+ change_column :web_pages, :query, :text
6
+ change_column :web_pages, :cookie, :text
7
+ change_column :web_pages, :auth, :text
8
+ change_column :web_pages, :ctype, :text
9
+ change_column :web_pages, :location, :text
10
+ change_column :web_pages, :path, :text
11
+ change_column :web_vulns, :path, :text
12
+ change_column :web_vulns, :pname, :text
13
+
14
+ add_column :web_pages, :request, :text
15
+ add_column :web_vulns, :request, :text
16
+ end
17
+
18
+ def self.down
19
+ change_column :web_pages, :path, :text
20
+ change_column :web_pages, :query, :text
21
+ change_column :web_pages, :cookie, :text
22
+ change_column :web_pages, :auth, :text
23
+ change_column :web_pages, :ctype, :text
24
+ change_column :web_pages, :location, :text
25
+ change_column :web_pages, :path, :text
26
+ change_column :web_vulns, :path, :text
27
+ change_column :web_vulns, :pname, :text
28
+
29
+ remove_column :web_pages, :request
30
+ remove_column :web_vulns, :request
31
+ end
32
+ end
33
+
34
+
@@ -0,0 +1,12 @@
1
+ class ExpandHostComment < ActiveRecord::Migration
2
+
3
+ def self.up
4
+ change_column :hosts, :comments, :text
5
+ end
6
+
7
+ def self.down
8
+ change_column :hosts, :comments, :string, :limit => 4096
9
+ end
10
+ end
11
+
12
+
@@ -0,0 +1,9 @@
1
+ class AddLimitToNetworkToWorkspaces < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :workspaces, :limit_to_network, :boolean, :null => false, :default => false
4
+ end
5
+
6
+ def self.down
7
+ remove_column :workspaces, :limit_to_network
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class AddModuleUuidToTasks < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :tasks, :module_uuid, :string, :limit => 8
4
+ end
5
+
6
+ def self.down
7
+ remove_column :tasks, :module_uuid
8
+ end
9
+ end
@@ -0,0 +1,28 @@
1
+ class AddHostTags < ActiveRecord::Migration
2
+
3
+ def self.up
4
+
5
+ create_table :tags do |t|
6
+ t.integer :user_id
7
+ t.string :name, :limit => 1024
8
+ t.text :desc
9
+ t.boolean :report_summary, :null => false, :default => false
10
+ t.boolean :report_detail, :null => false, :default => false
11
+ t.boolean :critical, :null => false, :default => false
12
+ t.timestamps
13
+ end
14
+
15
+ create_table :hosts_tags, :id => false do |t|
16
+ t.integer :host_id
17
+ t.integer :tag_id
18
+ end
19
+
20
+ end
21
+
22
+ def self.down
23
+ drop_table :hosts_tags
24
+ drop_table :tags
25
+ end
26
+
27
+ end
28
+
@@ -0,0 +1,110 @@
1
+ class AddSessionTable < ActiveRecord::Migration
2
+
3
+ class Event < ActiveRecord::Base
4
+ serialize :info
5
+ end
6
+
7
+ class SessionEvent < ActiveRecord::Base
8
+ belongs_to :session
9
+ end
10
+
11
+ class Session < ActiveRecord::Base
12
+ has_many :events, :class_name => 'AddSessionTable::SessionEvent'
13
+ serialize :datastore
14
+ end
15
+
16
+ def self.up
17
+
18
+ create_table :sessions do |t|
19
+ t.integer :host_id
20
+
21
+ t.string :stype # session type: meterpreter, shell, etc
22
+ t.string :via_exploit # module name
23
+ t.string :via_payload # payload name
24
+ t.string :desc # session description
25
+ t.integer :port
26
+ t.string :platform # platform type of the remote system
27
+ t.string :routes
28
+
29
+ t.text :datastore # module's datastore
30
+
31
+ t.timestamp :opened_at, :null => false
32
+ t.timestamp :closed_at
33
+
34
+ t.string :close_reason
35
+ end
36
+
37
+ create_table :session_events do |t|
38
+ t.integer :session_id
39
+
40
+ t.string :etype # event type: command, output, upload, download, filedelete
41
+ t.binary :command
42
+ t.binary :output
43
+ t.string :remote_path
44
+ t.string :local_path
45
+
46
+ t.timestamp :created_at
47
+ end
48
+
49
+ #
50
+ # Migrate session data from events table
51
+ #
52
+
53
+ close_events = Event.find_all_by_name("session_close")
54
+ open_events = Event.find_all_by_name("session_open")
55
+
56
+ command_events = Event.find_all_by_name("session_command")
57
+ output_events = Event.find_all_by_name("session_output")
58
+ upload_events = Event.find_all_by_name("session_upload")
59
+ download_events = Event.find_all_by_name("session_download")
60
+
61
+ open_events.each do |o|
62
+ c = close_events.find { |e| e.info[:session_uuid] == o.info[:session_uuid] }
63
+
64
+ s = Session.new(
65
+ :host_id => o.host_id,
66
+ :stype => o.info[:session_type],
67
+ :via_exploit => o.info[:via_exploit],
68
+ :via_payload => o.info[:via_payload],
69
+ :datastore => o.info[:datastore],
70
+ :opened_at => o.created_at
71
+ )
72
+
73
+ if c
74
+ s.closed_at = c.created_at
75
+ s.desc = c.info[:session_info]
76
+ else
77
+ # couldn't find the corresponding close event
78
+ s.closed_at = s.opened_at
79
+ s.desc = "?"
80
+ end
81
+
82
+ uuid = o.info[:session_uuid]
83
+
84
+ command_events.select { |e| e.info[:session_uuid] == uuid }.each do |e|
85
+ s.events.build(:created_at => e.created_at, :etype => "command", :command => e.info[:command] )
86
+ end
87
+
88
+ output_events.select { |e| e.info[:session_uuid] == uuid }.each do |e|
89
+ s.events.build(:created_at => e.created_at, :etype => "output", :output => e.info[:output] )
90
+ end
91
+
92
+ upload_events.select { |e| e.info[:session_uuid] == uuid }.each do |e|
93
+ s.events.build(:created_at => e.created_at, :etype => "upload", :local_path => e.info[:local_path], :remote_path => e.info[:remote_path] )
94
+ end
95
+
96
+ download_events.select { |e| e.info[:session_uuid] == uuid }.each do |e|
97
+ s.events.build(:created_at => e.created_at, :etype => "download", :local_path => e.info[:local_path], :remote_path => e.info[:remote_path] )
98
+ end
99
+
100
+ s.events.sort_by(&:created_at)
101
+
102
+ s.save!
103
+ end
104
+ end
105
+
106
+ def self.down
107
+ drop_table :sessions
108
+ drop_table :session_events
109
+ end
110
+ end