탐지 규칙은 Elastic Security에서 사용하는 규칙의 홈입니다. 이 리포지토리는 Elastic Security의 탐지 엔진에 대한 규칙의 개발, 유지 관리, 테스트, 검증 및 릴리스에 사용됩니다.
이 리포지토리는 Elastic의 블로그 게시물인 Elastic Security가 공개 탐지 규칙 리포지토리를 엽니다에서 처음 발표되었습니다. 추가 콘텐츠를 보려면 함께 제공되는 웹 세미나 Elastic Security: 탐지 규칙을 위한 공용 저장소 소개를 참조하세요.
탐지 규칙에는 정적 규칙 파일 이상의 내용이 포함되어 있습니다. 이 저장소에는 Python의 단위 테스트 및 Kibana의 감지 엔진과 통합을 위한 코드도 포함되어 있습니다.
접는 사람 | 설명 |
---|---|
detection_rules/ | 규칙 구문 분석, 검증 및 패키징을 위한 Python 모듈 |
etc/ | ECS 및 Beats 스키마와 같은 기타 파일 |
hunting/ | 위협 헌팅 패키지 및 쿼리가 저장되는 루트 디렉터리 |
kibana/ | Kibana 및 탐지 엔진에 대한 API 호출을 처리하기 위한 Python 라이브러리 |
kql/ | Kibana 쿼리 언어를 구문 분석하고 검증하기 위한 Python 라이브러리 |
rta/ | 규칙 테스트에 사용되는 공격자 기술을 에뮬레이션하는 데 사용되는 Red Team Automation 코드 |
rules/ | 규칙이 저장되는 루트 디렉터리 |
rules_building_block/ | 빌딩 블록 규칙이 저장되는 루트 디렉터리 |
tests/ | 단위 테스트 규칙을 위한 Python 코드 |
.toml
파일을 수동으로 생성하여 규칙을 추가할 수 있지만 권장하지는 않습니다. 이 저장소는 규칙 생성 및 단위 테스트를 지원하는 Python 모듈로도 구성되어 있습니다. Python 3.12+가 있다고 가정하고 아래 명령을 실행하여 makefile을 사용하여 종속성을 설치합니다.
✗ make
python3.12 -m pip install --upgrade pip setuptools
Looking in indexes: https://pypi.org/simple
Requirement already satisfied: pip in /opt/homebrew/lib/python3.12/site-packages (24.0)
Requirement already satisfied: setuptools in /opt/homebrew/lib/python3.12/site-packages (69.1.1)
python3.12 -m venv ./env/detection-rules-build
./env/detection-rules-build/bin/pip install --upgrade pip setuptools
Looking in indexes: https://pypi.org/simple
Requirement already satisfied: pip in ./env/detection-rules-build/lib/python3.12/site-packages (24.0)
Collecting setuptools
Using cached setuptools-69.1.1-py3-none-any.whl.metadata (6.2 kB)
Using cached setuptools-69.1.1-py3-none-any.whl (819 kB)
Installing collected packages: setuptools
Successfully installed setuptools-69.1.1
Installing kql and kibana packages...
...
또는 다음 명령을 사용하여 종속성을 설치합니다.
$ pip3 install " .[dev] "
Collecting jsl==0.2.4
Downloading jsl-0.2.4.tar.gz (21 kB)
Collecting jsonschema==3.2.0
Downloading jsonschema-3.2.0-py2.py3-none-any.whl (56 kB)
|████████████████████████████████| 56 kB 318 kB/s
Collecting requests==2.22.0
Downloading requests-2.22.0-py2.py3-none-any.whl (57 kB)
|████████████████████████████████| 57 kB 1.2 MB/s
Collecting Click==7.0
Downloading Click-7.0-py2.py3-none-any.whl (81 kB)
|████████████████████████████████| 81 kB 2.6 MB/s
...
참고: kibana
및 kql
패키지는 PyPI에서 사용할 수 없으며 lib
디렉터리에서 설치해야 합니다. hunting
패키지에는 pip3 install ".[hunting]
으로 설치할 선택적 종속성이 있습니다.
# Install from the repository
pip3 install git+https://github.com/elastic/detection-rules.git#subdirectory=kibana
pip3 install git+https://github.com/elastic/detection-rules.git#subdirectory=kql
# Or locally for development
pip3 install lib/kibana lib/kql
가상 환경을 사용하는 경우 가상 환경을 활성화해야 합니다. make
통해 설치하면 관련 가상 환경이 env/detection-rules-build/
에 생성됩니다. Python 3.12 환경을 사용하는 데 문제가 있는 경우 문제 해결 가이드의 관련 섹션을 참조하세요.
모든 것이 제대로 설치되었는지 확인하려면 --help
플래그를 사용하여 실행하세요.
$ python -m detection_rules --help
Usage: detection_rules [OPTIONS] COMMAND [ARGS]...
Commands for detection-rules repository.
Options:
-d, --debug / -n, --no-debug Print full exception stacktrace on errors
-h, --help Show this message and exit.
Commands:
create-rule Create a detection rule.
dev Commands for development and management by internal...
es Commands for integrating with Elasticsearch.
import-rules Import rules from json, toml, or Kibana exported rule...
kibana Commands for integrating with Kibana.
mass-update Update multiple rules based on eql results.
normalize-data Normalize Elasticsearch data timestamps and sort.
rule-search Use KQL or EQL to find matching rules.
test Run unit tests over all of the rules.
toml-lint Cleanup files with some simple toml formatting.
validate-all Check if all rules validates against a schema.
validate-rule Check if a rule staged in rules dir validates against a...
view-rule View an internal rule or specified rule file.
메모:
Scriptspywin32_postinstall.py -install
실행해야 할 수도 있습니다. 기여 가이드에서는 탐지 규칙에 기여할 때 create-rule
및 test
명령을 사용하여 새 규칙을 생성하고 테스트하는 방법을 설명합니다.
고급 명령줄 인터페이스(CLI) 사용법에 대해서는 CLI 가이드를 참조하세요.
탐지 규칙에 대한 귀하의 기여를 환영합니다! 기여하기 전에 이 저장소, 디렉터리 구조, 규칙 생성에 대한 철학을 숙지하시기 바랍니다. 기여할 준비가 되면 기여 가이드를 읽고 탐지 아이디어를 프로덕션 규칙으로 전환하고 테스트를 통해 검증하는 방법을 알아보세요.
규칙, 코드, RTA 등 이 리포지토리의 모든 항목은 Elastic License v2에 따라 라이선스가 부여됩니다. 이러한 규칙은 Elastic Security 애플리케이션 내의 탐지 엔진 컨텍스트에서 사용되도록 설계되었습니다. Elastic Cloud 관리형 서비스나 무료 기능 전체가 포함된 Elastic Stack 소프트웨어의 기본 배포판을 사용하고 계시다면, 처음 탐지 엔진으로 이동할 때 최신 규칙을 얻으실 수 있습니다.
때로는 MIT나 Apache 2.0과 같이 이미 라이센스가 있는 다른 저장소에서 규칙을 가져오고 싶을 수도 있습니다. 라이선스가 Elastic License v2에 따른 재라이선싱을 허용하는 한 이는 환영할 만한 일입니다. 우리는 해당 라이선스 공지를 NOTICE.txt
에 보관하고 다른 모든 규칙과 함께 Elastic License v2로 하위 라이선스를 유지합니다. 또한 기여자는 Elastic 리포지토리에 코드를 기여하기 전에 기여자 라이선스 계약에 서명해야 합니다.