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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
sniffles — Sniffles: IDS 및 정규 표현식 평가를 위한 패킷 캡처 생성기 | Kitploit
도구/GitHubGitHub/petabi/sniffles
Packet Sniffing & AnalysisIDS/IPS EvasionFuzzingNetwork SecurityPenetration TestingIntrusion Detection
GitHubpetabi/sniffles

sniffles

Sniffles: IDS 및 정규 표현식 평가를 위한 패킷 캡처 생성기

저장소 보기
6525577년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Sniffles--IDS 및 정규 표현식 평가를 위한 패킷 캡처 생성기

Sniffles는 고정 패턴이나 정규 표현식을 사용하여 의심스러운 행동을 탐지하는 IDS를 테스트하기 위한 패킷 캡처를 생성하는 도구입니다. Sniffles는 매우 간단하게 작동합니다. 정규 표현식 또는 규칙 집합을 가져와 무작위로 하나의 정규 표현식 또는 규칙을 선택합니다. 그런 다음 해당 규칙 또는 정규 표현식을 기반으로 콘텐츠를 생성합니다. 고정 문자열의 경우 문자열을 데이터에 직접 추가하는 것을 의미합니다(오프셋 또는 Snort 규칙의 다른 옵션과 함께). 정규 표현식의 경우 프로세스는 다소 복잡합니다. 정규 표현식은 NFA로 변환되고 NFA를 통해 무작위 경로가 선택됩니다(시작부터 끝까지). 결과 데이터는 정규 표현식과 일치합니다. 마지막으로 Sniffles는 전체 일치 또는 부분 일치로 설정할 수 있습니다. 전체 일치의 경우 패킷 데이터는 적어도 하나의 규칙 또는 정규 표현식과 절대적으로 일치합니다(일부 Snort 옵션은 완전히 고려되지 않음). 부분 일치는 일치하는 문자 시퀀스의 마지막 문자를 일치하지 않아야 하는 시퀀스로 지웁니다(다른 규칙과 일치할 수 있음). 일치하는 규칙은 IDS에 가장 큰 부담을 줄 것입니다. 따라서 IDS가 최악의 트래픽을 얼마나 잘 처리하는지 확인할 수 있습니다. 부분 일치 트래픽은 일치 트래픽만큼 많은 부담을 줄 것입니다. 마지막으로 Sniffles는 완전히 무작위 데이터를 가진 트래픽을 생성할 수도 있습니다. 이러한 무작위 데이터는 최상의 시나리오를 제공합니다. 무작위 데이터는 어떤 규칙과도 일치할 가능성이 매우 낮기 때문입니다. 따라서 최대 속도로 처리할 수 있습니다. 따라서 Sniffles는 IDS 심층 패킷 검사의 최상의 및 최악의 작동을 위한 패킷 캡처 생성을 허용합니다.

위에 추가하여 Sniffles는 평가 패킷 캡처를 생성하는 기능도 있습니다. 평가 패킷 캡처에는 두 가지 유형이 있습니다. 첫 번째 평가 패킷 캡처는 각 규칙 또는 정규 표현식에 대해 순서대로 정확히 하나의 패킷을 생성합니다. 따라서 각 규칙이 예상대로 일치하는지 테스트하고 확인할 수 있습니다. 전체 평가는 한 단계 더 나아가 정규 표현식의 모든 가능한 분기에 대한 패킷을 생성합니다. 단일 정규 표현식은 수천 개의 가능한 분기를 가질 수 있습니다. 이는 정규 표현식의 모든 가능한 분기가 제대로 처리되는지 확인합니다. 평가 패킷 캡처는 모든 패킷과 일치해야 합니다. 일치하지 않는 패킷은 IDS의 실패를 나타낼 가능성이 높으며 추가 조사가 필요합니다. 물론 Sniffles가 특정 IDS에 대해 올바른 패킷을 생성하지 않거나 규칙의 특정 옵션을 인식하지 못할 가능성도 있습니다. 지원되는 규칙 기능에 대한 자세한 내용은 지원되는 규칙 기능을 확인하십시오.

마지막으로 Sniffles는 무작위 네트워크 트래픽을 생성하는 데 많은 도움을 줄 수 있습니다. 기본적으로 무작위 트래픽은 TCP, UDP 또는 ICMP이며 단방향입니다. 그러나 각 스트림에 대해 ACK, 핸드셰이크 및 종료가 포함된 TCP 트래픽을 생성할 수도 있습니다. 올바른 시퀀스 번호와 체크섬을 생성합니다. 또한 MAC 주소는 원하는 분포에 따라 설정할 수 있으며 IP 네트워크 주소는 홈 및 외부 주소 공간으로 정의할 수 있습니다. 또한 트래픽 캡처 내에서 스캔을 시뮬레이션하는 것도 가능합니다.

