본문 바로가기

HOW TO HACK/Information Gathering

OSINT(Open Source Intelligence) 정보 수집-1

안녕하세요. Mr. Rootable입니다.

모의침투의 첫 순서인 정보수집 단계에서 OSINT를 활용한 정보수집에 대해 정리해볼까 합니다.

저도 학습을 병행하며 포스팅하는지라, 내용 중 일부 오류가 있을 수 있는 점 양해 바랍니다.

오류를 발견하신 분은 지적을 해주시면 더 공부하여 수정토록 하겠습니다.





OSINT란 Open Source INTelligence의 머리글자만 따온 단어로, 

단어 그대로 오픈소스 인텔리젼스 혹은 오신트라고 불리기도 합니다. 

일반적으로 공개정보 혹은 공개출처정보로 해석되지만 Intelligence 라는 단어(Information이 아닌)에 주목해볼 필요가 있습니다.

Intelligence는 일반적으로 정보를 뜻하는 Information과는 함축적 의미가 다릅니다.

Information은 단순히 사실에 근거하여 널리 알려진 정보들 그 자체로 불필요한 정보들도 포함되는 개념이며, 

Intelligence는 여과, 분석, 가공 등의 과정을 거쳐 목적에 맞게 수집된 정보를 말합니다.

즉, 외부에 공개된 정보(Open Source)를 통해 얻은 지식,통찰(Intelligence) 정도로 풀이할 수 있습니다. 


OSINT는 과거부터 국가나 민간 정보단체 혹은 경호단체 등에서 테러 및 범죄활동과 관련된 정보들은 파악하기 위해 사용되기도 

하는 등 다양한 곳에서 다양한 목적으로 활용되고 있으며, 

과거에는 대표적으로 언론사나 대학에서 공개한 논문, 학술자료, 기사 등의 자료가 OSINT라고 볼 수 있었습니다만, 

오늘날에는 IT 기술의 발달로 OSINT의 범위는 나날이 다양해지고 확대되어가고 있습니다.

이러한 OSINT는 모의침투(Penetration Testing) 과정의 첫단추이면서, 성패를 좌우할 정도로 중요한 단계인 정보수집 단계에서도

매우 유용하게 사용될 수 있습니다.



Netcraft



넷크래프트(www.netcraft.com)는 특정 웹사이트와 관련된 다양한 정보(가동시간, IP주소, 네임서버, 웹서버, 운영체제, 

사용되어진 IT기술 등)를 확인할 수 있는 대표적인 사이트입니다. 

물론 이 외에도 다른 서비스도 제공하고 있습니다.

위의 링크를 통해 넷크래프트에 접속을 하면 아래와 같은 화면을 만날 수 있습니다.


위의 스크린샷에서 붉은색으로 박스처리되어있는 입력란에 스캔하고자 하는 사이트의 주소를 입력하고 스캔을 실행하면 됩니다.

네이버 주소(www.naver.com)을 스캔해보겠습니다.


IP주소는 23.38.223.82 이며, Akamai라는 네덜란드 회사를 통해 호스팅하고 있습니다. 네임서버 주소는 ns1.naver.com 이네요.

Hosting History 에서는 웹서버로 nginx를, OS로는 리눅스를 사용하고 있음을 확인할 수 있으므로, 모의침투 전략을 구상할 때 

아파치나 마이크로소포트의 IIS 등의 웹서버 및 윈도우 OS에 대한 취약점 등은 고려하지 않아도 된다는 점을 알아낼 수 있습니다.

그 밖에 다른 정보들도 많이 있지만 Site Technology 를 통해 웹사이트 구현에 사용된 언어 등도 확인할 수 있습니다.



whois



whois 명령어는 도메인 정보를 확인하는 명령어입니다.

간혹 도메인을 인터넷주소와 동일하게 생각하시는 분도 계시는데 도메인과 인터넷주소는 엄연히 다릅니다.

예를 들어 www.example.com 이라는 주소가 있을 때, 

example.com을 도메인 이름이라 하며, 앞부분의 www는 호스트명으로 example.com 도메인에서 운영되는 World-Wide-Web을

말합니다. www와 같은 호스트명은 목적이나 용도에 따라 다르게 설정하여 여러 개 사용할 수 있습니다.

모든 도메인은 도메인 등록기관에서 관리를 하며, 도메인 등록기관은 각 도메인과 관련된 다양한 정보를 보관하고 있습니다.

이 도메인 정보를 통해 해당 도메인의 책임자 이름, 책임자 연락처(이메일이나 전화번호, 팩스번호 등), 주소 및 

네임서버의 호스트명과 IP주소, 도메인 등록 대행기관 등 흥미로운 정보를 알아낼 수 있습니다.

제가 속해있는 모의침투운영체제연구회의 도메인(pentesting.kr) 정보를 확인해봤습니다. 


# whois pentesting.kr



제게는 익숙한 분의 이름이 보이네요.^^ 

도메인 등록일은 2017.05.08 이며, 만료는 2019.05.08 이네요. 

