mihari 3.7.0 → 3.7.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.
- checksums.yaml +4 -4
 - data/lib/mihari/enrichers/base.rb +18 -0
 - data/lib/mihari/enrichers/ipinfo.rb +12 -1
 - data/lib/mihari/models/autonomous_system.rb +2 -4
 - data/lib/mihari/status.rb +7 -2
 - data/lib/mihari/structs/ipinfo.rb +8 -5
 - data/lib/mihari/version.rb +1 -1
 - data/lib/mihari.rb +10 -1
 - data/mihari.gemspec +1 -0
 - data/sig/lib/mihari/enrichers/base.rbs +12 -0
 - data/sig/lib/mihari/enrichers/ipinfo.rbs +2 -0
 - data/sig/lib/mihari/structs/ipinfo.rbs +1 -1
 - data/sig/lib/mihari.rbs +2 -0
 - metadata +18 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 50093699c012400a3f870f4bc44e373d8b2bf897ba47026f68f91c0899eaa42a
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: d690e4c92aa71ed193dfce5576b305698a74d3cf5ca99e0e6b7e696fd502254f
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 27d489befd3a96dd8da1a8c5117f148500cd76acd66124c2d9111d15aecbb92e52ac5432edb1f7af1a69d4241ed90698aba615a802a89f2d20f2caf17154752e
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 1f1cf73cb2eabb643d6be55786aa2e4e598c19d2e6de0c6467ea49667c04596e4366a8c301efb189f125429e05ba2e96e8ba8c79baf775e474ed0869705d1048
         
     | 
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Mihari
         
     | 
| 
      
 4 
     | 
    
         
            +
              module Enrichers
         
     | 
| 
      
 5 
     | 
    
         
            +
                class Base
         
     | 
| 
      
 6 
     | 
    
         
            +
                  include Mixins::Configurable
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                  def self.inherited(child)
         
     | 
| 
      
 9 
     | 
    
         
            +
                    Mihari.enrichers << child
         
     | 
| 
      
 10 
     | 
    
         
            +
                  end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                  # @return [Boolean]
         
     | 
| 
      
 13 
     | 
    
         
            +
                  def valid?
         
     | 
| 
      
 14 
     | 
    
         
            +
                    raise NotImplementedError, "You must implement #{self.class}##{__method__}"
         
     | 
| 
      
 15 
     | 
    
         
            +
                  end
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -4,7 +4,18 @@ require "memist" 
     | 
|
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            module Mihari
         
     | 
| 
       6 
6 
     | 
    
         
             
              module Enrichers
         
     | 
| 
       7 
     | 
    
         
            -
                class IPInfo
         
     | 
| 
      
 7 
     | 
    
         
            +
                class IPInfo < Base
         
     | 
| 
      
 8 
     | 
    
         
            +
                  # @return [Boolean]
         
     | 
| 
      
 9 
     | 
    
         
            +
                  def valid?
         
     | 
| 
      
 10 
     | 
    
         
            +
                    Mihari.config.ipinfo_api_key.nil?
         
     | 
| 
      
 11 
     | 
    
         
            +
                  end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                  private
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                  def configuration_keys
         
     | 
| 
      
 16 
     | 
    
         
            +
                    %w[ipinfo_api_key]
         
     | 
| 
      
 17 
     | 
    
         
            +
                  end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
       8 
19 
     | 
    
         
             
                  class << self
         
     | 
| 
       9 
20 
     | 
    
         
             
                    include Memist::Memoizable
         
     | 
| 
       10 
21 
     | 
    
         | 
    
        data/lib/mihari/status.rb
    CHANGED
    
    | 
         @@ -18,7 +18,7 @@ module Mihari 
     | 
|
| 
       18 
18 
     | 
    
         
             
                # @return [Array<Hash>]
         
     | 
| 
       19 
19 
     | 
    
         
             
                #
         
     | 
| 
       20 
20 
     | 
    
         
             
                def statuses
         
     | 
| 
       21 
     | 
    
         
            -
                  (Mihari.analyzers + Mihari.emitters).map do |klass|
         
     | 
| 
      
 21 
     | 
    
         
            +
                  (Mihari.analyzers + Mihari.emitters + Mihari.enrichers).map do |klass|
         
     | 
