스마트폰 AI 에이전트가 WHOIS를 통해 서브도메인 탈취(Subdomain Takeover) 위험을 감지할 수 있을까?
요약
스마트폰에서 실행되는 로컬 AI 펜테스팅 에이전트 Nightcrawler의 연산 한계를 극복하기 위해 Domain WHOIS API를 활용하는 방법을 소개합니다. API를 통해 DNS 및 WHOIS 데이터를 효율적으로 가져와 서브도메인 탈취 위험을 신속하게 식별할 수 있습니다.
핵심 포인트
- 모바일 로컬 LLM의 연산 및 배터리 제한 극복 방안 제시
- Domain WHOIS API를 통한 경량화된 정찰(Reconnaissance) 구현
- 서브도메인 탈취(Subdomain Takeover) 위험의 효율적 탐지
- 구조화된 JSON 데이터를 활용한 AI 에이전트의 추론 프로세스
#cybersecurity #bugbounty #aiagents #pentesting #whois #subdomaintakeover #rapidapi `#nightcrawler
문제점: 주머니 속의 펜테스터에게는 백엔드 브레인이 필요하다
며칠 전, Nightcrawler라는 Show HN 프로젝트가 내 눈길을 끌었습니다. 이는 스마트폰에서 완전히 실행되는 로컬 AI 펜테스팅 (pentesting) 에이전트입니다. 아이디어는 매우 매력적입니다. 클라우드 GPU 없이도 공격 보안 (offensive-security) 어시스턴트를 주머니에 넣고 다닐 수 있으니까요. 하지만 스마트폰의 로컬 LLM은 연산 능력이 부족합니다. 배터리를 소모하고 모바일 데이터를 다 써버리지 않고서는 서브도메인을 브루트 포스 (brute-force) 하거나, 수천 개의 DNS 레코드를 해석하거나, 과거의 WHOIS/RDAP 스냅샷을 가져올 수 없습니다.
바로 이 지점에서 경량화된 정찰 (reconnaissance) API가 빛을 발합니다. 만약 Nightcrawler가 공격 표면 (attack surface)을 매핑하고자 한다면, 직접 무거운 작업을 수행해서는 안 됩니다. 대신 이미 다음과 같은 방법을 알고 있는 백엔드를 호출해야 합니다:
- RDAP/WHOIS 해석 (resolve)
- DNS 레코드 열거 (enumerate) (A, AAAA, NS, MX, TXT, CNAME)
- SSL 인증서 메타데이터 가져오기
- 서브도메인 발견
- 서브도메인 탈취 (subdomain takeover) 위험 점수 산정
- 이메일 보안 태세 (email-security posture) 점수 산정 (SPF, DMARC, DKIM, DNSSEC, MTA-STS)
- 해당 값들의 과거 스냅샷 (historical snapshots) 반환
Domain WHOIS API는 이 모든 것을 하나의 요청으로 묶어 제공합니다. 이 글에서는 이 API를 정찰 백엔드로 전환하여, Nightcrawler와 같은 모바일 기반 에이전트가 단 몇 초 만에 서브도메인 탈취 위험을 식별할 수 있도록 만드는 방법을 보여드리겠습니다.
로컬 AI 에이전트에게 서브도메인 탈취 위험이 중요한 이유
서브도메인 탈취 (Subdomain takeover)는 버그 바운티 (bug bounty) 프로그램에서 영향력은 가장 높으면서 복잡도는 가장 낮은 버그 중 하나입니다. 공격자는 연결이 끊긴 (dangling) DNS 레코드를 찾아냅니다. 예를 들어 docs.example.com이 더 이상 존재하지 않는 GitHub Pages나 Heroku 앱을 여전히 가리키고 있는 경우를 찾아내어 이를 점유하는 방식입니다. 해결 방법은 보통 DNS 레코드를 삭제하는 것뿐이지만, 대규모로 이러한 끊긴 레코드를 찾아내는 것이 어려운 부분입니다.
스마트폰 에이전트는 SoC를 과열시키지 않고는 로컬에서 amass, subfinder, dnsx 파이프라인을 실행할 수 없습니다. 대신, 다음과 같이 질문할 수 있습니다:
“API, 여기 타겟 도메인이 있어. 서브도메인(subdomains), DNS 확인 상태(DNS resolution status), 유효하지 않은 CNAME(dangling CNAMEs), 그리고 탈취 위험 점수(takeover-risk score)를 알려줘.”
그러면 로컬 LLM은 구조화된 JSON 응답을 바탕으로 추론을 수행하고, 해당 발견 사항을 사용자에게 보고할지 여부를 결정합니다.
API 반환 값
Domain WHOIS API 응답은 여러 정찰(recon) 도구를 결합한 단일 JSON 문서입니다. 일반적인 페이로드(payload)는 다음과 같습니다:
{
"domain": "example.com",
"rdap": {
...
이 단 한 번의 응답만으로 에이전트는 다음을 수행할 수 있습니다:
- 도메인 생성일 및 만료일 확인.
- 서브도메인(subdomains) 열거.
- 탈취 가능한 유효하지 않은 CNAME(dangling CNAMEs) 식별.
- 이메일 보안 태세(email-security posture) 점수 산정.
- DNS 레코드와 SSL 유효성 비교.
코드 예시: Nightcrawler를 위한 정찰 도우미 구축
다음은 모든 로컬 에이전트가 내장할 수 있는 간단한 Python 도우미 코드입니다. 이 코드는 API를 쿼리하고, 고위험 서브도메인을 추출하며, LLM이 소비할 수 있는 마크다운(markdown) 보고서를 출력합니다.
import os
import requests
...
보고서는 로컬 LLM이 이를 도구 출력값으로 파싱하여 (항상 법적이고 허가된 범위 내에서) 추가적인 익스플로잇(exploitation) 단계를 권장할지 결정할 수 있도록 의도적으로 마크다운 형식으로 작성되었습니다.
버그 바운티(bug-bounty) 타겟 리스트 일괄 스캔
Nightcrawler에 범위 내(in-scope) 도메인 리스트가 주어지면, 로컬 DNS 도구를 실행하지 않고도 정찰 작업을 병렬로 처리할 수 있습니다:
from concurrent.futures import ThreadPoolExecutor
TARGETS = [
...
이를 통해 스마트폰의 작업 부하를 최소화할 수 있습니다. 도메인당 하나의 HTTP 요청만 보내고, 이후의 순수 결정 로직은 기기 내에서 처리됩니다.
과거 스냅샷: /history라는 강력한 기능
AI 펜테스터(pentester)에게 가장 유용한 기능 중 하나는 타겟이 시간에 따라 어떻게 변했는지 확인하는 능력입니다. /history/{domain} 엔드포인트는 이메일 보안 레코드와 서브도메인의 과거 스냅샷을 반환하며, 이는 인프라 드리프트(infrastructure drift)를 탐지하는 데 완벽합니다.
def history_recon(domain: str) -> dict:
url = f"{BASE_URL}/history/{domain}"
headers = {
...
만약 docs.example.com이 3개월 전에는 존재했으나 어제 DNS에서 사라졌음에도 불구하고, 해당 CNAME이 여전히 살아있다면, 이는 탈취(takeover)의 주요 대상 후보입니다.
Domain WHOIS API 사용 방법
👉 RapidAPI의 Domain WHOIS API: https://rapidapi.com/On13uka/api/domain-whois2
curl 예시
curl --request GET \
--url 'https://domain-whois2.p.rapidapi.com/whois/example.com' \
--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
...
Python 예시
import requests
url = "https://domain-whois2.p.rapidapi.com/whois/example.com"
...
YOUR_RAPIDAPI_KEY를 RapidAPI 대시보드에서 발급받은 키로 교체하세요. 정확한 엔드포인트 경로(/whois/{domain}, /history/{domain})는 RapidAPI 콘솔에 문서화되어 있으므로, 최신 라우트 정의 및 속도 제한(rate-limit) 세부 사항을 해당 콘솔에서 확인하시기 바랍니다.
오픈 소스 래퍼(wrapper) 및 클라이언트 코드
가벼운 프록시(proxy)를 직접 호스팅하거나, 개선 사항을 기여하거나, 혹은 단순히 구현 내용을 살펴보고 싶다면 이 프로젝트는 오픈 소스로 공개되어 있습니다:
👉 GitHub 저장소: https://github.com/On13uka/domain-whois-api
저장소를 포크(fork)하여 자신만의 점수 산정 로직(scoring logic)을 추가하거나, Nightcrawler가 프라이빗 네트워크를 통해 통신할 수 있는 FastAPI 심(shim)을 구축할 수 있습니다.
결론
Nightcrawler와 같은 로컬 AI 침투 테스트(pentesting) 에이전트는 매우 흥미로운 변화를 보여줍니다. 지능은 기기에 머물러 있지만, 가공되지 않은 정찰(reconnaissance) 작업까지 기기에 머물 필요는 없습니다. WHOIS/RDAP, DNS, SSL, 서브도메인 탐색(subdomain discovery), 탈취 위험(takeover risk), 그리고 이메일 보안 점수 산정을 Domain WHOIS API로 오프로딩(offloading)함으로써, 스마트폰 에이전트는 배터리를 소모하거나 모바일 네트워크에 과부하를 주지 않고도 몇 초 만에 공격 표면(attack surfaces)을 매핑할 수 있습니다.
만약 휴대폰 기반의 보안 에이전트, 버그 바운티(bug-bounty) 자동화, 또는 위협 인텔리전스(threat-intel) 대시보드를 구축하고 있다면, 이 API를 정찰 계층(reconnaissance layer)으로 연결하십시오. 로컬 LLM은 깨끗하고 구조화된 데이터를 얻게 되고, 휴대폰은 발열 없이 유지되며, 여러분은 실제 익스플로잇(exploitation) 로직에 집중할 수 있습니다 — 물론, 허가된 범위 내에서 말입니다.
즐거운 해킹 되시길 바라며, 여러분의 서브도메인이 방치(dangle)되는 일이 없기를 바랍니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기