mihari 4.7.4 → 4.9.0

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 (35) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +4 -0
  3. data/README.md +0 -1
  4. data/lib/mihari/analyzers/rule.rb +0 -1
  5. data/lib/mihari/commands/search.rb +8 -2
  6. data/lib/mihari/commands/validator.rb +2 -1
  7. data/lib/mihari/schemas/analyzer.rb +0 -7
  8. data/lib/mihari/schemas/rule.rb +4 -4
  9. data/lib/mihari/structs/rule.rb +12 -28
  10. data/lib/mihari/version.rb +1 -1
  11. data/lib/mihari/web/public/index.html +1 -1
  12. data/lib/mihari/web/public/redoc-static.html +282 -246
  13. data/lib/mihari/web/public/static/css/{chunk-vendors.5013d549.css → chunk-vendors.380724be.css} +2 -2
  14. data/lib/mihari/web/public/static/fonts/fa-brands-400.86c7e1fa.woff2 +0 -0
  15. data/lib/mihari/web/public/static/fonts/{fa-brands-400.7fa789ab.ttf → fa-brands-400.f5defc2e.ttf} +0 -0
  16. data/lib/mihari/web/public/static/fonts/{fa-regular-400.da02cb7e.ttf → fa-regular-400.3edb9004.ttf} +0 -0
  17. data/lib/mihari/web/public/static/fonts/fa-regular-400.e0550912.woff2 +0 -0
  18. data/lib/mihari/web/public/static/fonts/fa-solid-900.64d5644d.woff2 +0 -0
  19. data/lib/mihari/web/public/static/fonts/{fa-solid-900.3a463ec3.ttf → fa-solid-900.f418d876.ttf} +0 -0
  20. data/lib/mihari/web/public/static/fonts/{fa-v4compatibility.924588dc.ttf → fa-v4compatibility.7e7e1dad.ttf} +0 -0
  21. data/lib/mihari/web/public/static/js/app.6413bf4f.js +2 -0
  22. data/lib/mihari/web/public/static/js/app.6413bf4f.js.map +1 -0
  23. data/lib/mihari/web/public/static/js/chunk-vendors.723e02cf.js +31 -0
  24. data/lib/mihari/web/public/static/js/chunk-vendors.723e02cf.js.map +1 -0
  25. data/lib/mihari.rb +0 -1
  26. data/mihari.gemspec +13 -13
  27. metadata +41 -41
  28. data/lib/mihari/analyzers/spyse.rb +0 -93
  29. data/lib/mihari/web/public/static/fonts/fa-brands-400.859fc388.woff2 +0 -0
  30. data/lib/mihari/web/public/static/fonts/fa-regular-400.2ffd018f.woff2 +0 -0
  31. data/lib/mihari/web/public/static/fonts/fa-solid-900.40ddefd7.woff2 +0 -0
  32. data/lib/mihari/web/public/static/js/app.524d9ed2.js +0 -2
  33. data/lib/mihari/web/public/static/js/app.524d9ed2.js.map +0 -1
  34. data/lib/mihari/web/public/static/js/chunk-vendors.64580a1f.js +0 -31
  35. data/lib/mihari/web/public/static/js/chunk-vendors.64580a1f.js.map +0 -1
data/lib/mihari.rb CHANGED
@@ -235,7 +235,6 @@ require "mihari/analyzers/passivetotal"
235
235
  require "mihari/analyzers/pulsedive"
236
236
  require "mihari/analyzers/securitytrails"
237
237
  require "mihari/analyzers/shodan"
238
- require "mihari/analyzers/spyse"
239
238
  require "mihari/analyzers/urlscan"
240
239
  require "mihari/analyzers/virustotal_intelligence"
241
240
  require "mihari/analyzers/virustotal"
data/mihari.gemspec CHANGED
@@ -28,7 +28,7 @@ Gem::Specification.new do |spec|
28
28
  spec.require_paths = ["lib"]
29
29
 
30
30
  spec.add_development_dependency "bundler", "~> 2.3"
31
- spec.add_development_dependency "coveralls_reborn", "~> 0.24"
31
+ spec.add_development_dependency "coveralls_reborn", "~> 0.25"
32
32
  spec.add_development_dependency "fakefs", "~> 1.8"
33
33
  spec.add_development_dependency "mysql2", "~> 0.5"
34
34
  spec.add_development_dependency "overcommit", "~> 0.59"
@@ -39,14 +39,14 @@ Gem::Specification.new do |spec|
39
39
  spec.add_development_dependency "rerun", "~> 0.13"