설치

필요 사항: Python 3.3+ 및 SortedContainers 모듈

Sniffles는 다음 파일로 구성됩니다:

  • rulereader.py: 규칙 파서.
  • ruletrafficgenerator.py: 콘텐츠 스트림을 생성하는 도구.
  • sniffles.py: 프로세스를 관리하는 주 프로그램.
  • sniffles_config.py: 명령줄 입력 및 Sniffles 옵션을 처리합니다.
  • traffic_writer.py: 패킷을 pcap 호환 파일에 씁니다. libpcap이 필요하지 않습니다.
  • vendor_mac_list.py: 임의로 결합된 옥텟 대신 반현실적인 MAC 주소를 생성하는 데 사용되는 MAC 조직 고유 식별자를 포함합니다.
  • examples/vendor_mac_definition.txt: 부분 또는 전체 MAC 주소의 분포를 정의하기 위한 선택적 파일.
  • pcre 파일 (pcre_chartables.c pcre_compile.c pcre_globals.c pcre_internal.h pcre_newline.c pcre_tables.c pcre.h pcrecomp.c pcreconf.py ucp.h).
  • nfa.py: NFA를 탐색하기 위한 파일.
  • regex_generator.py: 무작위 정규 표현식을 생성하는 코드.
  • rand_rule_gen.py, feature.py, rule_formats.py: 무작위 규칙 집합을 생성하기 위한 모듈.

설치하려면:

  1. 최상위 디렉토리로 이동합니다.
  2. python3.x setup.py install을 입력합니다.
  3. 그러면 애플리케이션이 시스템에 설치됩니다.

설치 참고 사항:

  1. Windows에서 테스트되지 않았으며 Linux에서도 테스트되지 않았습니다. FreeBSD 및 Mac OS X에서 테스트되었습니다.
  2. 로컬로 빌드하려면 python3.x setup.py build를 사용한 다음 라이브러리 디렉토리로 이동하여 lib를 찾아 python3.4 -c "from sniffles import sniffles; sniffles.main()"을 사용하여 로컬로 실행합니다.

