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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
browsertunnel — 브라우저에서 DNS를 통해 데이터를 은밀히 유출 | Kitploit
도구/GitHubGitHub/veggiedefender/browsertunnel
Data ExfiltrationWeb SecurityRed TeamingDNS Analysis
GitHubveggiedefender/browsertunnel

browsertunnel

브라우저에서 DNS를 통해 데이터를 은밀히 유출

저장소 보기웹사이트
42230136년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

browsertunnel

CircleCI

Browsertunnel은 DNS 프로토콜을 사용하여 브라우저에서 데이터를 유출(exfiltrate)하는 도구입니다. dns-prefetch라는 기능을 악용하여 작동하는데, 이 기능은 지정된 도메인에 대해 백그라운드에서 DNS 조회를 수행하여 웹사이트의 지연 시간을 줄이기 위한 것입니다. DNS 트래픽은 브라우저의 디버깅 도구에 나타나지 않으며, 페이지의 콘텐츠 보안 정책(CSP)에 의해 차단되지 않고, 기업 방화벽이나 프록시에서 검사되지 않는 경우가 많아, 제한된 환경에서 데이터를 밀반출(smuggling)하기에 이상적인 매체입니다.

오래된 기법입니다. DNS 터널링 자체는 90년대로 거슬러 올라가며, Patrick Vananti는 2016년에 dns-prefetch를 이 용도로 사용하는 방법을 작성했습니다. 하지만 제가 알기로 browsertunnel은 이 기법을 실제로 시연하는 최초의 오픈 소스, 프로덕션 준비가 완료된 클라이언트/서버입니다. dns-prefetch는 클라이언트 JavaScript에 어떤 데이터도 반환하지 않으므로, browsertunnel을 통한 통신은 단방향(uni-directional)입니다. 또한 일부 브라우저는 기본적으로 dns-prefetch를 비활성화하며, 그런 경우 browsertunnel은 조용히 실패합니다.

이 프로젝트는 두 부분으로 구성됩니다:

  1. golang으로 작성된 서버는 권위 있는 DNS 서버(authoritative DNS server)로 기능하며, browsertunnel이 보낸 메시지를 수집하고 디코딩합니다.
  2. html/ 폴더에 있는 작은 JavaScript 라이브러리는 클라이언트 측에서 메시지를 인코딩하고 전송합니다.

작동 방식

Browsertunnel은 문자열을 서브도메인에 인코딩하여 DNS를 통해 임의의 문자열을 전송할 수 있습니다. 브라우저가 해당 도메인을 재귀적으로 해석하려고 시도할 때, 이 서브도메인이 browsertunnel 서버로 전달됩니다.

하나의 도메인(253바이트)에 맞지 않는 더 긴 메시지는 자동으로 여러 쿼리로 분할되며, 서버에서 이를 재조립하고 디코딩합니다.

설정 및 사용법

먼저, DNS 레코드를 설정하여 서브도메인을 서버에 위임합니다. 예를 들어, 서버 IP가 192.0.2.123이고 서브도메인 t1.example.com을 통해 터널링하려면 DNS 구성은 다음과 같습니다:

root@kitploit:~
t1		IN	NS	t1ns.example.com.
t1ns		IN	A	192.0.2.123

서버에서 go get을 사용하여 browsertunnel을 설치합니다. 또는 로컬 머신에서 browsertunnel을 컴파일한 후 바이너리를 서버로 복사합니다.

root@kitploit:~
go get github.com/veggiedefender/browsertunnel

다음으로, 터널링할 서브도메인을 지정하여 browsertunnel을 실행합니다.

root@kitploit:~
browsertunnel t1.example.com

전체 사용법은 browsertunnel -help를 실행하세요:

root@kitploit:~
$ browsertunnel -help
Usage of browsertunnel:
  -deletionInterval int
    	seconds in between checks for expired messages (default 5)
  -expiration int
    	seconds an incomplete message is retained before it is deleted (default 60)
  -maxMessageSize int
    	maximum encoded size (in bytes) of a message (default 5000)
  -port int
    	port to run on (default 53)

이러한 매개변수에 대한 더 자세한 설명과 근거는 godoc을 참조하시기 바랍니다.

마지막으로, 터널을 테스트해보세요! 제 데모 페이지 여기를 사용하거나 이 저장소를 클론하여 로컬에서 html/index.html을 로드할 수 있습니다. 모든 것이 정상 작동하면 stdout에 메시지가 기록되는 것을 확인할 수 있어야 합니다.

이 프로젝트를 실제 환경에 적용하려면 필요에 따라 코드를 포크(fork)하고 수정하는 것이 좋습니다. 몇 가지 아이디어:

  • 메시지를 stdout 대신 데이터베이스에 기록하기
  • 클라이언트 코드를 트랜스파일(transpile)하거나 다시 작성하여 구형 브라우저에서도 작동하도록 하기
  • 트래픽 양과 예상되는 ID 충돌에 따라 도메인의 ID 부분을 더 크거나 작게 만들기
  • 비밀 유지 및 변조 방지를 위해 메시지 인증 및 암호화 적용 (DNS는 평문 프로토콜임을 기억하세요)
도구 다운로드