40
40
  spec.add_development_dependency "rspec", "~> 3.11"
41
41
  spec.add_development_dependency "simplecov-lcov", "~> 0.8.0"
42
- spec.add_development_dependency "standard", "~> 1.14"
42
+ spec.add_development_dependency "standard", "~> 1.16"
43
43
  spec.add_development_dependency "steep", "~> 1.1"
44
44
  spec.add_development_dependency "timecop", "~> 0.9"
45
45
  spec.add_development_dependency "vcr", "~> 6.1"
46
- spec.add_development_dependency "webmock", "~> 3.14"
46
+ spec.add_development_dependency "webmock", "~> 3.18"
47
47
 
48
- spec.add_dependency "activerecord", "7.0.3.1"
49
- spec.add_dependency "addressable", "2.8.0"
48
+ spec.add_dependency "activerecord", "7.0.4"
49
+ spec.add_dependency "addressable", "2.8.1"
50
50
  spec.add_dependency "awrence", "2.0.1"
51
51
  spec.add_dependency "binaryedge", "0.1.0"
52
52
  spec.add_dependency "censysx", "0.1.1"
@@ -55,10 +55,10 @@ Gem::Specification.new do |spec|
55
55
  spec.add_dependency "dnstwister", "0.1.0"
56
56
  spec.add_dependency "dotenv", "2.8.1"
57
57
  spec.add_dependency "dry-configurable", "0.15.0"
58
- spec.add_dependency "dry-container", "0.10.1"
59
- spec.add_dependency "dry-files", "0.2.0"
58
+ spec.add_dependency "dry-container", "0.11.0"
59
+ spec.add_dependency "dry-files", "0.3.0"
60
60
  spec.add_dependency "dry-initializer", "3.1.1"
61
- spec.add_dependency "dry-schema", "1.9.3"
61
+ spec.add_dependency "dry-schema", "1.10.5"
62
62
  spec.add_dependency "dry-struct", "1.4.0"
63
63
  spec.add_dependency "dry-validation", "1.8.1"
64
64
  spec.add_dependency "email_address", "0.2.4"
@@ -80,24 +80,24 @@ Gem::Specification.new do |spec|
80
80
  spec.add_dependency "passive_circl", "0.1.0"
81
81
  spec.add_dependency "passivetotalx", "0.1.1"
82
82
  spec.add_dependency "plissken", "2.0.1"
83
- spec.add_dependency "public_suffix", "4.0.7"
83
+ spec.add_dependency "public_suffix", "5.0.0"
84
84
  spec.add_dependency "pulsedive", "0.1.5"
85
- spec.add_dependency "puma", "5.6.4"
85
+ spec.add_dependency "puma", "5.6.5"
86
86
  spec.add_dependency "rack", "2.2.4"
87
87
  spec.add_dependency "rack-contrib", "2.3.0"
88
88
  spec.add_dependency "rack-cors", "1.1.1"
89
89
  spec.add_dependency "securitytrails", "1.0.0"
90
90
  spec.add_dependency "semantic_logger", "4.11.0"
91
- spec.add_dependency "sentry-ruby", "5.4.1"
91
+ spec.add_dependency "sentry-ruby", "5.4.2"
92
92
  spec.add_dependency "shodanx", "0.2.1"
93
93
  spec.add_dependency "slack-notifier", "2.4.0"
94
94
  spec.add_dependency "spysex", "0.2.0"
95
- spec.add_dependency "sqlite3", "1.4.4"
95
+ spec.add_dependency "sqlite3", "1.5.0"
96
96
  spec.add_dependency "thor", "1.2.1"
97
97
  spec.add_dependency "urlscan", "0.8.0"
98
98
  spec.add_dependency "uuidtools", "2.2.0"
99
99
  spec.add_dependency "virustotalx", "1.2.0"
100
100
  spec.add_dependency "whois", "5.1.0"
101
- spec.add_dependency "whois-parser", "1.2.0"
101
+ spec.add_dependency "whois-parser", "2.0.0"
102
102
  spec.add_dependency "zoomeye-rb", "0.2.0"
103
103
  end
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: 4.7.4
4
+ version: 4.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Manabu Niseki
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-07-30 00:00:00.000000000 Z
11
+ date: 2022-10-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.24'
33
+ version: '0.25'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0.24'
40
+ version: '0.25'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: fakefs
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -184,14 +184,14 @@ dependencies:
184
184
  requirements:
185
185
  - - "~>"
186
186
  - !ruby/object:Gem::Version
187
- version: '1.14'
187
+ version: '1.16'
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
192
  - - "~>"
193
193
  - !ruby/object:Gem::Version
194
- version: '1.14'
194
+ version: '1.16'
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: steep
197
197
  requirement: !ruby/object:Gem::Requirement
@@ -240,42 +240,42 @@ dependencies:
240
240
  requirements:
241
241
  - - "~>"
242
242
  - !ruby/object:Gem::Version
243
- version: '3.14'
243
+ version: '3.18'
244
244
  type: :development
245
245
  prerelease: false
246
246
  version_requirements: !ruby/object:Gem::Requirement
247
247
  requirements:
248
248
  - - "~>"
249
249
  - !ruby/object:Gem::Version
250
- version: '3.14'
250
+ version: '3.18'
251
251
  - !ruby/object:Gem::Dependency
252
252
  name: activerecord
253
253
  requirement: !ruby/object:Gem::Requirement
254
254
  requirements:
255
255
  - - '='
256
256
  - !ruby/object:Gem::Version
257
- version: 7.0.3.1
257
+ version: 7.0.4
258
258
  type: :runtime
259
259
  prerelease: false
260
260
  version_requirements: !ruby/object:Gem::Requirement
261
261
  requirements:
262
262
  - - '='
263
263
  - !ruby/object:Gem::Version
264
- version: 7.0.3.1
264
+ version: 7.0.4
265
265
  - !ruby/object:Gem::Dependency
266
266
  name: addressable
267
267
  requirement: !ruby/object:Gem::Requirement
268
268
  requirements:
269
269
  - - '='
270
270
  - !ruby/object:Gem::Version
271
- version: 2.8.0
271
+ version: 2.8.1
272
272
  type: :runtime
273
273
  prerelease: false
274
274
  version_requirements: !ruby/object:Gem::Requirement
275
275
  requirements:
276
276
  - - '='
277
277
  - !ruby/object:Gem::Version
278
- version: 2.8.0
278
+ version: 2.8.1
279
279
  - !ruby/object:Gem::Dependency
280
280
  name: awrence
281
281
  requirement: !ruby/object:Gem::Requirement
@@ -394,28 +394,28 @@ dependencies:
394
394
  requirements:
395
395
  - - '='
396
396
  - !ruby/object:Gem::Version
397
- version: 0.10.1
397
+ version: 0.11.0
398
398
  type: :runtime
399
399
  prerelease: false
400
400
  version_requirements: !ruby/object:Gem::Requirement
401
401
  requirements:
402
402
  - - '='
403
403
  - !ruby/object:Gem::Version
404
- version: 0.10.1
404
+ version: 0.11.0
405
405
  - !ruby/object:Gem::Dependency
406
406
  name: dry-files
407
407
  requirement: !ruby/object:Gem::Requirement
408
408
  requirements:
409
409
  - - '='
410
410
  - !ruby/object:Gem::Version
411
- version: 0.2.0
411
+ version: 0.3.0
412
412
  type: :runtime
413
413
  prerelease: false
414
414
  version_requirements: !ruby/object:Gem::Requirement
415
415
  requirements:
416
416
  - - '='
417
417
  - !ruby/object:Gem::Version
418
- version: 0.2.0
418
+ version: 0.3.0
419
419
  - !ruby/object:Gem::Dependency
420
420
  name: dry-initializer
421
421
  requirement: !ruby/object:Gem::Requirement
@@ -436,14 +436,14 @@ dependencies:
436
436
  requirements:
437
437
  - - '='
438
438
  - !ruby/object:Gem::Version
439
- version: 1.9.3
439
+ version: 1.10.5
440
440
  type: :runtime
441
441
  prerelease: false
442
442
  version_requirements: !ruby/object:Gem::Requirement
443
443
  requirements:
444
444
  - - '='
445
445
  - !ruby/object:Gem::Version
446
- version: 1.9.3
446
+ version: 1.10.5
447
447
  - !ruby/object:Gem::Dependency
448
448
  name: dry-struct
449
449
  requirement: !ruby/object:Gem::Requirement
@@ -744,14 +744,14 @@ dependencies:
744
744
  requirements:
745
745
  - - '='
746
746
  - !ruby/object:Gem::Version
747
- version: 4.0.7
747
+ version: 5.0.0
748
748
  type: :runtime
749
749
  prerelease: false
750
750
  version_requirements: !ruby/object:Gem::Requirement
