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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
tko-subs — 죽은 DNS 레코드가 있는 서브도메인을 탐지하고 탈취하는 데 도움을 주는 도구 | Kitploit
도구/GitHubGitHub/anshumanbh/tko-subs
Vulnerability AnalysisPenetration TestingCloud SecuritySubdomain EnumerationDNS Analysis
GitHubanshumanbh/tko-subs

tko-subs

죽은 DNS 레코드가 있는 서브도메인을 탐지하고 탈취하는 데 도움을 주는 도구

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

tko-subs

이 도구는 다음을 가능하게 합니다:

  • 서브도메인이 다음과 같은 이유로 탈취될 수 있는지 확인:

    • CMS 제공업체(Heroku, Github, Shopify, Amazon S3, Amazon CloudFront 등)로 연결되는 링 CNAME이 있어 탈취 가능한 경우
    • 존재하지 않는 도메인 이름으로 연결되는 링 CNAME이 있는 경우
    • 공격자가 서브도메인의 DNS 레코드를 제어할 수 있도록 탈취 가능한 네임서버를 가리키는 하나 이상의 잘못되었거나 오타가 있는 NS 레코드가 있는 경우
  • -takeover 플래그를 제공하여 해당 서브도메인을 실제로 탈취합니다. 현재, 탈취는 Github Pages와 Heroku Apps에 대해서만 지원되며 기본적으로 탈취 기능은 꺼져 있습니다.

  • providers-data.csv 파일을 통해 자신만의 CMS 제공업체를 지정하고 확인할 수 있습니다. 해당 파일에서 CMS 이름, CNAME 값, 찾고자 하는 문자열, HTTP로만 작동하는지 여부를 명시합니다. 몇 가지 예시를 확인해 보세요.

면책 조항: 나쁜 사람이 되지 마세요!

말할 필요도 없이, 이 도구는 매우 신중하게 사용해 주시기 바랍니다. 저자는 어떠한 결과에 대해서도 책임을 지지 않습니다. 기본적으로 이 도구는 서브도메인 탈취를 허용하지 않습니다. 탈취를 원한다면 -takeover 플래그를 지정하세요.

사전 요구 사항

GO가 설치되어 있어야 합니다. GO가 설치되면 go get github.com/anshumanbh/tko-subs를 입력하여 도구를 다운로드하십시오.

도구가 다운로드되면 tko-subs -h를 입력하십시오.