| 
       22 
22 
     | 
    
         
             
                    name = klass.to_s.split("::").last.to_s
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
                    [name, build_status(klass)]
         
     | 
| 
         @@ -36,11 +36,16 @@ module Mihari 
     | 
|
| 
       36 
36 
     | 
    
         
             
                  return nil if klass == Mihari::Analyzers::Rule
         
     | 
| 
       37 
37 
     | 
    
         | 
| 
       38 
38 
     | 
    
         
             
                  is_analyzer = klass.ancestors.include?(Mihari::Analyzers::Base)
         
     | 
| 
      
 39 
     | 
    
         
            +
                  is_emitter = klass.ancestors.include?(Mihari::Emitters::Base)
         
     | 
| 
      
 40 
     | 
    
         
            +
                  is_enricher = klass.ancestors.include?(Mihari::Enrichers::Base)
         
     | 
| 
       39 
41 
     | 
    
         | 
| 
       40 
42 
     | 
    
         
             
                  instance = is_analyzer ? klass.new("dummy") : klass.new
         
     | 
| 
       41 
43 
     | 
    
         
             
                  is_configured = instance.configured?
         
     | 
| 
       42 
44 
     | 
    
         
             
                  values = instance.configuration_values
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                  type = "Analyzer"
         
     | 
| 
      
 47 
     | 
    
         
            +
                  type = "Emitter" if is_emitter
         
     | 
| 
      
 48 
     | 
    
         
            +
                  type = "Enricher" if is_enricher
         
     | 
| 
       44 
49 
     | 
    
         | 
| 
       45 
50 
     | 
    
         
             
                  values ? { is_configured: is_configured, values: values, type: type } : nil
         
     | 
| 
       46 
51 
     | 
    
         
             
                rescue ArgumentError => _e
         
     | 
| 
         @@ -9,7 +9,7 @@ module Mihari 
     | 
|
| 
       9 
9 
     | 
    
         
             
                    attribute :hostname, Types::String.optional
         
     | 
| 
       10 
10 
     | 
    
         
             
                    attribute :loc, Types::String
         
     | 
| 
       11 
11 
     | 
    
         
             
                    attribute :country_code, Types::String
         
     | 
| 
       12 
     | 
    
         
            -
                    attribute :asn, Types::Integer
         
     | 
| 
      
 12 
     | 
    
         
            +
                    attribute :asn, Types::Integer.optional
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
14 
     | 
    
         
             
                    class << self
         
     | 
| 
       15 
15 
     | 
    
         
             
                      include Mixins::AutonomousSystem
         
     | 
| 
         @@ -17,9 +17,12 @@ module Mihari 
     | 
|
| 
       17 
17 
     | 
    
         
             
                      def from_dynamic!(d)
         
     | 
| 
       18 
18 
     | 
    
         
             
                        d = Types::Hash[d]
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
                         
     | 
| 
       21 
     | 
    
         
            -
                         
     | 
| 
       22 
     | 
    
         
            -
                         
     | 
| 
      
 20 
     | 
    
         
            +
                        asn = nil
         
     | 
| 
      
 21 
     | 
    
         
            +
                        org = d["org"]
         
     | 
| 
      
 22 
     | 
    
         
            +
                        unless org.nil?
         
     | 
| 
      
 23 
     | 
    
         
            +
                          asn = org.split.first
         
     | 
| 
      
 24 
     | 
    
         
            +
                          asn = normalize_asn(asn)
         
     | 
| 
      
 25 
     | 
    
         
            +
                        end
         
     | 
| 
       23 
26 
     | 
    
         | 
| 
       24 
27 
     | 
    
         
             
                        new(
         
     | 
| 
       25 
28 
     | 
    
         
             
                          ip: d.fetch("ip"),
         
     | 
| 
         @@ -29,7 +32,7 @@ module Mihari 
     | 
|
| 
       29 
32 
     | 
    
         
             
                          asn: asn
         
     | 
| 
       30 
33 
     | 
    
         
             
                        )
         
     | 
| 
       31 
34 
     | 
    
         
             
                      end
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
      
 35 
     | 
    
         
            +
                    end
         
     | 
