SigmaHQ/README.md
2019-02-16 09:51:02 +01:00

9.6 KiB

Build Status

sigma_logo

Sigma

Generic Signature Format for SIEM Systems

What is Sigma

Sigma is a generic and open signature format that allows you to describe relevant log events in a straight forward manner. The rule format is very flexible, easy to write and applicable to any type of log file. The main purpose of this project is to provide a structured form in which researchers or analysts can describe their once developed detection methods and make them shareable with others.

Sigma is for log files what Snort is for network traffic and YARA is for files.

This repository contains:

  • Sigma rule specification in the Wiki
  • Open repository for sigma signatures in the ./rulessubfolder
  • A converter that generate searches/queries for different SIEM systems [work in progress]

sigma_description

Hack.lu 2017 Talk

Sigma - Generic Signatures for Log Events

SANS Webcast on MITRE ATT&CK and Sigma

The SANS webcast on Sigma contains a very good 20 min introduction to the project by John Hubbart from minute 39 onward. (SANS account required; registration is free)

MITRE ATT&CK and Sigma Alerting Webcast Recording

Use Cases

  • Describe your detection method in Sigma to make it sharable
  • Write and your SIEM searches in Sigma to avoid a vendor lock-in
  • Share the signature in the appendix of your analysis along with IOCs and YARA rules
  • Share the signature in threat intel communities - e.g. via MISP
  • Provide Sigma signatures for malicious behaviour in your own application

Why Sigma

Today, everyone collects log data for analysis. People start working on their own, processing numerous white papers, blog posts and log analysis guidelines, extracting the necessary information and build their own searches and dashboard. Some of their searches and correlations are great and very useful but they lack a standardized format in which they can share their work with others.

Others provide excellent analyses, include IOCs and YARA rules to detect the malicious files and network connections, but have no way to describe a specific or generic detection method in log events. Sigma is meant to be an open standard in which such detection mechanisms can be defined, shared and collected in order to improve the detection capabilities for everyone.

Slides

See the first slide deck that I prepared for a private conference in mid January 2017.

Sigma - Make Security Monitoring Great Again

Specification

The specifications can be found in the Wiki.

The current specification is a proposal. Feedback is requested.

Getting Started

Rule Creation

Florian wrote a short rule creation tutorial that can help you getting started.

Rule Usage

  1. Download or clone the respository
  2. Check the ./rules sub directory for an overview on the rule base
  3. Run python sigmac --help in folder ./tools to get a help on the rule converter
  4. Convert a rule of your choice with sigmac like python sigmac -t splunk ../rules/windows/builtin/win_susp_process_creations.yml
  5. Convert a whole rule directory with python sigmac -t splunk -r ../rules/proxy/
  6. Check the ./tools/config folder and the wiki if you need custom field or log source mappings in your environment

Examples

Windows 'Security' Eventlog: Access to LSASS Process with Certain Access Mask / Object Type (experimental) sigma_rule example2

Sysmon: Remote Thread Creation in LSASS Process sigma_rule example1

Web Server Access Logs: Web Shell Detection sigma_rule example3

Sysmon: Web Shell Detection sigma_rule example4

Windows 'Security' Eventlog: Suspicious Number of Failed Logons from a Single Source Workstation sigma_rule example5

Sigma Tools

Sigmac

Sigmac converts sigma rules into queries or inputs of the supported targets listed below. It acts as a frontend to the Sigma library that may be used to integrate Sigma support in other projects. Further, there's merge_sigma.py which merges multiple YAML documents of a Sigma rule collection into simple Sigma rules.

sigmac_converter

Supported Targets

Current work-in-progress

New targets are continuously developed. You can get a list of supported targets with sigmac --target-list or sigmac -l.

Requirements

The usage of Sigmac (the Sigma Rule Converter) or the underlying library requires Python >= 3.5 and PyYAML.

Installation

It's available on PyPI. Install with:

pip3 install sigmatools

Alternatively, if used from the Sigma Github repository, the Python dependencies can be installed with:

pip3 install -r tools/requirements.txt

For development (e.g. execution of integration tests with make and packaging), further dependencies are required and can be installed with:

pip3 install -r tools/requirements-devel.txt

Sigma2MISP

Import Sigma rules to MISP events. Depends on PyMISP.

Parameters that aren't changed frequently (--url, --key) can be put without the prefixing dashes -- into a file and included with @filename as parameter on the command line.

Example: misp.conf:

url https://host
key foobarfoobarfoobarfoobarfoobarfoobarfoo 

Load Sigma rule into MISP event 1234:

sigma2misp @misp.conf --event 1234 sigma_rule.py

Load Sigma rules in directory sigma_rules/ into one newly created MISP event with info set to Test Event:

sigma2misp @misp.conf --same-event --info "Test Event" -r sigma_rules/

Evt2Sigma

Evt2Sigma helps you with the rule creation. It generates a Sigma rule from a log entry.

Contributed Scripts

The directory contrib contains scripts that were contributed by the community:

  • sigma2elastalert.pyi by David Routin: A script that converts Sigma rules to Elastalert configurations. This tool uses sigmac and expects it in its path.

These tools are not part of the main toolchain and maintained separately by their authors.

Next Steps

  • Integration of MITRE ATT&CK framework identifier to the rule set
  • Integration into Threat Intel Exchanges
  • Attempts to convince others to use the rule format in their reports, threat feeds, blog posts, threat sharing platforms

Projects that use Sigma

Licenses

The content of this repository is released under the following licenses:

Credits

This is a private project mainly developed by Florian Roth and Thomas Patzke with feedback from many fellow analysts and friends. Rules are our own or have been drived from blog posts, tweets or other public sources that are referenced in the rules.

Info Graphic

sigmac_info_graphic