
ओपन-सोर्स डिटेक्शन इंजीनियरिंग टूल जो सुरक्षा डिटेक्शनों को शुरू से अंत तक ट्रेस करता है और पहले विफल होने वाले चरण की पहचान करता है।
एक डिटेक्शन को फायर होना चाहिए था। यह नहीं हुआ। DetectTrace आपको बताता है कि ठीक क्यों।
DetectTrace एक ओपन-सोर्स डिटेक्शन इंजीनियरिंग टूल है जो सुरक्षा डिटेक्शनों का एंड-टू-एंड परीक्षण करता है और पहले विफल होने वाले चरण का पता लगाता है।
केवल एक SIEM क्वेरी का परीक्षण करने के बजाय, DetectTrace एक डिटेक्शन को एक पाइपलाइन के रूप में मानता है:
test behaviour
-> telemetry
-> ingestion
-> normalization/schema
-> rule evaluation
-> rule execution
-> alert generation
एक DetectSpec घोषित करता है कि क्या होना चाहिए। DetectTrace इस बात का प्रमाण एकत्र करता है कि वास्तव में क्या हुआ, अनुबंध का मूल्यांकन करता है, पहली सिद्ध विफलता पर कारणात्मक तर्क रोक देता है, और निर्भर डाउनस्ट्रीम चरणों को BLOCKED के रूप में चिह्नित करता है।
वर्तमान लाइव बैकएंड Elastic Security है। DetectTrace में स्थानीय विकास और रिग्रेशन परीक्षण के लिए एक नियतात्मक फ़ाइल-आधारित मोड भी शामिल है।
डिटेक्शन विफलताओं का निदान अक्सर मैन्युअल रूप से किया जाता है:
DetectTrace उन प्रश्नों को निष्पादन योग्य जाँचों और प्रमाणों में बदल देता है।
उदाहरण विफलता:
Test event PASS
Backend connection PASS
Telemetry index PASS
Telemetry located PASS
Normalization FAIL
Rule BLOCKED
Elastic rule exists BLOCKED
Elastic rule enabled BLOCKED
Rule execution BLOCKED
Elastic alert BLOCKED
RESULT
------------------------------------------------------------------------
Required field 'process.command_line' is absent, but the value from
'winlog.event_data.CommandLine' survived at 'process.args'.
Probable schema/mapping drift.
Confidence: HIGH
First failing stage: NORMALIZATION
Failure code: SCHEMA_DRIFT
महत्वपूर्ण बात केवल यह नहीं है कि डिटेक्शन विफल हुआ। DetectTrace बताता है कि डिटेक्शन पथ पहली बार कहाँ अमान्य हुआ और क्यों।
detecttrace.run_id का उपयोग करके सहसंबद्ध Elastic Security परीक्षणdetecttrace doctor पर्यावरण जाँचDetectTrace नहीं है:
आक्रमण/परीक्षण निष्पादन को बाद में एकीकृत किया जा सकता है। DetectTrace का काम डिटेक्शन पथ को सत्यापित करना और देखे गए प्रमाणों से विफलताओं का निदान करना है।
CI सूट वर्तमान में Python 3.10, 3.11, 3.12, और 3.13 का परीक्षण करता है।
रिपॉज़िटरी क्लोन करें, एक वर्चुअल एनवायरनमेंट बनाएँ, और DetectTrace इंस्टॉल करें।
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -e .
python -m venv .venv
source .venv/bin/activate
python -m pip install -e .
इंस्टॉलेशन जाँचें:
detecttrace --version
एक चलाने योग्य स्टार्टर प्रोजेक्ट बनाएँ:
detecttrace init demo
फिर:
cd demo
detecttrace validate detectspec.yaml
detecttrace test detectspec.yaml
उत्पन्न प्रोजेक्ट स्व-निहित है। इसके लिए Elasticsearch, Kibana, Docker, या नेटवर्क एक्सेस की आवश्यकता नहीं है।
एक स्वस्थ रन इसके साथ समाप्त होता है:
Detection contract passed end-to-end.
Confidence: HIGH
रिपॉज़िटरी में एक PowerShell फ़िक्स्चर शामिल है जिसमें दोनों ज्ञात-अच्छे और जानबूझकर टूटे प्रमाण हैं।
स्वस्थ:
detecttrace test examples/powershell/detectspec.yaml --profile healthy
टूटा:
detecttrace test examples/powershell/detectspec.yaml --profile broken
टूटा प्रोफ़ाइल जानबूझकर मूल कमांड लाइन को
process.args के अंतर्गत संरक्षित करता है, आवश्यक process.command_line के बजाय। DetectTrace
उस विफलता को normalization में स्थानीयकृत करता है और rule/alert मूल्यांकन को अवरुद्ध करता है।
DetectSpec घोषणात्मक अनुबंध है। DetectTrace वह इंजन है जो उस अनुबंध का प्रमाणों के विरुद्ध मूल्यांकन करता है।
एक DetectSpec वर्णन कर सकता है:
उदाहरण:
spec_version: detectspec/v1
id: DET-PS-LIVE-001
title: Live Encoded PowerShell
inputs:
profiles:
live: {}
test:
cases:
healthy:
event:
event:
code: 1
process:
name: powershell.exe
command_line: powershell.exe -enc AAA
broken:
event:
event:
code: 1
winlog:
event_data:
CommandLine: powershell.exe -enc AAA
process:
name: powershell.exe
args: powershell.exe -enc AAA
checkpoints:
normalization:
require_event:
all:
- field: process.name
op: endswith
value: powershell.exe
required_fields:
- field: process.command_line
from: winlog.event_data.CommandLine
rule:
match:
all:
- field: process.name
op: endswith
value: powershell.exe
- field: process.command_line
op: regex
value: "(?i)(?:\\s|^)-(?:enc|encodedcommand)\\b"
JSON Schema यहाँ है:
schemas/detectspec-v1.schema.json
रनटाइम वैलिडेटर और JSON Schema जानबूझकर अज्ञात DetectSpec संरचना के बारे में सख्त हैं ताकि वर्तनी की गलतियाँ जल्दी विफल हों।
लीफ़ predicates उपयोग करते हैं:
field: process.name
op: equals
value: powershell.exe
समर्थित ऑपरेटरों में शामिल हैं:
exists
equals
not_equals
contains
startswith
endswith
regex
in
gt
gte
lt
lte
Predicates को all, any, और not के साथ संयोजित किया जा सकता है।
उदाहरण:
all:
- field: process.name
op: endswith
value: powershell.exe
- any:
- field: process.command_line
op: contains
value: "-enc"
- field: process.command_line
op: contains
value: "-EncodedCommand"
DetectTrace एक सरल नियम का पालन करता है:
अनुमान से पहले प्रमाण। पहला विफल चरण जीतता है।
यदि normalization विफल हो जाता है, तो DetectTrace यह दिखावा नहीं करता कि वह जानता है कि
डाउनस्ट्रीम नियम या अलर्ट सफल होता या नहीं। उन चरणों को
BLOCKED के रूप में रिपोर्ट किया जाता है।
यदि प्रमाण अनुपलब्ध है बजाय खंडित होने के, तो DetectTrace
अनुमान लगाने के बजाय UNKNOWN रिपोर्ट करता है।
स्थिर मशीन-पठनीय परिणाम स्कीमा है:
detecttrace.result/v1
महत्वपूर्ण फ़ील्ड में शामिल हैं:
healthy
first_failed_stage
failure_code
confidence
root_cause
remediation
run_id
stages
वर्तमान विफलता कोड में श्रेणियाँ शामिल हैं जैसे:
INGESTION_FAILURE
TELEMETRY_MISSING
SCHEMA_DRIFT
REQUIRED_FIELD_MISSING
RULE_NOT_FOUND
RULE_DISABLED
RULE_LOGIC_MISMATCH
RULE_EXECUTION_ERROR
ALERT_TIMEOUT
UNKNOWN
एक पुनरुत्पादनीय सुरक्षित लैब यहाँ शामिल है:
lab/elastic