네임서버는 ns.gabia.co.kr, ns1.gabia.co.kr 을 사용하며, 각 네임서버의 IP주소도 보입니다.

네임서버는 가비아에서 호스팅을 받고 있네요. 

보시는 바와 같이 등록자명, 책임자명, 이메일 주소, 등록대행자 그리고 네임서버의 정보를 알아냈습니다.

도메인 책임자분의 이름과 연락처를 통한 사회공학 기법을 생각해볼 수 있을 겁니다.  

등록대행자는 도메인등록기관의 승인을 받아서 도메인 등록을 대신 수행하는 업체이며, 

대표적으로 가비아, 후이즈, 아이네임즈, GoDaddy와 같은 업체가 바로 도메인 등록 대행기관입니다.

규모가 큰 기업이나 단체는 보통 내부에서 자체 구축한 네임서버를 사용하므로 

네임서버를 통한 침투전략을 모색해볼 수는 있으나, 

보통의 모의침투(모의해킹)에서는 가비아와 같은 호스팅업체는 승인된 모의해킹 대상이 아닐테니 공격대상에서 제외해야 합니다. 


 

DNS Reconaisance



1) Nslookup 


Nslookup 명령어는 도메인과 관련된 구체적인 정보를 알아볼 때 사용되는 네트워크 명령어입니다.

이 명령어를 통해 특정 도메인과 관련된 다양한 정보들을 알아보는 법을 살펴보겠습니다.

기본적으로는 아래와 같은 방법으로 사용합니다.


# nslookup pentesting.kr


위의 명령어는 아래 스크린샷처럼 set type의 기본값을 호스트(A)로 설정하여 동작하는 것과 동일합니다.

Server 항목에 나온 IP주소는 질의에 대한 답변을 준 DNS서버의 IP주소이며, pentesting.kr의 IP주소는 121.254.178.239 입니다.


# nslookup

> set type=A

> pentesting.kr



위와 같이 set type의 값 지정을 통해 도메인과 관련된 다양한 정보를 찾아볼 수 있으며, 

set type의 값 지정을 통해 알아볼 수 있는 주요 정보들은 아래와 같습니다.


1-1) Sender Policy Framework (SPF)


Sender Policy Framework는 메일서버등록제라고 하여 메일 발송주소가 위장된 스팸메일을 차단하기 위해 개발된 기술 중 하나입니다. 

메일서버를 사전에 DNS에 공개 등록하여 메일 수신자로 하여금 이메일에 표시된 발송서버 IP주소가 실제 DNS에 등록된 

IP주소와 서로 일치하는지 검증하는 인증체계입니다.

메일 수신측에서는 DNS에 등록된 SPF레코드 값(TXT값)을 통해 발송서버 IP주소를 확인합니다. 

이를 활용하면 메일 서버의 IP주소를 확인할 수 있습니다.


# nslookup

> set type=txt

> sxxxxxxxo.co.kr


※ 공개된 정보이긴 하나 포스팅의 주제가 해킹이다보니 소심한 저는 깨림칙하여 일부 가렸습니다.


1-2) Reverse DNS (PTR)


위에서 소개했던 SPF가 정방향 질의이며, Reverse DNS역방향 질의를 하는 인증 기법입니다.

즉, SPF가 메일수신측에서 도메인으로 DNS에 질의를하여 발송서버의 IP주소를 알아낸 것과 달리 IP주소로 질의하여 

등록된 도메인인지 확인하는 인증기술입니다. 

PTR 레코드에 저장된 값을 통해 확인하며, DNS에 등록되는 SPF와 달리 PTR레코드는 ISP업체(KT,SK 등)에 등록을 합니다.


# nslookup

> set type=ptr

> 211.XXX.XXX.212


※ 공개된 정보이긴 하나 포스팅의 주제가 해킹이다보니 소심한 저는 깨림칙하여 일부 가렸습니다.


1-3) Mail Exchange (MX)


Mail Exchange(MX)란 메일 수발신을 처리하기 위한 메일서버를 지정하고, 우선순위를 정하기 위해 사용됩니다.

우리가 만일 abc123@pentesting.kr 이라는 메일주소(수신자) 메일을 보내게 되면, DNS의 MX레코드값을 참조하여 

우선순위에 따라 해당 서버로 전달할 수 있습니다.

즉, 이 MX레코드값을 통해 메일서버의 IP주소와 호스트명 등을 확인할 수 있는 겁니다.


# nslookup

> set type=mx

> xxxxxxxxxx.com


※ 공개된 정보이긴 하나 포스팅의 주제가 해킹이다보니 소심한 저는 깨림칙하여 일부 가렸습니다.


"여기부터"라고 붉은색으로 쓰여있는 부분의 도메인을 조회했을 때 MX레코드값이 많이 나오네요.

3개의 서버가 Mail Exchanger값(우선순위) 0,5,10으로 구성되어있습니다.

값이 낮을수록 우선순위가 높습니다.

그 아래를 보시면 internet address를 통해 각 서버의 IP주소 확인도 가능합니다.


1-4) Name Server (NS)


set type=ns를 사용하면 네임서버의 정보를 조회할 수 있습니다.


# nslookup

> set type=ns

> xxxxxxxxxx.com


※ 공개된 정보이긴 하나 포스팅의 주제가 해킹이다보니 소심한 저는 깨림칙하여 일부 가렸습니다.


보시는 바와 같이 2개의 네임서버를 사용하며, IP주소와 URL주소를 확인 가능합니다.

참고로, set type=any를 사용하면 조회가능한 모든 목록을 한번에 조회가 가능합니다. (스크린샷은 없습니다.)



2) Host


리눅스에는 nslookup과 함께 도메인과 IP주소, 네임서버 정보를 확인할 수 있는 또 다른 명령어로 host가 있습니다.

host 명령어를 통해 Zone Transfers의 설정이 취약한 조직의 전체적인 네트워크 구조를 알아낼 수 있습니다.

취약한 Zone Transfers 설정이란 모든 사용자에게 허용되도록 설정된 경우입니다.

왜 그런지는 아래에 나오는 Zone Transfers에 대한 부연설명을 보시면 대략 이해가 가실 것으로 믿습니다.


우선 취약한 Zone Transfer의 설정을 이용하여 네트워크 구조를 파악하기 위해서는 아래 명령어를 통해 네임서버 정보를 

확인합니다.


# host -t ns xxxxxxxxxx.com


이후 아래 명령어를 통해 해당 도메인의 호스트 정보를 추출할 수 있습니다.


# host -l xxxxxxxxxx.com ns1.xxxxxx.com

                  [도메인]           [네임서버]


  • -l : 도메인내의 모든 호스트를 리스트업한다.


근래에는 전반적인 보안체계가 강화되어 zone transfers 취약점을 갖고 있는 도메인을 찾기가 쉽지 않은 것 같습니다.

(좋은 현상입니다. )

그리하여 스크린샷 준비를 하지 못했습니다. 

(죄송합니다...... )


Zone Transfers


Zone Transfers를 설명하려면 먼저 도메인 네임서버의 운영 방식을 살펴봐야 합니다.

일반적으로 도메인 네임서버는 Master 네임서버와 Slave 네임서버로 운영됩니다. 

부하분산과 장애 대비를 위한 방식이라고 보시면 됩니다.

이를 위해서는 네임서버들간의 데이터 동기화가 필요하겠죠?

여기서 데이터란 아래 그림에서 볼 수 있듯이 하나의 도메인 네임서버에 연결되어있는 호스트 정보들입니다.

                                                                                         (그림 출처 : 가비아 라이브러리)


Master 네임서버는 이 호스트 정보들을 Zone 파일이라는 파일로 갖고 있으며, 이 Zone 파일을 통해 호스트 정보를 알아냅니다. 

하지만 Slave 네임서버는 네트워크상의 다른 네임서버를 통해 호스트 정보를 참조합니다.

이때, Master와 Slave 네임서버간 호스트 정보(데이터)를 동기화하는 것을 Zone Transfers (영역 전송)라고 합니다.

Zone Transfers가 모든 사용자에게 허용되도록 설정된 경우가 바로 취약한 설정입니다.

대책으로는 반드시 Zone Transfers 허용 대상을 Slave 네임서버만 허용하도록 설정하거나, 

Slave 네임서버없이 Master 네임서버만 운용할 경우에는 모든 Zone Transfers를 제한하는 것이 좋습니다. 



3) Dig (Domain Information Groper)


마지막으로 Dig 명령입니다.

Dig 명령어를 통해 DNS 네임서버에 질의하여 도메인과 관련된 정보를 확인할 수 있습니다.

터미널을 열어 아래 명령어를 입력해봤습니다. 


# dig @168.126.63.1 pentesting.kr any


  • @168.126.63.1 : 질의를 받아 답변을 돌려줄 DNS 서버

  • pentesting.kr : 알고자 하는 도메인

  • any : 조회하고자 하는 타입으로 any는 조회가능한 모든 항목이며,

           nslookup 명령에서 살펴본 txt, ptr, mx, ns 등의 타입을 지정함. 



위와 같이 네임서버, 호스트 정보들을 확인할 수 있습니다.



이처럼, 모의침투 방법을 결정하기 위한 정보수집 단계에서 OSINT를 활용하는 방법을 알아보았습니다.



Reference


1) 위키백과 : https://ko.wikipedia.org

2) "인터넷 시대의 정보활동: OSINT의 이해와 적용사례분석"  - 이완희 ․ 윤민우 ․ 박준석  

    한국경호경비학회 - 제34호(2013): 259-278

3) 디딤365 블로그 : http://blog.naver.com/didim365_/220032145575

4) Noon 블로그 : http://noon.tistory.com/426

5) 가비아 라이브러리 : http://library.gabia.com/contents/domain/4152