
pySigma 기반 Sigma 명령줄 인터페이스
이것은 pySigma 라이브러리를 사용하여 Sigma 규칙을 관리, 나열하고 쿼리 언어로 변환하는 Sigma 커맨드 라인 인터페이스입니다.
Sigma CLI를 설치하는 가장 쉬운 방법은 pipx 또는 pip를 사용하는 것입니다. 이를 위해 다음 중 하나를 실행하세요:
python -m pipx install sigma-cli
python -m pip install sigma-cli
macOS에서는 다음을 사용하세요
python3 -m pip install sigma-cli
brew install sigma-cli
또 다른 방법은 Poetry로 관리되는 가상 환경에서 소스로부터 실행하는 것입니다:
git clone https://github.com/SigmaHQ/sigma-cli.git
cd sigma-cli
poetry install
poetry shell
CLI는 sigma 명령으로 사용할 수 있습니다. 일반적인 호출 예는 다음과 같습니다:
sigma convert -t <backend> -p <processing pipeline 1> -p <processing pipeline 2> [...] <directory or file>
예를 들어, 디렉토리의 프로세스 생성 Sigma 규칙을 Sysmon 로그용 Splunk 쿼리로 변환하려면 다음을 실행하세요:
sigma convert -t splunk -p sysmon sigma/rules/windows/process_creation
변환을 수행하기 전에 필수 백엔드를 다음 명령으로 설치해야 합니다.
사용 가능한 모든 플러그인을 나열하려면 다음 명령을 실행하세요:
sigma plugin list
원하는 플러그인을 설치하세요:
sigma plugin install <backend>
예를 들어 splunk 백엔드를 설치하려면 다음을 실행하세요:
sigma plugin install splunk
사용 가능한 변환 백엔드와 처리 파이프라인은 sigma list로 나열할 수 있습니다.
-O 또는 --backend-option을 사용하여 백엔드에 옵션을 key=value 쌍으로 전달하세요 (-O testparam=123) .
이 백엔드 옵션 매개변수는 여러 번 사용할 수 있습니다 (-O first=123 -O second=456).
백엔드는 다양한 출력 형식을 지원할 수 있습니다(예: 일반 쿼리와 대상 시스템으로 가져올 수 있는 파일).
이러한 형식은 sigma list formats <backend>로 나열할 수 있으며 -f 옵션으로 변환 시 지정할 수
있습니다.
또한 -o로 출력 파일을 지정할 수 있습니다.
출력 형식 및 파일 예시:
sigma convert -t splunk -f savedsearches -p sysmon -o savedsearches.conf sigma/rules/windows/process_creation
변환된 검색이 포함된 Splunk savedsearches.conf를 출력합니다.
여러 규칙을 별도의 파일로 변환해야 하는 시나리오(예: 버전 관리 또는 선택적 배포)의 경우 --output-dir 매개변수를 --output-filename-template과 함께 사용하세요:
sigma convert -t esql -p ecs_windows --output-dir translated_rules/ rules/
이렇게 하면 translated_rules/ 디렉토리에 변환된 각 규칙에 대한 별도의 파일이 생성됩니다.
템플릿 변수:
--output-filename-template 매개변수는 다음 변수를 허용합니다:
{path}: 상대 소스 디렉토리 경로 (예: rules/windows/rule.yml의 경우 windows){stem}: 확장자가 없는 파일 이름 (예: rule.yml의 경우 rule){index}: 여러 쿼리를 생성하는 규칙의 쿼리 인덱스 (쿼리가 하나만 있으면 비어 있음)예시:
평면 출력 구조 (모든 파일을 한 디렉토리에):
sigma convert -t esql -p ecs_windows --output-dir translated/ --output-filename-template "{stem}.esql" rules/
디렉토리 구조 유지:
sigma convert -t esql -p ecs_windows --output-dir translated/ --output-filename-template "{path}/{stem}.esql" rules/
여러 쿼리가 있는 규칙 처리:
sigma convert -t esql -p ecs_windows --output-dir translated/ --output-filename-template "{stem}-{index}.esql" rules/
다음과 같은 입력 구조가 주어졌을 때:
rules/
├── windows/
│ └── rule_1.yml
├── linux/
│ └── rule_2.yml
--output-filename-template "{path}/{stem}.esql"을 사용하면 출력은 다음과 같습니다:
translated/
├── windows/
│ └── rule_1.esql
├── linux/
│ └── rule_2.esql
해당 패키지를 다음과 같이 종속성으로 추가하여 백엔드와 파이프라인을 통합할 수 있습니다:
poetry add <package name>
백엔드는 다음 매개변수를 가진 Backend named tuple을 생성하여 sigma/cli/backends.py의 backends 사전에
추가해야 합니다:
sigma list targets)에서 사용자에게 표시되는 표시 이름.-f 매개변수에 사용)을 형식 목록(sigma list formats <backend>)에 표시되는 형식 설명에 매핑하는
사전. 형식은 백엔드에서 지원해야 합니다!사전 키는 -t 매개변수에 사용되는 이름입니다.
처리 파이프라인은 sigma/cli/pipelines.py의 pipelines 변수 사전에 정의됩니다. 이 변수는 -p 매개변수에
사용할 수 있는 식별자를 ProcessingPipeline 객체를 반환하는 함수에 매핑하는 사전으로 인스턴스화된
ProcessingPipelineResolver를 포함합니다. 파이프라인 목록(sigma list pipelines)에 표시되는 설명 텍스트는
ProcessingPipeline 객체의 name 속성에서 제공됩니다.
이 프로젝트는 현재 다음 사람이 유지 관리합니다: