Last updated on

논문 리뷰: XNIDS로 딥러닝 NIDS 경고를 설명하고 대응 규칙으로 바꾸기


이번 글은 USENIX Security 2023 논문 **“XNIDS: Explaining Deep Learning-based Network Intrusion Detection Systems for Active Intrusion Responses”**를 리뷰합니다. 저자는 Feng Wei, Hongda Li, Ziming Zhao, Hongxin Hu입니다.

논문 링크: USENIX Security 2023 - XNIDS

이 논문의 출발점은 아주 현실적입니다. 딥러닝 기반 Network Intrusion Detection System, 즉 DL-NIDS는 복잡한 공격 패턴을 잘 잡을 수 있습니다. 하지만 탐지 결과가 단순한 점수나 라벨로만 나오면 운영자가 바로 대응하기 어렵습니다. “이 트래픽은 이상하다”라는 말만으로는 어느 호스트를 막아야 하는지, 특정 flow만 끊어야 하는지, 정상 트래픽까지 피해를 보는지 판단하기 어렵기 때문입니다.

XNIDS explanation and response pipeline

문제의식

DL-NIDS는 기존 시그니처 기반 탐지보다 더 복잡한 패턴을 잡을 수 있다는 기대를 받습니다. 특히 학습하지 않은 공격이나 미묘한 이상 행동을 포착할 가능성이 있습니다. 하지만 논문은 “탐지 성능”만으로는 능동 대응까지 이어질 수 없다고 봅니다.

핵심 문제는 두 가지입니다.

첫째, semantic gap입니다. 모델이 출력한 점수는 운영 가능한 해석이 아닙니다. 운영자는 어떤 source host가 문제인지, TCP flow 하나만 문제인지, 여러 호스트가 같은 공격 패턴을 만들고 있는지, 어떤 프로토콜 필드가 경고를 만든 것인지 알아야 합니다.

둘째, 오류 비용입니다. false negative는 공격을 놓치게 만들고, false positive는 분석 시간을 낭비하거나 정상 트래픽을 차단하게 만들 수 있습니다. 모델이 왜 그런 판단을 했는지 설명하지 못하면 운영자는 자동 대응을 신뢰하기 어렵습니다.

XNIDS의 목표는 탐지 이후의 문제를 해결하는 것입니다. DL-NIDS의 판단을 설명하고, 그 설명을 바탕으로 OpenFlow, iptables, Pfsense, Squid 같은 방어 도구에 넣을 수 있는 규칙을 생성합니다.

기존 설명 기법이 부족한 이유

논문은 XNIDS를 LIME, SHAP, LEMNA, Integrated Gradients, LRP 같은 설명 기법과 비교합니다. 핵심 주장은 기존 기법이 무조건 나쁘다는 것이 아닙니다. DL-NIDS의 입력 구조가 일반적인 이미지 분류나 악성코드 분류와 다르다는 점이 중요합니다.

이미지 분류기는 보통 이미지 하나를 설명합니다. 악성코드 분류기도 바이너리 샘플 하나를 설명하는 경우가 많습니다. 반면 DL-NIDS는 현재 입력과 과거 입력을 함께 보고 판단합니다. 패킷이나 flow는 시간 흐름 속의 일부입니다. RNN이나 LSTM 기반 탐지기는 xt 하나가 아니라 xt, xt-1, 그 이전 트래픽까지 반영해 판단할 수 있습니다.

두 번째 문제는 feature dependency입니다. 네트워크 데이터는 구조화되어 있습니다. TCP flag는 TCP가 유효할 때 의미가 있고, TCP와 UDP는 서로 배타적인 경우가 많습니다. source IP, destination IP, port, protocol, flag는 이미지 픽셀처럼 독립적인 값이 아닙니다. LIME과 SHAP은 대체로 feature 독립성을 가정하고, LEMNA는 인접 feature가 비슷한 중요도를 갖는다고 가정합니다. 논문은 이런 가정이 패킷 헤더 필드에는 잘 맞지 않는다고 지적합니다.

그래서 XNIDS는 두 문제를 동시에 다룹니다.

  1. 현재 판단을 설명할 때 관련 있는 history input을 고려한다.
  2. 구조화된 네트워크 feature 사이의 의존성을 보존한다.

XNIDS의 설명 방식

XNIDS는 DL-NIDS의 특정 판단 주변에 local explanation model을 만듭니다. 목표는 faithful, sparse, complete, stable한 설명을 만드는 것입니다.

첫 단계는 history input 근사입니다. XNIDS는 모든 과거 입력이 중요하다고 보지 않습니다. 원래 모델 출력과 작은 오차 안에서 비슷한 결과를 내는 작은 history input 집합을 찾습니다. 그다음 host filter와 protocol filter를 적용해 덜 관련 있는 과거 입력을 제거합니다. 이 과정이 중요한 이유는 공격마다 필요한 시간 범위가 다르기 때문입니다. DoS와 OS scan이 같은 길이의 history window를 필요로 한다고 가정할 수 없습니다.

