Module: Mihari

Extended by:
MemoWise
Defined in:
lib/mihari.rb,
lib/mihari/http.rb,
lib/mihari/rule.rb,
lib/mihari/actor.rb,
lib/mihari/types.rb,
lib/mihari/config.rb,
lib/mihari/errors.rb,
lib/mihari/cli/tag.rb,
lib/mihari/service.rb,
lib/mihari/version.rb,
lib/mihari/web/api.rb,
lib/mihari/cli/base.rb,
lib/mihari/cli/rule.rb,
lib/mihari/database.rb,
lib/mihari/cli/alert.rb,
lib/mihari/constants.rb,
lib/mihari/data_type.rb,
lib/mihari/cli/config.rb,
lib/mihari/models/cpe.rb,
lib/mihari/models/dns.rb,
lib/mihari/models/tag.rb,
lib/mihari/clients/otx.rb,
lib/mihari/models/port.rb,
lib/mihari/models/rule.rb,
lib/mihari/cli/artifact.rb,
lib/mihari/cli/database.rb,
lib/mihari/clients/base.rb,
lib/mihari/clients/fofa.rb,
lib/mihari/clients/misp.rb,
lib/mihari/clients/mmdb.rb,
lib/mihari/clients/yeti.rb,
lib/mihari/commands/tag.rb,
lib/mihari/commands/web.rb,
lib/mihari/entities/cpe.rb,
lib/mihari/entities/dns.rb,
lib/mihari/entities/tag.rb,
lib/mihari/models/alert.rb,
lib/mihari/models/whois.rb,
lib/mihari/schemas/rule.rb,
lib/mihari/sidekiq/jobs.rb,
lib/mihari/structs/fofa.rb,
lib/mihari/structs/mmdb.rb,
lib/mihari/analyzers/otx.rb,
lib/mihari/clients/circl.rb,
lib/mihari/clients/crtsh.rb,
lib/mihari/clients/whois.rb,
lib/mihari/commands/rule.rb,
lib/mihari/emitters/base.rb,
lib/mihari/emitters/misp.rb,
lib/mihari/emitters/yeti.rb,
lib/mihari/entities/port.rb,
lib/mihari/entities/rule.rb,
lib/mihari/schemas/alert.rb,
lib/mihari/services/feed.rb,
lib/mihari/analyzers/base.rb,
lib/mihari/analyzers/feed.rb,
lib/mihari/analyzers/fofa.rb,
lib/mihari/clients/censys.rb,
lib/mihari/clients/onyphe.rb,
lib/mihari/clients/shodan.rb,
lib/mihari/commands/alert.rb,
lib/mihari/emitters/slack.rb,
lib/mihari/enrichers/base.rb,
lib/mihari/enrichers/mmdb.rb,
lib/mihari/entities/alert.rb,
lib/mihari/entities/whois.rb,
lib/mihari/models/tagging.rb,
lib/mihari/structs/censys.rb,
lib/mihari/structs/config.rb,
lib/mihari/structs/onyphe.rb,
lib/mihari/structs/shodan.rb,
lib/mihari/analyzers/circl.rb,
lib/mihari/analyzers/crtsh.rb,
lib/mihari/cli/application.rb,
lib/mihari/clients/urlscan.rb,
lib/mihari/clients/validin.rb,
lib/mihari/clients/zoomeye.rb,
lib/mihari/commands/config.rb,
lib/mihari/commands/search.rb,
lib/mihari/enrichers/whois.rb,
lib/mihari/entities/config.rb,
lib/mihari/models/artifact.rb,
lib/mihari/schemas/emitter.rb,
lib/mihari/schemas/options.rb,
lib/mihari/structs/filters.rb,
lib/mihari/structs/urlscan.rb,
lib/mihari/web/application.rb,
lib/mihari/analyzers/censys.rb,
lib/mihari/analyzers/onyphe.rb,
lib/mihari/analyzers/shodan.rb,
lib/mihari/clients/the_hive.rb,
lib/mihari/commands/sidekiq.rb,
lib/mihari/commands/version.rb,
lib/mihari/emitters/webhook.rb,
lib/mihari/enrichers/shodan.rb,
lib/mihari/schemas/analyzer.rb,
lib/mihari/schemas/enricher.rb,
lib/mihari/services/getters.rb,
lib/mihari/services/proxies.rb,
lib/mihari/analyzers/urlscan.rb,
lib/mihari/analyzers/validin.rb,
lib/mihari/analyzers/zoomeye.rb,
lib/mihari/clients/greynoise.rb,
lib/mihari/clients/hunterhow.rb,
lib/mihari/commands/artifact.rb,
lib/mihari/commands/database.rb,
lib/mihari/emitters/database.rb,
lib/mihari/emitters/the_hive.rb,
lib/mihari/entities/artifact.rb,
lib/mihari/entities/messages.rb,
lib/mihari/services/builders.rb,
lib/mihari/services/creators.rb,
lib/mihari/services/renderer.rb,
lib/mihari/structs/greynoise.rb,
lib/mihari/structs/hunterhow.rb,
lib/mihari/clients/binaryedge.rb,
lib/mihari/clients/dnstwister.rb,
lib/mihari/clients/publsedive.rb,
lib/mihari/clients/virustotal.rb,
lib/mihari/concerns/retriable.rb,
lib/mihari/models/geolocation.rb,
lib/mihari/models/reverse_dns.rb,
lib/mihari/services/enrichers.rb,
lib/mihari/services/searchers.rb,
lib/mihari/structs/binaryedge.rb,
lib/mihari/web/endpoints/tags.rb,
lib/mihari/analyzers/greynoise.rb,
lib/mihari/analyzers/hunterhow.rb,
lib/mihari/analyzers/pulsedive.rb,
lib/mihari/concerns/refangable.rb,
lib/mihari/entities/ip_address.rb,
lib/mihari/entities/pagination.rb,
lib/mihari/services/destroyers.rb,
lib/mihari/web/endpoints/rules.rb,
lib/mihari/analyzers/binaryedge.rb,
lib/mihari/analyzers/dnstwister.rb,
lib/mihari/analyzers/virustotal.rb,
lib/mihari/clients/passivetotal.rb,
lib/mihari/entities/geolocation.rb,
lib/mihari/entities/reverse_dns.rb,
lib/mihari/models/vulnerability.rb,
lib/mihari/web/endpoints/alerts.rb,
lib/mihari/concerns/configurable.rb,
lib/mihari/services/initializers.rb,
lib/mihari/web/endpoints/configs.rb,
lib/mihari/analyzers/passivetotal.rb,
lib/mihari/clients/securitytrails.rb,
lib/mihari/entities/vulnerability.rb,
lib/mihari/web/endpoints/artifacts.rb,
lib/mihari/analyzers/securitytrails.rb,
lib/mihari/models/autonomous_system.rb,
lib/mihari/schemas/concerns/orrable.rb,
lib/mihari/clients/google_public_dns.rb,
lib/mihari/structs/google_public_dns.rb,
lib/mihari/web/middleware/connection.rb,
lib/mihari/clients/shodan_internet_db.rb,
lib/mihari/concerns/error_unwrappable.rb,
lib/mihari/entities/autonomous_system.rb,
lib/mihari/models/concerns/searchable.rb,
lib/mihari/web/endpoints/ip_addresses.rb,
lib/mihari/enrichers/google_public_dns.rb,
lib/mihari/concerns/database_connectable.rb,
lib/mihari/structs/virustotal_intelligence.rb,
lib/mihari/analyzers/virustotal_intelligence.rb,
lib/mihari/web/middleware/capture_exceptions.rb,
lib/mihari/concerns/falsepositive_validatable.rb,
lib/mihari/concerns/falsepositive_normalizable.rb,
lib/mihari/concerns/autonomous_system_normalizable.rb

