ipwhois: name: IP Whois otypes: - ipv4 ipwhois: results: - key: '@' multi_match: keys: - asn - asn_cidr - asn_date - asn_registry - asn_country_code pretty_name: ASN Information - key: nets multi_match: keys: - cidr - handle - name - range pretty_name: Network Information - key: nets multi_match: keys: - description - key: created regex: '(\d+-\d+-\d+)T' - key: updated regex: '(\d+-\d+-\d+)T' pretty_name: Registration Info - key: nets multi_match: keys: - city - state - postal_code - country pretty_name: Registration Locality # For when we use RWS - key: nets multi_match: keys: - key: abuse_emails split: "\n" pretty_name: Abuse Email - key: nets multi_match: keys: - key: tech_emails split: "\n" pretty_name: Tech Email # For when we fall back to regular whois - key: nets multi_match: keys: - key: emails split: "\n" pretty_name: Contacts spamhaus_ip: name: Spamhaus Zen BL default: False otypes: - ipv4 webscraper: request: url: 'http://www.spamhaus.org/query/ip/{target}' method: get strip_comments: true results: - regex: '\S+ is (listed in the \w+)' values: - spamhaus_zenbl pretty_name: Spamhaus Zen BL spamhaus_domain: name: Spamhaus Domain BL default: False otypes: - fqdn webscraper: request: url: 'http://www.spamhaus.org/query/domain/{target}' method: get results: - regex: '\S+ is (listed in the \w+)' values: - spamhaus_dbl pretty_name: Spamhaus DBL ipvoid: name: IPVoid default: False otypes: - ipv4 json: request: url: 'https://endpoint.apivoid.com/iprep/v1/pay-as-you-go/' params: key: ip: '{target}' method: get results: - key: data.report.blacklists.detections pretty_name: Number of detections - key: data.report.blacklists.detection_rate pretty_name: IP Void Detection Rate - key: data.report.blacklists.engines pretty_name: Engines multi_match: keys: - engine - reference onlyif: detected urlvoid: name: URLVoid otypes: - fqdn webscraper: request: url: 'http://www.urlvoid.com/scan/{target}' method: get results: - regex: 'Analysis Date<\/td>(.+?)<\/td>' values: urlvoid_analysis_date pretty_name: Last Analysis - regex: '(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}).{5,30}Find\swebsites\shosted\shere' values: urlvoid_ip pretty_name: IP from URLVoid - regex: '\/>(.+?)<\/td><\/i>' values: urlvoid_blacklist pretty_name: Blacklist from URL Void - regex: 'Domain\s1st\sRegistered.+\(.+)\<\/td\>' values: urlvoid_domain_age pretty_name: Domain Age from URL Void - regex: 'latitude\s/\slongitude.+\(.+)\<\/td\>' values: urlvoid_location pretty_name: Geo Coordinates from URLVoid - regex: 'alt="flag"\s/>\s\(\w+\)\s+([\w\s]+)' values: urlvoid_country_code pretty_name: Country from URLVoid unshorten: name: URL Unshorten otypes: - fqdn - url webscraper: request: url: http://www.toolsvoid.com/unshorten-url method: post data: urladdr: '{target}' results: - regex: 'class="myarea">(.*?))\d{1,3})' values: - AbuseIPReports pretty_name: 'AbuseIPDB reports' - regex: '((?<=most\srecent\sreport\swas\s)\d{1,3}\s\w+\s\w+)' values: - Last_seen pretty_name: 'Last seen' RansomwareTracker: name: RansomwareTracker otypes: - ipv4 webscraper: request: url: 'https://ransomwaretracker.abuse.ch/host/{target}' method: get results: - regex: '((?<=Host\sStatus:)\w+)' values: - Active pretty_name: 'Host Status' - regex: '((?<=\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2})\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2})' values: - Last_seen pretty_name: 'Last seen' - regex: '((?<=Malware:)\w+)' values: - ransomwareType pretty_name: 'Ransomware Type' sans: name: SANS otypes: - ipv4 webscraper: request: url: 'https://isc.sans.edu/api/ip/{target}' method: get results: - regex: 'attacks>(\d+)<' values: - sans_attacks pretty_name: SANS attacks - regex: 'count>(\d+)<' values: - sans_count pretty_name: SANS count - regex: 'count>(\d+)<' values: - sans_count pretty_name: SANS count - regex: 'maxdate>(\d{4}-\d{2}-\d{2})<' values: - sans_maxdate pretty_name: SANS maxdate - regex: 'mindate>(\d{4}-\d{2}-\d{2})<' values: - sans_mindate pretty_name: SANS mindate telize: name: Telize GeoIP default: False otypes: - ipv4 json: request: url: 'https://telize-v1.p.rapidapi.com/location/{target}' method: get headers: x-rapidapi-host: telize-v1.p.rapidapi.com x-rapidapi-key: Accept: application/json results: - key: continent_code pretty_name: GeoIP Continent Code - key: country_code pretty_name: GeoIP Country Code - key: country pretty_name: GeoIP Country - key: region_code pretty_name: GeoIP Region Code - key: region pretty_name: GeoIP Region - key: city pretty_name: GeoIP City - key: postal_code pretty_name: GeoIP Zip Code - key: latitude pretty_name: GeoIP Latitude - key: longitude pretty_name: GeoIP Longitude - key: timezone pretty_name: GeoIP Timezone - key: offset pretty_name: GeoIP UTC Offset - key: asn pretty_name: GeoIP ASN - key: isp pretty_name: GeoIP ISP maxmind: name: MaxMind GeoIP2 Precision default: False otypes: - ipv4 json: request: url: https://geoip.maxmind.com/geoip/v2.1/insights/{target} auth: maxmind results: - key: country.iso_code pretty_name: MaxMind Country Code - key: country.names.en pretty_name: MaxMind Country - key: subdivisions multi_match: keys: - iso_code pretty_name: MaxMind Region Code - key: subdivisions multi_match: keys: - names.en pretty_name: MaxMind Region - key: city.names.en pretty_name: MaxMind City - key: postal.code pretty_name: MaxMind Zip Code - key: location.latitude pretty_name: MaxMind Latitude - key: location.longitude pretty_name: MaxMind Longitude - key: location.time_zone pretty_name: MaxMind Timezone freegeoip: name: freegeoip.io default: true otypes: - ipv4 # - fqdn json: request: url: https://freegeoip.io/json/{target} results: - key: country_code pretty_name: GeoIP Country Code - key: country_name pretty_name: GeoIP Country # - key: region_code # pretty_name: GeoIP Region Code # - key: region_name # pretty_name: GeoIP Region - key: city pretty_name: GeoIP City # - key: zip_code # pretty_name: GeoIP Zip Code # - key: latitude # pretty_name: GeoIP Latitude # - key: longitude # pretty_name: GeoIP Longitude # - key: time_zone # pretty_name: GeoIP Timezone fortinet_classify: name: Fortinet Category default: True otypes: - ipv4 - fqdn - url webscraper: request: url: 'https://www.fortiguard.com/webfilter?q={target}' method: get results: - regex: 'Category:\s(.+)<\/h4>\s' values: - fortinet_category pretty_name: Fortinet URL Category vt_ip: name: VirusTotal pDNS otypes: - ipv4 json: request: url: https://www.virustotal.com/vtapi/v2/ip-address/report params: ip: '{target}' apikey: 308211ef74a1044ea98134424b3d20769451d25beda0b808a8b61036badc0ea1 method: get results: - key: resolutions multi_match: keys: - key: last_resolved regex: '(\d{4}\-\d{1,2}\-\d{1,2})' - hostname onlyif: key: last_resolved maxage: '-30d' pretty_name: pDNS data from VirusTotal - key: detected_urls multi_match: keys: - key: scan_date regex: '(\d{4}\-\d{1,2}\-\d{1,2})' - key: url regex: '(http.{1,70}/)' onlyif: key: scan_date maxage: '-30d' pretty_name: pDNS malicious URLs from VirusTotal # vt_ip: # name: VirusTotal pDNS # otypes: # - ip # webscraper: # request: # url: 'https://www.virustotal.com/en/ip-address/{target}/information/' # method: get # headers: # Accept: 'text/html, application/xhtml+xml, */*' # Accept-Language: 'en-US' # Accept-Encoding: 'gzip, deflate' # DNT: 1 # Connection: 'Keep-Alive' # results: # - regex: '(\d{4}\-\d{1,2}\-\d{1,2})\s+<.{30,70}/en/domain/(.{1,80})/information' # values: # - vt_pdns_date # - vt_pdns_domain # pretty_name: 'pDNS data from VirtusTotal' # - regex: '(\d{4}\-\d{1,2}\-\d{1,2}).{1,20}\s+<.{10,80}/en/url/.{1,100}/analysis/.{1,5}\s+(http.{1,70}/)' # values: # - vt_pdns_date # - vt_pdns_url # pretty_name: 'pDNS malicious URLs from VirusTotal' vt_domain: name: VirusTotal pDNS otypes: - fqdn json: request: url: https://www.virustotal.com/vtapi/v2/domain/report params: domain: '{target}' apikey: 308211ef74a1044ea98134424b3d20769451d25beda0b808a8b61036badc0ea1 method: get results: - key: resolutions multi_match: keys: - key: last_resolved regex: '(\d{4}\-\d{1,2}\-\d{1,2})' - ip_address pretty_name: pDNS data from VirusTotal - key: Websense ThreatSeeker category pretty_name: Websense ThreatSeeker category - key: Webutation domain info.Safety score pretty_name: Webutation Safety score # vt_domain: # name: VirusTotal pDNS # otypes: # - fqdn # webscraper: # request: # url: 'https://www.virustotal.com/en/domain/{target}/information/' # method: get # headers: # Accept: 'text/html, application/xhtml+xml, */*' # Accept-Language: 'en-US' # Accept-Encoding: 'gzip, deflate' # DNT: 1 # Connection: 'Keep-Alive' # results: # - regex: '(\d{4}\-\d{1,2}\-\d{1,2})\s+<.{30,70}/en/ip-address/(.{1,80})/information' # values: # - vt_pdns_date # - vt_pdns_ip # pretty_name: 'pDNS data from VirtusTotal' # - regex: '(\d{4}\-\d{1,2}\-\d{1,2}).{1,20}\s+<.{10,80}/en/url/.{1,100}/analysis/.{1,5}\s+(http.{1,70}/)' # values: # - vt_pdns_date # - vt_pdns_url # pretty_name: 'pDNS malicious URLs from VirusTotal' vt_url: name: VirusTotal URL Report otypes: - url json: request: url: https://www.virustotal.com/vtapi/v2/url/report method: get params: apikey: 308211ef74a1044ea98134424b3d20769451d25beda0b808a8b61036badc0ea1 resource: '{target}' results: - key: scan_date pretty_name: Date submitted - key: positives pretty_name: Detected scanners - key: total pretty_name: Total scanners - key: scans pretty_name: URL Scanner multi_match: keys: - '@' - result onlyif: detected vt_hash: name: VirusTotal File Report otypes: - hash - hash.sha1 - 'hash.sha256' json: request: url: https://www.virustotal.com/vtapi/v2/file/report method: get params: apikey: 308211ef74a1044ea98134424b3d20769451d25beda0b808a8b61036badc0ea1 resource: '{target}' results: - key: scan_date pretty_name: Date submitted - key: positives pretty_name: Detected engines - key: total pretty_name: Total engines - key: scans pretty_name: Scans multi_match: keys: - '@' - result onlyif: detected reputation_authority: name: Reputation Authority otypes: - fqdn - ipv4 webscraper: request: url: 'http://www.reputationauthority.org/lookup.php?ip={target}' method: get results: - regex: '>(\d{1,3}\/\d{1,3})' values: - ra_score pretty_name: Reputation Authority Score threatexpert: name: ThreatExpert otypes: - hash webscraper: request: url: 'http://www.threatexpert.com/report.aspx?md5={target}' method: get results: - regex: 'Submission\sreceived.\s(.+)' values: - threatexpert_date pretty_name: Hash found at ThreatExpert - regex: '1">(.{5,100})\s*(\d+-\d+)\s*\[D\]\s*(.*?)\s*\s*(.*?) - regex: '>(\d{2}\-\d{2})<' values: - vxvault_date pretty_name: Date found at VXVault - regex: '\[D\].{2,40}\Wphp\?id.{2,10}>(.{5,100})([a-zA-Z\s]+)' values: - php_activity_type pretty_name: ProjectHoneyPot activity type - regex: '>First Received From.+[\n\r\t\s]+.+[\n\r\t\s]+([a-zA-Z0-9,\s]+[a-zA-Z])[a-zA-Z0-9><"&:,()=;\s\t/]+Number Received' values: - php_first_mail pretty_name: ProjectHoneyPot first mail received - regex: '>Last Received From.+[\n\r\t\s]+.+[\n\r\t\s]+([a-zA-Z0-9,\s]+[a-zA-Z])[a-zA-Z0-9><":,()=;\s\t/]+Number Received' values: - php_last_mail pretty_name: ProjectHoneyPot last mail received - regex: '>Number Received.+[\n\r\t\s]+.+[\n\r\t\s]+([a-zA-Z0-9,\s\(\)]+[a-zA-Z\)])' values: - php_total_mail pretty_name: ProjectHoneyPot total mail received - regex: '>Spider First Seen.+[\n\r\t\s]+.+[\n\r\t\s]+([a-zA-Z0-9,\s]+[a-zA-Z])' values: - php_first_spider pretty_name: ProjectHoneyPot spider first seen - regex: '>Spider Last Seen.+[\n\r\t\s]+.+[\n\r\t\s]+([a-zA-Z0-9,\s\(\)]+[a-zA-Z])' values: - php_last_spider pretty_name: ProjectHoneyPot spider last seen - regex: '>Spider Sightings.+[\n\r\t\s]+.+[\n\r\t\s]+([a-zA-Z0-9,\s\(]+[a-zA-Z\)])' values: - php_spider_sightings pretty_name: ProjectHoneyPot total spider sightings - regex: '>User-Agents.+[\n\r\t\s]+.+[\n\r\t\s]+([a-zA-Z0-9\-\(\),\s]+[a-zA-Z\)])' values: - php_user_agents pretty_name: ProjectHoneyPot user-agent sightings - regex: '>First Post On.+[\n\r\t\s]+.+[\n\r\t\s]+([a-zA-Z0-9,\s]+[a-zA-Z])' values: - php_first_post pretty_name: ProjectHoneyPot first form post - regex: '>Last Post On.+[\n\r\t\s]+.+[\n\r\t\s]+([a-zA-Z0-9,\s]+[a-zA-Z])' values: - php_last_post pretty_name: ProjectHoneyPot last form post - regex: '>Form Posts.+[\n\r\t\s]+.+[\n\r\t\s]+([a-zA-Z0-9,\s\(\)]+[a-zA-Z\)])' values: - php_form_posts pretty_name: ProjectHoneyPot total form posts - regex: '>First Rule-Break On.+[\n\r\t\s]+.+[\n\r\t\s]+([a-zA-Z0-9,\s]+[a-zA-Z])' values: - php_first_rulebreak pretty_name: ProjectHoneyPot first rule break - regex: '>Last Rule-Break On.+[\n\r\t\s]+.+[\n\r\t\s]+([a-zA-Z0-9,\s]+[a-zA-Z])' values: - php_last_rulebreak pretty_name: ProjectHoneyPot last rule break - regex: '>Rule Breaks.+[\n\r\t\s]+.+[\n\r\t\s]+([a-zA-Z0-9,\s\(\)]+[a-zA-Z\)])' values: - php_total_rulebreaks pretty_name: ProjectHoneyPot total rule breaks - regex: 'Dictionary Attacks[a-zA-Z0-9><":,()=;\s\t/]+>First Received From.+[\n\r\t\s]+.+[\n\r\t\s]+([a-zA-Z0-9,\s]+[a-zA-Z])' values: - php_first_dictionary_attack pretty_name: ProjectHoneyPot first dictionary attack - regex: 'Dictionary Attacks[a-zA-Z0-9><"&:,()=;\s\t/]+>Last Received From.+[\n\r\t\s]+.+[\n\r\t\s]+([a-zA-Z0-9,\s]+[a-zA-Z])' values: - php_last_dictionary_attack pretty_name: ProjectHoneyPot last dictionary attack - regex: '>Dictionary Attacks.+[\n\r\t\s]+.+[\n\r\t\s]+([a-zA-Z0-9,\s\(\)]+[a-zA-Z\)])' values: - php_total_dictionary_attacks pretty_name: ProjectHoneyPot total dictionary attacks - regex: '>First Bad Host Appearance.+[\n\r\t\s]+.+[\n\r\t\s]+([a-zA-Z0-9,\s]+[a-zA-Z])' values: - php_first_bad_host pretty_name: ProjectHoneyPot first bad host - regex: '>Last Bad Host Appearance.+[\n\r\t\s]+.+[\n\r\t\s]+([a-zA-Z0-9,\s]+[a-zA-Z])' values: - php_last_bad_host pretty_name: ProjectHoneyPot last bad host - regex: '>Bad Host Appearances.+[\n\r\t\s]+.+[\n\r\t\s]+([a-zA-Z0-9,\s\(\)\-]+[a-zA-Z\)])' values: - php_total_bad_host pretty_name: ProjectHoneyPot total bad hosts - regex: '>Harvester First Seen.+[\n\r\t\s]+.+[\n\r\t\s]+([a-zA-Z0-9,\s]+[a-zA-Z])' values: - php_first_harvester pretty_name: ProjectHoneyPot harvester first seen - regex: '>Harvester Last Seen.+[\n\r\t\s]+.+[\n\r\t\s]+([a-zA-Z0-9,\s\(\)]+[a-zA-Z])' values: - php_last_harvester pretty_name: ProjectHoneyPot harvester last seen - regex: '>Harvester Sightings.+[\n\r\t\s]+.+[\n\r\t\s]+([a-zA-Z0-9,\(\s]+[a-zA-Z\)])' values: - php_total_harvester pretty_name: ProjectHoneyPot total harvester sightings - regex: '(?:>Harvester Results(?:.+[\n\s].+[\n\s]+)\s{2,}|(?:))(?!\s)([0-9a-zA-Z.\s:,()-]+)\s{2,}' values: - php_harvester_results pretty_name: ProjectHoneyPot harvester results mcafee_threat_domain: name: McAfee Threat otypes: - fqdn webscraper: request: url: 'https://www.mcafee.com/threat-intelligence/domain/default.aspx?domain={target}' method: get results: - regex: 'ctl00_breadcrumbContent_imgRisk"[^\r\n]+title="([A-Za-z]+)"' values: - mcafee_risk pretty_name: McAfee Web Risk - regex: '
  • [\n\s]*Web\sCategory:[\n\s]*([A-Z][A-Za-z\s/,]+?)[\n\s]*
  • ' values: - mcafee_category pretty_name: McAfee Web Category - regex: '
  • [\n\s]*Last\sSeen:[\n\s]*([0-9\-]+)[\n\s]*
  • ' values: - mcafee_last_seen pretty_name: McAfee Last Seen mcafee_threat_ip: name: McAfee Threat otypes: - ipv4 webscraper: request: url: 'https://www.mcafee.com/threat-intelligence/ip/default.aspx?ip={target}' method: get results: - regex: 'ctl00_breadcrumbContent_imgRisk"[^\r\n]+src="/img/Threat_IP/rep_([a-z]+)\.png"' values: - mcafee_risk pretty_name: McAfee Web Risk - regex: 'ctl00_breadcrumbContent_imgRisk1"[^\r\n]+src="/img/Threat_IP/rep_([a-z]+)\.png"' values: - mcafee_risk pretty_name: McAfee Email Risk - regex: 'ctl00_breadcrumbContent_imgRisk2"[^\r\n]+src="/img/Threat_IP/rep_([a-z]+)\.png"' values: - mcafee_risk pretty_name: McAfee Network Risk - regex: '
  • [\n\s]*Web\sCategory:[\n\s]*([A-Z][A-Za-z\s/,]+?)[\n\s]*
  • ' values: - mcafee_category pretty_name: McAfee Web Category stopforumspam: name: StopForumSpam otypes: - email webscraper: request: url: 'http://www.stopforumspam.com/search/{target}' method: get results: - regex: '>Found (0*[1-9]\d*) entries' values: - sfs_spam_count pretty_name: Spam email count cymru_mhr: name: Cymru MHR otypes: - hash - hash.sha1 webscraper: request: url: 'https://hash.cymru.com/cgi-bin/bulkmhr.cgi' method: post data: action: do_whois bulk_paste: '{target}' submit_paste: Submit results: - regex: '[a-f0-9]+\s(\d+)\s(\d+)' values: - cymru_mhr_detect_time - cymru_mhr_detect_pct pretty_name: Cymru MHR Detection Percent icsi_notary: name: ICSI Certificate Notary otypes: - sslfp dns: request: query: '{target_stripped}.notary.icsi.berkeley.edu' rrtype: txt results: - regex: 'version=1 first_seen=(\d+) last_seen=(\d+) times_seen=(\d+) validated=(\d+)' values: - icsi_first_seen - icsi_last_seen - icsi_times_seen - icsi_validated pretty_name: ICSI Notary Results totalhash_ip: name: TotalHash default: false otypes: - ip webscraper: request: url: 'https://totalhash.com/network/dnsrr:*{target}*%20or%20ip:{target}' method: get results: - regex: '/analysis/(\w{40}).+(\d{4}\-\d{1,2}\-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2})' values: - thip_hash - thip_date pretty_name: Totalhash domaintools_parsed_whois: name: DomainTools Whois default: false otypes: - fqdn json: request: url: 'https://api.domaintools.com/v1/{target}/whois/parsed' method: get params: api_username: api_key: results: - key: response.parsed_whois.contacts multi_match: keys: - '@' - name - country - email onlyif: name pretty_name: Whois Contacts - key: response.parsed_whois.created_date pretty_name: Domain registered regex: '(\d{4}\-\d{1,2}\-\d{1,2})' - key: response.parsed_whois.updated_date pretty_name: Whois updated regex: '(\d{4}\-\d{1,2}\-\d{1,2})' - key: response.parsed_whois.expired_date pretty_name: Domain expiration regex: '(\d{4}\-\d{1,2}\-\d{1,2})' - key: response.parsed_whois.name_servers pretty_name: Name Servers #match_all: true - key: response.parsed_whois.registrar pretty_name: Registrar Info multi_match: keys: - name - abuse_contact_phone - abuse_contact_email - url domaintools_reverse_whois: name: DomainTools Reverse Whois default: false otypes: - email json: request: url: 'https://api.domaintools.com/v1/reverse-whois/' method: get params: terms: '{target}' mode: purchase api_username: api_key: results: - key: response.domains match_all: true pretty_name: Registered domain - key: reponse.domain_count.current pretty_name: Currently active registered domains - key: response.domain_count.historic pretty_name: All registered domains domaintools_reputation: name: DomainTools Reputation default: false otypes: - fqdn json: request: url: 'https://api.domaintools.com/v1/reputation/' method: get params: domain: '{target}' include_reasons: 'true' api_username: api_key: results: - key: response.risk_score pretty_name: Risk Score - key: response.reasons pretty_name: Reasons dnsdb_ip: name: Farsight DNSDB default: False otypes: - ipv4 - ipv6 json: multi_json: true request: url: 'https://api.dnsdb.info/lookup/rdata/ip/{target}' method: get headers: Accept: application/json X-Api-Key: results: - key: '@' multi_match: keys: - rrname - rrtype - key: time_first format: as_time - key: time_last format: as_time labels: - Record Name - Record Type - First Seen - Last Seen dnsdb_fqdn: name: Farsight DNSDB default: False otypes: - fqdn json: multi_json: true request: url: 'https://api.dnsdb.info/lookup/rrset/name/{target}' method: get ignored_status_codes: - 404 params: time_last_after: relatime: '-7d' timezone: UTC format: as_epoch headers: Accept: application/json X-Api-Key: results: - key: '@' multi_match: keys: - rrtype - key: rdata # format: as_list - key: time_last format: as_time labels: - Record Type - Record Data - Last Seen onlyif: key: rrtype regex: "^(A|AAAA|MX|SPF|TXT)$" cif: name: Collective Intelligence Framework default: false otypes: - ipv4 - fqdn - email - hash json: request: url: 'https://cif/observables' method: get params: nolog: 1 confidence: 75 observable: '{target}' reporttime: relatime: '-2d' timezone: UTC reporttimeend: relatime: 'now' timezone: UTC headers: Accept: application/vnd.cif.v2+json Authorization: Token token= verify_ssl: False results: - key: '@' multi_match: keys: - asn - cc labels: - AS Number - Country Code - key: '@' multi_match: keys: - key: reporttime regex: '^(\d+-\d+-\d+)T' - confidence - key: tags format: as_list - provider - description labels: - Report Date - Confidence - Tags - Provider - Description threatcrowd_ip_report: name: ThreatCrowd IP Report default: True otypes: - ipv4 json: paginated: false request: url: 'https://www.threatcrowd.org/searchApi/v2/ip/report/?ip={target}' method: get ignored_status_codes: - 404 results: - key: 'resolutions' pretty_name: Passive DNS multi_match: keys: - domain - last_resolved labels: - Domain - Last Resolved onlyif: key: last_resolved maxage: '-30d' - key: 'hashes' pretty_name: Known Malware Hash match_all: true passivetotal_pdns: name: PassiveTotal Passive DNS default: False otypes: - fqdn - ipv4 json: request: url: 'https://api.passivetotal.org/v2/dns/passive' auth: passivetotal params: query: '{target}' method: get headers: Accept: application/json ignored_status_codes: - 401 results: - key: results format: as_list pretty_name: Results multi_match: keys: - key: resolve - key: queryValue pretty_name: Query Value passivetotal_whois: name: PassiveTotal Whois default: False otypes: - fqdn json: request: url: 'https://api.passivetotal.org/v2/whois' auth: passivetotal params: query: '{target}' method: get headers: Accept: application/json ignored_status_codes: - 401 results: - key: registryUpdatedAt pretty_name: Registry Updated At - key: domain pretty_name: Domain - key: billing pretty_name: Billing - key: zone pretty_name: Zone - key: nameServers pretty_name: Name Servers - key: registered pretty_name: Registered - key: lastLoadedAt pretty_name: Last Loaded At - key: whoisServer pretty_name: Whois Server - key: contactEmail pretty_name: Contact Email - key: admin pretty_name: Admin - key: expiresAt pretty_name: Expires At - key: registrar pretty_name: Registrar - key: tech pretty_name: Tech - key: registrant pretty_name: Registrant passivetotal_sslcert: name: PassiveTotal SSL Certificate History default: False otypes: - ipv4 json: request: url: 'https://api.passivetotal.org/v2/ssl-certificate/history' auth: passivetotal params: query: '{target}' method: get headers: Accept: application/json ignored_status_codes: - 401 results: - key: results multi_match: keys: - key: sha1 pretty_name: Sha1 - key: firstSeen pretty_name: First Seen - key: ipAddresses pretty_name: Ip Addresses - key: lastSeen pretty_name: Last Seen pretty_name: Results passivetotal_components: name: PassiveTotal Components default: False otypes: - fqdn json: request: url: 'https://api.passivetotal.org/v2/host-attributes/components' auth: passivetotal params: query: '{target}' method: get headers: Accept: application/json ignored_status_codes: - 401 results: - key: results multi_match: keys: - key: category pretty_name: Category - key: hostname pretty_name: Hostname - key: lastSeen pretty_name: Last Seen - key: firstSeen pretty_name: First Seen - key: label pretty_name: Label pretty_name: Results passivetotal_trackers: name: PassiveTotal Trackers default: False otypes: - fqdn json: request: url: 'https://api.passivetotal.org/v2/host-attributes/trackers' auth: passivetotal params: query: '{target}' method: get headers: Accept: application/json ignored_status_codes: - 401 results: - key: results multi_match: keys: - key: hostname pretty_name: Hostname - key: attributeType pretty_name: Type - key: attributeValue pretty_name: Value - key: lastSeen pretty_name: Last Seen - key: firstSeen pretty_name: First Seen pretty_name: Results fraudguard: name: FraudGuard default: False otypes: - ipv4 json: request: url: https://api.fraudguard.io/ip/{target} auth: fraudguard results: - key: isocode pretty_name: FraudGuard Country Code - key: country pretty_name: FraudGuard Country - key: state pretty_name: FraudGuard State - key: city pretty_name: FraudGuard City - key: discover_date pretty_name: FraudGuard Discovery Date - key: threat pretty_name: FraudGuard Threat Type - key: risk_level pretty_name: FraudGuard Risk Level shodan: name: Shodan default: False otypes: - ipv4 json: request: url: https://api.shodan.io/shodan/host/{target} params: key: results: - key: '@' multi_match: keys: - asn - org - city - region - country_code - postal_code pretty_name: Shodan Organization - key: hostnames match_all: true pretty_name: Shodan Hostnames - key: isp pretty_name: Shodan ISP - key: data multi_match: keys: - timestamp - transport - port - product - version pretty_name: Shodan Ports - key: data multi_match: keys: - transport - port - ssl.versions onlyif: ssl.versions pretty_name: Shodan SSL Versions - key: data multi_match: keys: - transport - port - ssl.cert.subject.CN - ssl.cert.fingerprint.sha256 onlyif: ssl.cert.fingerprint.sha256 pretty_name: Shodan SSL Certs ipinfoio: name: ipinfo.io default: False otypes: - ipv4 - ipv6 json: request: url: https://ipinfo.io/{target} headers: Accept: application/json results: - key: hostname pretty_name: ipinfo.io hostname - key: city pretty_name: ipinfo.io city - key: region pretty_name: ipinfo.io region - key: country pretty_name: ipinfo.io country - key: loc pretty_name: ipinfo.io geolocation - key: org pretty_name: ipinfo.io organization - key: postal pretty_name: ipinfo.io postal code xforce-malware: name: IBM XForce Malware Report default: False otypes: - ipv4 json: request: url: https://api.xforce.ibmcloud.com/ipr/malware/{target} auth: xforce results: - key: type pretty_name: malware type - key: md5 pretty_name: md5 - key: domain pretty_name: domain name - key: firstseen pretty_name: first seen - key: lastseen pretty_name: last seen hackedip: name: Hacked IP default: False otypes: - ipv4 json: request: url: http://www.hackedip.com/api.php?ip={target} results: - key: '@' format: as_list pretty_name: Hacked IP Threat List metadefender_hash: name: MetaDefender File Report default: False otypes: - hash - hash.sha1 - hash.sha256 json: request: url: https://api.metadefender.com/v2/hash/{target} method: get headers: apikey: results: - key: scan_results.start_time pretty_name: Date submitted - key: scan_results.total_detected_avs pretty_name: Detected engines - key: scan_results.total_avs pretty_name: Total engines - key: scan_results.scan_details pretty_name: Scans multi_match: keys: - '@' - threat_found onlyif: scan_result_i # misp: # name: MISP # default: true # otypes: # - ipv4 # - url # - email # - fqdn # - hash # - hash.sha1 # - hash.sha256 # json: # request: # url: https://***YOUR_MISP_HERE***/events/restSearch/download/{target}/null/null/null/null/7 # method: get # headers: # Authorization: ***YOUR_APIKEY_HERE*** # results: # - key: response # pretty_name: MISP Events # multi_match: # keys: # - Event.date # - Event.id # - Event.info greynoise: # This entry is for the GreyNoise *community* API name: GreyNoise otypes: - ipv4 json: request: url: https://api.greynoise.io/v3/community/{target} # headers: # key: ***YOUR_APIKEY_HERE*** # you can get this from https://viz.greynoise.io/account/ ignored_status_codes: - 404 results: - key: noise pretty_name: GreyNoise Known Scanner - key: riot pretty_name: GreyNoise Rule-It-OuT - key: classification pretty_name: GreyNoise Classification - key: name pretty_name: GreyNoise Name greynoise_ent: # This entry is for the GreyNoise *enterprise* API name: GreyNoise default: False otypes: - ipv4 json: request: url: https://enterprise.api.greynoise.io/v2/noise/context/{target} headers: key: YOUR_APIKEY_HERE ignored_status_codes: - 404 results: - key: seen pretty_name: GreyNoise Known Scanner - key: actor pretty_name: GreyNoise Actor - key: tags pretty_name: GreyNoise Reason - key: metadata.category pretty_name: GreyNoise Category - key: first_seen pretty_name: GreyNoise First Seen - key: last_seen pretty_name: GreyNoise Last Seen - key: raw_data.web.useragents pretty_name: GreyNoise User-agent - key: raw_data.scan multi_match: keys: - port - protocol pretty_name: GreyNoise Observations macvendors: name: MACVendors default: true otypes: - mac webscraper: request: url: 'https://api.macvendors.com/{target}' method: get results: - regex: '(.+)' values: - vendor pretty_name: Mac Address Vendor