mihari 5.6.2 → 5.7.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +5 -1
- data/README.md +1 -0
- data/config.ru +1 -1
- data/lib/mihari/actor.rb +18 -2
- data/lib/mihari/analyzers/base.rb +13 -12
- data/lib/mihari/analyzers/binaryedge.rb +4 -1
- data/lib/mihari/analyzers/censys.rb +4 -2
- data/lib/mihari/analyzers/circl.rb +4 -1
- data/lib/mihari/analyzers/crtsh.rb +4 -1
- data/lib/mihari/analyzers/dnstwister.rb +4 -1
- data/lib/mihari/analyzers/feed.rb +3 -0
- data/lib/mihari/analyzers/fofa.rb +65 -0
- data/lib/mihari/analyzers/greynoise.rb +4 -1
- data/lib/mihari/analyzers/hunterhow.rb +6 -1
- data/lib/mihari/analyzers/onyphe.rb +4 -1
- data/lib/mihari/analyzers/otx.rb +4 -1
- data/lib/mihari/analyzers/passivetotal.rb +4 -1
- data/lib/mihari/analyzers/pulsedive.rb +3 -0
- data/lib/mihari/analyzers/securitytrails.rb +4 -1
- data/lib/mihari/analyzers/shodan.rb +4 -1
- data/lib/mihari/analyzers/urlscan.rb +4 -1
- data/lib/mihari/analyzers/virustotal.rb +4 -1
- data/lib/mihari/analyzers/virustotal_intelligence.rb +4 -1
- data/lib/mihari/analyzers/zoomeye.rb +5 -2
- data/lib/mihari/cli/alert.rb +3 -0
- data/lib/mihari/cli/base.rb +3 -0
- data/lib/mihari/cli/database.rb +3 -0
- data/lib/mihari/cli/main.rb +3 -0
- data/lib/mihari/cli/rule.rb +3 -0
- data/lib/mihari/clients/base.rb +3 -0
- data/lib/mihari/clients/binaryedge.rb +5 -2
- data/lib/mihari/clients/censys.rb +7 -4
- data/lib/mihari/clients/circl.rb +3 -0
- data/lib/mihari/clients/crtsh.rb +3 -0
- data/lib/mihari/clients/dnstwister.rb +3 -0
- data/lib/mihari/clients/fofa.rb +83 -0
- data/lib/mihari/clients/greynoise.rb +5 -2
- data/lib/mihari/clients/hunterhow.rb +5 -2
- data/lib/mihari/clients/misp.rb +3 -0
- data/lib/mihari/clients/onyphe.rb +5 -2
- data/lib/mihari/clients/otx.rb +3 -0
- data/lib/mihari/clients/passivetotal.rb +3 -0
- data/lib/mihari/clients/publsedive.rb +4 -1
- data/lib/mihari/clients/securitytrails.rb +3 -0
- data/lib/mihari/clients/shodan.rb +5 -2
- data/lib/mihari/clients/the_hive.rb +3 -0
- data/lib/mihari/clients/urlscan.rb +7 -4
- data/lib/mihari/clients/virustotal.rb +5 -2
- data/lib/mihari/clients/zoomeye.rb +3 -0
- data/lib/mihari/commands/alert.rb +9 -16
- data/lib/mihari/commands/database.rb +3 -0
- data/lib/mihari/commands/rule.rb +10 -1
- data/lib/mihari/commands/search.rb +13 -29
- data/lib/mihari/commands/version.rb +3 -0
- data/lib/mihari/commands/web.rb +4 -1
- data/lib/mihari/config.rb +139 -150
- data/lib/mihari/constants.rb +1 -1
- data/lib/mihari/database.rb +6 -0
- data/lib/mihari/emitters/base.rb +13 -11
- data/lib/mihari/emitters/database.rb +4 -1
- data/lib/mihari/emitters/misp.rb +7 -4
- data/lib/mihari/emitters/slack.rb +3 -3
- data/lib/mihari/emitters/the_hive.rb +3 -3
- data/lib/mihari/emitters/webhook.rb +4 -3
- data/lib/mihari/enrichers/base.rb +15 -9
- data/lib/mihari/enrichers/google_public_dns.rb +6 -5
- data/lib/mihari/enrichers/ipinfo.rb +11 -9
- data/lib/mihari/enrichers/shodan.rb +4 -6
- data/lib/mihari/enrichers/whois.rb +12 -9
- data/lib/mihari/entities/tag.rb +1 -0
- data/lib/mihari/errors.rb +6 -0
- data/lib/mihari/feed/parser.rb +3 -0
- data/lib/mihari/feed/reader.rb +3 -0
- data/lib/mihari/http.rb +6 -0
- data/lib/mihari/mixins/autonomous_system.rb +3 -0
- data/lib/mihari/mixins/configurable.rb +3 -0
- data/lib/mihari/mixins/error_notification.rb +3 -0
- data/lib/mihari/mixins/falsepositive.rb +3 -0
- data/lib/mihari/mixins/refang.rb +3 -0
- data/lib/mihari/mixins/retriable.rb +6 -2
- data/lib/mihari/models/alert.rb +7 -4
- data/lib/mihari/models/artifact.rb +6 -0
- data/lib/mihari/models/autonomous_system.rb +4 -1
- data/lib/mihari/models/cpe.rb +4 -1
- data/lib/mihari/models/dns.rb +4 -1
- data/lib/mihari/models/geolocation.rb +4 -1
- data/lib/mihari/models/port.rb +4 -1
- data/lib/mihari/models/reverse_dns.rb +4 -1
- data/lib/mihari/models/rule.rb +6 -3
- data/lib/mihari/models/tag.rb +3 -0
- data/lib/mihari/models/tagging.rb +3 -0
- data/lib/mihari/models/whois.rb +4 -3
- data/lib/mihari/rule.rb +31 -12
- data/lib/mihari/schemas/alert.rb +3 -0
- data/lib/mihari/schemas/analyzer.rb +11 -0
- data/lib/mihari/schemas/emitter.rb +3 -0
- data/lib/mihari/schemas/enricher.rb +3 -0
- data/lib/mihari/schemas/macros.rb +4 -0
- data/lib/mihari/schemas/mixins.rb +5 -0
- data/lib/mihari/schemas/rule.rb +3 -0
- data/lib/mihari/service.rb +26 -0
- data/lib/mihari/services/alert_builder.rb +85 -9
- data/lib/mihari/services/alert_runner.rb +8 -19
- data/lib/mihari/services/rule_builder.rb +13 -12
- data/lib/mihari/services/rule_runner.rb +7 -32
- data/lib/mihari/structs/binaryedge.rb +22 -28
- data/lib/mihari/structs/censys.rb +48 -141
- data/lib/mihari/structs/config.rb +19 -30
- data/lib/mihari/structs/filters.rb +38 -0
- data/lib/mihari/structs/fofa.rb +47 -0
- data/lib/mihari/structs/google_public_dns.rb +10 -32
- data/lib/mihari/structs/greynoise.rb +33 -90
- data/lib/mihari/structs/hunterhow.rb +24 -28
- data/lib/mihari/structs/ipinfo.rb +14 -37
- data/lib/mihari/structs/onyphe.rb +31 -80
- data/lib/mihari/structs/shodan.rb +47 -114
- data/lib/mihari/structs/urlscan.rb +24 -69
- data/lib/mihari/structs/virustotal_intelligence.rb +20 -64
- data/lib/mihari/type_checker.rb +4 -0
- data/lib/mihari/types.rb +3 -0
- data/lib/mihari/version.rb +1 -1
- data/lib/mihari/web/api.rb +15 -10
- data/lib/mihari/web/app.rb +64 -56
- data/lib/mihari/web/endpoints/alerts.rb +127 -85
- data/lib/mihari/web/endpoints/artifacts.rb +91 -79
- data/lib/mihari/web/endpoints/configs.rb +18 -13
- data/lib/mihari/web/endpoints/ip_addresses.rb +35 -15
- data/lib/mihari/web/endpoints/rules.rb +236 -187
- data/lib/mihari/web/endpoints/tags.rb +42 -35
- data/lib/mihari/web/middleware/connection_adapter.rb +16 -9
- data/lib/mihari/web/middleware/error_notification_adapter.rb +17 -10
- data/lib/mihari/web/public/assets/{index-28d4c79d.js → index-07fafab5.js} +31 -30
- data/lib/mihari/web/public/assets/mode-yaml-24faa242.js +8 -0
- data/lib/mihari/web/public/index.html +1 -1
- data/lib/mihari.rb +24 -6
- data/mihari.gemspec +9 -2
- data/mkdocs.yml +4 -2
- metadata +38 -133
- data/docs/alternatives.md +0 -5
- data/docs/analyzers/binaryedge.md +0 -26
- data/docs/analyzers/censys.md +0 -31
- data/docs/analyzers/circl.md +0 -37
- data/docs/analyzers/crtsh.md +0 -26
- data/docs/analyzers/dnstwister.md +0 -25
- data/docs/analyzers/feed.md +0 -73
- data/docs/analyzers/greynoise.md +0 -26
- data/docs/analyzers/hunterhow.md +0 -33
- data/docs/analyzers/index.md +0 -103
- data/docs/analyzers/onyphe.md +0 -26
- data/docs/analyzers/otx.md +0 -28
- data/docs/analyzers/passivetotal.md +0 -52
- data/docs/analyzers/pulsedive.md +0 -28
- data/docs/analyzers/securitytrails.md +0 -41
- data/docs/analyzers/shodan.md +0 -26
- data/docs/analyzers/urlscan.md +0 -28
- data/docs/analyzers/virustotal.md +0 -43
- data/docs/analyzers/virustotal_intelligence.md +0 -33
- data/docs/analyzers/zoomeye.md +0 -38
- data/docs/configuration.md +0 -35
- data/docs/emitters/database.md +0 -22
- data/docs/emitters/hive.md +0 -26
- data/docs/emitters/index.md +0 -36
- data/docs/emitters/misp.md +0 -21
- data/docs/emitters/slack.md +0 -21
- data/docs/emitters/webhook.md +0 -63
- data/docs/enrichers/google_public_dns.md +0 -19
- data/docs/enrichers/index.md +0 -35
- data/docs/enrichers/ipinfo.md +0 -26
- data/docs/enrichers/shodan.md +0 -22
- data/docs/enrichers/whois.md +0 -17
- data/docs/github_actions.md +0 -43
- data/docs/index.md +0 -11
- data/docs/installation.md +0 -31
- data/docs/requirements.md +0 -13
- data/docs/rule.md +0 -168
- data/docs/tags.md +0 -3
- data/docs/usage.md +0 -103
- data/frontend/.eslintrc.cjs +0 -22
- data/frontend/.gitignore +0 -31
- data/frontend/.prettierrc.json +0 -8
- data/frontend/README.md +0 -3
- data/frontend/env.d.ts +0 -5
- data/frontend/index.html +0 -21
- data/frontend/package-lock.json +0 -7219
- data/frontend/package.json +0 -67
- data/frontend/public/favicon.ico +0 -0
- data/frontend/scripts/swagger_doc_to_yaml.rb +0 -23
- data/frontend/src/App.vue +0 -27
- data/frontend/src/ace-config.ts +0 -6
- data/frontend/src/api-helper.ts +0 -111
- data/frontend/src/api.ts +0 -105
- data/frontend/src/components/ErrorMessage.vue +0 -31
- data/frontend/src/components/Loading.vue +0 -15
- data/frontend/src/components/Navbar.vue +0 -42
- data/frontend/src/components/Pagination.vue +0 -119
- data/frontend/src/components/alert/Alert.vue +0 -87
- data/frontend/src/components/alert/Alerts.vue +0 -63
- data/frontend/src/components/alert/AlertsWithPagination.vue +0 -90
- data/frontend/src/components/alert/AlertsWrapper.vue +0 -128
- data/frontend/src/components/alert/Form.vue +0 -182
- data/frontend/src/components/artifact/AS.vue +0 -29
- data/frontend/src/components/artifact/Artifact.vue +0 -287
- data/frontend/src/components/artifact/ArtifactTag.vue +0 -64
- data/frontend/src/components/artifact/ArtifactTags.vue +0 -29
- data/frontend/src/components/artifact/ArtifactWrapper.vue +0 -57
- data/frontend/src/components/artifact/CPEs.vue +0 -23
- data/frontend/src/components/artifact/DnsRecords.vue +0 -38
- data/frontend/src/components/artifact/Ports.vue +0 -23
- data/frontend/src/components/artifact/ReverseDnsNames.vue +0 -31
- data/frontend/src/components/artifact/Tags.vue +0 -29
- data/frontend/src/components/artifact/WhoisRecord.vue +0 -44
- data/frontend/src/components/config/Configs.vue +0 -65
- data/frontend/src/components/config/ConfigsWrapper.vue +0 -32
- data/frontend/src/components/link/Link.vue +0 -32
- data/frontend/src/components/link/Links.vue +0 -42
- data/frontend/src/components/rule/EditRule.vue +0 -72
- data/frontend/src/components/rule/EditRuleWrapper.vue +0 -48
- data/frontend/src/components/rule/Form.vue +0 -158
- data/frontend/src/components/rule/InputForm.vue +0 -45
- data/frontend/src/components/rule/NewRule.vue +0 -57
- data/frontend/src/components/rule/Rule.vue +0 -100
- data/frontend/src/components/rule/RuleWrapper.vue +0 -53
- data/frontend/src/components/rule/Rules.vue +0 -84
- data/frontend/src/components/rule/RulesWrapper.vue +0 -121
- data/frontend/src/components/rule/YAML.vue +0 -37
- data/frontend/src/components/tag/Tag.vue +0 -65
- data/frontend/src/components/tag/Tags.vue +0 -37
- data/frontend/src/countries.ts +0 -350
- data/frontend/src/index.ts +0 -20
- data/frontend/src/links/anyrun.ts +0 -19
- data/frontend/src/links/base.ts +0 -14
- data/frontend/src/links/censys.ts +0 -20
- data/frontend/src/links/crtsh.ts +0 -20
- data/frontend/src/links/dnslytics.ts +0 -38
- data/frontend/src/links/greynoise.ts +0 -20
- data/frontend/src/links/index.ts +0 -40
- data/frontend/src/links/intezer.ts +0 -20
- data/frontend/src/links/otx.ts +0 -33
- data/frontend/src/links/securitytrails.ts +0 -38
- data/frontend/src/links/shodan.ts +0 -20
- data/frontend/src/links/urlscan.ts +0 -50
- data/frontend/src/links/virustotal.ts +0 -72
- data/frontend/src/main.ts +0 -41
- data/frontend/src/router/index.ts +0 -57
- data/frontend/src/rule.ts +0 -14
- data/frontend/src/shims-vue.d.ts +0 -6
- data/frontend/src/swagger.yaml +0 -771
- data/frontend/src/types.ts +0 -188
- data/frontend/src/utils.ts +0 -54
- data/frontend/src/views/Alerts.vue +0 -20
- data/frontend/src/views/Artifact.vue +0 -39
- data/frontend/src/views/Configs.vue +0 -20
- data/frontend/src/views/EditRule.vue +0 -39
- data/frontend/src/views/NewRule.vue +0 -26
- data/frontend/src/views/Rule.vue +0 -39
- data/frontend/src/views/Rules.vue +0 -20
- data/frontend/tests/utils.spec.ts +0 -9
- data/frontend/tsconfig.app.json +0 -21
- data/frontend/tsconfig.json +0 -14
- data/frontend/tsconfig.node.json +0 -13
- data/frontend/tsconfig.vitest.json +0 -12
- data/frontend/vite.config.ts +0 -24
- data/frontend/vitest.config.ts +0 -21
- data/lib/mihari/services/alert_proxy.rb +0 -92
- data/lib/mihari/templates/rule.yml.erb +0 -5
- data/lib/mihari/web/public/assets/mode-yaml-a21faa53.js +0 -8
@@ -0,0 +1,8 @@
|
|
1
|
+
ace.define("ace/mode/yaml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"list.markup",regex:/^(?:-{3}|\.{3})\s*(?=#|$)/},{token:"list.markup",regex:/^\s*[\-?](?:$|\s)/},{token:"constant",regex:"!![\\w//]+"},{token:"constant.language",regex:"[&\\*][a-zA-Z0-9-_]+"},{token:["meta.tag","keyword"],regex:/^(\s*\w[^\s:]*?)(:(?=\s|$))/},{token:["meta.tag","keyword"],regex:/(\w[^\s:]*?)(\s*:(?=\s|$))/},{token:"keyword.operator",regex:"<<\\w*:\\w*"},{token:"keyword.operator",regex:"-\\s*(?=[{])"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:/[|>][-+\d]*(?:$|\s+(?:$|#))/,onMatch:function(e,t,n,r){r=r.replace(/ #.*/,"");var i=/^ *((:\s*)?-(\s*[^|>])?)?/.exec(r)[0].replace(/\S\s*$/,"").length,s=parseInt(/\d+[\s+-]*$/.exec(r));return s?(i+=s-1,this.next="mlString"):this.next="mlStringPre",n.length?(n[0]=this.next,n[1]=i):(n.push(this.next),n.push(i)),this.token},next:"mlString"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:/(\b|[+\-\.])[\d_]+(?:(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)(?=[^\d-\w]|$)$/},{token:"constant.numeric",regex:/[+\-]?\.inf\b|NaN\b|0x[\dA-Fa-f_]+|0b[10_]+/},{token:"constant.language.boolean",regex:"\\b(?:true|false|TRUE|FALSE|True|False|yes|no)\\b"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:/[^\s,:\[\]\{\}]+/}],mlStringPre:[{token:"indent",regex:/^ *$/},{token:"indent",regex:/^ */,onMatch:function(e,t,n){var r=n[1];return r>=e.length?(this.next="start",n.shift(),n.shift()):(n[1]=e.length-1,this.next=n[0]="mlString"),this.token},next:"mlString"},{defaultToken:"string"}],mlString:[{token:"indent",regex:/^ *$/},{token:"indent",regex:/^ */,onMatch:function(e,t,n){var r=n[1];return r>=e.length?(this.next="start",n.splice(0)):this.next="mlString",this.token},next:"mlString"},{token:"string",regex:".+"}]},this.normalizeRules()};r.inherits(s,i),t.YamlHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.commentBlock=function(e,t){var n=/\S/,r=e.getLine(t),i=r.search(n);if(i==-1||r[i]!="#")return;var o=r.length,u=e.getLength(),a=t,f=t;while(++t<u){r=e.getLine(t);var l=r.search(n);if(l==-1)continue;if(r[l]!="#")break;f=t}if(f>a){var c=e.getLine(f).length;return new s(a,o,f,c)}},this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;r=this.commentBlock(e,n);if(r)return r},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/folding/yaml",["require","exports","module","ace/lib/oop","ace/mode/folding/coffee","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./coffee").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=/\S/,i=e.getLine(n),o=i.search(r),u=i[o]==="#",a=i[o]==="-";if(o==-1)return;var f=i.length,l=e.getLength(),c=n,h=n;if(u){var p=this.commentBlock(e,n);if(p)return p}else if(a){var p=this.indentationBlock(e,n);if(p)return p}else while(++n<l){var i=e.getLine(n),d=i.search(r);if(d==-1)continue;if(d<=o&&i[o]!=="-"){var v=e.getTokenAt(n,0);if(!v||v.type!=="string")break}h=n}if(h>c){var m=e.getLine(h).length;return new s(c,f,h,m)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/),f=r[i]==="-";if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":u!=-1&&u==i&&f?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/yaml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/yaml_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/yaml","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./yaml_highlight_rules").YamlHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/yaml").FoldMode,a=e("../worker/worker_client").WorkerClient,f=function(){this.HighlightRules=s,this.$outdent=new o,this.foldingRules=new u,this.$behaviour=this.$defaultBehaviour};r.inherits(f,i),function(){this.lineCommentStart=["#"],this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t);if(e=="start"){var i=t.match(/^.*[\{\(\[]\s*$/);i&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/yaml_worker","YamlWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/yaml"}.call(f.prototype),t.Mode=f}); (function() {
|
2
|
+
ace.require(["ace/mode/yaml"], function(m) {
|
3
|
+
if (typeof module == "object" && typeof exports == "object" && module) {
|
4
|
+
module.exports = m;
|
5
|
+
}
|
6
|
+
});
|
7
|
+
})();
|
8
|
+
|
@@ -6,7 +6,7 @@
|
|
6
6
|
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
|
7
7
|
<link rel="icon" href="/favicon.ico" />
|
8
8
|
<title>Mihari</title>
|
9
|
-
<script type="module" crossorigin src="/assets/index-
|
9
|
+
<script type="module" crossorigin src="/assets/index-07fafab5.js"></script>
|
10
10
|
<link rel="stylesheet" href="/assets/index-56fc2187.css">
|
11
11
|
</head>
|
12
12
|
<body>
|
data/lib/mihari.rb
CHANGED
@@ -3,8 +3,6 @@
|
|
3
3
|
# standard libs
|
4
4
|
require "ipaddr"
|
5
5
|
require "json"
|
6
|
-
require "net/http"
|
7
|
-
require "net/https"
|
8
6
|
require "resolv"
|
9
7
|
require "yaml"
|
10
8
|
|
@@ -59,17 +57,23 @@ require "mihari/mixins/error_notification"
|
|
59
57
|
require "mihari/mixins/refang"
|
60
58
|
require "mihari/mixins/retriable"
|
61
59
|
|
60
|
+
#
|
61
|
+
# Mihari module
|
62
|
+
#
|
62
63
|
module Mihari
|
63
64
|
class << self
|
64
65
|
include Memist::Memoizable
|
65
66
|
|
67
|
+
#
|
68
|
+
# @return [Array<Mihari::Emitters::Base>]
|
69
|
+
#
|
66
70
|
def emitters
|
67
71
|
[]
|
68
72
|
end
|
69
73
|
memoize :emitters
|
70
74
|
|
71
75
|
#
|
72
|
-
# @return [Hash
|
76
|
+
# @return [Hash{String => Mihari::Enrichers::Base}]
|
73
77
|
#
|
74
78
|
def emitter_to_class
|
75
79
|
@emitter_to_class ||= emitters.flat_map do |klass|
|
@@ -77,13 +81,16 @@ module Mihari
|
|
77
81
|
end.to_h
|
78
82
|
end
|
79
83
|
|
84
|
+
#
|
85
|
+
# @return [Array<Mihari::Analyzers::Base>]
|
86
|
+
#
|
80
87
|
def analyzers
|
81
88
|
[]
|
82
89
|
end
|
83
90
|
memoize :analyzers
|
84
91
|
|
85
92
|
#
|
86
|
-
# @return [Hash
|
93
|
+
# @return [Hash{String => Mihari::Analyzers::Base}]
|
87
94
|
#
|
88
95
|
def analyzer_to_class
|
89
96
|
@analyzer_to_class ||= analyzers.flat_map do |klass|
|
@@ -91,13 +98,16 @@ module Mihari
|
|
91
98
|
end.to_h
|
92
99
|
end
|
93
100
|
|
101
|
+
#
|
102
|
+
# @return [Array<Mihari::Enrichers::Base>]
|
103
|
+
#
|
94
104
|
def enrichers
|
95
105
|
[]
|
96
106
|
end
|
97
107
|
memoize :enrichers
|
98
108
|
|
99
109
|
#
|
100
|
-
# @return [Hash
|
110
|
+
# @return [Hash{String => Mihari::Enrichers::Base}]
|
101
111
|
#
|
102
112
|
def enricher_to_class
|
103
113
|
@enricher_to_class ||= enrichers.flat_map do |klass|
|
@@ -105,6 +115,9 @@ module Mihari
|
|
105
115
|
end.to_h
|
106
116
|
end
|
107
117
|
|
118
|
+
#
|
119
|
+
# @return [Mihari::Config]
|
120
|
+
#
|
108
121
|
def config
|
109
122
|
@config ||= Config.new
|
110
123
|
end
|
@@ -130,7 +143,10 @@ module Mihari
|
|
130
143
|
end
|
131
144
|
|
132
145
|
# Core classes
|
146
|
+
require "mihari/service"
|
147
|
+
|
133
148
|
require "mihari/actor"
|
149
|
+
|
134
150
|
require "mihari/database"
|
135
151
|
require "mihari/http"
|
136
152
|
require "mihari/type_checker"
|
@@ -174,6 +190,7 @@ require "mihari/clients/censys"
|
|
174
190
|
require "mihari/clients/circl"
|
175
191
|
require "mihari/clients/crtsh"
|
176
192
|
require "mihari/clients/dnstwister"
|
193
|
+
require "mihari/clients/fofa"
|
177
194
|
require "mihari/clients/greynoise"
|
178
195
|
require "mihari/clients/hunterhow"
|
179
196
|
require "mihari/clients/misp"
|
@@ -197,6 +214,7 @@ require "mihari/analyzers/circl"
|
|
197
214
|
require "mihari/analyzers/crtsh"
|
198
215
|
require "mihari/analyzers/dnstwister"
|
199
216
|
require "mihari/analyzers/feed"
|
217
|
+
require "mihari/analyzers/fofa"
|
200
218
|
require "mihari/analyzers/greynoise"
|
201
219
|
require "mihari/analyzers/hunterhow"
|
202
220
|
require "mihari/analyzers/onyphe"
|
@@ -221,6 +239,7 @@ require "mihari/structs/binaryedge"
|
|
221
239
|
require "mihari/structs/censys"
|
222
240
|
require "mihari/structs/config"
|
223
241
|
require "mihari/structs/filters"
|
242
|
+
require "mihari/structs/fofa"
|
224
243
|
require "mihari/structs/google_public_dns"
|
225
244
|
require "mihari/structs/greynoise"
|
226
245
|
require "mihari/structs/ipinfo"
|
@@ -245,7 +264,6 @@ require "mihari/services/rule_builder"
|
|
245
264
|
require "mihari/services/rule_runner"
|
246
265
|
|
247
266
|
require "mihari/services/alert_builder"
|
248
|
-
require "mihari/services/alert_proxy"
|
249
267
|
require "mihari/services/alert_runner"
|
250
268
|
|
251
269
|
# Entities
|
data/mihari.gemspec
CHANGED
@@ -10,6 +10,10 @@ def ci_env?
|
|
10
10
|
ENV["CI"]
|
11
11
|
end
|
12
12
|
|
13
|
+
def is_ruby2?
|
14
|
+
RUBY_VERSION.to_s.start_with?("2.")
|
15
|
+
end
|
16
|
+
|
13
17
|
Gem::Specification.new do |spec|
|
14
18
|
spec.name = "mihari"
|
15
19
|
spec.version = Mihari::VERSION
|
@@ -27,7 +31,7 @@ Gem::Specification.new do |spec|
|
|
27
31
|
# Specify which files should be added to the gem when it is released.
|
28
32
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
29
33
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
30
|
-
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(
|
34
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(.github|.vscode|docs|docker|frontend|images|spec|)/}) }
|
31
35
|
end
|
32
36
|
# Include frontend assets in lib/mihari/web/public
|
33
37
|
spec.files += Dir.glob("lib/mihari/web/public/**/*")
|
@@ -56,6 +60,8 @@ Gem::Specification.new do |spec|
|
|
56
60
|
spec.add_development_dependency "vcr", "~> 6.2"
|
57
61
|
spec.add_development_dependency "webmock", "~> 3.19"
|
58
62
|
|
63
|
+
spec.add_development_dependency "rubocop-yard", "~> 0.7" unless is_ruby2?
|
64
|
+
|
59
65
|
unless ci_env?
|
60
66
|
spec.add_development_dependency "lefthook", "~> 1.5"
|
61
67
|
spec.add_development_dependency "solargraph", "~> 0.49"
|
@@ -63,6 +69,7 @@ Gem::Specification.new do |spec|
|
|
63
69
|
|
64
70
|
spec.add_dependency "activerecord", "7.1.1"
|
65
71
|
spec.add_dependency "addressable", "2.8.5"
|
72
|
+
spec.add_dependency "anyway_config", "2.5.4"
|
66
73
|
spec.add_dependency "awrence", "2.0.1"
|
67
74
|
spec.add_dependency "dotenv", "2.8.1"
|
68
75
|
spec.add_dependency "dry-container", "0.11.0"
|
@@ -91,7 +98,7 @@ Gem::Specification.new do |spec|
|
|
91
98
|
spec.add_dependency "semantic_logger", "4.14.0"
|
92
99
|
spec.add_dependency "sentry-ruby", "5.12.0"
|
93
100
|
spec.add_dependency "slack-notifier", "2.4.0"
|
94
|
-
spec.add_dependency "sqlite3", "1.6.
|
101
|
+
spec.add_dependency "sqlite3", "1.6.8"
|
95
102
|
spec.add_dependency "thor", "1.3.0"
|
96
103
|
spec.add_dependency "thor-hollaback", "0.2.1"
|
97
104
|
spec.add_dependency "uuidtools", "2.2.0"
|
data/mkdocs.yml
CHANGED
@@ -16,6 +16,7 @@ nav:
|
|
16
16
|
- Usage: usage.md
|
17
17
|
- Configuration: configuration.md
|
18
18
|
- Tips:
|
19
|
+
- Docker: docker.md
|
19
20
|
- GitHub Actions: github_actions.md
|
20
21
|
- Alternatives: alternatives.md
|
21
22
|
- References:
|
@@ -29,6 +30,7 @@ markdown_extensions:
|
|
29
30
|
permalink: true
|
30
31
|
- admonition
|
31
32
|
- pymdownx.details
|
32
|
-
- pymdownx.superfences
|
33
|
-
- pymdownx.highlight
|
34
33
|
- pymdownx.extra
|
34
|
+
- pymdownx.highlight
|
35
|
+
- pymdownx.magiclink
|
36
|
+
- pymdownx.superfences
|
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.
|
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
|
+
date: 2023-11-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -276,6 +276,20 @@ dependencies:
|
|
276
276
|
- - "~>"
|
277
277
|
- !ruby/object:Gem::Version
|
278
278
|
version: '3.19'
|
279
|
+
- !ruby/object:Gem::Dependency
|
280
|
+
name: rubocop-yard
|
281
|
+
requirement: !ruby/object:Gem::Requirement
|
282
|
+
requirements:
|
283
|
+
- - "~>"
|
284
|
+
- !ruby/object:Gem::Version
|
285
|
+
version: '0.7'
|
286
|
+
type: :development
|
287
|
+
prerelease: false
|
288
|
+
version_requirements: !ruby/object:Gem::Requirement
|
289
|
+
requirements:
|
290
|
+
- - "~>"
|
291
|
+
- !ruby/object:Gem::Version
|
292
|
+
version: '0.7'
|
279
293
|
- !ruby/object:Gem::Dependency
|
280
294
|
name: lefthook
|
281
295
|
requirement: !ruby/object:Gem::Requirement
|
@@ -332,6 +346,20 @@ dependencies:
|
|
332
346
|
- - '='
|
333
347
|
- !ruby/object:Gem::Version
|
334
348
|
version: 2.8.5
|
349
|
+
- !ruby/object:Gem::Dependency
|
350
|
+
name: anyway_config
|
351
|
+
requirement: !ruby/object:Gem::Requirement
|
352
|
+
requirements:
|
353
|
+
- - '='
|
354
|
+
- !ruby/object:Gem::Version
|
355
|
+
version: 2.5.4
|
356
|
+
type: :runtime
|
357
|
+
prerelease: false
|
358
|
+
version_requirements: !ruby/object:Gem::Requirement
|
359
|
+
requirements:
|
360
|
+
- - '='
|
361
|
+
- !ruby/object:Gem::Version
|
362
|
+
version: 2.5.4
|
335
363
|
- !ruby/object:Gem::Dependency
|
336
364
|
name: awrence
|
337
365
|
requirement: !ruby/object:Gem::Requirement
|
@@ -730,14 +758,14 @@ dependencies:
|
|
730
758
|
requirements:
|
731
759
|
- - '='
|
732
760
|
- !ruby/object:Gem::Version
|
733
|
-
version: 1.6.
|
761
|
+
version: 1.6.8
|
734
762
|
type: :runtime
|
735
763
|
prerelease: false
|
736
764
|
version_requirements: !ruby/object:Gem::Requirement
|
737
765
|
requirements:
|
738
766
|
- - '='
|
739
767
|
- !ruby/object:Gem::Version
|
740
|
-
version: 1.6.
|
768
|
+
version: 1.6.8
|
741
769
|
- !ruby/object:Gem::Dependency
|
742
770
|
name: thor
|
743
771
|
requirement: !ruby/object:Gem::Requirement
|
@@ -828,132 +856,7 @@ files:
|
|
828
856
|
- bin/setup
|
829
857
|
- build_frontend.sh
|
830
858
|
- config.ru
|
831
|
-
- docs/alternatives.md
|
832
|
-
- docs/analyzers/binaryedge.md
|
833
|
-
- docs/analyzers/censys.md
|
834
|
-
- docs/analyzers/circl.md
|
835
|
-
- docs/analyzers/crtsh.md
|
836
|
-
- docs/analyzers/dnstwister.md
|
837
|
-
- docs/analyzers/feed.md
|
838
|
-
- docs/analyzers/greynoise.md
|
839
|
-
- docs/analyzers/hunterhow.md
|
840
|
-
- docs/analyzers/index.md
|
841
|
-
- docs/analyzers/onyphe.md
|
842
|
-
- docs/analyzers/otx.md
|
843
|
-
- docs/analyzers/passivetotal.md
|
844
|
-
- docs/analyzers/pulsedive.md
|
845
|
-
- docs/analyzers/securitytrails.md
|
846
|
-
- docs/analyzers/shodan.md
|
847
|
-
- docs/analyzers/urlscan.md
|
848
|
-
- docs/analyzers/virustotal.md
|
849
|
-
- docs/analyzers/virustotal_intelligence.md
|
850
|
-
- docs/analyzers/zoomeye.md
|
851
|
-
- docs/configuration.md
|
852
|
-
- docs/emitters/database.md
|
853
|
-
- docs/emitters/hive.md
|
854
|
-
- docs/emitters/index.md
|
855
|
-
- docs/emitters/misp.md
|
856
|
-
- docs/emitters/slack.md
|
857
|
-
- docs/emitters/webhook.md
|
858
|
-
- docs/enrichers/google_public_dns.md
|
859
|
-
- docs/enrichers/index.md
|
860
|
-
- docs/enrichers/ipinfo.md
|
861
|
-
- docs/enrichers/shodan.md
|
862
|
-
- docs/enrichers/whois.md
|
863
|
-
- docs/github_actions.md
|
864
|
-
- docs/index.md
|
865
|
-
- docs/installation.md
|
866
|
-
- docs/requirements.md
|
867
|
-
- docs/rule.md
|
868
|
-
- docs/tags.md
|
869
|
-
- docs/usage.md
|
870
859
|
- exe/mihari
|
871
|
-
- frontend/.eslintrc.cjs
|
872
|
-
- frontend/.gitignore
|
873
|
-
- frontend/.prettierrc.json
|
874
|
-
- frontend/README.md
|
875
|
-
- frontend/env.d.ts
|
876
|
-
- frontend/index.html
|
877
|
-
- frontend/package-lock.json
|
878
|
-
- frontend/package.json
|
879
|
-
- frontend/public/favicon.ico
|
880
|
-
- frontend/scripts/swagger_doc_to_yaml.rb
|
881
|
-
- frontend/src/App.vue
|
882
|
-
- frontend/src/ace-config.ts
|
883
|
-
- frontend/src/api-helper.ts
|
884
|
-
- frontend/src/api.ts
|
885
|
-
- frontend/src/components/ErrorMessage.vue
|
886
|
-
- frontend/src/components/Loading.vue
|
887
|
-
- frontend/src/components/Navbar.vue
|
888
|
-
- frontend/src/components/Pagination.vue
|
889
|
-
- frontend/src/components/alert/Alert.vue
|
890
|
-
- frontend/src/components/alert/Alerts.vue
|
891
|
-
- frontend/src/components/alert/AlertsWithPagination.vue
|
892
|
-
- frontend/src/components/alert/AlertsWrapper.vue
|
893
|
-
- frontend/src/components/alert/Form.vue
|
894
|
-
- frontend/src/components/artifact/AS.vue
|
895
|
-
- frontend/src/components/artifact/Artifact.vue
|
896
|
-
- frontend/src/components/artifact/ArtifactTag.vue
|
897
|
-
- frontend/src/components/artifact/ArtifactTags.vue
|
898
|
-
- frontend/src/components/artifact/ArtifactWrapper.vue
|
899
|
-
- frontend/src/components/artifact/CPEs.vue
|
900
|
-
- frontend/src/components/artifact/DnsRecords.vue
|
901
|
-
- frontend/src/components/artifact/Ports.vue
|
902
|
-
- frontend/src/components/artifact/ReverseDnsNames.vue
|
903
|
-
- frontend/src/components/artifact/Tags.vue
|
904
|
-
- frontend/src/components/artifact/WhoisRecord.vue
|
905
|
-
- frontend/src/components/config/Configs.vue
|
906
|
-
- frontend/src/components/config/ConfigsWrapper.vue
|
907
|
-
- frontend/src/components/link/Link.vue
|
908
|
-
- frontend/src/components/link/Links.vue
|
909
|
-
- frontend/src/components/rule/EditRule.vue
|
910
|
-
- frontend/src/components/rule/EditRuleWrapper.vue
|
911
|
-
- frontend/src/components/rule/Form.vue
|
912
|
-
- frontend/src/components/rule/InputForm.vue
|
913
|
-
- frontend/src/components/rule/NewRule.vue
|
914
|
-
- frontend/src/components/rule/Rule.vue
|
915
|
-
- frontend/src/components/rule/RuleWrapper.vue
|
916
|
-
- frontend/src/components/rule/Rules.vue
|
917
|
-
- frontend/src/components/rule/RulesWrapper.vue
|
918
|
-
- frontend/src/components/rule/YAML.vue
|
919
|
-
- frontend/src/components/tag/Tag.vue
|
920
|
-
- frontend/src/components/tag/Tags.vue
|
921
|
-
- frontend/src/countries.ts
|
922
|
-
- frontend/src/index.ts
|
923
|
-
- frontend/src/links/anyrun.ts
|
924
|
-
- frontend/src/links/base.ts
|
925
|
-
- frontend/src/links/censys.ts
|
926
|
-
- frontend/src/links/crtsh.ts
|
927
|
-
- frontend/src/links/dnslytics.ts
|
928
|
-
- frontend/src/links/greynoise.ts
|
929
|
-
- frontend/src/links/index.ts
|
930
|
-
- frontend/src/links/intezer.ts
|
931
|
-
- frontend/src/links/otx.ts
|
932
|
-
- frontend/src/links/securitytrails.ts
|
933
|
-
- frontend/src/links/shodan.ts
|
934
|
-
- frontend/src/links/urlscan.ts
|
935
|
-
- frontend/src/links/virustotal.ts
|
936
|
-
- frontend/src/main.ts
|
937
|
-
- frontend/src/router/index.ts
|
938
|
-
- frontend/src/rule.ts
|
939
|
-
- frontend/src/shims-vue.d.ts
|
940
|
-
- frontend/src/swagger.yaml
|
941
|
-
- frontend/src/types.ts
|
942
|
-
- frontend/src/utils.ts
|
943
|
-
- frontend/src/views/Alerts.vue
|
944
|
-
- frontend/src/views/Artifact.vue
|
945
|
-
- frontend/src/views/Configs.vue
|
946
|
-
- frontend/src/views/EditRule.vue
|
947
|
-
- frontend/src/views/NewRule.vue
|
948
|
-
- frontend/src/views/Rule.vue
|
949
|
-
- frontend/src/views/Rules.vue
|
950
|
-
- frontend/tests/utils.spec.ts
|
951
|
-
- frontend/tsconfig.app.json
|
952
|
-
- frontend/tsconfig.json
|
953
|
-
- frontend/tsconfig.node.json
|
954
|
-
- frontend/tsconfig.vitest.json
|
955
|
-
- frontend/vite.config.ts
|
956
|
-
- frontend/vitest.config.ts
|
957
860
|
- lefthook.yml
|
958
861
|
- lib/mihari.rb
|
959
862
|
- lib/mihari/actor.rb
|
@@ -964,6 +867,7 @@ files:
|
|
964
867
|
- lib/mihari/analyzers/crtsh.rb
|
965
868
|
- lib/mihari/analyzers/dnstwister.rb
|
966
869
|
- lib/mihari/analyzers/feed.rb
|
870
|
+
- lib/mihari/analyzers/fofa.rb
|
967
871
|
- lib/mihari/analyzers/greynoise.rb
|
968
872
|
- lib/mihari/analyzers/hunterhow.rb
|
969
873
|
- lib/mihari/analyzers/onyphe.rb
|
@@ -987,6 +891,7 @@ files:
|
|
987
891
|
- lib/mihari/clients/circl.rb
|
988
892
|
- lib/mihari/clients/crtsh.rb
|
989
893
|
- lib/mihari/clients/dnstwister.rb
|
894
|
+
- lib/mihari/clients/fofa.rb
|
990
895
|
- lib/mihari/clients/greynoise.rb
|
991
896
|
- lib/mihari/clients/hunterhow.rb
|
992
897
|
- lib/mihari/clients/misp.rb
|
@@ -1065,8 +970,8 @@ files:
|
|
1065
970
|
- lib/mihari/schemas/mixins.rb
|
1066
971
|
- lib/mihari/schemas/options.rb
|
1067
972
|
- lib/mihari/schemas/rule.rb
|
973
|
+
- lib/mihari/service.rb
|
1068
974
|
- lib/mihari/services/alert_builder.rb
|
1069
|
-
- lib/mihari/services/alert_proxy.rb
|
1070
975
|
- lib/mihari/services/alert_runner.rb
|
1071
976
|
- lib/mihari/services/rule_builder.rb
|
1072
977
|
- lib/mihari/services/rule_runner.rb
|
@@ -1074,6 +979,7 @@ files:
|
|
1074
979
|
- lib/mihari/structs/censys.rb
|
1075
980
|
- lib/mihari/structs/config.rb
|
1076
981
|
- lib/mihari/structs/filters.rb
|
982
|
+
- lib/mihari/structs/fofa.rb
|
1077
983
|
- lib/mihari/structs/google_public_dns.rb
|
1078
984
|
- lib/mihari/structs/greynoise.rb
|
1079
985
|
- lib/mihari/structs/hunterhow.rb
|
@@ -1082,7 +988,6 @@ files:
|
|
1082
988
|
- lib/mihari/structs/shodan.rb
|
1083
989
|
- lib/mihari/structs/urlscan.rb
|
1084
990
|
- lib/mihari/structs/virustotal_intelligence.rb
|
1085
|
-
- lib/mihari/templates/rule.yml.erb
|
1086
991
|
- lib/mihari/type_checker.rb
|
1087
992
|
- lib/mihari/types.rb
|
1088
993
|
- lib/mihari/version.rb
|
@@ -1096,9 +1001,9 @@ files:
|
|
1096
1001
|
- lib/mihari/web/endpoints/tags.rb
|
1097
1002
|
- lib/mihari/web/middleware/connection_adapter.rb
|
1098
1003
|
- lib/mihari/web/middleware/error_notification_adapter.rb
|
1099
|
-
- lib/mihari/web/public/assets/index-
|
1004
|
+
- lib/mihari/web/public/assets/index-07fafab5.js
|
1100
1005
|
- lib/mihari/web/public/assets/index-56fc2187.css
|
1101
|
-
- lib/mihari/web/public/assets/mode-yaml-
|
1006
|
+
- lib/mihari/web/public/assets/mode-yaml-24faa242.js
|
1102
1007
|
- lib/mihari/web/public/favicon.ico
|
1103
1008
|
- lib/mihari/web/public/index.html
|
1104
1009
|
- lib/mihari/web/public/redoc-static.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"]`.
|
data/docs/analyzers/censys.md
DELETED
@@ -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”]`.
|
data/docs/analyzers/circl.md
DELETED
@@ -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”]`.
|
data/docs/analyzers/crtsh.md
DELETED
@@ -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.
|