mihari 4.7.4 → 4.9.0

Sign up to get free protection for your applications and to get access to all the features.
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