Secneurx Threat Feeds

SecneurX provides real-time threat intelligence that protects companies against the latest cyber threats, including APTs, phishing, malware, ransomware, data exfiltration, and brand infringement. Security teams rely on our dependable and rich data to expand their threat landscape visibility, resulting in improved detection rates and response times.

Data Enrichment & Threat Intelligence · Secneurx Threat Feeds · Feed

Details

IDSecneurx Threat Feeds
ProviderSecneurX
CategoryData Enrichment & Threat Intelligence
From Version6.2.0
Docker Imagedemisto/python3:3.12.13.10116658
Supported ModulesAgentix XSIAM

README

SecneurX provides real-time threat intelligence that protects companies against the latest cyber threats, including APTs, phishing, malware, ransomware, data exfiltration, and brand infringement. Security teams rely on our dependable and rich data to expand their threat landscape visibility, resulting in improved detection rates and response times.
This integration was integrated and tested with version 1.0.0 of SecneurX Threat Feeds

Configure SecneurX Threat Feeds in Cortex

Parameter Description Required
Feed URL Input the url of SecneurX Threat Intelligence Feeds. True
API Key Input the API key for fetching feed from the source. True
Fetch indicators Select this option if you want this integration instance to fetch indicators from the SecneurX Threat Intelligence feed. False
Indicator Reputation Indicators from this integration instance will be marked with this reputation False
Tags Supports CSV values. False
Source Reliability Reliability of the source providing the intelligence data True
Feed Fetch Interval How often do fetch indicators from this integration instance. You can specify the interval in days, hours, or minutes. True
Feed Expiration Policy   False
Traffic Light Protocol Color The Traffic Light Protocol (TLP) designation to apply to indicators fetched from the feed False
First fetch First fetch query e.g., 12 hours, 7 days. SecurityScorecard provides a maximum of 7 days back. To ensure no alerts are missed, it’s recommended to use a value less than 2 days. False
Bypass exclusion list When selected, the exclusion list is ignored for indicators from this feed. This means that if an indicator from this feed is on the exclusion list, the indicator might still be added to the system. False
proxy Use system proxy settings False
insecure Trust any certificate (not secure) False

Commands

You can execute these commands from the CLI, as part of an automation, or in a playbook.
After you successfully execute a command, a DBot message appears in the War Room with the command details.

snxfeeds-get-indicators


Retrieves a limited number of the indicators.

Base Command

snxfeeds-get-indicators

Input

Argument Name Description Required
limit The maximum number of indicators to return. The default is 10. Optional

Context Output

There is no context output for this command.

Human Readable Output

Type Value Fields
Domain mak.logupdates.xyz firstseenbysource: 2022-06-13T10:37:23Z, indicatoridentification: indicator–c0f9425f-a3e9-4fcf-85c5-58e809f4e763, verdict: Malicious, tags: apt , Donot APT, modified: 2022-06-13T10:37:23Z, reportedby: SecneurX Threat Feeds

Notes

Be aware, due to API limitations, fetch-indicators fetches only a limited number of indicators for each interval.
Fetching all the indicators can take up to 24 hours.

Configuration parameters

  • url — Feed URL (required)
  • apikey — API Key (required)
  • feed — Fetch indicators
  • feedReputation — Indicator Reputation
  • feedTags — Tags
  • feedReliability — Source Reliability (required)
  • feedFetchInterval — Feed Fetch Interval
  • feedExpirationPolicy
  • tlp_color — Traffic Light Protocol Color
  • first_fetch — First fetch
  • feedExpirationInterval
  • feedBypassExclusionList — Bypass exclusion list
  • insecure — Trust any certificate (not secure)
  • proxy — Use system proxy settings

Commands (1)

  • snxfeeds-get-indicators

    Retrieves a limited number of the indicators.

import json
from datetime import datetime, timedelta

BASE_URL = "http://test.com"
API_KEY = "1234"


def util_load_json(path):
    with open(path, encoding="utf-8") as f:
        return json.loads(f.read())


def test_fetch_indicators(requests_mock):
    from SecneurXThreatFeeds import Client, fetchThreatFeeds

    mock_response = util_load_json("test_data/fetch_indicators.json")
    requests_mock.get(f"{BASE_URL}/getfeeds", json=mock_response)
    client = Client(base_url=BASE_URL, verify=False, headers={"x-api-key": API_KEY}, proxy=False)

    indicators = fetchThreatFeeds(client, None)
    assert len(indicators) == 4
    assert indicators[1]["fields"]["indicatoridentification"] == mock_response["objects"][1]["id"]
    assert indicators[1]["rawJson"]["pattern"] == mock_response["objects"][1]["pattern"]


def test_get_list_days():
    from SecneurXThreatFeeds import getListOfDays

    currentDate = datetime.now()
    startDate = currentDate - timedelta(days=2)
    endDate = currentDate.date()
    lastDateList = getListOfDays(currentDate.date(), currentDate.date())
    dateList = getListOfDays(startDate.date(), endDate)
    assert len(lastDateList) == 1
    assert len(dateList) == 2


def test_json_parse():
    from SecneurXThreatFeeds import parseIndicators

    mock_response = util_load_json("test_data/fetch_indicators.json")
    indicatorJson = parseIndicators(mock_response)
    assert len(indicatorJson) == 4
    assert indicatorJson[0]["fields"]["indicatoridentification"] == mock_response["objects"][0]["id"]
    assert indicatorJson[0]["value"] == mock_response["objects"][0]["name"]


def test_module_connection(requests_mock):
    from SecneurXThreatFeeds import Client, test_module

    mock_response = util_load_json("test_data/fetch_indicators.json")
    requests_mock.get(f"{BASE_URL}/getfeeds", json=mock_response)
    client = Client(base_url=BASE_URL, verify=False, headers={"x-api-key": API_KEY}, proxy=False)
    msg = test_module(client)
    assert msg == "ok"


def test_module_connection_failure(requests_mock):
    from SecneurXThreatFeeds import Client, test_module

    requests_mock.get(f"{BASE_URL}/getfeeds", json=None)
    client = Client(base_url=BASE_URL, verify=False, headers={"x-api-key": API_KEY}, proxy=False)
    try:
        test_module(client)
    except Exception as e:
        assert e.message == "Configuration Error"


def test_fetch_feed_dates():
    from SecneurXThreatFeeds import fetchFeedDates

    startDate, endDate = fetchFeedDates(None, "2 days")
    startDate_1, endDate_1 = fetchFeedDates("2022-06-29", None)
    assert endDate == datetime.now().date()
    assert endDate_1 == datetime.now().date()


def test_create_indicators(requests_mock):
    from SecneurXThreatFeeds import Client, createIndicatorsInDemisto

    requests_mock.get(f"{BASE_URL}/getfeeds", json=False)
    client = Client(base_url=BASE_URL, verify=False, headers={"x-api-key": API_KEY}, proxy=False)
    dateList = [None]
    result = createIndicatorsInDemisto(client, dateList, True)
    assert result is False