펜테스팅 위키
  • Welcome
    • Home
  • 정보 수집
    • OSINT
      • Sub Domain
      • Google Hacking
      • Github
      • IP Address
      • Employees
    • 내부망
      • RID Cycling
      • Password Spraying
      • Password Must Change
      • Extension
        • xlsx/ods
        • pfx
        • vhd
        • pst
        • vbs
        • hc
      • Protocol
        • 21 - FTP
        • 22 - SSH
        • 25 - SMTP
        • 23 - Telnet
        • 53 - DNS
        • 80/443 - HTTP
        • 88 - Kerberos
        • 111 - RPC
        • 135 - msrpc
        • 139/445 - SMB
        • 389/636 - LDAP
        • 1433 - MSSQL
        • 5985/5986 - wsman
  • 초기 침투
    • CVEs
      • CVE-2025-31486
    • Phishing
      • Command File
      • EXE + LNK
      • wax
      • Microsoft Word
    • Web
      • Quary Language
        • SQL
        • GraphQL
      • File Upload
      • File Download
      • XSS
      • SSRF
      • CSRF
      • Open Redirect
      • SOP / CORS
    • ZIP Slip
  • 지속성
    • Active Directory
      • Golden Tickets
      • Diamond Tickets
      • DC Shadow
      • RID Hijacking
      • Certificate
    • Local
      • Task Scheduler
      • Startup Folder
      • Registry AutoRun
      • COM
      • WMI Event Subscription
      • SSH Key Injection
      • DLL Hijacking
      • DLL SideLoading
      • Create Account
  • 권한 상승
    • Active Directory
      • DACL
        • ReadGMSAPassword
        • ReadLAPSPassword
        • ForceChangePassword
        • AddSelf
        • GenericAll
        • Inherited GenericAll
        • WriteOwner
        • GenericWrite
        • WriteProperty
        • WriteSPN
        • AddMembers
        • WriteGPO
        • AddAllowedToAct
        • AllExtendedRights
        • Restore-ADObject
      • AD CS
        • Abuse Permissions
        • ESC1
        • ESC2
        • ESC3
        • ESC4
        • ESC5
        • ESC6
        • ESC7
        • ESC8
        • ESC9
        • ESC10
        • ESC11
        • CVE-2022-26923
        • Non-PKINIT
      • MS14-068
      • Server Operators
      • DnsAdmins
      • noPac
      • Silver Tickets
      • KrbRelayUp
      • GPO
    • Windows
      • SeImpersonatePrivilege
      • Unquoted Service Path
      • Weak Service Permissions
      • Weak Service Binary Permissions
      • UAC Bypass
      • Always Install Elevated
      • Autoruns
      • Credential Manager
      • Local Service Account
  • 민감정보 탈취
    • Active Directory
      • Kerberoasting
      • Timeroasting
      • Targeted Kerberoast
      • ASRep-Roasting
      • AS Requested Service Tickets
      • Unconstrained Delegation
      • Constrained Delegation
      • Alternate Service Name
      • Resource Based Constrained Delegation
      • Shadow Credentials
      • DCSync
      • LSASS
      • Backup Operators
      • SeEnableDelegationPrivilege
      • Domain Cached Credentials
      • Network Access Account Credentials
      • DPAPI Backup Key
    • Windows
      • Unattended File
      • DPAPI
      • Hard-coding Credentials
      • SeBackupPrivilege
  • 측면 이동
    • File Transfer
      • SCP
      • ZIP
      • ncat
      • Python
      • PowerShell
      • certutil
      • wget
      • SMB
      • Base64
      • FTP
      • WebDav
      • cURL
    • Pivoting
      • SOCKS
      • Proxifier
      • Remote Port Forwarding
    • NTLM Relay
    • WebDAV Relay
    • WinRM
    • PsExec
    • WMI
    • DCOM
    • RDP
    • Port Forwarding
    • Domain Trust Discovery
  • 사용자 가장
    • Pass the Hash
  • Pass the Ticket
  • Overpass the Hash
  • Token Impersonation
  • Make Token
  • Process Injection
  • Domain Trust
    • Active Directory Trusts
    • Two-way Domain Trust
    • One-way Domain Trust
  • ETC
    • CS
      • Active Directory
      • Kerberos
      • NTLM
      • PKINIT
      • Integrity
      • Registry
      • Delegation
      • OAuth 2.0
      • S4U
      • SCCM
      • SID History
      • TRUSTWORTHY
      • Link Server Passwords
      • SSL Pinning
    • Tools
      • Mindmap
      • Cobalt Strike
      • BloodHound
      • LDAP Search
      • Hydra
      • Hashcat
      • Ligolo-ng
    • Home Lab