지원되는 형식:

  • Snort: Snort 경보 규칙(규칙은 Alert 지시문으로 시작해야 함). 콘텐츠 태그는 인식되고 올바르게 구문 분석됩니다. PCRE 태그도 마찬가지로 올바르게 구문 분석됩니다. HTTP 태그는 연속적으로 처리되므로 원하는 패킷을 생성하지 못할 수 있습니다. 콘텐츠(및 PCRE 또는 HTTP 콘텐츠)는 distance, within 및 offset으로 수정할 수 있습니다. 규칙은 흐름 제어 옵션을 사용할 수 있지만 데이터의 방향만 여기에서 파생됩니다. nocase 옵션은 무시되고 제시된 대소문자가 사용됩니다. 다른 모든 옵션은 무시됩니다. 헤더 값이 구문 분석되고 해당 값을 충족하는 패킷이 생성됩니다. 홈 및 외부 네트워크 주소 공간이 사용되는 경우 각각 $HOME_NET 및 $EXTERNAL_NET 변수에 대해 올바른 공간이 사용됩니다. 예:

    alert tcp $EXTERNAL_NET any -> $HOME_NET 8080 (msg:"SERVER-APACHE Apache Tomcat UNIX platform directory traversal"; flow:to_server; content:"/..|5C|/"; content:"/..|5C|/"; http_raw_uri;

  • 정규 표현식: 한 줄에 하나의 원시 정규 표현식으로 abc 또는 /abc/i 형식으로 작성됩니다. 현재 i, s, m 옵션을 지원합니다. 다른 옵션은 무시됩니다. 예:

    /ab*c(d|e)f/i

  • 아래 설명된 Sniffles 규칙 형식.

명령줄 옵션:

  • -a TCP Ack: 전송된 모든 데이터 패킷에 대해 TCP 확인 응답을 보냅니다. 기본적으로 꺼져 있습니다. 확인 패킷은 기본적으로 데이터가 없습니다.

  • -b 양방향 데이터: TCP 스트림의 양방향으로 데이터가 생성됩니다. ACK가 켜집니다. 이 기능은 기본적으로 꺼져 있습니다.

  • -B [백그라운드 트래픽 프로토콜:백분율]: 1에서 100 사이의 값을 가진 프로토콜을 하나 이상 설정하여 백그라운드 트래픽을 생성합니다. 이 값은 전체 트래픽 양의 백분율을 나타냅니다. 사용 가능한 프로토콜: FTP, HTTP, IMAP, POP 및 SMTP. 예: "http:20,ftp:30,smtp:10". 인수 값으로 숫자 하나만 입력하면 무작위로 트래픽이 생성됩니다. 예: "80".

  • -c 개수: 생성할 스트림 수입니다. 각 스트림은 최소 1개의 패킷을 포함합니다. 패킷은 규칙에 의해 정의되거나 무작위로 선택된 두 엔드포인트 사이에 있습니다. tcp_handshake, tcp_teardown 및 packets_per_stream은 스트림당 패킷 수를 늘립니다. 현재 스트림의 데이터는 한 방향으로만 흐릅니다. -b 옵션을 사용하면 데이터가 양방향으로 흘러야 합니다. 또한 Sniffles 규칙은 데이터가 양방향으로 흐르도록 지정할 수 있습니다.

  • -C 동시 흐름: 한 번에 열릴 흐름의 수입니다. 최선의 노력으로, 지정된 동시 흐름 수보다 흐름이 적으면 현재 흐름을 모두 사용합니다. 예를 들어, 흐름이 1000개만 남아 있지만 동시 흐름 수가 10000으로 설정된 경우에도 당시에는 1000개의 흐름만 기록됩니다. 기본값은 1000입니다. 기간과 함께 사용하면 -C 흐름이 전체 기간 동안 유지되며 궁극적으로 -c의 입력을 무시합니다. 참고, 이것의 목적은 동일한 흐름의 패킷이 서로 바로 옆에 있지 않고 분산되도록 하고 많은 동시 흐름의 환상을 만들기 위해 다양한 pcap을 생성하는 것입니다. 테스트에서 메모리가 문제가 되기 전까지 최대 200-300만 개의 동시 흐름을 관리했습니다. 또한 스트림 간의 다른 대기 시간으로 인해 일부 흐름이 다른 흐름보다 일찍 종료될 수 있습니다.

  • -d 규칙 디렉토리: 규칙 파일이 포함된 디렉토리 경로입니다. 디렉토리의 모든 규칙 파일에서 활성화된 모든 규칙을 읽습니다. 모든 규칙의 확장자는 .rules라고 가정합니다. 이 옵션 또는 -f를 사용하되 둘 다 사용하지 마십시오. # 기호는 규칙을 비활성화(즉, 주석 처리)하는 데 사용됩니다.

  • -D 기간: 개수가 아닌 기간을 기준으로 생성합니다. 기간은 초 단위입니다. 패킷 간 기본 대기 시간은 평균 1-200마이크로초입니다. 대기 시간이 짧으면 큰 기간으로 인해 수백만 개의 패킷이 생성되어 구축하는 데 오랜 시간이 걸릴 수 있습니다. 또한 기간은 최선의 노력입니다. 기본적으로 기간이 충족된 후에는 새 스트림이 생성되지 않지만 완료되지 않은 스트림이 있을 수 있습니다. 이러한 스트림은 여전히 기록되므로 실제 기간은 지정된 것보다 길 수 있지만 짧아서는 안 됩니다. 마지막으로 생성 중에 더 적은 수의 스트림을 생성하려면 더 큰 대기 시간을 설정하십시오.

  • -e 평가: 규칙 집합의 각 규칙에 대해 하나의 패킷만 생성합니다. -f를 제외한 다른 모든 입력을 무시합니다. 각 패킷에는 선택한 규칙과 일치하는 콘텐츠가 있습니다.

  • -E 전체 평가: 규칙 집합의 pcre 규칙에서 각 실행 가능한 경로에 대해 하나의 패킷을 생성합니다. 즉, ab(c|d)e는 두 개의 패킷(abce 및 abde)을 생성합니다. -f를 제외한 다른 모든 입력을 무시합니다.

  • -f 규칙 파일: 제공된 경로 및 파일 이름에 따라 단일 규칙 파일을 읽습니다.

  • -F 구성: Sniffles 옵션에 대한 구성 파일을 지정합니다. 구성 파일은 Sniffles 실행에 사용되는 매개변수를 고정하는 방법입니다.

  • -g 타임스탬프: pcap 타임스탬프의 시작 시간을 설정합니다. 1969년 12월 31일 이후의 초 수입니다. 기본값은 현재 시간입니다.

  • -h IP 홈 접두사: IP 홈 네트워크 접두사 목록입니다. 내부 주소에서 오는 것으로 의도된 IP 주소는 이러한 접두사를 사용합니다. 접두사는 xxx.xxx 형식으로 전체 4바이트 IPv4 주소를 지정할 수 있습니다. 예: "10.192.168,172.16".

  • -H IPv6 홈 접두사: IPv4 홈 접두사와 동일하지만 IPv6용입니다. 주목할만한 예외는 구분 기호가 콜론이며 콜론 사이에 2바이트가 표시된다는 것입니다.

  • -i IPv6 백분율: 1에서 100 사이의 값을 설정하여 IPv6로 패킷을 생성합니다. 이는 IPv6가 될 스트림의 백분율을 결정합니다.

  • -I 스캔 공격의 강도(즉, 초당 패킷 수).

  • -l 콘텐츠 길이: 콘텐츠 길이를 지정된 바이트 수로 고정합니다. 1 미만은 길이를 nfa에 의해 생성된 콘텐츠 또는 헤더도 무작위인 경우 10에서 1410 사이의 무작위 숫자로 설정합니다. 필요에 따라 패킷을 자르거나 채웁니다.

  • -L 대기 시간: 마이크로초 단위의 평균 대기 시간입니다. 설정하지 않으면 각 스트림에 대해 1에서 200 usecs 사이의 무작위 평균 대기 시간이 결정됩니다. 따라서 주어진 스트림의 패킷은 흐름의 각 패킷 사이에 평균 대기 시간을 갖습니다.

  • -M 사용자 정의 MAC 주소를 트래픽에 사용하기 위해 MAC 분포를 허용합니다. 기본적으로 MAC 주소는 무작위로 생성됩니다. MAC 정의 파일에 대한 자세한 내용은 examples/mac_definition_file.txt에서 찾을 수 있습니다. 참고: 소스 또는 대상 MAC에 따라 다른 값을 설정하기 위해 최대 두 개의 MAC 정의 파일을 지정할 수 있습니다. 파일을 하나만 지정하면 두 방향 모두에 사용됩니다. 다음 표기법을 사용하면 특정 방향을 지정할 수 있습니다. 예: 'path1:path2'. Path1은 소스 MAC에 대한 MAC 정의 파일이고 path2는 대상 MAC에 대한 MAC 정의 파일입니다. 물음표(?)를 사용하여 하나 또는 다른 것을 무작위로 지정할 수 있습니다. 예: '?:path2'는 무작위 소스 MAC을 가지지만 대상에는 파일을 사용합니다.

  • -n 완전히 일치하지 않음. 규칙에서 생성된 콘텐츠가 완전히 일치하지 않도록 설정합니다(즉, 자동으로 마지막 몇 문자를 자릅니다). 기본 동작은 규칙 콘텐츠와 완전히 일치하는 것입니다.

  • -o 출력 파일: 출력 파일의 이름을 지정합니다. 기본적으로 파일 이름은 sniffles.pcap입니다.

  • -O 오프셋: 스캔 공격을 시작하기 전의 오프셋입니다. 또한 트래픽에 여러 스캔을 삽입할 때 사용됩니다. 이것은 스캔이 시작되기 전의 초 수입니다. -R과 함께 사용하면 시작 전 평균 초 수가 됩니다.

  • -p 스트림당 패킷 수: 단일 스트림에 대한 콘텐츠를 포함하는 패킷 수를 지정합니다. 인수로 양수 값이 제공되면 각 스트림에 대해 정확히 x (x는 제공된 정수)개의 콘텐츠 포함 패킷이 나타납니다. x가 음수이면 각 스트림에 대해 1에서 abs(x)까지의 무작위 패킷 수가 나타납니다. 기본적으로 이 값은 1입니다.

  • -P 대상 포트 목록: 스캔 공격용입니다. 쉼표로 구분된 가능한 포트 목록 또는 단일 시작 포트를 제공합니다. 그렇지 않으면 포트가 무작위로 스캔됩니다. 단일 시작 포트가 제공되면 포트는 해당 지점부터 65535까지 순서대로 스캔된 후 시작 지점으로 되돌아갑니다. 목록이 제공되면 목록의 포트가 라운드 로빈 방식으로 스캔됩니다.

  • -r 무작위: 규칙이 아닌 무작위 콘텐츠를 생성합니다. 규칙이 여전히 제공되면 규칙은 헤더 생성에 사용됩니다. 참고: 규칙의 많은 기능이 무작위 생성의 특정 측면을 재정의할 수 있습니다.

  • -R 무작위 스캔 공격: 오프셋을 사용하여 트래픽에 스캔 공격을 생성하지만 오프셋을 중앙값으로만 사용합니다. 오프셋은 스캔이 종료되고 새 스캔이 시작되는 시간을 결정하는 데 사용됩니다.

도구 다운로드