Repository navigation
Conversation
Adds a `darkeye` engine for FQDN and URL observables that returns ransomware victims, data breaches, leads and stealer logs tied to a domain from the two DarkEye APIs, Have I Been Ransomed? and Breach House. Each product has its own optional key (DARKEYE_HIBR_API_KEY and DARKEYE_BREACH_HOUSE_API_KEY) and is queried only when its key is set. The result is a single "DarkEye" entry whose records carry their product and category. If one product fails, the records of the other one are still returned and the failure is listed in `errors`; the engine returns nothing only when every configured product failed. Only plain domain names are queried (the APIs treat * and ? as wildcards), redirects are not followed, and only listing metadata is kept for each record (product, category, id, title, website, group, country, discovery date).
Owner
|
Hi @juanmill4 this sounds like an nice addition! |
Owner
|
It seems there is no free plan, so I won't be able to test the product :( |
Author
|
Sure, can you give your email?, I will send you |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
darkeyeengine for FQDN and URL observables. It lists the ransomware victims, data breaches, leads and stealer logs that match a domain, using DarkEye's two APIs: Have I Been Ransomed? and Breach House.DARKEYE_HIBR_API_KEY,DARKEYE_BREACH_HOUSE_API_KEY) and is only queried when its key is set. If neither key is set, the engine logs a warning and returns nothing, asransomware_livedoes.productandcategory. It keeps only listing metadata (product, category, id, title, website, group, country, discovery date) and never reads leaked content, proof files or leak-site or download URLs from the responses.Scope
Validation (required)
Test evidence
The new card and table layouts were also rendered with a
<script>payload in the title, website, group and error fields; the output shows only the escaped text.Besides the mocked tests, the engine was run through
analyzeagainst the live APIs:example.com(max_pages=2)truncated: true, no errorsexample.comproducts: ["Breach House"], and one HIBR authentication error inerrorshttps://example.com/some/path?x=1(max_pages=1)truncated: true403, 429, 500 and timeouts are only covered by the mocked tests.
With both keys set, each product is queried on its own, so a failure in one doesn't hide the other's results. If one fails (auth, quota, HTTP error, bad JSON, timeout), the other's records are still returned and the failure goes into
errorsas{"product", "error"}, which the card, the table cell and the copied text all show. If every configured product fails,analyzereturnsNone, because afound: falseresult with errors would read as "clean" in a reputation check.Other choices worth reviewing:
*and?as wildcards), and IP addresses are rejected.max_pages), drops duplicates across pages, and setstruncatedwhen it stops early. Breach House is a single call withlimit=25per category (200 at most).Maintainer merge policy acknowledgement
devfirst for additional validation.mainis kept clean/stable for releases and tags.New engine checklist
Engine Implementation
engines/darkeye.py(class engine,crtshandransomware_liveas templates).utils/load_engines.py(engines/__init__.pydoesn't build the registry, as noted in Add ScanMalware engine #220).darkeye_hibr_api_keyanddarkeye_breach_house_api_keytoSecretsinutils/config.py.Configuration & Secrets
.env.sample.docker-compose.yml.UI & Frontend
static/format_results.js.templates/engine_layouts/darkeye_card.htmlanddarkeye_table.html.display_cards.htmlanddisplay_table.html.index.htmlwith a description, in alphabetic order.graph.html: one node per ransomware group found, likeransomware_live.Documentation
docs/api-keys/Get-DarkEye-API-keys.mdand its link indocs/index.md.docs/quick-start/API-usage-and-engine-names.md.mkdocs.ymlsidebar.Quick-start-&-Installation.md: not changed, it has no list of engine variables.docs/quick-start/Advanced-options-for-deployment.md.README.md(env block and services list).Risk and rollback