Powered by GitBook
On this page
  • 외부망
  • 자동화된 정보 수집
  • 수동적 정보 수집
  • 내부망
  • References

Was this helpful?

Export as PDF
  1. 정보 수집
  2. OSINT

Sub Domain

자회사를 뿌리에 두고, 다른 분야의 사업을 하는 계열사들이 있듯이 대표적으로 사용하거나 노출하는 도메인 하위에는 다양한 서브 도메인들이 있습니다. 예를 들어 http://example.com 을 관리하는 회사에서, 메일과 관련된 서비스를 처리하기 위해서는 http://mail.example.com 등으로 메인 도메인 하위에 존재하는 확장 주소입니다.

서브 도메인을 수집하는 방법에는 여러가지가 있지만 이것에 대해서 논하기 이전에 현실적인 부분을 다루겠습니다. 대부분의 기업들은 서로 말하지 않아도 규칙이 비슷한 양상이 있습니다. 예를 들어 http://example.com 의 개발 서버는 http://dev.example.com 등으로 사용하는 것처럼 말이죠. 모의침투를 진행하면 메인 도메인 서비스에서는 발견되지 않는 초기 침투 발판이 서브 도메인에서 직접적으로 RCE가 가능하다거나, 수집한 크리덴셜 등의 정보로 초기 침투의 발판이 되기도 합니다. 그럼에도 불구하고 기업은 브랜드 통일성과 인지도 등의 이유로 메인 도메인 하위에 확장 주소를 사용합니다. 또한 도메인은 한정적인 자원이기 때문에 도메인을 등록할 때마다 비용이 발생하는 반면, 서브 도메인은 추가 비용 없이 원하는 만큼 만들 수 있으며 DNS 관리도 일괄적으로 용이하다는 이유도 있습니다.

외부망

서브 도메인 탐색에 대한 방법론은 여러가지가 있지만, 본 위키에서는 자동/수동적인 방법으로 나눈 후, 자동화된 방법의 방식 중 브루트포스와 정보 수집 방식으로 나누어 기술하겠습니다.

자동화된 정보 수집

자동화된 정보 수집은 오픈 소스로 공개되어 있는 도구를 사용하며, 주로 3가지 방식으로 정보를 수집합니다.

  1. 자주 사용되는 서브 도메인 주소를 목록화하여 메인 도메인 하위에 붙인 뒤 요청하는 브루트 포스 방식

  2. 메인 도메인에 접속하여 자바스크립트나 API 호출 등을 통해서 확인하는 패킷 분석 방식

  3. 구글, Bing 등의 검색 엔진을 통해 외부에 노출된 서브 도메인을 탐색

브루트포스
정보 수집

장점

  • 존재하지 않는 서브 도메인에 대한 요청을 보낼 경우 트래픽이 발생하지 않아 부하가 적음

  • 공개된 정보가 없더라도 사전 파일을 통핸 서브 도메인 발견이 가능

  • 유추가 힘든 도메인도 발견이 용이

  • 대용량 사전파일을 사용하는 브루트포스 방식에 비해 시간이 짧은 편

단점

  • 사전 파일의 크기에 의존하기 때문에 정보 수집 확률을 높일 수록 시간이 오래 걸림

  • 사전 파일에 존재하지 않는 서브 도메인은 찾을 수가 없음

  • 공개하고 있는 정보가 없다면 서브 도메인을 수집하기 어려움

dnsrecon

# apt 설치
apt install dnsrecon
dnsrecon -t brt -D /usr/share/wordlists/subdomains-10000.txt -d example.com

knockpy

# knockpy 설치
git clone https://github.com/guelfoweb/knock.git
cd knock
pip install . --break-system-packages

python3 knockpy.py -d example.com --recon --bruteforce

dnsenum

dnsenum --dnsserver 10.0.2.10 -enum -p 0 -s 0 -o subdomains.txt -f subdomainList.txt --threads 90 example.com

dnscan

# dnscan 설치
git clone https://github.com/rbsec/dnscan.git
cd dnscan

# 사용
dnscan.py -d example.com -w subdomains-10000.txt

sublist3r

sublist3r -d example.com

subfinder

# subfinder 설치
wget https://github.com/projectdiscovery/subfinder/releases/download/v2.4.8/subfinder_2.4.8_linux_amd64.tar.gz
tar -zxvf subfinder_2.4.8_linux_amd64.tar.gz
mv subfinder /usr/bin/subfinder

subfinder -d example.com

수동적 정보 수집

수동적으로 수집하는 정보는 OSINT를 목적으로 두는 사이트를 이용하여 탐색하는 방법입니다. 필자가 주로사용하는 사이트는 다음과 같습니다.

다음으로 DNS 서버에 질의를 통해 정보를 수집하는 도구입니다.

dig

