Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
NGWAF — ML 기반 피드백 WAF의 첫 번째 반복 | Kitploit
도구/GitHubGitHub/fa-pengfei/ngwaf
Defensive ToolsIDS/IPS EvasionWAF BypassWeb SecurityPenetration TestingMachine LearningLearning & EducationRed TeamingAnomaly DetectionLabs & Practice
GitHubfa-pengfei/ngwaf

NGWAF

6073년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

ML 기반 피드백 WAF의 첫 번째 반복

저장소 보기

N3XT-G3N 웹 애플리케이션 방화벽 (NGWAF)

NGWAF는 @yupengfei, @zhangbosen, @matthewng 및 @elizabethlim에 의해 만들어졌습니다.

특별히 @ruinahkoh에게 NGWAF 초기 단계에 기여해 주신 점에 감사드립니다.

NGWAF는 실험적인 개념 증명이며 현재 형태로는 프로덕션 사용에 적합하지 않습니다.

목차

  1. 동기

    ​ NGWAF는 어떻게 작동하나요?

    ​ NGWAF의 주요 고려 사항

  2. 구성 요소 | NGWAF의 기어

    ​ 두뇌: 머신러닝 기반 WAF

    ​ 거울: 확장 가능한 대화형 격리 환경

    ​ 도서관: 두뇌 강화를 위한 재학습 시퀀스

  3. NGWAF 설정

    ​ 요구 사항

    ​ 설치 및 사용

  4. 면책 조항 및 기타 고려 사항

  5. 라이선스

동기

2000년대 초반 이후 웹 애플리케이션의 폭발적인 성장과 함께 웹 기반 공격은 점점 더 만연해지고 있습니다. 일반적인 해결책 중 하나는 웹 애플리케이션 방화벽(WAF)입니다. 그러나 현재 WAF의 규칙을 수정하여 탐지 메커니즘을 개선하는 것은 복잡하고 어려울 수 있습니다. NGWAF는 새로운 머신러닝 및 격리-허니팟 기반 아키텍처를 통해 이러한 단점을 해결하고자 합니다.

실제 WAF 운영의 어려움에서 영감을 받은 NGWAF는 다음 프로세스를 통해 WAF 운영을 단순화하고 재구성하고자 합니다:

문제점NGWAF 기능
탐지 메커니즘 및 규칙 유지 관리가 복잡할 수 있음머신러닝을 활용하여 탐지 메커니즘 생성 및 업데이트 프로세스 자동화
악성 트래픽의 즉각적인 차단은 향후 WAF 개선을 위한 위협 행위자 행동 학습 기회를 줄임기존 악성 트래픽의 드롭 및 차단 대신 리디렉션된 격리를 통한 위협 제거

배포를 간단하고 이식 가능하게 만들기 위해 아키텍처의 다양한 구성 요소를 docker를 사용하여 컨테이너화하고 docker-compose 파일로 구성했습니다. 이렇게 하면 종속성이 docker에 의해 자동으로 처리되므로 새로 설치 시 빠르고 쉽게 실행할 수 있습니다. 배포는 로컬 또는 클라우드 제공업체 기반 쿠버네티스 클러스터로 확장할 수 있어 사용자가 많은 양의 트래픽을 처리하기 위해 노드/팟 수를 늘릴 수 있어 확장성이 뛰어납니다.

배포는 macOS(Docker Desktop), linux(ubuntu)에서 테스트되었습니다.

NGWAF는 어떻게 작동하나요?

NGWAF는 세 가지 주요 구성 요소로 즉시 실행되며, 위에서 언급한 구성 요소는 모두 컨테이너화되어 원하는 사용량에 따라 확장 가능합니다. 보호 대상 리소스는 설정 내에서 배포 변경을 통해 사용자 지정할 수 있습니다.


다양한 당사자의 예상 트래픽 흐름을 포함한 NGWAF의 높은 수준 아키텍처

주요 이점

NGWAF는 다음과 같은 주요 사용자 이점을 염두에 두고 설계되었습니다:

1. 규칙 복잡성 감소

NGWAF는 기존 규칙 세트를 딥러닝 모델로 대체하여 규칙 관리 및 업데이트의 복잡성을 줄입니다. 규칙을 수동으로 편집하는 대신 NGWAF의 머신러닝이 악성 데이터로부터 패턴 학습 프로세스를 자동화합니다. 격리 환경에서 수집된 데이터는 자동으로 정리되고 배치되어 필요에 따라 탐지 모델에 재학습될 수 있습니다.

