mihari 5.7.0 → 5.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (164) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/lib/mihari/actor.rb +10 -4
  4. data/lib/mihari/commands/alert.rb +6 -4
  5. data/lib/mihari/commands/search.rb +10 -29
  6. data/lib/mihari/enrichers/ipinfo.rb +1 -1
  7. data/lib/mihari/entities/tag.rb +1 -0
  8. data/lib/mihari/rule.rb +14 -0
  9. data/lib/mihari/service.rb +12 -2
  10. data/lib/mihari/services/alert_builder.rb +81 -8
  11. data/lib/mihari/services/alert_runner.rb +3 -10
  12. data/lib/mihari/services/rule_builder.rb +8 -10
  13. data/lib/mihari/services/rule_runner.rb +2 -25
  14. data/lib/mihari/structs/binaryedge.rb +9 -0
  15. data/lib/mihari/structs/censys.rb +0 -14
  16. data/lib/mihari/structs/fofa.rb +3 -0
  17. data/lib/mihari/structs/google_public_dns.rb +0 -4
  18. data/lib/mihari/structs/greynoise.rb +0 -6
  19. data/lib/mihari/structs/hunterhow.rb +0 -6
  20. data/lib/mihari/structs/ipinfo.rb +0 -2
  21. data/lib/mihari/structs/onyphe.rb +0 -4
  22. data/lib/mihari/structs/shodan.rb +0 -2
  23. data/lib/mihari/structs/urlscan.rb +0 -6
  24. data/lib/mihari/structs/virustotal_intelligence.rb +0 -8
  25. data/lib/mihari/version.rb +1 -1
  26. data/lib/mihari/web/app.rb +20 -17
  27. data/lib/mihari/web/endpoints/alerts.rb +75 -38
  28. data/lib/mihari/web/endpoints/artifacts.rb +60 -53
  29. data/lib/mihari/web/endpoints/ip_addresses.rb +19 -4
  30. data/lib/mihari/web/endpoints/rules.rb +132 -88
  31. data/lib/mihari/web/endpoints/tags.rb +15 -13
  32. data/lib/mihari/web/public/assets/{index-821134e2.js → index-07fafab5.js} +4 -3
  33. data/lib/mihari/web/public/index.html +1 -1
  34. data/lib/mihari.rb +0 -1
  35. data/mihari.gemspec +1 -1
  36. data/mkdocs.yml +1 -0
  37. metadata +3 -130
  38. data/docs/alternatives.md +0 -5
  39. data/docs/analyzers/binaryedge.md +0 -26
  40. data/docs/analyzers/censys.md +0 -31
  41. data/docs/analyzers/circl.md +0 -37
  42. data/docs/analyzers/crtsh.md +0 -26
  43. data/docs/analyzers/dnstwister.md +0 -25
  44. data/docs/analyzers/feed.md +0 -73
  45. data/docs/analyzers/fofa.md +0 -31
  46. data/docs/analyzers/greynoise.md +0 -26
  47. data/docs/analyzers/hunterhow.md +0 -33
  48. data/docs/analyzers/index.md +0 -104
  49. data/docs/analyzers/onyphe.md +0 -26
  50. data/docs/analyzers/otx.md +0 -28
  51. data/docs/analyzers/passivetotal.md +0 -52
  52. data/docs/analyzers/pulsedive.md +0 -28
  53. data/docs/analyzers/securitytrails.md +0 -41
  54. data/docs/analyzers/shodan.md +0 -26
  55. data/docs/analyzers/urlscan.md +0 -28
  56. data/docs/analyzers/virustotal.md +0 -43
  57. data/docs/analyzers/virustotal_intelligence.md +0 -33
  58. data/docs/analyzers/zoomeye.md +0 -38
  59. data/docs/configuration.md +0 -35
  60. data/docs/emitters/database.md +0 -22
  61. data/docs/emitters/hive.md +0 -26
  62. data/docs/emitters/index.md +0 -36
  63. data/docs/emitters/misp.md +0 -21
  64. data/docs/emitters/slack.md +0 -21
  65. data/docs/emitters/webhook.md +0 -63
  66. data/docs/enrichers/google_public_dns.md +0 -19
  67. data/docs/enrichers/index.md +0 -35
  68. data/docs/enrichers/ipinfo.md +0 -26
  69. data/docs/enrichers/shodan.md +0 -22
  70. data/docs/enrichers/whois.md +0 -17
  71. data/docs/github_actions.md +0 -43
  72. data/docs/index.md +0 -11
  73. data/docs/installation.md +0 -31
  74. data/docs/requirements.md +0 -13
  75. data/docs/rule.md +0 -168
  76. data/docs/tags.md +0 -3
  77. data/docs/usage.md +0 -103
  78. data/frontend/.eslintrc.cjs +0 -22
  79. data/frontend/.gitignore +0 -31
  80. data/frontend/.prettierrc.json +0 -8
  81. data/frontend/README.md +0 -3
  82. data/frontend/env.d.ts +0 -5
  83. data/frontend/index.html +0 -21
  84. data/frontend/package-lock.json +0 -7219
  85. data/frontend/package.json +0 -67
  86. data/frontend/public/favicon.ico +0 -0
  87. data/frontend/scripts/swagger_doc_to_yaml.rb +0 -23
  88. data/frontend/src/App.vue +0 -27
  89. data/frontend/src/ace-config.ts +0 -6
  90. data/frontend/src/api-helper.ts +0 -111
  91. data/frontend/src/api.ts +0 -105
  92. data/frontend/src/components/ErrorMessage.vue +0 -31
  93. data/frontend/src/components/Loading.vue +0 -15
  94. data/frontend/src/components/Navbar.vue +0 -42
  95. data/frontend/src/components/Pagination.vue +0 -119
  96. data/frontend/src/components/alert/Alert.vue +0 -87
  97. data/frontend/src/components/alert/Alerts.vue +0 -63
  98. data/frontend/src/components/alert/AlertsWithPagination.vue +0 -90
  99. data/frontend/src/components/alert/AlertsWrapper.vue +0 -128
  100. data/frontend/src/components/alert/Form.vue +0 -169
  101. data/frontend/src/components/artifact/AS.vue +0 -23
  102. data/frontend/src/components/artifact/Artifact.vue +0 -287
  103. data/frontend/src/components/artifact/ArtifactTag.vue +0 -64
  104. data/frontend/src/components/artifact/ArtifactTags.vue +0 -29
  105. data/frontend/src/components/artifact/ArtifactWrapper.vue +0 -57
  106. data/frontend/src/components/artifact/CPEs.vue +0 -23
  107. data/frontend/src/components/artifact/DnsRecords.vue +0 -32
  108. data/frontend/src/components/artifact/Ports.vue +0 -23
  109. data/frontend/src/components/artifact/ReverseDnsNames.vue +0 -23
  110. data/frontend/src/components/artifact/Tags.vue +0 -29
  111. data/frontend/src/components/artifact/WhoisRecord.vue +0 -44
  112. data/frontend/src/components/config/Configs.vue +0 -65
  113. data/frontend/src/components/config/ConfigsWrapper.vue +0 -32
  114. data/frontend/src/components/link/Link.vue +0 -32
  115. data/frontend/src/components/link/Links.vue +0 -42
  116. data/frontend/src/components/rule/EditRule.vue +0 -72
  117. data/frontend/src/components/rule/EditRuleWrapper.vue +0 -48
  118. data/frontend/src/components/rule/Form.vue +0 -158
  119. data/frontend/src/components/rule/InputForm.vue +0 -45
  120. data/frontend/src/components/rule/NewRule.vue +0 -57
  121. data/frontend/src/components/rule/Rule.vue +0 -100
  122. data/frontend/src/components/rule/RuleWrapper.vue +0 -53
  123. data/frontend/src/components/rule/Rules.vue +0 -84
  124. data/frontend/src/components/rule/RulesWrapper.vue +0 -121
  125. data/frontend/src/components/rule/YAML.vue +0 -37
  126. data/frontend/src/components/tag/Tag.vue +0 -65
  127. data/frontend/src/components/tag/Tags.vue +0 -37
  128. data/frontend/src/countries.ts +0 -350
  129. data/frontend/src/index.ts +0 -20
  130. data/frontend/src/links/anyrun.ts +0 -19
  131. data/frontend/src/links/base.ts +0 -14
  132. data/frontend/src/links/censys.ts +0 -20
  133. data/frontend/src/links/crtsh.ts +0 -20
  134. data/frontend/src/links/dnslytics.ts +0 -38
  135. data/frontend/src/links/greynoise.ts +0 -20
  136. data/frontend/src/links/index.ts +0 -40
  137. data/frontend/src/links/intezer.ts +0 -20
  138. data/frontend/src/links/otx.ts +0 -33
  139. data/frontend/src/links/securitytrails.ts +0 -38
  140. data/frontend/src/links/shodan.ts +0 -20
  141. data/frontend/src/links/urlscan.ts +0 -50
  142. data/frontend/src/links/virustotal.ts +0 -72
  143. data/frontend/src/main.ts +0 -41
  144. data/frontend/src/router/index.ts +0 -57
  145. data/frontend/src/rule.ts +0 -14
  146. data/frontend/src/shims-vue.d.ts +0 -6
  147. data/frontend/src/swagger.yaml +0 -771
  148. data/frontend/src/types.ts +0 -188
  149. data/frontend/src/utils.ts +0 -54
  150. data/frontend/src/views/Alerts.vue +0 -20
  151. data/frontend/src/views/Artifact.vue +0 -39
  152. data/frontend/src/views/Configs.vue +0 -20
  153. data/frontend/src/views/EditRule.vue +0 -39
  154. data/frontend/src/views/NewRule.vue +0 -26
  155. data/frontend/src/views/Rule.vue +0 -39
  156. data/frontend/src/views/Rules.vue +0 -20
  157. data/frontend/tests/utils.spec.ts +0 -9
  158. data/frontend/tsconfig.app.json +0 -21
  159. data/frontend/tsconfig.json +0 -14
  160. data/frontend/tsconfig.node.json +0 -13
  161. data/frontend/tsconfig.vitest.json +0 -12
  162. data/frontend/vite.config.ts +0 -24
  163. data/frontend/vitest.config.ts +0 -21
  164. data/lib/mihari/services/alert_proxy.rb +0 -97
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: 5.7.0
4
+ version: 5.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: 2023-11-03 00:00:00.000000000 Z
11
+ date: 2023-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -856,133 +856,7 @@ files:
856
856
  - bin/setup