dig는 DNS 서버의 잘못된 설정을 이용하여 정보 수집할 수 있는 도구입니다. DNS 구조는 아래와 같이 트리 구조로 되어있어 상위 도메인은 하위 도메인들에 대한 정보를 알 수 있습니다.

dig axfr 요청은 메인 도메인에 대해서 질의하여 어떤 하위 도메인이 있는지 확인하는 정상적인 정보 요청입니다. 하위 도메인에 대한 정보를 누구에게나 주면 안 되기 때문에 DNS 서버는 이러한 요청을 한 클라이언트의 신원을 파악하여 응답해주지만, 잘못된 설정이 되어있어 인증 과정이 취약하다면 공격자는 DNS 서버에 대한 요청을 통해 해당 메인 도메인 하위에 있는 모든 서브 도메인을 획득할 수 있습니다. DNS 서버 간의 정보 동기화 및 공유를 위해 사용하기 때문에 MS-DRSR과 비슷하며, 이를 악용하는 방식 또한 DCSync와 매우 유사합니다.

dig axfr example.com @10.0.2.10

dig 명령을 사용할 때 도메인과 네임 서버를 입력해야 하는데, 내부망이라면 NS는 곧 DC가 될 것입니다. 하지만 외부망일 경우 NS를 질의한 뒤, NS의 IPv4 주소를 획득하고, 해당 값들을 플래그로 입력하여 최종적으로 dig를 통해 any, soa, axfr 등의 요청을 전송할 수 있습니다.

# 해당 도메인의 네임 서버 수집
dig example.com ns +short
Result > ns1.example.com

# 수집한 네임 서버의 IPv4 주소 수집
nslookup ns1.example.com
Result > 10.0.2.10

# dig를 통한 정보 수집
dig any/soa/axfr @10.0.2.10 example.com

crt.sh

인증서 투명성은 암호화된 인터넷 연결을 위한 디지털 인증서의 발급을 검증할 수 있도록 하기 위한 절차입니다. RFC 6962는 인증서 발급 기관이 발급한 모든 디지털 인증서에 대해서 감사를 위조할 수 없는 로그에 기록하도록 규정하고 있습니다. 이는 도메인에 대해 허위로 발급된 인증서를 탐지할 수 있도록 하는 장치이며 SSL 인증서 제공 업체는 이 정보를 crt.sh 사이트에 공유하고 새로 추가된 항목을 업데이트하여 접근할 수 있도록 관리합니다.

해당 사이트에서 인증서 투명성을 통해 확인하려는 서브 도메인을 GUI로 확인해도 되지만, 필요한 항목만 빠르게 스캔하여 목록화 하기 위해서 CLI 환경에서 다음과 같이 입력합니다.

curl -s "https://crt.sh/?q=example.com&output=json" | jq . | grep common_name | tr -d '"' | awk -F ':' '{ptinr $2}' | tr -d ',' | sort | uniq

내부망

내부망 도메인은 외부망과 달리 검색 등에 의한 결과를 기대하기가 어렵습니다. 내부 자산에 대한 정보가 공공연하게 노출되었거나, 다크웹 등에 떠도는 정보가 있다면 수확이 있겠지만 일반적으로 AD, 내부망 웹 서버 등에서 사용하는 도메인의 경우는 내부에만 노출되기 때문에 외부자 관점에서 정보를 수집할 수 없습니다. 따라서 DNS 프로토콜의 잘못된 설정 등을 이용하여 수집하거나 AD 환경이라면 블러드하운드를 사용하며 내부 웹서버 도메인이 존재한다면 브루트포스 공격을 통해 서브 도메인을 획득할 수 있습니다.

ffuf

# 웹 서버 도메인에 대한 정상 요청 Content-Length 확인
curl -s -I http://10.0.2.10 -H "Host: example.com" | grep "Content-Length:"

# 확인된 응답 헤더를 제외한 모든 서브 도메인 출력
ffuf -w subdomain.txt:FUZZ -u http://10.0.2.10/ -H "Host:FUZZ.example.com" -fs <Content-Length>

References

PreviousOSINTNextGoogle Hacking

Last updated 1 month ago

Was this helpful?

Subdomain Finder - C99.nl
https://dnsdumpster.com/dnsdumpster.com
crt.sh | Certificate Search
Subdomain EnumerationMedium
Logo
[해킹 도구를 소개합니다 #2] Subfinder: 하위도메인 열거 도구 | 버그바운티클럽
DNS(Domain Name System) | 토스페이먼츠 개발자센터
DNS 취약점 체크하기: DNS Zone Transfer프로그래밍, 해킹, 그리고 이맥스
Logo
Logo
Logo
https://docs.tosspayments.com/resources/glossary/dns
Logo
Logo