본문 바로가기

HOW TO HACK/Information Gathering

OSINT(Open Source Intelligence) 정보 수집-2 : Maltego 도구 개요 및 사용법

지난 OSINT 정보 수집-1 편에서는 Netcraft 사이트, whois, nslookup 등의 명령어를 통해 네임서버 등 네트워크 관련 정보를 알아내는 법을 살펴보았습니다.

정보수집은 타겟에 대한 가능한한 많은 정보를 모으고, 이를 분석하여 가장 취약한 포인트를 공략하는 것이 핵심입니다.

하지만 인터넷상에 무수히 흩어져있는 정보를 일일이 수집하고 분석하는 것은 매우 수고스럽고 고통스러운 작업이며, 한계가 많습니다.

이에 오늘은 이미 많은 분들이 사용해보셨고, 관련 포스팅도 올리셨던 Maltego 라는 OSINT Recon 도구에 대해 글을 써보려고 합니다.

이번 포스팅에서는 Maltego의 동작구조와 사용자인터페이스 및 기본 조작법에 대해 살펴볼 것입니다.



Maltego 개요



Maltego는 Paterva라는 회사에서 개발한 OSINT 정보수집 도구입니다.

이 도구는 구글, 빙과 같은 검색사이트나 페이스북 같은 SNS 등 전 세계의 인터넷에 존재하는 데이터를 수집하여 아래의 각 개체(Entity)들간의 관계를 시각화하여 한 눈에 보기 쉽게 보여줍니다.


  • People.

- Names.

- Email addresses.

- Aliases.

  • Groups of people (social networks).
  • Companies.
  • Organizations.

  • Web sites.

  • Internet infrastructure such as:

- Domains.

- DNS names.

- Netblocks.

- IP addresses.

  • Affiliations.

  • Documents and files.



즉, 타겟 조직의 네임서버, 웹사이트, IP주소, 관련자 이메일주소 등의 네트워크 관련 정보를 수집하여 그래프 형태로 보여줍니다. 

이는 조직의 인프라 및 네트워크 구조를 파악하는데 많은 도움이 됩니다. 또한 특정 인물을 중심으로 연결된 각종 정보(인물, 이메일주소, 전화번호 등)를 파악할 수도 있습니다. 

이와 같이 Maltego는 온라인상에 파편화되어있는 데이터들을 가시적으로 보여주는 유용한 도구입니다.



Maltego Client 종류


Paterva 공식사이트에서 확인해보면 Maltego는 아래 세 가지 버전이 있습니다.

상용버전과 무료버전이 있는데 Maltego XL과 Classic은  상용버전으로 유료이며, 저희가 사용해볼 버전은 아래 표에서 세번째에 있는 Matego CE (Community Edition)입니다.

아래 표를 보시면 각 버전별로 비용 및 그래프당 최대 개체수 혹은 Transform(변환)당 최대 결과 수가 제한됨을 알 수 있습니다.

Maltego CE는 상업용 사용은 제한되며, Transform(변환)당 최대 결과는 12개, 그래프당 최대 개체수는 10,000개로 제한됩니다.

Transform(변환)에 대한 설명은 아래에 언급이 되니 지금은 그냥 넘어가도록 하겠습니다.



Maltego 정보수집 방법



사실 이 부분에 대해서 작성을 하기까지 많은 고민이 있었습니다.

이유인즉슨.. Maltego가 어떤 방식로 동작하는지 궁금하여 인터넷을 뒤져봤으나, 제가 이해할 수 있는 수준으로 쉽게 설명된 자료는 찾아볼 수가 없었습니다.

다만, 우연찮게 어느 블로그에서 Maltego 풋프린팅의 구조적인 방법론을 다룬 Network Footprinting with Maltego라는 글을 보게 됐고,

대략 엇비슷한 내용인 듯 하나, 이것 조차 제가 제대로 이해를 했는지 잘 모르겠네요.

우선은 제가 이해한 내용과 제가 찾은 블로그 글의 내용을 나름대로 해석, 요약하여 작성할 수 밖에 없는 점 양해 바라며, 링크를 읽어보시고 제가 잘못 전달하고 있는 내용이 

있다면 지적 달게 받도록 하겠습니다. 혹시 이 부분에 대해 잘 아시는 분이 계시면 댓글로 관련 글이나 지식 공유 좀 해주시면 감사하겠습니다.


일단 부족한 내용이라도 정리를 하자면....

Maltego는 클라이언트-서버 구조로 동작합니다.

아래 그림과 같이 Maltego Client 프로그램에서 XML Request를 TDS(Transform Delivery Server)로 보내고, 

Transform서버를 거쳐 각 서비스공급자로 전달되어 그 결과가 다시 Client 프로그램으로 되돌아오는 구조입니다.


