From 07a4faf67aea12cdbd5739b011a2c14b19d210cc Mon Sep 17 00:00:00 2001 From: chrisr3d Date: Thu, 15 Nov 2018 19:43:14 +0100 Subject: [PATCH] add: Started filling some expansion modules documentation --- doc/expansion/asn_history.json | 6 +++++- doc/expansion/btc.json | 5 ++++- doc/expansion/circl_passivedns.json | 7 ++++++- doc/expansion/circl_passivessl.json | 7 ++++++- doc/expansion/countrycode.json | 5 ++++- doc/expansion/crowdstrike_falcon.json | 7 ++++++- doc/expansion/cve.json | 7 ++++++- doc/logos/bitcoin.png | Bin 0 -> 9918 bytes doc/logos/cve.png | Bin 0 -> 20015 bytes 9 files changed, 37 insertions(+), 7 deletions(-) create mode 100644 doc/logos/bitcoin.png create mode 100644 doc/logos/cve.png diff --git a/doc/expansion/asn_history.json b/doc/expansion/asn_history.json index 936feba..b3eea26 100644 --- a/doc/expansion/asn_history.json +++ b/doc/expansion/asn_history.json @@ -1,4 +1,8 @@ { "description": "Query an ASN description history service (https://github.com/CIRCL/ASN-Description-History.git).", - "requirements": ["asnhistory"] + "requirements": ["asnhistory python library"], + "features": "The module takes an AS number attribute as input and displays its description and history.\n\nFor a proper working, a communication with a redis database is needed, thus 3 parameters are needed:\n- host, the address of the redis server\n- port, the port used by redis\n- db, the index of the database used\n", + "references": ["https://github.com/CIRCL/ASN-Description-History.git"], + "input": "Autonomous system number.", + "output": "Text containing a description of the ASN and its history." } diff --git a/doc/expansion/btc.json b/doc/expansion/btc.json index 3aeceab..fd264d8 100644 --- a/doc/expansion/btc.json +++ b/doc/expansion/btc.json @@ -1,3 +1,6 @@ { - "description": "An expansion hover module to get a blockchain balance from a BTC address in MISP." + "description": "An expansion hover module to get a blockchain balance from a BTC address in MISP.", + "logo": "logos/bitcoin.png", + "input": "btc address attribute.", + "output": "Text to describe the blockchain balance and the transactions related to the btc address in input." } diff --git a/doc/expansion/circl_passivedns.json b/doc/expansion/circl_passivedns.json index 664ca77..fda50eb 100644 --- a/doc/expansion/circl_passivedns.json +++ b/doc/expansion/circl_passivedns.json @@ -1,4 +1,9 @@ { "description": "Module to access CIRCL Passive DNS.", - "logo": "logos/passivedns.png" + "logo": "logos/passivedns.png", + "requirements": ["pypdns: Passive DNS python library", "A CIRCL passive DNS account with username & password"], + "input": "Hostname, domain, or ip-address attribute.", + "ouput": "Text describing passive DNS information related to the input attribute.", + "features": "This module takes a hostname, domain or ip-address (ip-src or ip-dst) attribute as input, and queries the CIRCL Passive DNS REST API to get and display information about this input.\n\nTo make it work a username and a password are thus required to authenticate to the CIRCL Passive DNS API.", + "references": ["https://www.circl.lu/services/passive-dns/", "https://datatracker.ietf.org/doc/draft-dulaunoy-dnsop-passive-dns-cof/"] } diff --git a/doc/expansion/circl_passivessl.json b/doc/expansion/circl_passivessl.json index 2015b59..ec449ee 100644 --- a/doc/expansion/circl_passivessl.json +++ b/doc/expansion/circl_passivessl.json @@ -1,4 +1,9 @@ { "description": "Modules to access CIRCL Passive SSL.", - "logo": "logos/passivessl.png" + "logo": "logos/passivessl.png", + "requirements": ["pypssl: Passive SSL python library", "A CIRCL passive SSL account with username & password"], + "input": "Ip-address attribute.", + "output": "Text describing passive SSL information related to the input attribute.", + "features": "This module takes an ip-address (ip-src or ip-dst) attribute as input, and queries the CIRCL Passive SSL REST API to get and display information about this input.\n\nTo make it work a username and a password are thus required to authenticate to the CIRCL Passive SSL API.", + "references": ["https://www.circl.lu/services/passive-ssl/"] } diff --git a/doc/expansion/countrycode.json b/doc/expansion/countrycode.json index 367c14b..c6214e5 100644 --- a/doc/expansion/countrycode.json +++ b/doc/expansion/countrycode.json @@ -1,3 +1,6 @@ { - "description": "Module to expand country codes." + "description": "Module to expand country codes.", + "input": "Hostname or domain attribute.", + "output": "Text with the country code the input belongs to.", + "features": "The module takes a domain or a hostname as input, and returns the country it belongs to.\n\nFor non country domains, a list of the most common possible extensions is used." } diff --git a/doc/expansion/crowdstrike_falcon.json b/doc/expansion/crowdstrike_falcon.json index 0faa6c0..4392561 100644 --- a/doc/expansion/crowdstrike_falcon.json +++ b/doc/expansion/crowdstrike_falcon.json @@ -1,4 +1,9 @@ { "description": "Module to query Crowdstrike Falcon.", - "logo": "logos/crowdstrike.png" + "logo": "logos/crowdstrike.png", + "requirements": ["A CrowdStrike API access (API id & key)"], + "input": "A MISP attribute included in the following list:\n- domain\n- email-attachment\n- email-dst\n- email-reply-to\n- email-src\n- email-subject\n- filename\n- hostname\n- ip-src\n- ip-dst\n- md5\n- mutex\n- regkey\n- sha1\n- sha256\n- uri\n- url\n- user-agent\n- whois-registrant-email\n- x509-fingerprint-md5", + "output": "MISP attributes fetched after the CrowdStrike API has been queried, included in the following list:\n- hostname\n- email-src\n- email-subject\n- filename\n- md5\n- sha1\n- sha256\n- ip-dst\n- ip-dst\n- mutex\n- regkey\n- url\n- user-agent\n- x509-fingerprint-md5", + "references": ["https://www.crowdstrike.com/products/crowdstrike-falcon-faq/"], + "features": "This module takes a MISP attribute as input to query a CrowdStrike Falcon API, using an api_id and an apikey.\n\nThe API returns then the result of the query with some types we map into compatible types we add as MISP attributes." } diff --git a/doc/expansion/cve.json b/doc/expansion/cve.json index afc4c33..04f131f 100644 --- a/doc/expansion/cve.json +++ b/doc/expansion/cve.json @@ -1,3 +1,8 @@ { - "description": "An expansion hover module to expand information about CVE id." + "description": "An expansion hover module to expand information about CVE id.", + "logo": "logos/cve.png", + "input": "Vulnerability attribute.", + "output": "Text giving information about the CVE related to the Vulnerability.", + "references": ["https://cve.circl.lu/", "https://cve.mitre.org/"], + "features": "The module takes a vulnerability attribute as input and queries the CIRCL CVE search API to get information about the vulnerability as it is described in the list of CVEs." } diff --git a/doc/logos/bitcoin.png b/doc/logos/bitcoin.png new file mode 100644 index 0000000000000000000000000000000000000000..e80ad6d11c87de6ee8fdb039e7d47b3157a0e17a GIT binary patch literal 9918 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 literal 0 HcmV?d00001 diff --git a/doc/logos/cve.png b/doc/logos/cve.png new file mode 100644 index 0000000000000000000000000000000000000000..315ccd8190b154c555725f3981c6695035a21dd9 GIT binary patch literal 20015 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 L%^8xZ&*gsu`sR15 literal 0 HcmV?d00001