Dig(Domain information groper)

  • DNS 정보를 쿼리하는 명령어 입니다.
  • 호스트 주소, 메일, 이름 서버 등을 조회할 수 있습니다.
$ dig <domain name>
  • 네이버를 예로 들면

섹션표시 정보
1dig 버전, 검색한 도메인
Got AnswerDNS 서버에서 받은 답변에 대한 정보 기재
OPTDNS 메커니즘, 질의 방식 등을 볼 수 있다
Question쿼리 내용 표시, dig는 기본적으로 A 레코드 요청
Answer받은 답변을 표시한다. CNAME으로 변환된 도메인의 A레코드까지
Authority해당 쿼리에 응답할 권한이 있는 서버를 표시(SOA 레코드)
Additional권한 있는 DNS 서버의 IP주소 정보
마지막쿼리에 대한 동계 정보

$ dig @8.8.8.8 <domain name>
  • @ 기호를 사용하여 쿼리할 DNS서버를 특정할 수 있습니다.
$ dig -x 192.168.160.131
  • -x 옵션으로 특정 IP 주소와 연결된 호스트 이름을 쿼리할 수 있습니다.

SOA와 서브 도메인

  • Authority 섹션 에서는 SOA 필드를 제공합니다
  • SOA 필드는 텍스트 주소의 내용이 정확히 일치하지 않아도 제공됩니다
  • 루트 도메인은 정확히 일치하여야 하며 검색에 입력 한 레벨의 서브 도메인까지만 검색한다


아래로는 모의해킹 스터디를 기반으로 탐색한 과정이다

  • 사전 조사를 바탕으로 DNS 는 bind 라는 서비스를 사용하는 것을 확인 할 수 있다
  • bind9 은 DNS 서버를 구축하고 레코드를 관리 할 수 있도록 도와주는 패키지이다
  • 기본적으로 존재하는 db 파일로 /etc/bind/db.local 이 있으므로
  • xxe 인젝션을 통해 실제 존재하는지 찾아본다.

  • 해당 파일이 존재하는 것을 확인 할 수 있다.
  • 이로써 SOA를 설정한 파일들이 있다는 것을 알 수 있다

해당 서버에 dig 로 root.localhost를 쿼리하면

  • dig Authority 섹션에서 위 파일 정보를 확인할 수 있다.

그렇다면 서브 도메인 없이 루트 도메인만 검색하면 어떤 값이 나올까?

  • 답변 섹션에 A 레코드로 로컬 주소가 뜨는 것을 볼 수 있다.
  • 위 파일에서 A 레코드를 로컬 주소로 설정해 놓았기 때문으로 보인다.

이로써 blackhat.local 아래 서브도메인을 설정해놓은 파일이 있음을 짐작할 수 있고,
bind9 는 /etc/bind/named.conf.default-zones 파일에 추가한 서브 도메인의 경로를 설정하므로 파일을 열어본다.

총 3개의 경로가 표시된다. arpa 라는 파일명이 좀 걸리긴 하지만... 일단 열어본다.

해당 3 파일 모두 역방향 조회용으로 보인다.

이번에는 bind9 설정 파일인 etc/bind/named.conf.local 을 열어본다.

이번엔 제대로 찾은 것으로 보인다. 해당 파일을 다시 열어보자

다른 서브 도메인을 포함하여 등록된 도메인을 확인 할 수 있다.

등록된 서브 도메인 A 레코드가 전부 같은 주소로 변환하는 것을 보아 DNS에는 서브 도메인 네임만 등록이 되어있고, 실제 서브 도메인은 아파치 단에서 처리하는 것으로 보인다.

해당 웹 서버의 호스트 파일이다. 아마 모의 해킹 대상 서버 제작 시 서버 로컬 IP가 192.168.14.143 이었던듯

profile
우리는 울지 않는 부엉이요, 발자국 없는 범이다.

0개의 댓글