Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
LUCX_network_traffic_parser — 네트워크 트래픽 분석 및 특징 추출을 위한 프레임워크입니다. | Kitploit
도구/GitHubGitHub/doriguzzi/lucx_network_traffic_parser
Packet Sniffing & AnalysisNetwork ForensicsNetwork SecurityMachine LearningIntrusion DetectionPapers & ResearchAnomaly DetectionLog Analysis
GitHubdoriguzzi/lucx_network_traffic_parser

LUCX_network_traffic_parser

네트워크 트래픽 분석 및 특징 추출을 위한 프레임워크입니다.

저장소 보기
41151개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

LUCX: LUCID 네트워크 트래픽 파서 eXtended

LUCX(LUCID 네트워크 트래픽 파서 eXtended)는 pcap 형식의 사전 녹화된 트래픽 트레이스와 네트워크 인터페이스에서 캡처한 실시간 네트워크 트래픽 모두와 함께 작동하는 네트워크 트래픽 파서입니다. LUCX는 LUCID 데이터셋 파서(https://github.com/doriguzzi/lucid-ddos)의 확장 버전입니다. 원본 버전과 마찬가지로 LUCX는 탐지 알고리즘이 미리 정의된 시간 윈도우에 걸쳐 수집된 트래픽 흐름의 세그먼트를 처리해야 하는 기존 온라인 시스템에서 수집된 것과 일치하는 트래픽 관측값을 생성합니다. 또한 LUCX는 두 가지 다른 형식인 **패킷 수준(Packet-Level)**과 **통계적(Statistical)**으로 더 많은 특징(예: TLS 관련 특징)을 추출하며, 이는 이 README의 아래에서 설명합니다.

트래픽 전처리 작업은 두 가지 단계로 나뉩니다. 첫 번째 단계는 패킷에서 특징을 추출하여 흐름과 시간 윈도우로 구성하고, 두 번째 단계는 특징 정규화, 패딩(또는 원하는 출력 형식에 따라 평탄화)을 수행하고 훈련, 검증 및 테스트 세트를 hdf5 형식으로 저장합니다.

이 저장소에서 Jupyter 노트북으로 제공되는 샘플 네트워크 침입 탐지 시스템(NIDS)은 LUCX가 생성한 패킷 수준 및 통계적 네트워크 트래픽 표현을 모두 사용하여 딥러닝 모델(구체적으로 다층 퍼셉트론(MLP) 또는 합성곱 신경망(CNN))을 훈련하고 평가하는 데 사용할 수 있습니다.

설치

LUCX는 Python v3.X, Numpy 및 Pyshark로 구현되었습니다. LUCX는 여러 Python 도구와 라이브러리의 설치를 필요로 합니다. 이는 conda 소프트웨어 환경(https://docs.conda.io/projects/conda/en/latest/)을 사용하여 수행할 수 있습니다. conda의 경량 버전인 miniconda의 설치를 권장합니다. miniconda는 MS Windows, MacOSX 및 Linux에서 사용 가능하며 https://docs.conda.io/en/latest/miniconda.html# 의 지침에 따라 설치할 수 있습니다.

MS Windows 10 버전 2004 이상(Build 19041 이상) 또는 Windows 11이 필요합니다. MS Windows에서는 먼저 명령줄에서 Linux용 Windows 하위 시스템을 설치하십시오: wsl.exe —install (자세한 내용은 여기 참조). 이 명령은 컴퓨터에 Ubuntu Linux OS를 설치합니다. Windows 메뉴에서 WSL 앱을 실행하여 Linux 명령줄에 접근할 수 있으며, 그런 다음 아래의 Linux OS 지침을 따르십시오.

터미널을 열고 운영 체제에 따라 다음 명령 중 하나를 실행한 후 화면의 지침을 따르십시오:

bash Miniconda3-latest-Linux-x86_64.sh (on Linux operating systems)
bash Miniconda3-latest-MacOSX-x86_64.sh (on macOS)

그런 다음 Python 3.13.5를 기반으로 새 conda 환경(python313)을 생성합니다:

conda create -n python313 python=3.13.5

새 python313 환경을 활성화합니다:

conda activate python313

그리고 몇 가지 패키지를 추가로 설치하여 환경을 구성합니다:

(python39)$ pip install scikit-learn h5py pyshark matplotlib graphviz pandas scikeras pydot seaborn

Pyshark는 데이터 전처리에 사용됩니다. 이는 단순히 tshark를 위한 Python 래퍼이므로, tshark도 함께 설치되어 있어야 합니다. Ubuntu 기반 OS에서는 다음 명령을 사용하십시오:

sudo apt install tshark

macOS에서는 여기에서 Wireshark를 다운로드하여 설치하면 됩니다.

현재 파서 코드는 wireshark/tshark 버전 4.4.9 이상에서 동작한다는 점에 유의하시기 바랍니다.

트래픽 특징 표현

LUCX는 동일한 5‑튜플 식별자 또는 그 전치된 5‑튜플을 공유하는 패킷 그룹으로 정의되는 양방향 네트워크 트래픽 흐름을 고려합니다. 5‑튜플은 IP 네트워크에서 통신 스트림을 고유하게 특성화하는 일반적인 방법이며, 다음으로 구성됩니다:

  • 출발지 IP 주소
  • 목적지 IP 주소
  • 출발지 포트 번호
  • 목적지 포트 번호
  • 전송 프로토콜 (예: TCP, UDP)

패킷이 이 다섯 필드에 대해 동일한 값을 가지면 동일한 흐름의 일부로 간주됩니다. 전치된 5‑튜플의 개념은 양방향 통신을 고려합니다: 출발지와 목적지 주소/포트가 서로 바뀌었지만 프로토콜은 동일하게 유지되는 경우, 해당 패킷들은 여전히 동일한 흐름의 일부로 간주됩니다. 이를 통해 대화의 양방향(클라이언트 → 서버 및 서버 → 클라이언트)이 함께 그룹화됩니다.

예시: IP 192.168.1.10에 있는 클라이언트가 IP 203.0.113.5에 있는 웹 서버의 포트 80으로 TCP 요청을 보낸다고 가정합니다. 클라이언트는 출발지 포트 54321을 사용합니다.

  • 정방향 (클라이언트 → 서버):
    • 출발지 IP: 192.168.1.10
    • 목적지 IP: 203.0.113.5
    • 출발지 포트: 54321
    • 목적지 포트: 80
    • 프로토콜: TCP
  • 역방향 (서버 → 클라이언트):
    • 출발지 IP: 203.0.113.5
    • 목적지 IP: 192.168.1.10
    • 출발지 포트: 80
    • 목적지 포트: 54321
    • 프로토콜: TCP

두 패킷 집합은 역방향이 정방향의 전치된 5‑튜플과 일치하기 때문에 동일한 트래픽 흐름에 속합니다. 또한 LUCX는 데이터셋의 네트워크 트래픽 트레이스(또는 수신 네트워크 트래픽)에서 추출된 각 트래픽 흐름을 시간 윈도우를 기준으로 하위 흐름(sub‑flow)으로 분할합니다. 이 분할은 트래픽이 정적 또는 동적 시간 윈도우 내에서 수집된 후 분석을 위해 분류기로 전달되는 실제 시나리오를 시뮬레이션합니다. 이를 통해 시스템은 단기적인 행동을 식별하고 공격을 탐지하기 위해 시간 제한적 패킷 집계에 의존하는 경우가 많은 침입 탐지 시스템(IDS)의 운영 방식을 반영합니다.

패킷이 흐름으로 그룹화되고 흐름이 다시 하위 흐름으로 분할된 후, LUCX는 하위 흐름을 ML 기반 분류기를 학습, 검증 및 테스트하는 데 사용할 수 있는 샘플로 변환합니다. 가능한 출력 형식은 두 가지입니다: 배열(LUCID에서와 같이) 또는 벡터. 첫 번째 형식은 패킷에서 직접 추출된 특징을 보존하는 반면, 두 번째 형식은 패킷 수준 특징의 통계적 표현을 생성합니다. 이 두 가지 동작 모드는 각각 패킷 수준 특징과 통계적 특징이라고 합니다.

패킷 수준 특징

이는 원래 LUCID 데이터셋 파서와 동일한 형식을 따르며, 하위 흐름을 각 열이 패킷 수준 특징(예: 타임스탬프, 패킷 길이, TCP SYN 플래그, ICMP 유형)을 나타내고 각 행이 시간 순서대로 정렬된 패킷에 해당하는 배열로 변환합니다. 구조는 동일하게 유지되지만, 추가 특징을 도입하거나 기존 특징을 이진 표현(예: IP 및 TCP 플래그)으로 확장함으로써 열의 수가 증가했습니다. 첫 번째 행에는 하위 흐름의 첫 번째 패킷이 포함되며, 이는 시간 윈도우 내에서 수집된 흐름의 첫 번째 패킷이기도 합니다. 첫 번째 열은 패킷 타임스탬프입니다: 첫 번째 패킷의 경우 타임스탬프가 0으로 설정되는 반면, 이후 패킷의 타임스탬프는 도착 시간과 첫 번째 패킷의 원래 타임스탬프 간의 차이로 표현됩니다. 이 접근 방식은 패킷 도착 시간에 절대값을 사용하는 것을 피하고 동일한 하위 흐름에 속한 패킷들의 상대적 타이밍 패턴을 보존합니다.

timestamppacket_lengthIP_ttlIP_flags_df...ICMP_code
0641280...0
1.2128641...8
..................
0000...0
0000...0

각 샘플의 현재 특징 수는 78개이며, 레코드 버전, 핸드셰이크 확장 및 유형 등 TLS 관련 특징을 포함합니다. 전체 특징 목록은 이 README 끝부분의 부록에서 확인할 수 있습니다. LUCID와 마찬가지로 LUCX는 각 서브플로우에 대해 설정 가능한 미리 정의된 수의 패킷을 수집합니다. 이 수는 아래에서 설명하는 명령줄 옵션 --packets_per_flow 를 통해 설정할 수 있습니다. 이 수를 초과하는 패킷은 폐기되며, --packets_per_flow 보다 적은 수의 패킷을 가진 서브플로우는 위 예시와 같이 제로 패딩됩니다.

통계적 특징

특징의 통계적 버전은 트래픽 서브플로우의 벡터 표현으로 구성되며, 각 서브플로우는 시간 윈도우 내에서 수집된 통계적 특징의 벡터로 표현됩니다. 예를 들어, 첫 번째 특징은 동일한 서브플로우의 패킷 간 평균 도착 간격 시간이고, 두 번째 특징은 평균 패킷 길이이며, 이런 식으로 이어집니다.

IAT (mean)packet_length (mean)IP_ttl (mean)IP_flags_df (count)...ICMP_code (mean)Nr. of Packets
0.01130102.52...35

벡터의 요소 수는 패킷 수준 표현의 배열에 있는 열 수와 같으며, 벡터 끝에 추가로 덧붙여지는 하나의 특징, 즉 서브플로우의 패킷 수가 더해집니다. 패킷 수준 표현에서 이는 배열의 패딩되지 않은 행 수로부터 도출할 수 있는 암시적 특징입니다. 전체 특징 목록은 이 README 끝부분의 부록에서 확인할 수 있습니다.

이 표현에서 --packets_per_flow 옵션은 통계를 계산할 때 시간 윈도우 내에서 각 서브플로우에 대해 수집할 패킷 수를 지정합니다.

트래픽 전처리

LUCX는 현재 뉴브런즈윅 대학교(UNB)(https://www.unb.ca/cic/datasets/index.html)의 세 가지 DDoS 데이터셋인 CIC-IDS2017, CSE-CIC-IDS2018, CIC-DDoS2019를 지원합니다. 이 가이드에서는 후자의 일부를 사용하며 sample-dataset 폴더에 포함되어 있습니다.

지원이라는 용어는 스크립트가 패킷과 트래픽 플로우를 정상 또는 DDoS로 올바르게 레이블링할 수 있는 능력을 의미합니다. 일반적으로 이는 UNB 데이터셋의 경우처럼 트래픽 트레이스와 함께 제공되는 레이블 파일을 파싱하거나, 코드에서 공격자의 IP 주소와 피해자의 IP 주소를 수동으로 지정함으로써 수행됩니다. 물론 후자의 경우에도 이 정보는 데이터셋과 트래픽 생성에 사용된 방법론에 매우 특화되어 있으므로, 스크립트는 트래픽의 정확한 정보(모든 공격자/피해자 IP 주소 쌍)로 조정되어야 합니다.

이를 전제로, lucx_network_traffic_parser.py에는 위에서 언급한 세 가지 데이터셋(CIC-IDS2017, CSE-CIC-IDS2018, CIC-DDoS2019)의 공격자/피해자 쌍 구조가 포함되어 있지만, 사용 가능한 코드를 복제하여 다른 데이터셋을 지원하도록 쉽게 확장할 수 있습니다.

예를 들어, 다음 Python 딕셔너리는 CIC-DDoS2019 데이터셋에 관련된 공격자와 피해자의 IP 주소를 제공합니다:

DOS2019_FLOWS = {'attackers': ['172.16.0.5'], 'victims': ['192.168.50.1', '192.168.50.4']}

CIC-DDoS2019 데이터셋에서 DDoS 패킷의 소스 IP 주소는 테스트베드 내에서 공격 네트워크와 피해자 네트워크를 연결하는 라우터의 IP 주소로 대체되었습니다 (CIC-DDoS2019).

명령 옵션

lucx_network_traffic_parser.py를 사용할 때 다음 매개변수를 지정할 수 있습니다:

  • -c, --classes : 트래픽 클래스에 할당되는 이름 (사용 가능한 옵션은 BINARY (기본값), DOS2019)
  • -d, --dataset_folder: 데이터셋이 있는 폴더
  • -f, --traffic_type : 처리할 흐름의 유형 (all, benign, ddos)
  • -m, --max_flows : pcap 파일에서 추출할 최대 흐름 수
  • -n, --packets_per_flow : 샘플 내 최대 패킷 수 (기본값: 10 패킷)
  • -o, --output_folder : 스크립트가 출력을 저장하는 폴더. 이 옵션을 사용하지 않으면 데이터셋 폴더가 사용됩니다
  • -p, --preprocess_folder : 중간 파일 *.data가 포함된 폴더
  • -s, --samples : 축소된 출력의 학습 샘플 수
  • -t, --dataset_type : 데이터셋의 유형. 사용 가능한 옵션: DOS2017, DOS2018, DOS2019
  • -w, --time_window : 시간 윈도우의 길이(초) (기본값: 10초)
  • --binary : 이진 레이블 (기본값: False)
  • --preprocess_file : 중간 파일 *.data의 경로
  • --dont_normalize : 특징 정규화 건너뛰기 (기본값: False)
  • --flatten : 배열 형태의 중간 흐름 표현을 벡터로 평탄화 (기본값: False)
  • --enable_tls : TLS 전용 특징 추출 활성화 (기본값: False)
  • --multiclass : 다중 클래스 레이블 활성화, 정수 또는 원-핫 인코딩 사용 (0=binary (기본값), 1=integer multiclass, 2=one-hot encoding multiclass)

첫 번째 단계

도구 다운로드