다음으로 해야 할 일은 다음 정보를 얻는 것입니다:

  • Github 개인 액세스 토큰 - 이 토큰은 저장소, 참조, 콘텐츠 등을 생성할 수 있는 권한이 있어야 합니다. 여기서 토큰을 생성할 수 있습니다 - https://github.com/settings/tokens
  • Heroku 사용자 이름 및 API 키
  • Heroku 앱 이름 - 여기(https://gist.github.com/wh1tney/2ad13aa5fbdd83f6a489)의 지침에 따라 원하는 내용이 홈페이지에 표시되는 정적 앱을 Heroku에 만들 수 있습니다. 앱을 만든 후에는 해당 앱 이름을 플래그에 사용하십시오(아래 참조). 이 앱을 사용하여 도메인(타사 Heroku 앱으로 연결되는 링 CNAME 포함)을 탈취할 것입니다.

참고 - 서브도메인을 탈취하려는 경우에만 이러한 값이 필요합니다. 기본적으로는 필요하지 않습니다.

빌드에 필요한 Go 패키지.

root@kitploit:~
go get github.com/bgentry/heroku-go
go get github.com/gocarina/gocsv
go get github.com/google/go-github/github
go get github.com/olekukonko/tablewriter
go get golang.org/x/net/publicsuffix
go get golang.org/x/oauth2
go get github.com/miekg/dns

실행 방법?

모든 것이 설치되면 해당 디렉토리로 cd하여 다음을 입력하십시오: tko-subs -domains=domains.txt -data=providers-data.csv -output=output.csv

탈취도 함께 수행하려면 명령은 다음과 같습니다: tko-subs -domains=domains.txt -data=providers-data.csv -output=output.csv -takeover -githubtoken=<github-token> -herokuusername=<heroku-username> -herokuapikey=<heroku-api-key> -herokuappname=<heroku-app-name>

단일 도메인만 확인하려면 다음을 입력하십시오: tko-subs -domain <domain-name>

여러 도메인을 확인하려면 다음을 입력하십시오: tko-subs -domain <domain-name-1>,<domain-name-2>

기본적으로:

  • domains 플래그는 domains.txt로 설정됩니다.
  • data 플래그는 providers-data.csv로 설정됩니다.
  • output 플래그는 output.csv로 설정됩니다.
  • takeover 플래그는 설정되지 않았으므로 기본적으로 탈취가 이루어지지 않습니다.
  • domain 플래그는 설정되지 않았으므로 항상 domains.txt 파일에 언급된 모든 도메인을 확인합니다. domain 플래그가 언급되면 해당 도메인만 확인하고 domains.txt 파일은 무시합니다(파일이 있어도).
  • threads 플래그는 5로 설정됩니다.

따라서 단순히 tko-subs를 실행하면 위의 기본값으로 실행됩니다.

providers-data.csv 형식은 어떻게 되나요?

name,cname,string,http

  • name: 제공업체 이름 (예: github)
  • cname: 웹사이트를 제공업체의 콘텐츠에 매핑하는 데 사용되는 CNAME (예: github.io)
  • string: 클레임되지 않은 서브도메인에 대해 반환되는 오류 메시지 (예: "There isn't a GitHub Pages site here")
  • http: 사이트에 연결할 때 http(기본값인 https가 아님)를 사용할지 여부 (true/false)

출력 형식은 어떻게 되나요?

Domain,CNAME,Provider,IsVulnerable,IsTakenOver,Response

  • Domain: 확인된 도메인
  • CNAME: 해당 도메인의 CNAME
  • Provider: 도메인이 사용 중인 것으로 확인된 제공업체
  • IsVulnerable: 도메인이 취약한 것으로 확인되었는지 여부 (true/false)
  • IsTakenOver: 도메인이 탈취되었는지 여부 (true/false)
  • Response: 서브도메인이 대조된 메시지

죽은 DNS 레코드가 발견되면 Provider는 비워집니다. 비정상적인 네임서버가 발견되면 Provider와 CNAME은 비워집니다

내부적으로 어떤 일이 일어나나요?

subdomains.txt 파일의 모든 도메인(GoRoutines를 사용하여 동시에)을 반복하며 다음을 수행합니다:

  • 비정상적인 권한 있는 네임서버가 있는지 확인하고, 있다면 해당 도메인을 취약한 것으로 표시합니다.
  • 링 CNAME 레코드(죽은 DNS 레코드)가 있는지 확인하고, 있다면 해당 도메인을 취약한 것으로 표시합니다.
  • 서브도메인이 이 두 테스트를 통과하면, 해당 도메인을 컬(curl)하여 응답을 받고 그 응답이 providers-data.csv 파일에 언급된 데이터 제공자 문자열과 일치하는지 확인합니다.
  • 응답이 일치하면 해당 도메인을 취약한 것으로 표시합니다.
  • 다음으로, takeover 플래그가 언급되었는지에 따라 취약한 서브도메인을 탈취하려고 시도합니다.
  • 예를 들어, Github 페이지를 탈취하기 위해 코드는 다음을 수행합니다:
    • 저장소 생성
    • 해당 저장소에 gh-pages 브랜치 생성
    • CNAME과 index.html을 해당 저장소의 gh-pages 브랜치에 업로드합니다. 여기서 CNAME은 탈취할 도메인을 포함합니다. index.html에는 도메인이 탈취되면 표시될 This domain is temporarily suspended 텍스트가 포함됩니다.
  • 마찬가지로, Heroku 앱의 경우 코드는 다음을 수행합니다:
    • 링 도메인을 Heroku 앱( .env 파일에서 제공할 앱 이름)에 추가합니다.
  • 그리고 그게 전부입니다!

향후 작업

  • CMS 이름과 정규식을 사용자나 .env 파일에서 가져와서 자동으로 도구에 연결하여 찾을 수 있도록 합니다. 완료
  • 더 많은 CMS에 대한 탈취 추가
  • 더 많은 CMS 제공업체 추가

크레딧

  • go-github 라이브러리에 도움을 준 Luke Young(@TheBoredEng)에게 감사드립니다.
  • 일부 탈취에 필요한 기술적 세부 사항을 이해하는 데 도움을 준 Frans Rosen(@fransrosen)에게 감사드립니다.
  • 제공자 데이터 기능을 구현하고 코드를 진행하는 데 시간을 내준 Mohammed Diaa(@mhmdiaa)에게 감사드립니다.
  • 꼭 필요한 코드 리프레시를 제공한 high-stakes에게 감사드립니다.

변경 로그

5/27

  • 이미지 크기를 줄인 새로운 Dockerfile 추가
  • 테스트할 샘플 domains.txt 파일 추가
  • mhmdiaa가 죽은 DNS 탈취 로직 추가. 문서 업데이트. 정말 감사합니다!

11/6

  • high-stakes가 몇 가지 버그를 수정하고 코드를 더 깔끔하게 만드는 새로운 코드가 포함된 PR을 제출함

9/22

  • 단일 도메인 확인을 위한 선택적 플래그 추가
  • 설치 및 실행을 더 쉽게 만듦

6/25

  • 고루틴을 구현하여 코드를 훨씬 빠르게 만듦
  • Golang의 net 패키지의 LookupCNAME 함수를 사용하는 대신 dig를 사용하도록 변경하여 죽은 DNS 레코드도 얻을 수 있게 함. 더 많은 공격 표면!!
도구 다운로드