857
857
  - build_frontend.sh
858
858
  - config.ru
859
- - docs/alternatives.md
860
- - docs/analyzers/binaryedge.md
861
- - docs/analyzers/censys.md
862
- - docs/analyzers/circl.md
863
- - docs/analyzers/crtsh.md
864
- - docs/analyzers/dnstwister.md
865
- - docs/analyzers/feed.md
866
- - docs/analyzers/fofa.md
867
- - docs/analyzers/greynoise.md
868
- - docs/analyzers/hunterhow.md
869
- - docs/analyzers/index.md
870
- - docs/analyzers/onyphe.md
871
- - docs/analyzers/otx.md
872
- - docs/analyzers/passivetotal.md
873
- - docs/analyzers/pulsedive.md
874
- - docs/analyzers/securitytrails.md
875
- - docs/analyzers/shodan.md
876
- - docs/analyzers/urlscan.md
877
- - docs/analyzers/virustotal.md
878
- - docs/analyzers/virustotal_intelligence.md
879
- - docs/analyzers/zoomeye.md
880
- - docs/configuration.md
881
- - docs/emitters/database.md
882
- - docs/emitters/hive.md
883
- - docs/emitters/index.md
884
- - docs/emitters/misp.md
885
- - docs/emitters/slack.md
886
- - docs/emitters/webhook.md
887
- - docs/enrichers/google_public_dns.md
888
- - docs/enrichers/index.md
889
- - docs/enrichers/ipinfo.md
890
- - docs/enrichers/shodan.md
891
- - docs/enrichers/whois.md
892
- - docs/github_actions.md
893
- - docs/index.md
894
- - docs/installation.md
895
- - docs/requirements.md
896
- - docs/rule.md
897
- - docs/tags.md
898
- - docs/usage.md
899
859
  - exe/mihari