2. 사이버 기만

NGWAF는 잠재적인 적대적 공격자를 격리하기 위해 구축된 대화형 격리 환경으로 구성된 새로운 아키텍처를 채택합니다. 탐지 시 차단하는 기존 WAF와 달리 NGWAF는 위협 행위자를 에뮬레이션된 시스템으로 전환하여 그들을 가두어 악의적인 행동의 영향을 완화시킵니다. 이 환경은 또한 현재 공격 방법을 수집하는 싱크홀 역할을 하여 악성 데이터의 관찰 및 수집을 가능하게 합니다. 이 데이터는 NGWAF의 탐지 능력을 더욱 향상시키는 데 사용될 수 있습니다.


작동 중인 NGWAF: SQL 인젝션 탐지 시 NGWAF는 시도를 드롭하거나 차단하는 대신 격리 환경으로 리디렉션합니다.

3. 국제적으로 인정된 표준 준수

NGWAF 제작의 기본 원칙은 Open Web Application Security Project의 표준 인식 문서인 OWASP Top 10 2021에서 강조된 위험으로부터 보호하는 것입니다.

NGWAF의 학습 데이터 및 규정 준수 확인은 이 요구 사항을 기반으로 수집 및 수행됩니다.

NGWAF의 구성 요소

1. 두뇌: 머신러닝 기반 WAF

수동이 필요할 때 뉴럴로 가자

시간이 지남에 따라 분석가가 수동으로 식별하고 규칙을 추가해야 하는 기존 규칙 세트 대신 NGWAF는 탐지 메커니즘에 종단 간 머신러닝 파이프라인을 활용하여 WAF 규칙 관리, 특히 복잡한 페이로드 탐지의 복잡성을 크게 줄입니다.

기본 모델

이를 위해 먼저 사용자가 시작할 수 있는 기본 모델과 아키텍처를 만든 후, 나중에 자체 애플리케이션에서 수집한 데이터를 재학습 및 미세 조정에 사용할 수 있도록 해야 했습니다:

  1. 여러 공개 데이터 세트(1, 2, 3)에서 악성 및 비악성 페이로드를 수집했습니다.
  2. 수동으로 규칙을 식별하는 대신 머신 및 딥러닝을 활용하여 이전 악성 데이터에서 패턴을 학습하는 프로세스를 자동화합니다. 여러 모델 아키텍처를 실험해 보았고, 최종 모델은 순환 신경망을 사용했습니다.

기본 모델의 일반적인 아키텍처는 아래와 같은 양방향 LSTM 모듈을 가진 간단한 RNN입니다:


Tensorflow에서 가져온 이미지 (링크)

성능

이 RNN 아키텍처를 사용하여 더 간단한 모델보다 성능 향상을 달성할 수 있었습니다:

모델 아키텍처정확도

유지 관리 및 재학습

다양한 애플리케이션의 로그를 포함하여 기본 모델의 일반화 가능성을 개선했지만, 모델의 추가 유지 관리 및 재학습은 다음을 위해 중요합니다:

  1. 사용자의 특정 애플리케이션 트래픽에 대해 더 나은 성능을 위해 모델 튜닝
  2. 위협 행위자가 새로운 방법과 기회를 발견함에 따라 시간이 지남에 따른 모델 성능 저하 감소

이를 해결하기 위해 NGWAF 사용자는 패키지화된 종단 간 모델 재학습 파이프라인의 이점을 누릴 수 있으며, 내부를 깊이 들여다볼 필요 없이 몇 가지 간단한 단계로 모델 유지 관리를 쉽게 트리거할 수 있습니다. (아래 섹션 3 참조).

2. 거울: 확장 가능한 대화형 격리 환경

놓아주지 마라, 그들을 구금하라!

악성 트래픽이 즉시 차단되거나 드롭되는 기존 WAF와 달리 NGWAF는 더 유연한 접근 방식을 취합니다. 즉, 악성 행위자를 격리 환경으로 리디렉션하고 구금합니다. 이 환경은 다양한 대화형 에뮬레이션 허니팟으로 구성되어 더 많은 공격 방법/데이터를 수집하려고 시도하며, 이 데이터는 NGWAF의 보다 현대적이고 복잡한 공격 탐지율을 잠재적으로 향상시키는 데 사용됩니다.

