metasploit-framework.gemspec 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. # coding: utf-8
  2. # During build, the Gemfile is temporarily moved and
  3. # we must manually define the project root
  4. if ENV['MSF_ROOT']
  5. lib = File.realpath(File.expand_path('lib', ENV['MSF_ROOT']))
  6. $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
  7. require 'metasploit/framework/version'
  8. require 'metasploit/framework/rails_version_constraint'
  9. require 'msf/util/helper'
  10. else
  11. # XXX: Use explicit calls to require_relative to ensure that static analysis tools such as dependabot work
  12. require_relative 'lib/metasploit/framework/version'
  13. require_relative 'lib/metasploit/framework/rails_version_constraint'
  14. require_relative 'lib/msf/util/helper'
  15. end
  16. Gem::Specification.new do |spec|
  17. spec.name = 'metasploit-framework'
  18. spec.version = Metasploit::Framework::GEM_VERSION
  19. spec.authors = ['Metasploit Hackers']
  20. spec.email = ['msfdev@metasploit.com']
  21. spec.summary = 'metasploit-framework'
  22. spec.description = 'metasploit-framework'
  23. spec.homepage = 'https://www.metasploit.com'
  24. spec.license = 'BSD-3-clause'
  25. # only do a git ls-files if the .git folder exists and we have a git binary in PATH
  26. if File.directory?(File.join(File.dirname(__FILE__), ".git")) && Msf::Util::Helper.which("git")
  27. spec.files = `git ls-files`.split($/).reject { |file|
  28. file =~ /^external|^docs|^\.solargraph\.yml/
  29. }
  30. end
  31. spec.bindir = '.'
  32. if ENV['CREATE_BINSTUBS']
  33. spec.executables = [
  34. 'msfconsole',
  35. 'msfd',
  36. 'msfrpc',
  37. 'msfrpcd',
  38. 'msfvenom'
  39. ]
  40. end
  41. spec.test_files = spec.files.grep(%r{^spec/})
  42. spec.require_paths = ["lib"]
  43. spec.required_ruby_version = '>= 2.7'
  44. # Database support
  45. spec.add_runtime_dependency 'activerecord', *Metasploit::Framework::RailsVersionConstraint::RAILS_VERSION
  46. # Need 3+ for ActiveSupport::Concern
  47. spec.add_runtime_dependency 'activesupport', *Metasploit::Framework::RailsVersionConstraint::RAILS_VERSION
  48. # Needed for config.action_view for view plugin compatibility for Pro
  49. spec.add_runtime_dependency 'actionpack', *Metasploit::Framework::RailsVersionConstraint::RAILS_VERSION
  50. # Needed for some admin modules (cfme_manageiq_evm_pass_reset.rb)
  51. spec.add_runtime_dependency 'bcrypt'
  52. # Improves bootup performance by caching expensive computations
  53. spec.add_runtime_dependency 'bootsnap'
  54. # Needed for Javascript obfuscation
  55. spec.add_runtime_dependency 'jsobfu'
  56. # Needed for some admin modules (scrutinizer_add_user.rb)
  57. spec.add_runtime_dependency 'json'
  58. # Metasm compiler/decompiler/assembler
  59. spec.add_runtime_dependency 'metasm'
  60. # Needed for aarch64 assembler support - as Metasm does not currently support Aarch64 fully
  61. spec.add_runtime_dependency 'aarch64'
  62. # Metasploit::Concern hooks
  63. spec.add_runtime_dependency 'metasploit-concern'
  64. # Metasploit::Credential database models
  65. spec.add_runtime_dependency 'metasploit-credential'
  66. # Database models shared between framework and Pro.
  67. spec.add_runtime_dependency 'metasploit_data_models'
  68. # Things that would normally be part of the database model, but which
  69. # are needed when there's no database
  70. spec.add_runtime_dependency 'metasploit-model'
  71. # Needed for Meterpreter
  72. spec.add_runtime_dependency 'metasploit-payloads', '2.0.166'
  73. # Needed for the next-generation POSIX Meterpreter
  74. spec.add_runtime_dependency 'metasploit_payloads-mettle', '1.0.26'
  75. # Needed by msfgui and other rpc components
  76. # Locked until build env can handle newer version. See: https://github.com/msgpack/msgpack-ruby/issues/334
  77. spec.add_runtime_dependency 'msgpack', '~> 1.6.0'
  78. # get list of network interfaces, like eth* from OS.
  79. spec.add_runtime_dependency 'network_interface'
  80. # NTLM authentication
  81. spec.add_runtime_dependency 'rubyntlm'
  82. # Needed by for XML parsing
  83. spec.add_runtime_dependency 'nokogiri'
  84. # Needed by db.rb and Msf::Exploit::Capture
  85. spec.add_runtime_dependency 'packetfu'
  86. # For sniffer and raw socket modules
  87. spec.add_runtime_dependency 'pcaprub'
  88. # Used by the Metasploit data model, etc.
  89. # bound to 0.2x for Activerecord 4.2.8 deprecation warnings:
  90. # https://github.com/ged/ruby-pg/commit/c90ac644e861857ae75638eb6954b1cb49617090
  91. spec.add_runtime_dependency 'pg'
  92. # Run initializers for metasploit-concern, metasploit-credential, metasploit_data_models Rails::Engines
  93. spec.add_runtime_dependency 'railties'
  94. # required for OS fingerprinting
  95. spec.add_runtime_dependency 'recog'
  96. # required for bitlocker fvek extraction
  97. spec.add_runtime_dependency 'openssl-ccm'
  98. # Needed for documentation generation - locked unitl Ruby 2.6 support is dropped
  99. spec.add_runtime_dependency 'octokit', '~> 4.0'
  100. spec.add_runtime_dependency 'redcarpet'
  101. # Needed for Microsoft patch finding tool (msu_finder)
  102. spec.add_runtime_dependency 'patch_finder'
  103. # Required for Metasploit Web Services
  104. spec.add_runtime_dependency 'puma'
  105. spec.add_runtime_dependency 'ruby-mysql'
  106. spec.add_runtime_dependency 'thin'
  107. spec.add_runtime_dependency 'sinatra'
  108. spec.add_runtime_dependency 'warden'
  109. spec.add_runtime_dependency 'swagger-blocks'
  110. # Required for JSON-RPC client
  111. spec.add_runtime_dependency 'em-http-request'
  112. # TimeZone info
  113. spec.add_runtime_dependency 'tzinfo-data'
  114. # Gem for dealing with SSHKeys
  115. spec.add_runtime_dependency 'sshkey'
  116. # Library for interpreting Windows error codes and strings
  117. spec.add_runtime_dependency 'windows_error'
  118. # This used to be depended on by nokogiri, depended on by wmap
  119. if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.3.0')
  120. spec.add_runtime_dependency 'xmlrpc'
  121. end
  122. # Gem for handling Cookies
  123. spec.add_runtime_dependency 'http-cookie'
  124. # Needed for some modules (polkit_auth_bypass.rb)
  125. spec.add_runtime_dependency 'unix-crypt'
  126. # Needed for Kerberos structure parsing
  127. spec.add_runtime_dependency 'rasn1'
  128. #
  129. # File Parsing Libraries
  130. #
  131. # Needed by auxiliary/gather/http_pdf_authors module
  132. spec.add_runtime_dependency 'pdf-reader'
  133. spec.add_runtime_dependency 'ruby-macho'
  134. # Needed for mongodb/bson
  135. spec.add_runtime_dependency 'bson'
  136. #
  137. # Protocol Libraries
  138. #
  139. spec.add_runtime_dependency 'dnsruby'
  140. spec.add_runtime_dependency 'mqtt'
  141. spec.add_runtime_dependency 'net-ssh'
  142. spec.add_runtime_dependency 'ed25519' # Adds ed25519 keys for net-ssh
  143. spec.add_runtime_dependency 'bcrypt_pbkdf'
  144. spec.add_runtime_dependency 'ruby_smb', '~> 3.3.3'
  145. spec.add_runtime_dependency 'net-imap' # Used in Postgres auth for its SASL stringprep implementation
  146. spec.add_runtime_dependency 'net-ldap'
  147. spec.add_runtime_dependency 'net-smtp'
  148. spec.add_runtime_dependency 'winrm'
  149. #
  150. # REX Libraries
  151. #
  152. # Core of the Ruby Exploitation Library
  153. spec.add_runtime_dependency 'rex-core'
  154. # Text manipulation library for things like generating random string
  155. spec.add_runtime_dependency 'rex-text'
  156. # Library for Generating Randomized strings valid as Identifiers such as variable names
  157. spec.add_runtime_dependency 'rex-random_identifier'
  158. # library for creating Powershell scripts for exploitation purposes
  159. spec.add_runtime_dependency 'rex-powershell'
  160. # Library for processing and creating Zip compatbile archives
  161. spec.add_runtime_dependency 'rex-zip'
  162. # Library for parsing offline Windows Registry files
  163. spec.add_runtime_dependency 'rex-registry'
  164. # Library for parsing Java serialized streams
  165. spec.add_runtime_dependency 'rex-java'
  166. # Library for C-style structs
  167. spec.add_runtime_dependency 'rex-struct2'
  168. # Library which contains architecture specific information such as registers, opcodes,
  169. # and stack manipulation routines.
  170. spec.add_runtime_dependency 'rex-arch'
  171. # Library for working with OLE.
  172. spec.add_runtime_dependency 'rex-ole'
  173. # Library for creating and/or parsing MIME messages.
  174. spec.add_runtime_dependency 'rex-mime'
  175. # Library for Dynamic Multi-byte x86 NOP generation
  176. spec.add_runtime_dependency 'rex-nop'
  177. # Library for parsing and manipulating executable binaries
  178. spec.add_runtime_dependency 'rex-bin_tools'
  179. # Rex Socket Abstraction Layer
  180. spec.add_runtime_dependency 'rex-socket'
  181. # Library for scanning a server's SSL/TLS capabilities
  182. spec.add_runtime_dependency 'rex-sslscan'
  183. # Library and tool for finding ROP gadgets in a supplied binary
  184. spec.add_runtime_dependency 'rex-rop_builder'
  185. # Library for polymorphic encoders; used for payload encoding
  186. spec.add_runtime_dependency 'rex-encoder'
  187. # Library for exploit development helpers
  188. spec.add_runtime_dependency 'rex-exploitation'
  189. # Command line editing, history, and tab completion in msfconsole
  190. spec.add_runtime_dependency 'rb-readline'
  191. # Needed by some modules
  192. spec.add_runtime_dependency 'rubyzip'
  193. # Needed for some post modules
  194. spec.add_runtime_dependency 'sqlite3', '1.7.3'
  195. # required for Time::TZInfo in ActiveSupport
  196. spec.add_runtime_dependency 'tzinfo'
  197. # Needed so that disk size output isn't horrible
  198. spec.add_runtime_dependency 'filesize'
  199. # Needed for openvas plugin
  200. spec.add_runtime_dependency 'openvas-omp'
  201. # Needed by metasploit nessus bridge
  202. spec.add_runtime_dependency 'nessus_rest'
  203. # Nexpose Gem
  204. spec.add_runtime_dependency 'nexpose'
  205. # Needed for NDMP sockets
  206. spec.add_runtime_dependency 'xdr'
  207. # Needed for ::Msf...CertProvider
  208. spec.add_runtime_dependency 'faker'
  209. # SSH server library with ed25519
  210. spec.add_runtime_dependency 'hrr_rb_ssh-ed25519'
  211. # Needed for irb internal command
  212. spec.add_runtime_dependency 'irb', '~> 1.7.4'
  213. # AWS enumeration modules
  214. spec.add_runtime_dependency 'aws-sdk-s3'
  215. spec.add_runtime_dependency 'aws-sdk-ec2'
  216. spec.add_runtime_dependency 'aws-sdk-iam'
  217. spec.add_runtime_dependency 'aws-sdk-ssm'
  218. # AWS session support
  219. spec.add_runtime_dependency 'aws-sdk-ec2instanceconnect'
  220. # Needed for WebSocket Support
  221. spec.add_runtime_dependency 'faye-websocket'
  222. spec.add_runtime_dependency 'eventmachine'
  223. spec.add_runtime_dependency 'faraday', '2.7.11'
  224. spec.add_runtime_dependency 'faraday-retry'
  225. # Required for windows terminal colors as of Ruby 3.0
  226. spec.add_runtime_dependency 'win32api'
  227. spec.add_runtime_dependency 'zeitwerk'
  228. # Required for PNG payload support.
  229. # WARNING: Chunky_PNG is vulnerable to decompression bomb attacks.
  230. # Do not use this to process untrusted PNG files! This is only to be used
  231. # to generate PNG files, not to parse untrusted PNG files.
  232. spec.add_runtime_dependency 'chunky_png'
  233. # Needed for multiline REPL support for interactive SQL sessions
  234. spec.add_runtime_dependency 'reline'
  235. end