두 번째 단계는 history input 주변 샘플링입니다. XNIDS는 최근 입력에 더 큰 가중치를 줍니다. 보통 현재 판단에는 오래된 트래픽보다 최근 트래픽이 더 큰 영향을 주기 때문입니다. 논문은 decay function을 사용한 weighted random sampling을 적용합니다. 만약 과거 입력들이 거의 같은 영향을 준다면 일반적인 random sampling과 비슷해집니다.

세 번째 단계는 feature dependency 반영입니다. XNIDS는 domain knowledge, 대상 DL-NIDS의 grouping strategy, 또는 데이터 상관관계를 이용해 feature를 group으로 나눕니다. 그리고 sparse group lasso를 사용합니다. sparse group lasso는 feature group 단위 선택과 group 내부 feature 선택을 동시에 할 수 있습니다.

이 설계는 네트워크 데이터에 잘 맞습니다. 설명이 TCP flag를 가리킨다면 더 큰 TCP feature 맥락도 함께 보존할 수 있습니다. 어떤 protocol group이 무관하다면 group 전체를 제거할 수도 있습니다. 결과적으로 운영자는 긴 feature weight 목록 대신 더 읽기 쉬운 신호 묶음을 받게 됩니다.

설명을 규칙으로 바꾸기

논문에서 가장 시스템적인 부분은 defense rule generator입니다.

XNIDS는 세 가지 rule scope를 정의합니다.

Scope의미예시
Per-flow특정 의심 flow만 영향특정 TCP SYN flow drop
Per-host한 호스트의 트래픽에 영향OS scan을 수행하는 호스트 차단
Multi-host여러 호스트의 flow에 영향SSDP amplification 트래픽 차단

scope는 explanation result와 통계 정보로 결정됩니다. 논문에서 사용하는 통계 정보에는 IP_pool, 같은 IP에서 온 최대 패킷 수, 같은 MAC에서 온 최대 패킷 수, 같은 port 또는 protocol에서 온 최대 패킷 수 등이 포함됩니다.

또한 XNIDS는 두 가지 security constraint를 둡니다.

첫째는 whitelist입니다. 중요한 서비스는 생성된 방어 규칙의 영향을 받지 않게 합니다. 둘째는 block strategy입니다.

Strategy동작
Passive가능한 한 악성 flow만 차단
Assertive추론된 scope를 그대로 사용
Aggressive의심 호스트를 직접 차단하는 쪽 선호

마지막으로 XNIDS는 entity, action, priority, timeout으로 구성된 unified rule representation을 사용합니다. 이 추상 규칙은 각 방어 도구의 구체 문법으로 변환됩니다. 논문 평가에서 OpenFlow는 완전히 지원되고, iptables, Pfsense, Squid는 priority나 timeout 표현의 차이 때문에 부분적으로 지원됩니다.

평가 설정

저자들은 네 가지 DL-NIDS를 대상으로 XNIDS를 평가합니다.

대상 시스템모델 유형데이터셋
KitsuneAutoencoder 기반 NIDSKitsune dataset
ODDSLSTM 기반 bot detectorCIC-DoS2017
RNN-IDSRecurrent neural networkNSL-KDD
AE-IDSDeep autoencoderNSL-KDD

비교 대상은 LIME, SHAP, LEMNA, Integrated Gradients, LRP입니다. 설명 품질은 fidelity, sparsity, completeness, stability 네 기준으로 평가합니다.

주요 결과

Fidelity 평가에서는 benign sample의 중요한 feature를 anomaly sample의 대응 feature로 바꾼 뒤, 탐지 정확도가 얼마나 빠르게 떨어지는지 봅니다. 정확도가 빠르게 떨어질수록 설명이 실제 판단에 중요한 feature를 잘 찾았다는 뜻입니다. XNIDS는 네 시스템 모두에서 가장 낮은 ADA curve AUC를 기록합니다.

System가장 좋은 baseline AUCXNIDS AUC
Kitsune0.4090.316
ODDS0.4270.325
RNN-IDS0.5070.430
AE-IDS0.4380.331

Sparsity에서도 XNIDS가 가장 좋습니다. MAZ AUC는 네 시스템에서 각각 0.774, 0.814, 0.775, 0.806입니다. 이는 대부분의 무관한 feature에 0에 가까운 중요도를 주고, 운영자에게 작은 설명 집합을 제공한다는 뜻입니다.

Completeness에서는 history input의 중요성이 드러납니다. 논문은 anomaly sample 중 적어도 26%가 현재 입력만으로는 non-degenerated explanation을 만들기에 충분하지 않다고 보고합니다. history를 무시하는 방법은 공격의 일부 맥락을 놓칠 수 있습니다.

Stability에서는 XNIDS가 perturbation 기반 baseline보다 훨씬 일관적입니다. 평균 stability score는 0.850, 0.830, 0.914, 0.807입니다. LIME, SHAP, LEMNA 중 가장 높은 baseline 점수가 0.640이라는 점을 보면 차이가 큽니다.