900
- - frontend/.eslintrc.cjs
901
- - frontend/.gitignore
902
- - frontend/.prettierrc.json
903
- - frontend/README.md
904
- - frontend/env.d.ts
905
- - frontend/index.html
906
- - frontend/package-lock.json
907
- - frontend/package.json
908
- - frontend/public/favicon.ico
909
- - frontend/scripts/swagger_doc_to_yaml.rb
910
- - frontend/src/App.vue
911
- - frontend/src/ace-config.ts
912
- - frontend/src/api-helper.ts
913
- - frontend/src/api.ts
914
- - frontend/src/components/ErrorMessage.vue
915
- - frontend/src/components/Loading.vue
916
- - frontend/src/components/Navbar.vue
917
- - frontend/src/components/Pagination.vue
918
- - frontend/src/components/alert/Alert.vue
919
- - frontend/src/components/alert/Alerts.vue
920
- - frontend/src/components/alert/AlertsWithPagination.vue
921
- - frontend/src/components/alert/AlertsWrapper.vue
922
- - frontend/src/components/alert/Form.vue
923
- - frontend/src/components/artifact/AS.vue
924
- - frontend/src/components/artifact/Artifact.vue
925
- - frontend/src/components/artifact/ArtifactTag.vue
926
- - frontend/src/components/artifact/ArtifactTags.vue
927
- - frontend/src/components/artifact/ArtifactWrapper.vue
928
- - frontend/src/components/artifact/CPEs.vue
929
- - frontend/src/components/artifact/DnsRecords.vue
930
- - frontend/src/components/artifact/Ports.vue
931
- - frontend/src/components/artifact/ReverseDnsNames.vue
932
- - frontend/src/components/artifact/Tags.vue
933
- - frontend/src/components/artifact/WhoisRecord.vue
934
- - frontend/src/components/config/Configs.vue
935
- - frontend/src/components/config/ConfigsWrapper.vue
936
- - frontend/src/components/link/Link.vue
937
- - frontend/src/components/link/Links.vue
938
- - frontend/src/components/rule/EditRule.vue
939
- - frontend/src/components/rule/EditRuleWrapper.vue
940
- - frontend/src/components/rule/Form.vue
941
- - frontend/src/components/rule/InputForm.vue
942
- - frontend/src/components/rule/NewRule.vue
943
- - frontend/src/components/rule/Rule.vue
944
- - frontend/src/components/rule/RuleWrapper.vue
945
- - frontend/src/components/rule/Rules.vue
946
- - frontend/src/components/rule/RulesWrapper.vue
947
- - frontend/src/components/rule/YAML.vue
948
- - frontend/src/components/tag/Tag.vue
949
- - frontend/src/components/tag/Tags.vue
950
- - frontend/src/countries.ts
951
- - frontend/src/index.ts
952
- - frontend/src/links/anyrun.ts
953
- - frontend/src/links/base.ts
954
- - frontend/src/links/censys.ts
955
- - frontend/src/links/crtsh.ts
956
- - frontend/src/links/dnslytics.ts
957
- - frontend/src/links/greynoise.ts
958
- - frontend/src/links/index.ts
959
- - frontend/src/links/intezer.ts
960
- - frontend/src/links/otx.ts
961
- - frontend/src/links/securitytrails.ts
962
- - frontend/src/links/shodan.ts
963
- - frontend/src/links/urlscan.ts
964
- - frontend/src/links/virustotal.ts
965
- - frontend/src/main.ts
966
- - frontend/src/router/index.ts
967
- - frontend/src/rule.ts
968
- - frontend/src/shims-vue.d.ts
969
- - frontend/src/swagger.yaml
970
- - frontend/src/types.ts
971
- - frontend/src/utils.ts
972
- - frontend/src/views/Alerts.vue
973
- - frontend/src/views/Artifact.vue
974
- - frontend/src/views/Configs.vue
975
- - frontend/src/views/EditRule.vue
976
- - frontend/src/views/NewRule.vue
977
- - frontend/src/views/Rule.vue
978
- - frontend/src/views/Rules.vue
979
- - frontend/tests/utils.spec.ts
980
- - frontend/tsconfig.app.json
981
- - frontend/tsconfig.json
982
- - frontend/tsconfig.node.json
983
- - frontend/tsconfig.vitest.json
984
- - frontend/vite.config.ts
985
- - frontend/vitest.config.ts
986
860
  - lefthook.yml
