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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
SUNBURST — Detection for SUNBURST C2 Stage-1 using Shannon Entropy | Kitploit
도구/GitHubGitHub/malwaremorghulis/sunburst
Network SecurityMalware AnalysisCommand and ControlThreat IntelligenceDNS AnalysisAnomaly Detection
GitHubmalwaremorghulis/sunburst

SUNBURST

Detection for SUNBURST C2 Stage-1 using Shannon Entropy

저장소 보기
313년 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

SUNBURST

SUNBURST C2 1단계 탐지 - Shannon 엔트로피 활용

About:

Shannon 엔트로피를 사용하여 DGA(Domain-Generation Algorithms)를 탐지합니다. 이 함수에는 FQDN만 입력하거나 CSV 파일에서 읽어야 합니다. SYNTAX: Prefix_or_subdomain.Domain.TLD APT가 Kill Chain: C2에서 긴 문자열 DGA를 활용하는 것에 대응하기 위해 제작되었습니다. 표준 편차의 2배 이상 높은 엔트로피를 가진 긴 문자열 URL을 식별합니다. 긴 접두사/하위 도메인이 있는 URL 중 상위 2.5%를 살펴봅니다. CND 분석가가 필요로 할 경우 추가 메타데이터를 저장합니다 (예: 접두사 길이).

Requirements:

  1. Python 3.9+
  2. Python이 PATH 변수에 존재해야 합니다.
  3. 모든 import 항목 필요 (필요 시 pip install).
  4. 입력 DNS 로그에는 줄당 1개의 FQDN이 있어야 합니다 (다른 구두점 없음).
  5. Cisco Top-1M (CSV, ZIP) 또는 Majestic (CSV) Top-1M 파일이 스크립트와 같은 폴더에 있어야 합니다.

How-to-Run (INTERACTIVE MODE is ON, see VARIABLES):

  1. Python 3.9.x 설치
  2. 올바른 형식으로 모든 입력 파일 준비 (도메인은 텍스트 파일에 줄당 1개, 구두점 없음)
  3. 입력 파일이 이 스크립트와 같은 디렉터리/폴더에 있는지 확인하세요. 4a) (Windows) Python IDLE 또는 Visual Studio Code에서 이 스크립트를 엽니다. 4b) (Linux) $~: python3 shannon.py
  4. 검사할 입력 DNS 로그 파일을 입력합니다.
  5. 활용할 Cisco Umbrella (CSV/ZIP) 또는 Majestic Top-1M 파일(CSV)을 입력합니다.
  6. Frequency 및 Shannon Entropy 값이 생성될 때까지 기다립니다.
  7. 출력 파일을 검사합니다.

How-to-Run (INTERACTIVE MODE is OFF, see VARIABLES):

  1. Python 3.9.x 설치
  2. 올바른 형식으로 모든 입력 파일 준비 (도메인은 텍스트 파일에 줄당 1개, 구두점 없음)
  3. 입력 파일이 이 스크립트와 같은 디렉터리/폴더에 있는지 확인하세요. 4a) (Windows) Python IDLE 또는 Visual Studio Code에서 이 스크립트를 엽니다. 4b) (Linux) $~: python3 shannon.py
  4. 분석할 입력 로그는 "domains.txt"입니다. VARIABLES를 참조하세요.
  5. 사전 확률을 만드는 데 사용할 Top-N 파일을 선택하세요. VARIABLES를 참조하세요.
  6. Frequency 및 Shannon Entropy 값이 생성될 때까지 기다립니다.
  7. 출력 파일을 검사합니다.

Assumptions:

  1. 대문자와 소문자가 동일한 확률로 나타납니다. a) TOR 노드가 DNS 쿼리의 대소문자 구분 및 0x20-encoding을 변경한다는 점은 무시합니다.
  2. ETOAN 문자 빈도 차트는 0-9, "-", ""가 없어 충분하지 않습니다. a) 도메인에는 하이픈(-), 밑줄(), 숫자가 포함될 수 있습니다.
  3. ExploderBot DGA를 대응하도록 설계되지 않았습니다.
  4. 입력: 단순 텍스트 파일이며 각 URL은 자체 행에 있어야 하며 다른 내용은 없습니다.
  5. 입력은 금지 문자가 없는 엄격한 URL 문자열로만 구성됩니다.
  6. 입력 및 출력 파일은 이 스크립트와 같은 폴더에 있어야 합니다.
  7. Python3가 PATH 변수에 있어야 합니다.

Data Set (Domains):

데이터 세트는 SQLite에서 추출한 Pi-Hole 쿼리 로그(12시간 창)에서 파생되었습니다.

BASH:

$~: sqlite3 /etc/pihole/pihole-FTL.db "SELECT domain FROM queries WHERE timestamp >='$(($(date +%s) - 43200))'" > domains.txt

데이터는 Excel > Data > Remove Duplicates를 사용하여 중복 제거되었습니다. 역방향 조회(PTR) in-addr.arpa 데이터도 제거되었습니다.

Data Set (Probabilities):

RedCanary의 DGA 분석 결과를 활용하여 이 스크립트는 URL을 가져와 Shannon 엔트로피를 계산합니다.

DevOps Testing Phase Line:

  1. shannon.py (1.0) - 정적 RedCanary Dictionary로 계산이 작동하도록 합니다.
  2. shannon.py (1.1) - 약간의 테스트가 1.0에 병합됨.
  3. dictionary.py (1.0) - Cisco + Majestic Top-1M 열기/닫기 테스트.
  4. shannon.py (2.0) - 1.0과 dictionary.py 테스트 함수 결합.

Reference:

Splunk Shannon Entropy - 아이디어가 나온 곳* https://www.splunk.com/en_us/blog/tips-and-tricks/when-entropy-meets-shannon.html

SANS Mark Baggett - RedCanary가 Alexa Top 1M 분석에 사용한 도구 https://github.com/markbaggett/freq

RedCanary - Probability 점수가 나온 블로그 https://redcanary.com/blog/threat-hunting-entropy/

Alexa's Top 1M Domains - RedCanary가 사용한 데이터 말뭉치 https://www.alexa.com/topsites

DGA Detector https://github.com/exp0se/dga_detector

Shannon Entropy - 공식 https://towardsdatascience.com/the-intuition-behind-shannons-entropy-e74820fe9800

도구 다운로드