Class: Mdm::Service

Inherits:
ApplicationRecord
  • Object
show all
Includes:
Metasploit::Model::Search
Defined in:
app/models/mdm/service.rb

Overview

A service, such as an ssh server or web server, running on a #host.

Constant Summary collapse

PROTOS =

Valid values for #proto.

%w{tcp udp}
STATES =

Valid values for #state.

['open', 'closed', 'filtered', 'unknown']

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#credsActiveRecord::Relation<Mdm::Cred>

Credentials gathered from this service.

Returns:


23
24
25
26
# File 'app/models/mdm/service.rb', line 23

has_many :creds,
class_name: 'Mdm::Cred',
dependent: :destroy,
inverse_of: :service

#exploit_attemptsActiveRecord::Relation<Mdm::ExploitAttempt>

Exploit attempts against this service.

Returns:


32
33
34
35
# File 'app/models/mdm/service.rb', line 32

has_many :exploit_attempts,
class_name: 'Mdm::ExploitAttempt',
dependent: :destroy,
inverse_of: :service

#exploited_hostsArray<Mdm::ExploitHost>

TODO:

MSP-2732

Returns:

  • (Array<Mdm::ExploitHost>)

40
41
42
43
# File 'app/models/mdm/service.rb', line 40

has_many :exploited_hosts,
class_name: 'Mdm::ExploitedHost',
dependent: :destroy,
inverse_of: :service

#hostMdm::Host

The host on which this service runs.

Returns:


49
50
51
52
# File 'app/models/mdm/service.rb', line 49

belongs_to :host,
class_name: 'Mdm::Host',
counter_cache: :service_count,
inverse_of: :services

#infoString

Additional information about the service that does not fit in the #name or #proto.

Returns:

  • (String)

# File 'app/models/mdm/service.rb', line 135

#lootsActiveRecord::Relation<Mdm::Loot>

Loot gathers from this service.

Returns:


58
59
60
61
# File 'app/models/mdm/service.rb', line 58

has_many :loots,
class_name: 'Mdm::Loot',
dependent: :destroy,
inverse_of: :service

#nameString

The name of the service.

Returns:

  • (String)

# File 'app/models/mdm/service.rb', line 145

#notesActiveRecord::Relation<Mdm::Note>

Notes about this service.

Returns:


67
68
69
70
# File 'app/models/mdm/service.rb', line 67

has_many :notes,
class_name: 'Mdm::Note',
dependent: :destroy,
inverse_of: :service

#portInteger

The port on which this service runs on the #host.

Returns:

  • (Integer)

# File 'app/models/mdm/service.rb', line 140

#protoString

The protocol used by this service

Returns:

  • (String)

# File 'app/models/mdm/service.rb', line 150

#stateString

Whether this service is opened, closed, filtered, or in an unknown state.

Returns:

  • (String)

    element of STATES.


# File 'app/models/mdm/service.rb', line 155

#task_servicesArray<Mdm::TaskService>

Details about what Tasks touched this service

Returns:


76
77
78
79
# File 'app/models/mdm/service.rb', line 76

has_many :task_services,
class_name: 'Mdm::TaskService',
dependent: :destroy,
inverse_of: :service

#tasksArray<Mdm::Task>

Tasks that touched this service

Returns:


107
# File 'app/models/mdm/service.rb', line 107

has_many :tasks, :through => :task_services, :class_name => 'Mdm::Task'

#vulnsActiveRecord::Relation<Mdm::Vuln>

Vulnerabilities found in this service.

Returns:


85
86
87
88
# File 'app/models/mdm/service.rb', line 85

has_many :vulns,
class_name: 'Mdm::Vuln',
dependent: :destroy,
inverse_of: :service

#web_formsArray<Mdm::WebForm> (readonly)

Form in the #web_sites on top of this service.

Returns:


123
# File 'app/models/mdm/service.rb', line 123

has_many :web_forms, :through => :web_sites, :class_name => 'Mdm::WebForm'

#web_pagesArray<Mdm::WebPages> (readonly)

Web pages in the #web_sites on top of this service.

Returns:

  • (Array<Mdm::WebPages>)

117
# File 'app/models/mdm/service.rb', line 117

has_many :web_pages, :through => :web_sites, :class_name => 'Mdm::WebPage'

#web_sitesActiveRecord::Relation<Mdm::WebSite>

Web sites running on top of this service.

Returns:


94
95
96
97
# File 'app/models/mdm/service.rb', line 94

has_many :web_sites,
class_name: 'Mdm::WebSite',
dependent: :destroy,
inverse_of: :service

#web_vulnsArray<Mdm::WebVuln> (readonly)

Vulnerabilities found in the #web_sites on top of this service.

Returns:


129
# File 'app/models/mdm/service.rb', line 129

has_many :web_vulns, :through => :web_sites, :class_name => 'Mdm::WebVuln'

Class Method Details

.proto_setSet<String>

Set of searchable values for #proto.

Returns:

  • (Set<String>)

    PROTOS as a Set.

See Also:

  • Metasploit::Model::Search::Operation::Set#membership
  • Metasploit::Model::Search::Operator::Attribute#attribute_set

248
249
250
# File 'app/models/mdm/service.rb', line 248

def self.proto_set
  @proto_set ||= Set.new(PROTOS)
end

Instance Method Details

#normalize_host_osvoid

This method returns an undefined value.

Normalizes the host operating system whenever #info has changed.


260
261
262
263
264
# File 'app/models/mdm/service.rb', line 260

def normalize_host_os
  if saved_change_to_info? && host.workspace.present? && !host.workspace.import_fingerprint
    host.normalize_os
  end
end