| 
       33 
36 
     | 
    
         
             
                  end
         
     | 
| 
       34 
37 
     | 
    
         
             
                end
         
     | 
| 
       35 
38 
     | 
    
         
             
              end
         
     | 
    
        data/lib/mihari/version.rb
    CHANGED
    
    
    
        data/lib/mihari.rb
    CHANGED
    
    | 
         @@ -6,6 +6,9 @@ require "dry/files" 
     | 
|
| 
       6 
6 
     | 
    
         
             
            require "mem"
         
     | 
| 
       7 
7 
     | 
    
         
             
            require "yaml"
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
      
 9 
     | 
    
         
            +
            # Load .env
         
     | 
| 
      
 10 
     | 
    
         
            +
            require "dotenv/load"
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
       9 
12 
     | 
    
         
             
            # Mixins
         
     | 
| 
       10 
13 
     | 
    
         
             
            require "mihari/mixins/autonomous_system"
         
     | 
| 
       11 
14 
     | 
    
         
             
            require "mihari/mixins/configurable"
         
     | 
| 
         @@ -32,7 +35,7 @@ module Mihari 
     | 
|
| 
       32 
35 
     | 
    
         
             
              setting :censys_secret, ENV["CENSYS_SECRET"]
         
     | 
| 
       33 
36 
     | 
    
         
             
              setting :circl_passive_password, ENV["CIRCL_PASSIVE_PASSWORD"]
         
     | 
| 
       34 
37 
     | 
    
         
             
              setting :circl_passive_username, ENV["CIRCL_PASSIVE_USERNAME"]
         
     | 