Overview

Mihari module

Defined Under Namespace

Modules: Analyzers, CLI, Clients, Commands, Concerns, Emitters, Enrichers, Entities, HTTP, Jobs, Models, Schemas, Services, Structs, Types, Web Classes: Actor, AnalyzerError, Config, ConfigurationError, DataType, Database, Error, IntegrityError, ResponseError, Rule, Service, StatusError, UnenrichableError, ValidationError, ValueError

Constant Summary collapse

VERSION =
"8.0.0"
DEFAULT_DATA_TYPES =

Returns:

  • (Array<String>)
Types::DataTypes.values.freeze
DEFAULT_EMITTERS =

Returns:

  • (Array<Hash>)
Emitters::Database.keys.map { |name| {emitter: name.downcase} }.freeze
DEFAULT_ENRICHERS =

Returns:

  • (Array<Hash>)
Mihari.enricher_to_class.keys.map { |name| {enricher: name.downcase} }.freeze

Class Method Summary collapse

Class Method Details

.analyzer_to_classHash{String => Mihari::Analyzers::Base}

Returns:



98
99
100
101
102
# File 'lib/mihari.rb', line 98

def analyzer_to_class
  @analyzer_to_class ||= analyzers.flat_map do |klass|
    klass.keys.map { |key| [key, klass] }
  end.to_h