751
751
  requirements:
752
752
  - - '='
753
753
  - !ruby/object:Gem::Version
754
- version: 4.0.7
754
+ version: 5.0.0
755
755
  - !ruby/object:Gem::Dependency
756
756
  name: pulsedive
757
757
  requirement: !ruby/object:Gem::Requirement
@@ -772,14 +772,14 @@ dependencies:
772
772
  requirements:
773
773
  - - '='
774
774
  - !ruby/object:Gem::Version
775
- version: 5.6.4
775
+ version: 5.6.5
776
776
  type: :runtime
777
777
  prerelease: false
778
778
  version_requirements: !ruby/object:Gem::Requirement
779
779
  requirements:
780
780
  - - '='
781
781
  - !ruby/object:Gem::Version
782
- version: 5.6.4
782
+ version: 5.6.5
783
783
  - !ruby/object:Gem::Dependency
784
784
  name: rack
785
785
  requirement: !ruby/object:Gem::Requirement
@@ -856,14 +856,14 @@ dependencies:
856
856
  requirements:
857
857
  - - '='
858
858
  - !ruby/object:Gem::Version
859
- version: 5.4.1
859
+ version: 5.4.2
860
860
  type: :runtime
861
861
  prerelease: false
862
862
  version_requirements: !ruby/object:Gem::Requirement
863
863
  requirements:
864
864
  - - '='
865
865
  - !ruby/object:Gem::Version
866
- version: 5.4.1
866
+ version: 5.4.2
867
867
  - !ruby/object:Gem::Dependency
868
868
  name: shodanx
869
869
  requirement: !ruby/object:Gem::Requirement
@@ -912,14 +912,14 @@ dependencies:
912
912
  requirements:
913
913
  - - '='
914
914
  - !ruby/object:Gem::Version
915
- version: 1.4.4
915
+ version: 1.5.0
916
916
  type: :runtime
917
917
  prerelease: false
918
918
  version_requirements: !ruby/object:Gem::Requirement
919
919
  requirements:
920
920
  - - '='
921
921
  - !ruby/object:Gem::Version
922
- version: 1.4.4
922
+ version: 1.5.0
923
923
  - !ruby/object:Gem::Dependency
924
924
  name: thor
925
925
  requirement: !ruby/object:Gem::Requirement
@@ -996,14 +996,14 @@ dependencies:
996
996
  requirements:
997
997
  - - '='
998
998
  - !ruby/object:Gem::Version
999
- version: 1.2.0
999
+ version: 2.0.0
1000
1000
  type: :runtime
1001
1001
  prerelease: false
1002
1002
  version_requirements: !ruby/object:Gem::Requirement
1003
1003
  requirements:
1004
1004
  - - '='
1005
1005
  - !ruby/object:Gem::Version
1006
- version: 1.2.0
1006
+ version: 2.0.0
1007
1007
  - !ruby/object:Gem::Dependency
1008
1008
  name: zoomeye-rb
1009
1009
  requirement: !ruby/object:Gem::Requirement
@@ -1033,6 +1033,7 @@ files:
1033
1033
  - ".gitmodules"
1034
1034
  - ".overcommit.yml"
1035
1035
  - ".rspec"
1036
+ - ".rubocop.yml"
1036
1037
  - ".standard.yml"
1037
1038
  - Gemfile
1038
1039
  - LICENSE
@@ -1073,7 +1074,6 @@ files:
1073
1074
  - lib/mihari/analyzers/rule.rb
1074
1075
  - lib/mihari/analyzers/securitytrails.rb
1075
1076
  - lib/mihari/analyzers/shodan.rb
1076
- - lib/mihari/analyzers/spyse.rb
1077
1077
  - lib/mihari/analyzers/urlscan.rb
1078
1078
  - lib/mihari/analyzers/virustotal.rb
1079
1079
  - lib/mihari/analyzers/virustotal_intelligence.rb
@@ -1173,19 +1173,19 @@ files:
1173
1173
  - lib/mihari/web/public/index.html
1174
1174
  - lib/mihari/web/public/redoc-static.html
1175
1175
  - lib/mihari/web/public/static/css/app.2a5d3d21.css
1176
- - lib/mihari/web/public/static/css/chunk-vendors.5013d549.css
1176
+ - lib/mihari/web/public/static/css/chunk-vendors.380724be.css
1177
1177
  - lib/mihari/web/public/static/favicon.ico