재학습 목적의 악성 데이터 캡처 및 자동 정리

현재 NGWAF의 격리 환경은 포획된 공격자가 제출한 모든 데이터를 분석 및 시각화를 위해 ELK 스택으로 전달합니다. 데이터는 HTTP 요청의 다양한 구성 요소로 자동 정리된 후 내부적으로 환경의 백엔드에서 JSON 형식으로 패키징된 후 전달됩니다. 이는 재학습 프로세스를 시작할 때 데이터를 정리하고 인덱싱하는 데 필요한 인건비를 낮추는 데 도움이 됩니다.

맞춤형 격리 환경 만들기

NGWAF는 현재 사용자가 격리 환경 내 허니팟의 프론트엔드 측면의 모양과 느낌을 변경할 수 있도록 합니다(사용자 정의 버전의 drupot 기반). 사용자는 docker 볼륨 내의 assets 폴더를 원하는 프론트엔드 자산으로 교체하기만 하면 됩니다.

NGWAF는 또한 격리 환경의 일부로 자체 허니팟을 연결하려는 사용자를 수용합니다. 사용자는 허니팟의 HTTP 요청을 환경의 백엔드 서버로 전달하기만 하면 됩니다(백엔드 프로세스는 자동으로 데이터를 정리하고 분석 대시보드(ELK 스택)로 전달합니다).

3. 도서관: 두뇌 강화를 위한 재학습 시퀀스

똑똑한 것은 계속 배울 수 있을 때 비로소 똑똑한 것이다

새로운 페이로드와 공격 벡터가 등장함에 따라 보안을 보장하기 위해 탐지 기능을 업그레이드하는 것이 중요합니다. 따라서 재학습 기능이 NGWAF에 내장되어 방어자가 머신러닝 모델을 훈련하여 새로운 페이로드를 탐지할 수 있도록 합니다. 데이터 과학이나 신경망에 익숙하지 않은 사용자도 이 간단한 인터페이스를 통해 모델을 미세 조정할 수 있으며, 복잡한 단계는 자동으로 처리됩니다.

작동 방식

사용자는 자체 라이브 시스템에서 소량의 레이블이 지정된 데이터 샘플(예: 수천 개 정도)을 업로드하기만 하면 백엔드에서 기존 모델을 미세 조정하는 데 사용됩니다:

  1. 새로운 개념 도입: 모델의 텍스트 벡터화 레이어의 어휘를 새 데이터 세트의 새로운 용어를 포함하도록 확장합니다. 이를 위해 새로운 임베딩도 초기화됩니다.
  2. 기존 지식 유지: 이전 모델 내의 기존 "학습된 지식"을 활용하기 위해 이전에 알려진 단어에 대한 임베딩과 LSTM 모듈을 이전 모델에서 로드합니다. 이는 또한 학습 프로세스 속도를 높이는 데 도움이 됩니다.
  3. 그런 다음 이 업데이트된 아키텍처를 새 데이터 세트에 대해 훈련하고, 훈련이 완료되면 새 모델이 라이브 WAF 엔드포인트에 배포됩니다.

훈련이 완료되면 사용자는 새 모델을 평가할 수 있도록 몇 가지 간단한 모델 진단(예: 테스트 세트 및 다양한 점수 임계값에서의 성능)도 제공받습니다.

사용자 흐름

재학습 프로세스를 트리거하려면 대시보드로 이동하여 다음 단계를 따르세요:

  1. 업로드할 새 데이터 세트(.csv)를 다음 열로 생성합니다:
  • payload [str]: 시스템의 페이로드이거나 일부 문자열 기반 예제(예: SQLi 인젝션 예제)이어야 합니다.
  • label [int]: 비악성 예제의 경우 0, 악성 예제의 경우 1이어야 합니다.
  • is_url [bool]: 페이로드가 시스템에서 온 경우(즉, 경로 및 장치와 같은 다른 시스템 정보 포함) TRUE, 문자열 기반 예제(예: "1==1")인 경우 FALSE여야 합니다.
  1. http://localhost:8088로 이동하여 NGWAF 관리 패널을 봅니다.
  2. "데이터 세트 가져오기" 탭을 선택하고 생성한 학습 세트를 업로드합니다.
  1. "데이터 세트 관리" 탭에서 학습 세트가 성공적으로 업로드되었는지 확인합니다.
  1. "모델 관리" 탭에서 모델을 재학습할 데이터 세트를 선택하고 "WAF 모델 업데이트" 버튼을 클릭합니다.
  1. 축하합니다! 모델이 잠시 후 재학습을 완료해야 합니다. 몇 가지 모델 진단이 다시 보고되는 것을 볼 수 있습니다.