end

.analyzersArray<Mihari::Analyzers::Base>

Returns:



90
91
92
# File 'lib/mihari.rb', line 90

def analyzers
  []
end

.configMihari::Config

Returns:



124
125
126
# File 'lib/mihari.rb', line 124

def config
  @config ||= Config.new
end

.development?Boolean

Returns:

  • (Boolean)


147
148
149
# File 'lib/mihari.rb', line 147

def development?
  env == "development"
end

.emitter_to_classHash{String => Mihari::Enrichers::Base}

Returns:



81
82
83
84
85
# File 'lib/mihari.rb', line 81

def emitter_to_class
  @emitter_to_class ||= emitters.flat_map do |klass|
    klass.keys.map { |key| [key, klass] }
  end.to_h
end

.emittersArray<Mihari::Emitters::Base>

Returns:



73
74
75
# File 'lib/mihari.rb', line 73

def emitters
  []
end

.enricher_to_classHash{String => Mihari::Enrichers::Base}

Returns:



115
116
117
118
119
# File 'lib/mihari.rb', line 115

def enricher_to_class
  @enricher_to_class ||= enrichers.flat_map do |klass|
    klass.keys.map { |key| [key, klass] }
  end.to_h
end

.enrichersArray<Mihari::Enrichers::Base>

Returns:



107
108
109
# File 'lib/mihari.rb', line 107

def enrichers
  []
end

.envString

Returns:

  • (String)


140
141
142
# File 'lib/mihari.rb', line 140

def env
  ENV["APP_ENV"] || ENV["RACK_ENV"]
end

.initialize_sentryObject



167
168
169
170
171
172
173
174
175
176
# File 'lib/mihari.rb', line 167

def initialize_sentry
  return if Mihari.config.sentry_dsn.nil?
  return if Sentry.initialized?

  Sentry.init do |config|
    config.dsn = Mihari.config.sentry_dsn
    config.traces_sample_rate = Mihari.config.sentry_trace_sample_rate
    config.breadcrumbs_logger = %i[sentry_logger http_logger]
  end
end

.loggerObject



128
129
130
131
132
133
134
# File 'lib/mihari.rb', line 128

def logger
  SemanticLogger.sync! unless puma?

  SemanticLogger.default_level = :info
  SemanticLogger.add_appender(io: $stderr, formatter: :color)
  SemanticLogger["Mihari"]
end

.puma?Boolean

Returns:

  • (Boolean)


161
162
163
164
165
# File 'lib/mihari.rb', line 161

def puma?
  !Puma.stats.nil?
rescue
  false
end

.sidekiq?Boolean

Returns:

  • (Boolean)


154
155
156
# File 'lib/mihari.rb', line 154

def sidekiq?
  !Mihari.config.sidekiq_redis_url.nil?
end