일반적으로 모의 침투 테스터 또는 국내외 대부분의 해커들은 해킹 프레임워크 첫 단계로 정보 수집 단계를 거치며, 정보 수집 단계가 ‘가장 중요한 단계’ 라고 말한다. 정보 수집 단계에서 많은 정보가 수집 될수록 해킹 프레임워크에서 중요한 ‘Key’로 작용되기 때문이다.
‘정보 싸움’이라 불리는 사이버전에서 아무런 정보 없이 침투를 시도한다는 것은 그야말로 ‘맨 땅에 헤딩’하는 격과 같다. 대상 정보가 불충분한 상태에서 무작위 대입과 같은 공격을 무리하게 시도한다면 불필요한 흔적을 남겨 뒷덜미가 잡히게 될 것이다.
이러한 정보 수집은 검색 엔진 API 활용, DNS 조회, 응답 패킷 분석, Wordlist 대입, 소스코드 분석 등 여러가지 다양한 방법을 통해 이루어질 수 있다. 이토록 다양한 방법의 정보 수집을 자동화하여 사용자가 필요한 결과 값을 얻을 수 있는 편리한 도구들이 존재한다. 이번에 소개할 도구는 사용자가 필요한 모듈을 로드(Load)하여 대상에 대한 여러가지 정보를 한 눈에 볼 수 있는 정보 수집 도구 ‘Recon-ng’다.
[그림 1] Information Gathering Recon-ng Tool
다운로드 URL (https://github.com/open-security/recon-ng)
‘Recon-ng’는 Black Hills 사의 Tim Tomes 개발자에 의해 제작되었으며, 개발에 사용된 언어는 ‘Python’이다. ‘Recon-ng’는 독립된 모듈을 로드(Load)하여 사용자가 필요한 정보를 얻을 수 있으며, 필요 모듈은 위 다운로드 URL 링크 ‘modules’ 경로에서 다운로드 받을 수 있다. 해당 도구의 모듈은 독립적으로 실행되는 장점을 가지며, 오픈소스 기반의 도구이므로 여러 개발자들에 의해 업데이트가 진행되고 있다. 또한 ‘Recon-ng’ 프레임워크는 ‘Metasploit-Framework’와 비슷한 구조를 가졌지만, 웹 서비스를 정찰(Reconnaissance)하는 용도로 사용되는 점에서 차이점을 갖는다.
아래[표 1]는 ‘Recon-ng’에서 사용되는 모듈과 그에 대한 간략한 설명이다.
모듈 |
설명 |
Discovery |
웹 서비스 상에 공개된 정보에 의해서 필요 정보 수집 (cache, php_info, robots, server_status 등) |
Exploitation |
SQL 쿼리문, Script, Xpath 등의 구문을 입력하여 공격 가능 벡터 수집 |
Import |
CSV 파일, list 파일 등을 import 하여 결과 값 확인 가능 |
Recon |
Search Engine API, Wordlist, SNS, Domain, Dump, Geocode, ssl, vpn, netcraft, Brute-Force 등 다양한 방법을 통해 공개된 연락처, 인증 크레딧, 호스트 정보 등의 정보 수집 |
Reporting |
각 모듈을 사용하여 수집된 정보를 사용자가 쉽게 파악할 수 있도록 문서화 |
[표 1] Recon-ng 모듈 설명
이와 같은 여러가지 모듈 중 사용자가 필요한 모듈을 로드하여 사용할 수 있다. 본 테스트는 칼리 리눅스(Kali-Linux)에서 진행되었으며, ‘Recon-ng’는 칼리 리눅스에 내장되어 있는 도구 중 하나이므로 해당 OS를 사용한다면 별도의 다운로드 및 설치 과정없이 도구를 사용할 수 있다. 칼리 리눅스 환경이 아닌 다른 환경에서 ‘Recon-ng’ 사용을 원할 경우 [그림 1] 아래 작성된 다운로드 URL을 통해 다운로드 및 설치 후 사용이 가능하다. ‘Recon-ng’를 실행하게 되면 아래[그림 2]와 같이 배너, 버전 정보, 사용 가능한 모듈 수 등이 나타나게 된다.
[그림 2] Recon-ng 실행 모습
‘Recon-ng’의 모듈은 독립적으로 실행되기 때문에 사용자의 필요에 따라 별도의 모듈을 추가할 수 있다. 현재 사용 가능한 모듈의 목록을 확인하기 위해선 ‘show modules’ 명령을 입력하여 아래[그림 3]와 같이 확인 할 수 있다.
[그림 3] 모듈 목록 확인
이와 같이 사용 가능한 모듈 목록을 확인하여 사용자가 필요한 모듈을 사용할 수 있다. 본 테스트에서는 [recon/domains-vulnerabilities] 경로에 위치한 ‘XSSPosed’ 모듈을 사용하였다. ‘XSSPosed’ 모듈은 다양한 치트 시트(Cheat Sheet)를 이용해 XSS(Cross Site Scripting) 공격 지점(Vector)을 찾는 모듈이다. 해당 모듈을 이용해 URL에 공격 구문을 삽입하여 Reflected XSS 방식의 공격 지점을 찾을 수 있다. 모듈을 추가하는 방법과 모듈에 적용할 옵션 정보 조회 방법은 아래[그림 4]와 같다.
[그림 4] ‘XSSPosed’ 모듈 로드 및 옵션 정보 조회
모듈을 로드한 뒤에 대상 지정 등의 옵션을 설정해야 한다. 이러한 구조는 ‘Metasploit’과 유사하지만, ‘Recon-ng’는 초기 접근을 시도하는 정보 수집 단계에서 사용하므로 대상만을 지정하여 모듈을 실행한다. 옵션에서 대상을 지정하는 방법은 아래[그림 5]와 같이 ‘set source’ 명령을 통해 정보 수집 대상을 지정할 수 있다. 대상 지정이 완료된 후 ‘show info’ 명령을 통해 설정된 옵션을 확인할 수 있다.
[그림 5] 옵션 대상 지정 및 정보 조회
대상 지정이 완료되면 ‘run’ 명령을 통해 모듈을 실행시킬 수 있다. 모듈이 실행되는 동안 유효한 공격 지점(Vector)을 찾으면 아래[그림 6]와 같이 ‘Example’에서 공격 구문이 포함된 정보를 확인할 수 있으며, 카테고리와 호스트 도메인, 게시일, 참조 URL, 상태 등의 정보를 확인할 수 있다.
[그림 6] ‘XSSPosed’ 모듈 실행 및 결과 조회
‘XSSPosed’ 모듈을 통해서 얻어낸 공격 구문 URL을 아래[그림 7]와 같이 브라우저에 직접 대입해 본 결과, Reflected XSS 취약점이 발견되었으며, 해당 취약점을 이용한 피싱, 페이지 리다이렉트 등의 직접적인 공격으로 이어질 수 있는 가능성을 확인할 수 있었다.
[그림 7] 공격 구문 URL 대입 및 응답 확인
이처럼 정보 수집 도구를 통해 대상 서비스의 취약점을 발견하거나, 대상에 대한 여러 정보를 수집하여 공격을 시도할 수 있다. 반대로 생각한다면 이와 같은 도구를 이용해 담당자는 현재 관리 중인 자산의 가용성이 침해되지 않는 선에서 공격을 시도해 본 후 발견된 보안 결함(Hole)에 대하여 선 조치를 취할 수 있다.
어느 서비스나 보안의 결함은 존재한다. 하지만 그 결함의 존재를 알고 위험을 수용하는 것과 그 존재를 모르고 서비스를 유지하는 것은 큰 차이를 가질 수 밖에 없다. 담당자의 입장에서는 관리 중인 자산에 대하여 관심을 기울여 보안 사고를 미연에 방지하는 것이 바람직하다.
'보안 도구' 카테고리의 다른 글
Yasca 설치 및 사용법 (0) | 2016.12.06 |
---|---|
Cuckoo Sandbox 기능 설명 (0) | 2016.10.13 |
Cuckoo Sandbox 설치 및 구축 (2/2) (1) | 2016.10.13 |
Cuckoo Sandbox 설치 및 구축 (1/2) (0) | 2016.10.13 |
오픈소스 CMS 취약점 점검 도구 CMSmap이란? CMSmap 사용법 (0) | 2016.09.22 |