987
861
  - lib/mihari.rb
988
862
  - lib/mihari/actor.rb
@@ -1098,7 +972,6 @@ files:
1098
972
  - lib/mihari/schemas/rule.rb
1099
973
  - lib/mihari/service.rb
1100
974
  - lib/mihari/services/alert_builder.rb
1101
- - lib/mihari/services/alert_proxy.rb
1102
975
  - lib/mihari/services/alert_runner.rb
1103
976
  - lib/mihari/services/rule_builder.rb
1104
977
  - lib/mihari/services/rule_runner.rb
@@ -1128,8 +1001,8 @@ files:
1128
1001
  - lib/mihari/web/endpoints/tags.rb
1129
1002
  - lib/mihari/web/middleware/connection_adapter.rb
1130
1003
  - lib/mihari/web/middleware/error_notification_adapter.rb
1004
+ - lib/mihari/web/public/assets/index-07fafab5.js
1131
1005
  - lib/mihari/web/public/assets/index-56fc2187.css
1132
- - lib/mihari/web/public/assets/index-821134e2.js
1133
1006
  - lib/mihari/web/public/assets/mode-yaml-24faa242.js
1134
1007
  - lib/mihari/web/public/favicon.ico
1135
1008
  - lib/mihari/web/public/index.html
data/docs/alternatives.md DELETED
@@ -1,5 +0,0 @@
1
- # Alternatives
2
-
3
- - [InQuest/ThreatIngestor](https://github.com/InQuest/ThreatIngestor) - Extract and aggregate threat intelligence.
4
- - [thalesgroup-cert/Watcher](https://github.com/thalesgroup-cert/Watcher) - Watcher - Open Source Cybersecurity Threat Hunting Platform. Developed with Django & React JS.
5
- - [projectdiscovery/uncover](https://github.com/projectdiscovery/uncover) - Quickly discover exposed hosts on the internet using multiple search engines.
@@ -1,26 +0,0 @@
1
- ---
2
- tags:
3
- - Artifact:IP
4
- ---
5
-
6
- # BinaryEdge
7
-
8
- - [https://www.binaryedge.io/](https://www.binaryedge.io/)
9
-
10
- This analyzer uses [BinaryEdge API V2](https://docs.binaryedge.io/api-v2/) (`/v2/query/search`) to search. Pagination is supported.
11
-
12
- ```yaml
13
- analyzer: binaryedge
14
- query: ...
15
- api_key: ...
16
- ```
17
-
18
- ## Components
19
-
20
- ### Query
21
-
22
- `query` (`string`) is a search query.
23
-
24
- ### API Key
25
-
26
- `api_key` (`string`) is an API key. Optional. Defaults to `ENV[”BINARYEDGE_API_KEY"]`.
@@ -1,31 +0,0 @@
1
- ---
2
- tags:
3
- - Artifact:IP
4
- ---
5
-
6
- # Censys
7
-
8
- - [https://censys.io/](https://censys.io/)
9
-
10
- This analyzer uses [Censys Search 2.0 REST API](https://search.censys.io/api) to search. Pagination is supported.
11
-
12
- ```yaml
13
- analyzer: censys
14
- query: ...
15
- id: ...
16
- secret: ...
17
- ```
18
-
19
- ## Components
20
-
21
- ### Query
22
-
23
- `query` (`string`) is a search query.
24
-
25
- ### ID
26
-
27
- `id` (`string`) is a Cencys ID. Optional. Defaults to `ENV[”CENSYS_ID”]`.
28
-
29
- ### Secret
30
-
31
- `secret` (`string`) is a Cencys secret. Optional. Defaults to `ENV[”CENSYS_SECRET”]`.
@@ -1,37 +0,0 @@
1
- ---
2
- tags:
3
- - Artifact:IP
4
- - Passive DNS
5
- - Passive SSL
6
- ---
7
-
8
- # CIRCL Passive DNS/SSL
9
-
10
- - [https://www.circl.lu/services/passive-dns/](https://www.circl.lu/services/passive-dns/)
11
- - [https://www.circl.lu/services/passive-ssl/](https://www.circl.lu/services/passive-ssl/)
12
-
13
- This analyzer uses CIRCL passive DNS API or passive SSL API:
14
-
15
- - Use passive DNS API if a query(input) is a domain
16
- - Use passive SSL API if a query(input) is a SHA1 certificate fingerprint
17
-
18
- ```yaml
19
- analyzer: circl
20
- query: ...
21
- password: ...
22
- username: ...
23
- ```
24
-
25
- ## Components
26
-
27
- ### Query
28
-
29
- `query` (`string`) is a domain or SHA1 certificate fingerprint.
30
-
31
- ### Username
32
-
33
- `username` (`string`) is a username. Optional. Defaults to `ENV[”CIRCL_PASSIVE_USERNAME”]`.
34
-
35
- ### Password
36
-
37
- `password` (`string`) is a password. Optional. Defaults to `ENV[”CIRCL_PASSIVE_PASSWORD”]`.
@@ -1,26 +0,0 @@
1
- ---
2
- tags:
3
- - Artifact:Domain
4
- ---
5
-
6
- # crt.sh
7
-
8
- - [https://crt.sh/](https://crt.sh/)
9
-
10
- This analyzer uses [crt.sh](http://crt.sh)'s (unofficial?) REST API.
11
-
12
- ```yaml
13
- analyzer: crtsh
14
- query: ...
15
- exclude_expired: ...
16
- ```
17
-
18
- ## Components
19
-
20
- ### Query
21
-
22
- `query` (`string`) is a search query.
23
-
24
- ### Exclude Expired
25
-
26
- `exclude_expired` (`boolean`) determines whether to exclude expired domains or not. Optional. Defaults to `true`.
@@ -1,25 +0,0 @@
1
- ---
2
- tags:
3
- - Artifact:Domain
4
- ---
5
-
6
- # dnstwister
7
-
8
- - [https://dnstwister.report/](https://dnstwister.report/)
9
-
10
- This analyzer uses [dnstwister API](https://dnstwister.report/api/) to search.
11
-
12
- ```yaml
13
- analyzer: dnstwister
14
- query: ...
15
- ```
16
-
17
- ## Components
18
-
19
- ### Query
20
-
21
- `query` (`string`) is a search query.
22
-
23
- !!! tip
24
-
25
- There is no need to input a domain in hexadecimal format. This analyzer automatically converts a domain (in string format) into a hexadecimal value.
@@ -1,73 +0,0 @@
1
- # Feed
2
-
3
- This analyzer can ingest a feed (JSON or CSV) by specifying conditions.
4
-
5
- Note that you should write a selector to get proper IoCs from a feed. A selector is based on [jr](https://github.com/yuya-takeyama/jr).
6
-
7
- ```yaml
8
- analyzer: feed
9
- query: ...
10
- selector: ...
11
- method: ...
12
- headers: ...
13
- params: ...
14
- data: ...
15
- json: ...
16
- ```
17
-
18
- ## Components
19
-
20
- ### Query
21
-
22
- `query` (`string`) is a URL of a feed.
23
-
24
- !!! note
25
-
26
- I know this is a strange naming. It's just for keeping the convention with other analyzers.
27
-
28
- ### Method
29
-
30
- `method` (`string`) is an HTTP method. Defaults to `GET`.
31
-
32
- ### Selector
33
-
34
- `selector` (`string`) is a `jr` selector.
35
-
36
- ### Headers
37
-
38
- `headers` (`hash`) is an HTTP headers. Optional.
39
-
40
- ### Params
41
-
42
- `params` (`hash`) is an HTTP query params. Optional.
43
-
44
- ### Data
45
-
46
- `data` (`hash`) is an HTTP form data. Optional.
47
-
48
- ### JSON
49
-
50
- `json` (`hash`) is an JSON body. Optional.
51
-
52
- ## Examples
53
-
54
- ### ThreatFox
55
-
56
- ```yaml
57
- analyzer: feed
58
- query: "https://threatfox-api.abuse.ch/api/v1/"
59
- method: POST
60
- json:
61
- query: get_iocs
62
- days: 1
63
- headers:
64
- selector: "map(&:data).unwrap.map(&:ioc).map { |v| v.start_with?('http://', 'https://') ? v : v.split(':').first }"
65
- ```
66
-
67
- ### URLhaus
68
-
69
- ```yaml
70
- analyzer: feed
71
- query: "https://urlhaus.abuse.ch/feeds/country/JP/"
72
- selector: "map { |v| v[1] }"
73
- ```
@@ -1,31 +0,0 @@
1
- ---
2
- tags:
3
- - Artifact:IP
4
- ---
5
-
6
- # Fofa
7
-
8
- - https://en.fofa.info/
9
-
10
- This analyzer uses Fofa API (`/api/v1/search/all`) to search. Pagination is supported.
11
-
12
- ```yaml
13
- analyzer: fofa
14
- query: ...
15
- api_key: ...
16
- email: ...
17
- ```
18
-
19
- ## Components
20
-
21
- ### Query
22
-
23
- `query` (`string`) is a search query.
24
-
25
- ### API Key
26
-
27
- `api_key` (`string`) is an API key. Optional. Defaults to `ENV[”FOFA_API_KEY"]`.
28
-
29
- ### Email
30
-
31
- `email` (`string`) is an email. Optional. Defaults to `ENV[”FOFA_EMAIL"]`.
@@ -1,26 +0,0 @@
1
- ---
2
- tags:
3
- - Artifact:IP
4
- ---
5
-
6
- # GreyNoise
7
-
8
- - [https://www.greynoise.io/](https://www.greynoise.io/)
9
-
10
- This analyzer uses GreyNoise API (`/v2/experimental/gnql`) to search. Pagination is supported.
11
-
12
- ```yaml
13
- analyzer: greynoise
14
- query: ...
15
- api_key: ...
16
- ```
17
-
18
- ## Components
19
-
20
- ### Query
21
-
22
- `query` (`string`) is a GNQL search query.
23
-
24
- ### API Key
25
-
26
- `api_key` (`string`) is an API key. Optional. Defaults to `ENV[”GREYNOISE_API_KEY"]`.
@@ -1,33 +0,0 @@
1
- ---
2
- tags:
3
- - Artifact:IP
4
- ---
5
-
6
- # Hunter How
7
-
8
- - [https://hunter.how/](https://hunter.how/)
9
-
10
- This analyzer uses Hunter How API (`https://api.hunter.how/search`) to search. Pagination is supported.
11
-
12
- ```yaml
13
- analyzer: hunterhow
14
- query: ...
15
- api_key: ...
16
- start_time: ...
17
- end_time: ...
18
- ```
19
-
20
- ## Components
21
-
22
- ### Query
23
-
24
- `query` (`string`) is a search query.
25
-
26
- ### Start/End Time
27
-
28
- - `start_time` (`date`): Only show results after the given date.
29
- - `end_time` (`date`): Only show results after the given date.
30
-
31
- ### API key
32
-
33
- `api_key` (`string`) is an API key. Optional. Defaults to `ENV[”HUNTERHOW_API_KEY"]`.
@@ -1,104 +0,0 @@
1
- # Analyzers
2
-
3
- - [BinaryEdge](binaryedge.md)
4
- - [Censys](censys.md)
5
- - [Circle Passive DNS/SSL](circl.md)
6
- - [crt.sh](crtsh.md)
7
- - [dnstwister](dnstwister.md)
8
- - [Feed](feed.md)
9
- - [Fofa](fofa.md)
10
- - [GreyNoise](greynoise.md)
11
- - [HunterHow](hunterhow.md)
12
- - [Onyphe](onyphe.md)
13
- - [OTX](otx.md)
14
- - [PassiveTotal](passivetotal.md)
15
- - [PulseDive](pulsedive.md)
16
- - [SecurityTrails](securitytrails.md)
17
- - [Shodan](shodan.md)
18
- - [urlscan.io](urlscan.md)
19
- - [VirusTotal](virustotal.md)
20
- - [VirusTotal Intelligence](virustotal_intelligence.md)
21
-
22
- ## Options
23
-
24
- All the analyzers can have optional `options`.
25
-
26
- ```yaml
27
- analyzer: ...
28
- query: ...
29
- options:
30
- retry_times: ...
31
- retry_interval: ...
32
- retry_exponential_backoff: ...
33
- timeout: ...
34
- ignore_error: ...
35
- ```
36
-
37
- Also the following analyzers can have pagination options.
38
-
39
- - [Shodan](./shodan.md)
40
- - [BinaryEdge](./binaryedge.md)
41
- - [Censys](./censys.md)
42
- - [ZoomEye](./zoomeye.md)
43
- - [urlscan.io](./urlscan.md)
44
- - [VirusTotal Intelligence](./virustotal_intelligence.md)
45
- - [HunterHow](./hunterhow.md)
46
-
47
- ```yaml
48
- options:
49
- pagination_interval: ...
50
- pagination_limit: ...
51
- ```
52
-
53
- ### Retry Times
54
-
55
- `retry_times` (`integer`) is a number of times of retry when something goes wrong. Optional. Defaults to 3.
56
-
57
- ### Retry Interval
58
-
59
- `retry_interval` (`integer`) is an interval in seconds between retries. Optional. Defaults to 5.
60
-
61
- ### Retry Exponential Backoff
62
-
63
- `retry_exponential_backoff` (`bool`) controls whether to do exponential backoff. Optional. Defaults to `true`.
64
-
65
- ### Timeout
66
-
67
- `timeout` (`integer`) is an HTTP timeout in seconds. Optional.
68
-
69
- ### Ignore Error
70
-
71
- `ignore_error` (`bool`) controls whether to ignore an error or not. Optional. Defaults to `false`.
72
-
73
- Mihari uses fail-fast approach. For example, if Shodan returns an error, the Censys query next is not triggered because Mihari raises an error before it.
74
-
75
- ```yaml
76
- queries:
77
- - analyzer: shodan
78
- query: ip:1.1.1.1
79
- - analyzer: censys
80
- query: ip:8.8.8.8
81
- ```
82
-
83
- You can set `ignore_error` option to make it fault tolerance.
84
-
85
- ```yaml
86
- queries:
87
- - analyzer: shodan
88
- query: ip:1.1.1.1
89
- options:
90
- ignore_error: true
91
- - analyzer: censys
92
- query: ip:8.8.8.8
93
- ```
94
-
95
- ### Pagination Interval
96
-
97
- `pagination_interval` (`integer`) is an interval in seconds between pagination. Optional. Defaults to 0.
98
-
99
- ### Pagination Limit
100
-
101
- `pagination_limit` (`integer`) is an limit for pagination. Optional. Defaults to 100.
102
-
103
- In the worst case, if something wrong with Mihari or a service, Mihari can drain API quota by doing pagination forever.
104
- `pagination_limit` is a safety valve for that. A number of pagination is limited as `pagination_limit` times.
@@ -1,26 +0,0 @@
1
- ---
2
- tags:
3
- - Artifact:IP
4
- ---
5
-
6
- # ONYPHE
7
-
8
- - [https://www.onyphe.io/](https://www.onyphe.io/)
9
-
10
- This analyzer uses ONYPHE API v2 (`/api/v2/simple/datascan`) to search.
11
-
12
- ```yaml
13
- analyzer: onyphe
14
- query: ...
15
- api_key: ...
16
- ```
17
-
18
- ## Components
19
-
20
- ### Query
21
-
22
- `query` (`string`) is a search query.
23
-
24
- ### API Key
25
-
26
- `api_key` (`string`) is an API key. Optional. Defaults to `ENV[”ONYPHE_API_KEY”"]`.
@@ -1,28 +0,0 @@
1
- ---
2
- tags:
3
- - Artifact:IP
4
- - Artifact:Domain
5
- - Passive DNS
6
- ---
7
-
8
- # OTX
9
-
10
- - [https://otx.alienvault.com/](https://otx.alienvault.com/dashboard/new)
11
-
12
- This analyzer uses [OTX API v1](https://otx.alienvault.com/api) (`/api/v1/indicators/`) API to search.
13
-
14
- ```yaml
15
- analyzer: otx
16
- query: ...
17
- api_key: ...
18
- ```
19
-
20
- ## Components
21
-
22
- ### Query
23
-
24
- `query` (`string`) is a passive DNS search query. Domain or IP address.
25
-
26
- ### API Key
27
-
28
- `api_key` (`string`) is an API key. Optional. Defaults to `ENV[”OTX_API_KEY”"]`.