그림 출처 : Paterva 공식 사이트 (https://www.paterva.com/web7/buy/maltego-servers/itds.php)



Maltego를 사용하여 특정 조직에 대한 네트워크 인프라 및 구조에 대한 정보수집을 한다고 가정한 경우 아래 그림과 같이 시작은 타겟 조직의 도메인입니다.

아래 그림은 위의 링크된 블로그 글에 나온 그림을 그대로 옮겨 그린 그림입니다.


기본 동작 순서는 Domain → DNS Name (MX, NS, Website) → IP주소 → NetBlock → AS(Autonomous System) 순으로 정보 수집이 되는 듯 합니다.

그림에서 각 화살표들은 Maltego에서 사용되는 중요한 개념인 Transform 작업을 표현한 것으로 보이며,

각 단계에서 추출된 정보를 다시 입력값으로 Transform 작업을 수행하여 더 많은 정보를 추출할 수 있는 구조인 것 같습니다. 


위의 그림을 보면 먼저 TLD(Top Level Domain)를 확장하여 더 많은 도메인을 추출합니다. 

아마도 google.com에서 google.co.kr, google.co.uk 등과 같은 도메인을 더 찾아내는 것을 말하는 것이겠죠.

이 확장된 도메인에서 DNS Name을 찾고, DNS Name과 동일 레벨에서 각 DNS Name의 Zone file을 참조하여 Record type이 MX, NS, A인 호스트의 정보를 추출합니다.

다음 단계에서는 각 Domain Name의 IP주소를 추출하고, 계속해서 수집된 IP주소가 속하는 Net Block(넷블록, IP주소 범위)을 추출합니다.  

이 단계에서는 해당 넷블록에 타겟이 아닌 다른 조직의 IP가 포함되지 않았는지 확인하는 것이 중요합니다.

이를 확인하려면 넷블록에서 To DNS Names in Netblock [Reverse DNS] 이라는 Transform을 수행하고 추출된 DNS Name 목록을 육안으로 검사하여 

타겟 조직에 속하지 않는 DNS Name이 포함되어있는지 확인하면 됩니다.

이제 더 많은 DNS Name이 수집되었으니, 이를 다시 IP주소로 변환하고, 각 IP를 다시 DNS Name으로 변환하는 등 반복작업을 통해 더 많은 정보를 수집할 수도 있습니다.

다음으로 추출된 넷블록을 통해 AS(Autonomous System) Number를 추출합니다. AS란 동일한 라우팅 정책을 사용하는 라우팅 그룹, 라우팅 도메인이라고도 합니다. 

이 AS에는 일련의 번호가 매겨져서 관리되고, 이 ASN에서 To Company [Owner] 라는 Transform을 수행하여 소유자가 우리가 목표로 하는 조직인지 확인할 수 있습니다.



Maltego 사용자 인터페이스 및 기본 조작법



* 본 글은 칼리리눅스 2016.2 및 Maltego Kali Linux 4.0.18 버전 환경에서 작성되었습니다.


칼리리눅스에 maltegoce는 기본 탑재되어있으니 별도 설치할 필요 없습니다.

Maltego를 실행해봅시다.

터미널을 열고 다음 명령어를 실행합니다.

# maltegoce


혹은 아래 메뉴를 통해 실행할 수 있습니다.


잠시 기다리면 Maltego가 실행되며, 아래와 같이 로그인 인증 창이 나옵니다.


만일 계정이 없다면 번거롭지만 인증창 윗부분의 register here 링크를 통해 계정 등록을 해주셔야 합니다.

계정 등록 후에는 두 단계에 걸친 팝업을 만나시는데 1단계로는 머신을 선택하고, 2단계로 타겟을 입력하게 됩니다.

이 두 단계는 Cancel을 통해 취소하셔도 되며, 언제든 진행하실 수 있으니 지금은 Cancel 버튼을 눌러 창을 닫고, Maltego의 간단한 조작법부터 알아보겠습니다.


먼저 알아야 할 몇 가지 개념이 있습니다.

  • Entity(개체) : 엔티티는 DNS, MX, 이메일주소, 전화번호 등등 약 20개의 엔티티가 제공되며, 그래프상의 하나의 노드로 표시됩니다. 
  • Transform(변환) : DNS 엔티티에서 IP주소 엔티티를 가져오는 등 하나의 엔티티를 입력으로 수행되는 스크립트나 쿼리로 또 다른 엔티티를 반환하는 작업입니다. 
  • Machine(머신) : 여러단계에 걸쳐 수행해야 할 위의 Transform 작업을 자동화한 일종의 Transform 집합입니다.


위의 개념을 꼭 기억해두시기 바랍니다. 그럼 이제 Maltego의 사용자 인터페이스를 간단히 살펴보겠습니다.

아래 스크린샷은 사실상 우리가 가장 많이 머물러 있어야 할 Maltego의 메인이며, 도메인명 www.paterva.com을 대상으로 정보수집을 한 결과입니다.


간단하게 주요 인터페이스를 알아보겠습니다. 


1. Application 버튼

일종의 메뉴 버튼으로 생각하시면 됩니다. 이 버튼을 클릭하면 아래와 같은 몇 가지 메뉴가 있습니다.

New 메뉴를 통해 새로운 그래프창을 띄울 수 있습니다. Ctrl + t 단축키를 활용할 수도 있습니다.


2. Ribbon 메뉴 

Maltego 도구의 모든 기능이 제공되는 메뉴입니다. 아래와 같이 각 탭으로 구분되어있습니다. 각 탭에 대한 상세 설명은 생략합니다.



3. Entity Palette(엔티티 파레트) 

Maltego에서 사용할 수 있는 모든 엔티티가 제공됩니다.


Application버튼 - New를 통해 그래프창을 새로 만들고 엔티티를 하나 추가해봅시다. 원하는 엔티티를 선택하여 그래프로 이동(Drag&Drop)시키면 됩니다.

아래는 Email Address 엔티티를 선택하여 그래프창으로 이동한 그림입니다.


위의 그림에서 보시는 바와 같이 엔티티 속성으로는 엔티티유형이 있습니다.

엔티티유형은 Email Address이며, 값은 info@paterva.com 입니다. 값 영역을 더블클릭하면 수정할 수 있습니다.

값 영역 외의 부분을 더블클릭하면 아래와 같은 엔티티 세부정보창이 뜨며, 여기서 값을 수정할 수도 있으며, 파일 첨부, 메모 등을 할 수 있습니다.


 

4. Graph

수집된 데이터를 도식화하여 보여줍니다. 새 그래프를 만들면 아래와 같이 빈 그래프 창이 뜨게 됩니다. 

위에서 말했듯이 Entity Palette에서 원하는 엔티티를 마우스로 끌어다 이 그래프창으로 이동시켜서 추가할 수 있습니다.

그래프창 내에 왼쪽에 있는 레이아웃 형태를 변경하여 원하는 형태로 변경할 수 있습니다.    


그래프창 조작법은 의외로 직관적이고 사용하기 편리해서 놀랐습니다.


엔티티에서 Transform 수행

엔티티에서 마우스 오른쪽 클릭을 하면 아래와 같이 Run Transform(s) 팝업메뉴가 뜹니다.

선택된 엔티티 유형에 따라 사용할 수 있는 Transform이 다르며, 아래 그림은 Email Address 엔티티에서 사용할 수 있는 Transform이 나온 그림입니다.

다른 엔티티는 Run Transform(s)안의 Transform들이 이와 다르게 표시될 것입니다. (All Transforms는 어떤 엔티티든지 공통으로 존재합니다)


Transform 실행은 아래와 같이 오른쪽의 더블삼각형(?) 모양의 버튼을 클릭하여 실행합니다.

아래 그림은 All Transforms이라는 그룹에 속한 모든 Transform을 실행하게 됩니다.


개별 Transform을 실행하기 위해서는 왼쪽의 + 버튼을 클릭하여 해당 Transform 그룹을 확장하면 됩니다.


그래프창에서 엔티티 선택

일반적인 방법을 따릅니다. 마우스 왼쪽 클릭하면 해당 엔티티가 선택됩니다.  드래그하여 여러 엔티티를 선택할 수 있으며, Ctrl 키를 이용하여 한번에 하나씩 여러 엔티티 선택이 가능합니다.       


그래프 확대/축소

마우스휠을 사용하며, 현재 마우스 포인트가 위치한 곳이 기준점이 되어 확대/축소됩니다.


그래프 이동

마우스 오른쪽 버튼을 클릭한채로 이동하면 원하는 방향으로 그래프를 끌어다 이동시킬 수 있습니다.


그래프 레이아웃 변경

레이아웃의 변경은 그래프창 왼쪽에 있는 기능(아래 그림)을 사용하여 간편하게 변경할 수 있습니다.

위 그림에서 현재 선택되어진(음영처리된 부분) 것부터 아래로 Block 모드, Hierarchical 모드, Circular 모드, Organic 모드, Interactive Organic 모드입니다.

개인의 취향과 상황에 맞게 선택적으로 사용하시면 됩니다.


5. Output

사용자에 의해 수행된 Transform 종류와 그 반환 개체수가 출력됩니다.


지금까지 간단하게 Maltego의 동작방식과 사용자 인터페이스 및 기본 조작법에 대해 살펴봤습니다.

더 자세한 사용법이 알고 싶으신 분은 Paterva 공식사이트의 문서를(https://docs.paterva.com/en/) 참고하시기 바랍니다.

다음 포스팅에서는 Maltego를 사용하여 특정 조직의 도메인을 대상으로 정보수집을 해볼 생각입니다.



Reference


Paterva 공식사이트 : https://www.paterva.com

말테고 블로그(?) : http://maltego.blogspot.kr/