mirror of
https://github.com/DaLaw2/NetGuardia.git
synced 2026-08-24 14:10:28 +09:00
183 lines
5.7 KiB
YAML
183 lines
5.7 KiB
YAML
name: netguardia-v1
|
|
version: 1
|
|
|
|
runtime:
|
|
pipeline_mode: dag
|
|
normal_label: Normal
|
|
|
|
artifacts:
|
|
- id: anomaly_detector_onnx
|
|
file: deep_autoencoder.onnx
|
|
kind: onnx
|
|
- id: classifier_onnx
|
|
file: classifier.onnx
|
|
kind: onnx
|
|
- id: preprocessing_sidecar
|
|
file: inference_config.json
|
|
kind: sidecar
|
|
|
|
stages:
|
|
- id: anomaly_detector
|
|
kind: autoencoder
|
|
model_file: deep_autoencoder.onnx
|
|
inputs:
|
|
- { name: flow_duration, source: feature }
|
|
- { name: fwd_packets, source: feature }
|
|
- { name: bwd_packets, source: feature }
|
|
- { name: fwd_bytes, source: feature }
|
|
- { name: bwd_bytes, source: feature }
|
|
- { name: flow_bytes_per_sec, source: feature }
|
|
- { name: flow_pkts_per_sec, source: feature }
|
|
- { name: fwd_win_bytes, source: feature }
|
|
- { name: bwd_win_bytes, source: feature }
|
|
- { name: fwd_pkt_len_mean, source: feature }
|
|
- { name: bwd_pkt_len_mean, source: feature }
|
|
- { name: fwd_iat_mean, source: feature }
|
|
- { name: bwd_iat_mean, source: feature }
|
|
- { name: flow_iat_mean, source: feature }
|
|
- { name: pkt_len_mean, source: feature }
|
|
- { name: dst_port, source: feature }
|
|
- { name: protocol, source: feature }
|
|
- { name: psh_flag_cnt, source: feature }
|
|
- { name: ack_flag_cnt, source: feature }
|
|
- { name: syn_flag_cnt, source: feature }
|
|
- { name: fin_flag_cnt, source: feature }
|
|
- { name: rst_flag_cnt, source: feature }
|
|
- { name: pkt_len_std, source: feature }
|
|
- { name: fwd_pkt_len_std, source: feature }
|
|
- { name: bwd_pkt_len_std, source: feature }
|
|
- { name: fwd_seg_size_min, source: feature }
|
|
- { name: fwd_act_data_pkts, source: feature }
|
|
- { name: fwd_iat_std, source: feature }
|
|
- { name: bwd_iat_std, source: feature }
|
|
- { name: fwd_bwd_bytes_ratio, source: feature }
|
|
- { name: iat_cv, source: feature }
|
|
preprocessing:
|
|
- type: standard_scaler
|
|
sidecar: inference_config.json
|
|
- type: clip
|
|
min: -5.0
|
|
max: 5.0
|
|
output_heads:
|
|
- name: ae_anomaly_score
|
|
index: 0
|
|
shape: [1]
|
|
semantic: anomaly_score
|
|
threshold: 0.23011694848537445
|
|
|
|
- id: classifier
|
|
kind: classifier
|
|
model_file: classifier.onnx
|
|
depends_on:
|
|
- anomaly_detector
|
|
inputs:
|
|
- { name: flow_duration, source: feature }
|
|
- { name: fwd_packets, source: feature }
|
|
- { name: bwd_packets, source: feature }
|
|
- { name: fwd_bytes, source: feature }
|
|
- { name: bwd_bytes, source: feature }
|
|
- { name: flow_bytes_per_sec, source: feature }
|
|
- { name: flow_pkts_per_sec, source: feature }
|
|
- { name: fwd_win_bytes, source: feature }
|
|
- { name: bwd_win_bytes, source: feature }
|
|
- { name: fwd_pkt_len_mean, source: feature }
|
|
- { name: bwd_pkt_len_mean, source: feature }
|
|
- { name: fwd_iat_mean, source: feature }
|
|
- { name: bwd_iat_mean, source: feature }
|
|
- { name: flow_iat_mean, source: feature }
|
|
- { name: pkt_len_mean, source: feature }
|
|
- { name: dst_port, source: feature }
|
|
- { name: protocol, source: feature }
|
|
- { name: psh_flag_cnt, source: feature }
|
|
- { name: ack_flag_cnt, source: feature }
|
|
- { name: syn_flag_cnt, source: feature }
|
|
- { name: fin_flag_cnt, source: feature }
|
|
- { name: rst_flag_cnt, source: feature }
|
|
- { name: pkt_len_std, source: feature }
|
|
- { name: fwd_pkt_len_std, source: feature }
|
|
- { name: bwd_pkt_len_std, source: feature }
|
|
- { name: fwd_seg_size_min, source: feature }
|
|
- { name: fwd_act_data_pkts, source: feature }
|
|
- { name: fwd_iat_std, source: feature }
|
|
- { name: bwd_iat_std, source: feature }
|
|
- { name: fwd_bwd_bytes_ratio, source: feature }
|
|
- { name: iat_cv, source: feature }
|
|
- name: ae_anomaly_score
|
|
source: stage_output
|
|
stage: anomaly_detector
|
|
output: ae_anomaly_score
|
|
output_heads:
|
|
- name: anomaly
|
|
index: 0
|
|
shape: [1]
|
|
semantic: binary
|
|
threshold: 0.9179317355155945
|
|
- name: class_probs
|
|
index: 1
|
|
shape: [10]
|
|
semantic: multiclass
|
|
min_confidence: 0.4
|
|
- name: c2_score
|
|
index: 2
|
|
shape: [1]
|
|
semantic: binary
|
|
threshold: 0.9085615873336792
|
|
|
|
outputs:
|
|
- stage: anomaly_detector
|
|
output: ae_anomaly_score
|
|
alias: ae_anomaly_score
|
|
role: anomaly_score
|
|
- stage: classifier
|
|
output: anomaly
|
|
alias: anomaly
|
|
role: binary_score
|
|
- stage: classifier
|
|
output: class_probs
|
|
alias: class_probs
|
|
role: class_probabilities
|
|
- stage: classifier
|
|
output: c2_score
|
|
alias: c2_score
|
|
role: c2_score
|
|
|
|
detection_rules:
|
|
- id: classifier_anomaly_threshold
|
|
type: threshold
|
|
output: anomaly
|
|
attack:
|
|
source: predicted_class
|
|
output: class_probs
|
|
exclude_normal: true
|
|
- id: class_confidence
|
|
type: class_confidence
|
|
output: class_probs
|
|
attack:
|
|
source: predicted_class
|
|
output: class_probs
|
|
exclude_normal: true
|
|
- id: c2_threshold
|
|
type: threshold
|
|
output: c2_score
|
|
attack:
|
|
source: fixed_label
|
|
label: C2 Communication
|
|
|
|
labels:
|
|
"0": { name: Bot, confirmations: 1 }
|
|
"1": { name: Brute Force }
|
|
"2": { name: C2 Communication, confirmations: 1 }
|
|
"3": { name: DNS Tunneling, confirmations: 1 }
|
|
"4": { name: DoS/DDoS, confirmations: 2 }
|
|
"5": { name: Exploitation, confirmations: 1 }
|
|
"6": { name: Malware }
|
|
"7": { name: Normal }
|
|
"8": { name: Reconnaissance }
|
|
"9": { name: Web Attack }
|
|
|
|
alert_rules:
|
|
- condition: "anomaly > threshold"
|
|
source_label: anomaly
|
|
- condition: "class_probs.argmax != Normal AND class_probs.max > min_confidence"
|
|
source_label: class_probs
|