DNS(Domain Name System)은 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 해줍니다. 특정 컴퓨터의 주소를 찾기 위해, 사람이 이해하기 쉬운 도메인 이름을 숫자로 된 IP 주소로 변환합니다. 따라서 IP 주소와 도메인 정보가 보관되어 있는 DNS의 정보를 알게 된다면 대상 서비스의 추가 정보를 알 수 있고, 서비스 구조를 추정할 수 있습니다. 본 포스팅에서는 특정 웹사이트의 정보를 수집하는 단계에서 DNS 정보 수집하는 방법에 대해 알아보겠습니다.
▷ 스마트폰이나 노트북부터 대규모 소매 웹 사이트의 콘텐츠를 서비스하는 서버에 이르기까지 인터넷 상의 모든 컴퓨터는 숫자를 사용하여 서로를 찾고 통신합니다. 이런 숫자를 IP 주소라고 하며, 웹 브라우저를 열고 웹 사이트로 이동할 때 긴 숫자를 기억해 입력하지 않고 example.com 같은 도메인 이름을 입력해서 원하는 웹사이트로 이동 합니다.
▷ DNS 서비스는 전 세계에 배포된 서비스로 example.com과 같이 사람이 읽을 수 있는 이름을 192.0.2.1과 같은 숫자 IP 주소로 변환하여 컴퓨터가 서로 통신할 수 있도록 합니다. 인터넷의 DNS 시스템은 이름과 숫자 간의 매핑을 관리하여 마치 전화번호부와 같은 기능을 합니다. DNS 서버는 이름에 대한 요청을 IP 주소로 변환하여 최종 사용자가 도메인 이름을 웹 브라우저에 입력할 때 해당 사용자를 어떤 서버에 연결할 것인지를 제어합니다. 이 요청을 쿼리라고 부릅니다.
▷ 아래 그림은 일반 사용자가 웹사이트를 방문할 때 DNS 쿼리가 진행되는 과정을 한눈에 쉽게 볼 수 있게 도식화한 것입니다.
▷ A Record
→ 호스트에 대한 IPv4 주소를 알려줍니다. 도메인 이름을 해당하는 IP 주소로 변환하는 데 사용됩니다.
▷ AAAA Record
→ 호스트에 대해 IPv6 주소를 알려줍니다. 도메인 이름을 해당하는 IP 주소로 변환하는 데 사용됩니다.
▷ CNAME Record
→ 도메인 이름의 별칭을 만드는 데 사용됩니다. 도메인을 외부 도메인으로 별칭을 지정하려는 경우 사용됩니다.
▷ MX Record
→ DNS 도메인 이름에 대한 메일 교환 서버를 알려줍니다.
▷ NS Record
→ 호스트에 대한 공식적인 이름 서버를 알려줍니다.
▷ PTR Record
→ IP 주소를 기반으로 도메인 이름을 찾는 데 사용됩니다.
▷ SOA Record
→ 기본 이름 서버, 도메인 관리자의 전자 메일, 도메인 일련 번호 및 영역 새로 고침과 관련된 여러 타이머를 포함하여 DNS 영역에 대한 핵심 정보를 지정합니다.
▷ TXT Record
→ 형식이 지정되지 않은 임의의 텍스트 문자열을 저장할 수 있습니다. 도메인 확인 또는 전자 메일 등록을 위한 SPF 확인을 위해 사용 됩니다.
▷ DNS 정보를 수집할 때 사용하는 다양한 도구들이 있는데, 본 포스팅에서는 아래의 도구들을 이용하여 정보를 수집해보겠습니다.
→ host, nslookup, dnsenum
▷ DNS 정보 수집 테스트를 할 때 사용하는 테스트 웹사이트를 이용하여 정보 수집을 하겠습니다. 테스트 웹사이트 정보는 아래와 같습니다.
→ 테스트 웹사이트 URL : zonetransfer.me
▷ host 를 가장 쉽게 사용하는 방법은 host 명령어 다음에 도메인 주소를 입력하면 됩니다.
→ 명령어 : host zonetransfer.me
▷ host 명령어의 사용 방법은 host -h 명령어를 통해 각각의 옵션 확인이 가능합니다.
→ 명령어 : host -h
▷ DNS 레코드별 조회가 가능한데, -t 옵션을 이용하여 각각의 레코드별 조회가 가능합니다.
→ 명령어 : host -t a zonetransfer.me (A 레코드 조회)
→ 명령어 : host -t aaaa zonetransfer.me (AAAA 레코드 조회)
→ 명령어 : host -t mx zonetransfer.me (MX 레코드 조회)
→ 명령어 : host -t cname zonetransfer.me (CNAME 레코드 조회)
→ 명령어 : host -t ns zonetransfer.me (NS 레코드 조회)
→ 명령어 : host -t txt zonetransfer.me (TXT 레코드 조회)
▷ -l 옵션을 이용하여 도메인의 모든 호스트를 조회할 수 있습니다.
→ 명령어 : host -l zonetransfer.me nsztm1.digi.ninja
▷ 특정 DNS를 사용하여 도메인 정보 확인하는 방법은 아래 그림과 같습니다. host 도메인 특정DNS 순으로 입력하면 특정 DNS를 이용하여 도메인 정보를 확인할 수 있습니다. 참고로 아래 그림은 KT DNS를 이용하여 zonetransfer.me 도메인을 질의한 내용입니다.
→ 명령어 : host zonetransfer.me 168.126.63.1
▷ nslookup 를 가장 쉽게 사용하는 방법은 nslookup 명령어 다음에 도메인 주소를 입력하면 됩니다.
→ 명령어 : nslookup zonetransfer.me
▷ nslookup 명령어의 사용 방법은 nslookup help 명령어를 통해 각각의 옵션 확인이 가능합니다.
→ 명령어 : nslookup help
▷ DNS 레코드별 조회가 가능한데, -type 옵션을 이용하여 각각의 레코드별 조회가 가능합니다.
→ 명령어 : nslookup -type=a zonetransfer.me (A 레코드 조회)
→ 명령어 : nslookup -type=aaaa zonetransfer.me (AAAA 레코드 조회)
→ 명령어 : nslookup -type=mx zonetransfer.me (MX 레코드 조회)
→ 명령어 : nslookup -type=cname zonetransfer.me (CNAME 레코드 조회)
→ 명령어 : nslookup -type=ns zonetransfer.me (NS 레코드 조회)
→ 명령어 : nslookup -type=txt zonetransfer.me (TXT 레코드 조회)
▷ 특정 DNS를 사용하여 도메인 정보 확인하는 방법은 아래 그림과 같습니다. nslookup 도메인 특정DNS 순으로 입력하면 특정 DNS를 이용하여 도메인 정보를 확인할 수 있습니다. 참고로 아래 그림은 LG DNS를 이용하여 zonetransfer.me 도메인을 질의한 내용입니다.
→ 명령어 : nslookup zonetransfer.me ns.lgtelecom.com
▷ host, nslookup 는 확인하고자 하는 DNS 레코드 정보를 개별적으로 조회해야 했지만, dnsenum 은 한번에 모든 정보를 쉽게 확인할 수 있습니다.
▷ dnsenum 을 가장 쉽게 사용하는 방법은 dnsenum 명령어 다음에 도메인 주소를 입력하면 됩니다. 아래 그림과 같이 DNS 정보를 일괄적으로 조회하여 가져옵니다.
→ 명령어 : dnsenum zonetransfer.me
▷ dnsenum 명령어의 사용 방법은 dnsenum -h 명령어를 통해 각각의 옵션 확인이 가능합니다.
→ 명령어 : dnsenum -h
▽ 같이 보면 더 좋은 블로그 글 ▽
recon-ng 를 이용한 패시브 정보수집 (0) | 2020.12.06 |
---|---|
스마트스토어 사업자 회원이 고객의 개인정보를 보호하기 위해 알고 있어야 하는 10가지 (4) | 2020.11.24 |
theharvester를 이용한 이메일 정보 수집 (0) | 2020.11.20 |
바인드쉘(Bind shell)과 리버스쉘(Reverse shell) (1) | 2020.11.18 |
[Metasploitable3] 메타스플로이터블 3 설치 on Ubuntu 14.04 (1) | 2020.11.02 |
댓글 영역