| 
       35 
     | 
    
         
            -
              setting :ipinfo_api_key, ENV[" 
     | 
| 
      
 38 
     | 
    
         
            +
              setting :ipinfo_api_key, ENV["IPINFO_API_KEY"]
         
     | 
| 
       36 
39 
     | 
    
         
             
              setting :misp_api_endpoint, ENV["MISP_API_ENDPOINT"]
         
     | 
| 
       37 
40 
     | 
    
         
             
              setting :misp_api_key, ENV["MISP_API_KEY"]
         
     | 
| 
       38 
41 
     | 
    
         
             
              setting :onyphe_api_key, ENV["ONYPHE_API_KEY"]
         
     | 
| 
         @@ -67,6 +70,11 @@ module Mihari 
     | 
|
| 
       67 
70 
     | 
    
         
             
                end
         
     | 
| 
       68 
71 
     | 
    
         
             
                memoize :analyzers
         
     | 
| 
       69 
72 
     | 
    
         | 
| 
      
 73 
     | 
    
         
            +
                def enrichers
         
     | 
| 
      
 74 
     | 
    
         
            +
                  []
         
     | 
| 
      
 75 
     | 
    
         
            +
                end
         
     | 
| 
      
 76 
     | 
    
         
            +
                memoize :enrichers
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
       70 
78 
     | 
    
         
             
                #
         
     | 
| 
       71 
79 
     | 
    
         
             
                # Load configuration from YAML file
         
     | 
| 
       72 
80 
     | 
    
         
             
                #
         
     | 
| 
         @@ -111,6 +119,7 @@ require "mihari/schemas/configuration" 
     | 
|
| 
       111 
119 
     | 
    
         
             
            require "mihari/schemas/rule"
         
     | 
| 
       112 
120 
     | 
    
         | 
| 
       113 
121 
     | 
    
         
             
            # Enrichers
         
     | 
| 
      
 122 
     | 
    
         
            +
            require "mihari/enrichers/base"
         
     | 
| 
       114 
123 
     | 
    
         
             
            require "mihari/enrichers/ipinfo"
         
     | 
| 
       115 
124 
     | 
    
         | 
| 
       116 
125 
     | 
    
         
             
            # Models
         
     | 
    
        data/mihari.gemspec
    CHANGED
    
    | 
         @@ -54,6 +54,7 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       54 
54 
     | 
    
         
             
              spec.add_dependency "cymbal", "~> 2.0"
         
     | 
| 
       55 
55 
     | 
    
         
             
              spec.add_dependency "dnpedia", "~> 0.1"
         
     | 
| 
       56 
56 
     | 
    
         
             
              spec.add_dependency "dnstwister", "~> 0.1"
         
     | 
| 
      
 57 
     | 
    
         
            +
              spec.add_dependency "dotenv", "~> 2.7"
         
     | 
| 
       57 
58 
     | 
    
         
             
              spec.add_dependency "dry-configurable", "~> 0.12"
         
     | 
| 
       58 
59 
     | 
    
         
             
              spec.add_dependency "dry-files", "~> 0.1"
         
     | 
| 
       59 
60 
     | 
    
         
             
              spec.add_dependency "dry-initializer", "~> 3.0"
         
     | 
| 
         @@ -6,7 +6,7 @@ module Mihari 
     | 
|
| 
       6 
6 
     | 
    
         
             
                    attr_reader hostname: String?
         
     | 
| 
       7 
7 
     | 
    
         
             
                    attr_reader loc: String
         
     | 
| 
       8 
8 
     | 
    
         
             
                    attr_reader country_code: String
         
     | 
| 
       9 
     | 
    
         
            -
                    attr_reader asn:  
     | 
| 
      
 9 
     | 
    
         
            +
                    attr_reader asn: Integer?
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
                    def self.from_dynamic!: (Hash[(String | Symbol), untyped] d) -> Mihari::Structs::IPInfo::Response
         
     | 
| 
       12 
12 
     | 
    
         | 
    
        data/sig/lib/mihari.rbs
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: mihari
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 3.7. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 3.7.1
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Manabu Niseki
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire:
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2021-09- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2021-09-04 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: bundler
         
     | 
| 
         @@ -402,6 +402,20 @@ dependencies: 
     | 
|
| 
       402 
402 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       403 
403 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       404 
404 
     | 
    
         
             
                    version: '0.1'
         
     | 
| 
      
 405 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 406 
     | 
    
         
            +
              name: dotenv
         
     | 
| 
      
 407 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 408 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 409 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 410 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 411 
     | 
    
         
            +
                    version: '2.7'
         
     | 
| 
      
 412 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 413 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 414 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 415 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 416 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 417 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 418 
     | 
    
         
            +
                    version: '2.7'
         
     | 
| 
       405 
419 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       406 
420 
     | 
    
         
             
              name: dry-configurable
         
     | 
| 
       407 
421 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -1069,6 +1083,7 @@ files: 
     | 
|
| 
       1069 
1083 
     | 
    
         
             
            - lib/mihari/emitters/stdout.rb
         
     | 
| 
       1070 
1084 
     | 
    
         
             
            - lib/mihari/emitters/the_hive.rb
         
     | 
| 
       1071 
1085 
     | 
    
         
             
            - lib/mihari/emitters/webhook.rb
         
     | 
| 
      
 1086 
     | 
    
         
            +
            - lib/mihari/enrichers/base.rb
         
     | 
| 
       1072 
1087 
     | 
    
         
             
            - lib/mihari/enrichers/ipinfo.rb
         
     | 
| 
       1073 
1088 
     | 
    
         
             
            - lib/mihari/errors.rb
         
     | 
| 
       1074 
1089 
     | 
    
         
             
            - lib/mihari/mixins/autonomous_system.rb
         
     | 
| 
         @@ -1226,6 +1241,7 @@ files: 
     | 
|
| 
       1226 
1241 
     | 
    
         
             
            - sig/lib/mihari/emitters/stdout.rbs
         
     | 
| 
       1227 
1242 
     | 
    
         
             
            - sig/lib/mihari/emitters/the_hive.rbs
         
     | 
| 
       1228 
1243 
     | 
    
         
             
            - sig/lib/mihari/emitters/webhook.rbs
         
     | 
| 
      
 1244 
     | 
    
         
            +
            - sig/lib/mihari/enrichers/base.rbs
         
     | 
| 
       1229 
1245 
     | 
    
         
             
            - sig/lib/mihari/enrichers/ipinfo.rbs
         
     | 
| 
       1230 
1246 
     | 
    
         
             
            - sig/lib/mihari/errors.rbs
         
     | 
| 
       1231 
1247 
     | 
    
         
             
            - sig/lib/mihari/mixins/autonomous_system.rbs
         
     |