SigmaConverttoQuery

Allows converting a Sigma Rule indicator into a SIEM query.

python · Sigma

Details

IDSigmaConverttoQuery
Languagepython
From Version6.10.0
Docker Imagedemisto/pysigma:1.0.0.10133006
TagsSigma

README

Allows converting a Sigma Rule indicator into a SIEM query.

Script Data


Name Description
Script Type python3
Tags Sigma

Inputs


Argument Name Description
indicator The Sigma Rule indicator to convert to a query
SIEM  

Outputs


There are no outputs for this script.

import json
from unittest.mock import patch

import demistomock as demisto
import pytest
import SigmaConverttoQuery
from SigmaConverttoQuery import get_sigma_dictionary, main


def load_file(path: str) -> str:
    with open(path) as f:
        return f.read()


@pytest.mark.parametrize(
    "indicator, result, expect_exception",
    [
        ("Okta User Account Locked Out", load_file("test_data/sigma_rule.yml"), False),
        ("No Indicator", "No indicator found with value No Indicator", True),
    ],
)
@patch.object(SigmaConverttoQuery, "return_error")
@patch.object(demisto, "executeCommand")
def test_get_sigma_dictionary(mock_executeCommand, mock_return_error, indicator, result, expect_exception):
    mock_executeCommand.side_effect = [json.loads(load_file("test_data/response.json")), []]

    if expect_exception:
        mock_return_error.side_effect = Exception(result)
        with pytest.raises(Exception, match=result):
            main()

    else:
        sigma_dict = get_sigma_dictionary(indicator)
        assert sigma_dict == result


@patch.object(demisto, "args")
@patch.object(SigmaConverttoQuery, "return_results")
@patch.object(SigmaConverttoQuery, "get_sigma_dictionary")
def test_main(mock_get_sigma_dictionary, mock_return_results, mock_args):
    mock_args.return_value = {"SIEM": "Splunk", "indicator": "Test"}
    mock_get_sigma_dictionary.return_value = load_file("test_data/sigma_rule.yml")
    main()
    args, kwargs = mock_return_results.call_args
    assert args[0].readable_output == 'displaymessage="Max sign in attempts exceeded"'