4. 추가 기능:

NGWAF는 ELK 스택을 사용하여 NGWAF를 통과하는 네트워크 데이터의 로그를 캡처하여 사용자가 추가 분석을 위해 NGWAF를 통과하는 트래픽을 모니터링할 수 있도록 합니다.

NGWAF는 또한 실시간 텔레그램 알림 기능을 제공하여 NGWAF가 탐지한 실시간 악성 위협에 대해 소유자에게 알려줍니다.

샘플 사용 시나리오

  1. 새로 정상화된 애플리케이션(내장 웹 클로너 사용 / 격리 환경으로 사용할 다른 중복 배포 생성)
  2. 기존 허니팟/허니넷에 통합(허니팟/허니넷을 가리키도록 구성 업데이트)

NGWAF 설정

요구 사항

테스트된 운영 체제

  1. macOS(Docker Desktop)
  2. linux

ML WAF 구성 요소

  1. Python
  2. request
  3. fastapi
  4. pandas
  5. scikit-learn
  6. tensorflow
  7. urllib

WAF 관리 패널 구성 요소

  1. fastapi
  2. scikit-learn
  3. nltk
  4. pandas
  5. Create React App
  6. React Material Admin Template by Flatlogic

디코드 레이어

  1. Cyberchef Server

캐싱 레이어

  1. Redis

격리 환경

  1. Drupot
  2. Elastic Search 스택 구성 요소(Elasticsearch, Logstash, Kibana, Filebeats)

웹 애플리케이션

  1. DVWA
  2. OWASP
  3. VulnLab

설치 및 사용

Docker가 실행 중인 상태에서 다음 명령어를 사용하여 파일을 실행하세요:

./run.sh

대상을 변경하려면 /waf/WafApp/waf.py 파일에서 dest_server 및 honey_pot_server 변수를 올바른 대상으로 지정하세요:

root@kitploit:~
# 나를 교체하세요
dest_server = "dvwa"
honey_pot_server = "drupot:5000"

Docker 컨테이너가 실행되면 localhost를 방문할 수 있으며, 다음 포트에서 이러한 서비스가 실행 중입니다:

또한 waf-secrets.env 파일에 다음을 설정하세요:

root@kitploit:~
# ML MODEL API ENDPOINT
API_ENDPOINT="https://xxxxx.xxx"
API_KEY="******************"

# TELEGRAM CONFIG
TELEGRAM_CHAT_ID="-57893457893457345"
TELEGRAM_TOKEN="******************"

또한 waf-admin-secrets.env 파일에 다음을 설정하세요:

root@kitploit:~
# ML MODEL API ENDPOINT
API_ENDPOINT="https://xxxxxx.xxx"
API_KEY="******************"
BUCKET_NAME="******************"

ACCESS_KEY_ID="******************"
SECRET_ACCESS_KEY="******************"

SQL_USERNAME="******************"
SQL_PASSWORD="******************"
SQL_SERVER="******************"
SQL_DATABASE_NAME="******************"

면책 조항 및 기타 고려 사항

NGWAF는 작업 진행 중인 오픈 소스 프로젝트이며, 기능 및 특징은 패치에 따라 변경될 수 있습니다. 기여에 관심이 있으시면 언제든지 이슈를 생성하거나 풀 리퀘스트를 제출해 주세요!

라이선스

라이선스

MIT 라이선스

도구 다운로드
F1 점수
최종 모델0.9950.993
LSTM 모듈이 없는 신경망0.9560.891
결정 트리0.8780.840
로지스틱 회귀0.9460.914
포트서비스설명자격 증명 (해당하는 경우)
8080DVWAWAF가 있는 곳admin:password
5601Elasticsearch로그 보기elastic:changeme
8088관리 대시보드WAF 모델을 관리하는 대시보드
5001Drupot허니팟