규칙 생성 평가도 실용적입니다. explanation latency의 90% 이상이 600ms 이하이고, rule generation은 평균 약 25ms입니다. 가장 큰 rule generation latency는 reconnaissance 공격에 대한 OpenFlow rule에서 약 35ms입니다.

Troubleshooting 관점

이 논문의 case study는 탐지기를 디버깅하는 데 설명이 어떻게 쓰일 수 있는지 보여줍니다.

OS scan에서는 XNIDS가 LLMNR, NBNS, SSDP 같은 protocol을 중요 feature로 표시합니다. 이는 scan이 여러 discovery protocol을 건드린다는 직관과 잘 맞습니다. HTTP flood에서는 HTTP Referer가 중요하다고 표시됩니다. 실험에서 공격자가 같은 hyperlink를 이용해 많은 HTTP GET request를 보냈기 때문입니다.

저자들은 DL-NIDS 오류를 다음처럼 분류합니다.

오류 유형해석
Parameter 문제로 인한 FNthreshold나 tuning이 부적절할 수 있음
Design 문제로 인한 FN탐지기가 충분한 feature를 보지 못할 수 있음
Infected benign감염 호스트의 정상 트래픽이 anomaly로 탐지됨
Disturbed benign네트워크 상태 때문에 정상 트래픽이 anomaly로 탐지됨
Unseen benign새롭지만 정상인 행동이 anomaly로 탐지됨

troubleshooting 이후 XNIDS는 보고된 실험에서 infected benign의 benign block을 100%, disturbed benign을 65.36%, unseen benign을 96.79% 줄입니다. 중요한 점은 모든 문제가 retraining으로 해결되는 것이 아니라는 것입니다. 어떤 경우에는 더 좁은 runtime rule이 해결책이고, 어떤 경우에는 데이터 증강과 재학습이 필요합니다.

마음에 들었던 점

XNIDS의 가장 큰 장점은 explanation을 단순한 시각화가 아니라 response의 일부로 본다는 점입니다. 논문은 “이 feature가 중요했다”에서 멈추지 않습니다. 그 feature가 실제로 적용 가능한 enforcement action이 될 수 있는지, scope가 적절한지까지 묻습니다.

history input을 정면으로 다루는 점도 좋습니다. 보안 이벤트는 보통 고립된 점 하나가 아닙니다. 패킷 하나만 보면 설명이 안 되지만 짧은 sequence를 보면 공격이 보이는 경우가 많습니다. XNIDS는 이 사실을 설명 모델 안에 넣습니다.

feature group 설계도 실용적입니다. 네트워크 데이터는 구조가 있으므로 설명 기법도 그 구조를 존중해야 합니다. sparse group lasso는 수학적 sparsity와 protocol-aware grouping 사이를 잘 이어주는 선택입니다.

조심해서 봐야 할 점

XNIDS가 완전한 자율 방어 시스템은 아닙니다.

첫째, local explanation을 만들려면 충분한 model query와 관련 history data가 필요합니다. 실제 운영 환경에서는 이 비용이나 pipeline 제약이 문제가 될 수 있습니다.

둘째, rule generation 품질은 metadata에 의존합니다. 논문도 필요한 statistical information이 없으면 XNIDS가 defense rule을 생성하지 않는다고 명시합니다.

셋째, robustness는 아직 예비 평가에 가깝습니다. 저자들의 traffic-based adversarial example 평가에서 evasion rate는 33%, 49%, 53%까지 나옵니다. history를 고려하는 것이 도움이 되지만, adversarially robust explanation은 여전히 어려운 문제입니다.

넷째, local explanation은 여전히 낮은 수준입니다. 중요한 packet field 목록은 유용하지만, 운영자는 종종 credential stuffing, reconnaissance, botnet command traffic, lateral movement 같은 더 높은 수준의 설명을 원합니다. 논문도 global explanation을 future work로 언급합니다.

결론

XNIDS는 deep NIDS detection, explainable AI, active response를 하나로 연결했다는 점에서 좋은 논문입니다.

핵심 교훈은 단순합니다. 보안 모델은 무엇을 탐지했는지만 말해서는 부족합니다. 왜 그렇게 판단했는지, 어디에 대응해야 하는지, 그리고 정상 트래픽 피해를 줄이는 규칙은 무엇인지까지 도와야 합니다.

실제 프로덕션 적용을 생각하면 더 강한 robustness 평가, 더 현대적인 트래픽 데이터셋, high-throughput 환경에서의 배포 성능 측정이 필요합니다. 그래도 연구 방향으로서 XNIDS는 꽤 설득력 있습니다. 미래의 NIDS는 단순히 정확한 모델이 아니라, 자동 대응을 조심스럽게 뒷받침할 만큼 잘 설명하는 모델에 가까워질 가능성이 큽니다.

Comments

0 comments