1178
- - lib/mihari/web/public/static/fonts/fa-brands-400.7fa789ab.ttf
1179
- - lib/mihari/web/public/static/fonts/fa-brands-400.859fc388.woff2
1180
- - lib/mihari/web/public/static/fonts/fa-regular-400.2ffd018f.woff2
1181
- - lib/mihari/web/public/static/fonts/fa-regular-400.da02cb7e.ttf
1182
- - lib/mihari/web/public/static/fonts/fa-solid-900.3a463ec3.ttf
1183
- - lib/mihari/web/public/static/fonts/fa-solid-900.40ddefd7.woff2
1184
- - lib/mihari/web/public/static/fonts/fa-v4compatibility.924588dc.ttf
1185
- - lib/mihari/web/public/static/js/app.524d9ed2.js
1186
- - lib/mihari/web/public/static/js/app.524d9ed2.js.map
1187
- - lib/mihari/web/public/static/js/chunk-vendors.64580a1f.js
1188
- - lib/mihari/web/public/static/js/chunk-vendors.64580a1f.js.map
1178
+ - lib/mihari/web/public/static/fonts/fa-brands-400.86c7e1fa.woff2
1179
+ - lib/mihari/web/public/static/fonts/fa-brands-400.f5defc2e.ttf
1180
+ - lib/mihari/web/public/static/fonts/fa-regular-400.3edb9004.ttf
1181
+ - lib/mihari/web/public/static/fonts/fa-regular-400.e0550912.woff2
1182
+ - lib/mihari/web/public/static/fonts/fa-solid-900.64d5644d.woff2
1183
+ - lib/mihari/web/public/static/fonts/fa-solid-900.f418d876.ttf
1184
+ - lib/mihari/web/public/static/fonts/fa-v4compatibility.7e7e1dad.ttf
1185
+ - lib/mihari/web/public/static/js/app.6413bf4f.js
1186
+ - lib/mihari/web/public/static/js/app.6413bf4f.js.map
1187
+ - lib/mihari/web/public/static/js/chunk-vendors.723e02cf.js
1188
+ - lib/mihari/web/public/static/js/chunk-vendors.723e02cf.js.map
1189
1189
  - mihari.gemspec
1190
1190
  - renovate.json
1191
1191
  - sig/lib/mihari.rbs
@@ -1,93 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spyse"
4
-
5
- module Mihari
6
- module Analyzers
7
- class Spyse < Base
8
- param :query
9
-
10
- option :type, default: proc { "domain" }
11
-
12
- # @return [String, nil]
13
- attr_reader :api_key
14
-
15
- def initialize(*args, **kwargs)
16
- super(*args, **kwargs)
17
-
18
- @api_key = kwargs[:api_key] || Mihari.config.spyse_api_key
19
- end
20
-
21
- def artifacts
22
- search || []
23
- end
24
-
25
- private
26
-
27
- def search_params
28
- @search_params ||= JSON.parse(query)
29
- end
30
-
31
- def configuration_keys
32
- %w[spyse_api_key]
33
- end
34
-
35
- def api
36
- @api ||= ::Spyse::API.new(api_key)
37
- end
38
-
39
- #
40
- # Check whether a type is valid or not
41
- #
42
- # @return [Boolean]
43
- #
44
- def valid_type?
45
- %w[ip domain cert].include? type
46
- end
47
-
48
- #
49
- # Domain search
50
- #
51
- # @return [Array<Mihari::Artifact>]
52
- #
53
- def domain_search
54
- res = api.domain.search(search_params, limit: 100)
55
- items = res.dig("data", "items") || []
56
- items.map do |item|
57
- data = item["name"]
58
- Artifact.new(data: data, source: source, metadata: item)
59
- end
60
- end
61
-
62
- #
63
- # IP search
64
- #
65
- # @return [Array<Mihari::Artifact>]
66
- #
67
- def ip_search
68
- res = api.ip.search(search_params, limit: 100)
69
- items = res.dig("data", "items") || []
70
- items.map do |item|
71
- data = item["ip"]
72
- Artifact.new(data: data, source: source, metadata: item)
73
- end
74
- end
75
-
76
- #
77
- # IP/domain search
78
- #
79
- # @return [Array<Mihari::Artifact>]
80
- #
81
- def search
82
- case type
83
- when "domain"
84
- domain_search
85
- when "ip"
86
- ip_search
87
- else
88
- raise InvalidInputError, "#{query}(type: #{type || "unknown"}) is not supported." unless valid_type?
89
- end
90
- end
91
- end
92
- end
93
- end