소개
정보 수집 및 보조 모듈 실습에 오신 것을 환영합니다!
대부분의 사람들은 Metasploit Framework 를 떠올릴 때 즉시 익스플로잇 (Exploitation), 즉 취약한 시스템을 공격하기 위해 페이로드를 실행하는 것을 생각합니다. 하지만 Metasploit 은 모의 해킹의 정찰 및 정보 수집 단계에서도 매우 강력한 도구입니다.
Metasploit 에는 **보조 모듈 (Auxiliary modules)**이라고 불리는 모듈 범주가 있습니다. 익스플로잇 모듈과 달리 보조 모듈은 대상 시스템에서 페이로드를 실행하지 않습니다. 대신 포트 스캔, 서비스 식별, 퍼징 (Fuzzing), 취약점 스캔과 같은 작업을 수행하도록 설계되었습니다.
이러한 구분은 익스플로잇이 전체 과정의 한 단계일 뿐임을 상기시켜 줍니다. 훌륭한 공격적 보안 작업은 체계적인 정찰, 열거 (Enumeration) 및 검증에 달려 있습니다.
이번 실습에서는 Metasploit 콘솔을 탐색하고, 특정 보조 모듈을 검색하고, 매개변수를 구성하고, 로컬 대상을 상대로 네트워크 스캔을 실행하며, Metasploit 데이터베이스에 자동으로 저장된 결과를 확인하는 방법을 배웁니다.
보조 모듈 검색
이 단계에서는 Metasploit Framework 콘솔을 실행하고 보조 모듈을 검색하는 방법을 배웁니다.
Metasploit 에는 수천 개의 모듈이 포함되어 있습니다. 필요한 모듈을 찾으려면 내장된 search 명령어를 사용할 수 있습니다. 이 검색 명령어를 사용하면 모듈 유형, 이름, 플랫폼 등을 기준으로 필터링할 수 있습니다.
먼저 터미널을 열고 Metasploit 콘솔을 실행합니다. -q 플래그를 사용하여 "quiet" 모드로 시작하면 대형 ASCII 아트 배너를 건너뛰고 콘솔을 더 빠르게 시작할 수 있습니다.
효과적인 검색은 Metasploit 에서 매우 실용적인 기술입니다. 프레임워크가 너무 방대하여 매번 수동으로 찾아볼 수 없으므로, 모듈 범위를 좁히는 방법을 익히는 것은 도구를 효과적으로 사용하는 과정의 일부입니다.
터미널에 다음 명령어를 입력하세요:
msfconsole -q
msf6 >와 같은 Metasploit 프롬프트가 나타납니다. 이는 현재 Metasploit 대화형 셸 내부에 있음을 의미합니다. 현재 환경에서 Metasploit 을 처음 실행하는 경우, 새 데이터베이스를 설정할지 묻는 메시지가 나타날 수 있습니다. yes라고 답하고 초기화가 완료될 때까지 기다리세요.
다음으로, 기본적인 TCP 포트 스캔을 수행할 수 있는 모듈을 검색해 보겠습니다. 여러 검색 필터를 사용하는 것보다 간단한 키워드 검색이 Metasploit 버전 간에 더 안정적입니다.
Metasploit 콘솔 내에서 다음 명령어를 실행하세요:
search portscan
다음과 유사한 출력이 표시될 것입니다:
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/scanner/portscan/ack normal No TCP ACK Firewall Scanner
1 auxiliary/scanner/portscan/ftpbounce normal No FTP Bounce Port Scanner
2 auxiliary/scanner/portscan/syn normal No TCP SYN Port Scanner
3 auxiliary/scanner/portscan/tcp normal No TCP Port Scanner
4 auxiliary/scanner/portscan/xmas normal No TCP "XMas" Port Scanner
검색 결과에는 일치하는 모듈 목록이 표시됩니다. 각 모듈에는 특정 경로 (예: auxiliary/scanner/portscan/tcp), 순위 (Rank) 및 간단한 설명이 있습니다. 다음 단계에서는 이 모듈 중 하나를 선택하여 사용해 보겠습니다.
대상 매개변수 구성 (RHOSTS)
이 단계에서는 특정 포트 스캔 모듈을 선택하고 설정을 구성합니다.
Metasploit 에 작업할 모듈을 알리려면 use 명령어 뒤에 모듈 경로를 입력합니다. 여기서는 표준 TCP 포트 스캐너를 사용하겠습니다.
Metasploit 콘솔에서 다음 명령어를 실행하세요:
use auxiliary/scanner/portscan/tcp
프롬프트가 msf6 auxiliary(scanner/portscan/tcp) >로 변경된 것을 확인하세요. 이는 해당 모듈이 현재 활성화되었음을 의미합니다.
모듈을 실행하기 전에 매개변수를 구성해야 합니다. show options 명령어를 사용하여 현재 모듈에 사용 가능한 모든 매개변수를 확인할 수 있습니다:
show options
출력 결과에 옵션 테이블이 표시됩니다. Required 열에 주의하세요. yes로 표시된 모든 옵션은 모듈을 실행하기 전에 반드시 값이 설정되어야 합니다.
Module options (auxiliary/scanner/portscan/tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
CONCURRENCY 10 yes The number of concurrent ports to check per host
DELAY 0 yes The delay between connections, per thread, in milliseconds
JITTER 0 yes The delay jitter factor (maximum value by which to +/- DELAY) in milliseconds.
PORTS 1-10000 yes Ports to scan (e.g. 22-25,80,110-900)
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
THREADS 1 yes The number of concurrent threads (max one per host)
TIMEOUT 1000 yes The socket connect timeout in milliseconds
가장 중요한 설정은 대상 IP 주소나 네트워크 범위를 지정하는 RHOSTS(Remote Hosts) 입니다. 이번 실습에서는 여러 서비스가 호스팅되고 있는 로컬 머신을 스캔할 것입니다.
set 명령어를 사용하여 대상 IP 주소를 127.0.0.1(localhost) 로 설정하세요:
set RHOSTS 127.0.0.1
기본적으로 이 모듈은 1 번부터 10000 번 포트까지 스캔합니다. 스캔을 빠르게 완료하기 위해, 이 실습 환경에서 서비스가 실행 중인 것으로 알려진 특정 포트 (FTP 21, HTTP 80, PostgreSQL 5432) 로 스캔 범위를 제한하겠습니다.
PORTS 옵션을 설정하여 해당 특정 포트만 스캔하도록 합니다:
set PORTS 21,80,5432
show options를 다시 실행하여 설정이 올바르게 적용되었는지 확인할 수 있습니다.
스캔 실행 및 결과 저장
이 단계에서는 구성한 포트 스캔을 실행합니다.
Metasploit 에서 스캔을 실행하면 단순히 즉각적인 출력만 얻는 것이 아닙니다. 결과가 데이터베이스의 일부가 되어 이후 모듈 실행이나 의사 결정에 활용될 수 있다는 점이 중요합니다.
정보 수집을 위해 Metasploit 을 사용하는 가장 큰 장점 중 하나는 내장된 데이터베이스 통합 기능입니다. 데이터베이스가 연결되어 있으면 Metasploit 은 스캔 결과를 자동으로 저장하여 정찰 데이터를 체계적으로 관리합니다.
먼저 Metasploit 이 PostgreSQL 데이터베이스에 연결되어 있는지 확인합니다. 다음 명령어를 실행하세요:
db_status
다음과 같이 연결을 확인하는 출력이 표시되어야 합니다:
[*] Connected to msf. Connection type: postgresql.
데이터베이스가 활성화되어 있고 모듈 옵션이 구성되었으므로 이제 스캔을 시작할 차례입니다. run 또는 exploit을 입력하여 모듈을 시작할 수 있습니다. 보조 모듈의 경우 run을 사용하는 것이 표준 관례입니다.
스캔을 실행하세요:
run
Metasploit 은 이제 대상 IP 주소의 지정된 포트에 연결을 시도합니다. 세 개의 포트로 스캔을 제한했기 때문에 거의 즉시 완료될 것입니다.
다음과 같이 열려 있는 포트를 나타내는 출력이 표시됩니다:
[+] 127.0.0.1 - 127.0.0.1:21 - TCP OPEN
[+] 127.0.0.1 - 127.0.0.1:80 - TCP OPEN
[+] 127.0.0.1 - 127.0.0.1:5432 - TCP OPEN
[*] 127.0.0.1: - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
[+] 기호는 성공적인 발견 (열린 포트) 을 나타냅니다. 내부적으로 Metasploit 은 이 정보를 가져와 데이터베이스에 직접 저장했습니다.
데이터베이스의 호스트 및 서비스 확인
마지막 단계에서는 스캔 중에 Metasploit 이 데이터베이스에 자동으로 저장한 정보를 검색하고 확인하는 방법을 배웁니다.
대규모 모의 해킹을 수행할 때는 수십 개의 네트워크와 수백 개의 호스트를 스캔하게 될 수 있습니다. 열려 있는 모든 포트를 기억하는 것은 불가능하므로 데이터베이스 명령어가 매우 유용합니다.
Metasploit 이 발견하고 저장한 모든 대상 시스템 목록을 보려면 hosts 명령어를 사용하세요:
hosts
출력 결과에 알려진 호스트 테이블이 표시됩니다. 방금 스캔한 localhost IP 주소가 보일 것입니다:
Hosts
=====
address mac name os_name os_flavor os_sp purpose info comments
------- --- ---- ------- --------- ----- ------- ---- --------
127.0.0.1 Unknown device
해당 호스트에서 발견된 특정 열린 포트와 서비스를 보려면 services 명령어를 사용하세요:
services
이 명령어는 데이터베이스를 쿼리하여 스캔 중에 발견된 모든 열린 포트를 나열합니다:
Services
========
host port proto name state info resource parents
---- ---- ----- ---- ----- ---- -------- -------
127.0.0.1 21 tcp open {}
127.0.0.1 80 tcp open {}
127.0.0.1 5432 tcp open {}
이 단계에서 기본적인 TCP 포트 스캐너는 해당 포트가 열려 있다는 사실을 기록하지만, 상세한 서비스 이름이나 버전 정보까지는 채우지 못할 수 있습니다. 나중에 더 고급 보조 모듈을 실행하면 이 테이블에 추가 정보가 보강될 것입니다.
실습 목표를 성공적으로 완료했습니다! Metasploit 콘솔을 종료하고 일반 리눅스 터미널로 돌아가려면 다음을 입력하세요:
exit
요약
축하합니다! 정보 수집 및 보조 모듈 실습을 성공적으로 완료했습니다.
이번 실습을 통해 Metasploit 이 익스플로잇을 넘어선 다재다능한 프레임워크임을 배웠습니다. Metasploit 콘솔을 탐색하고, 특정 보조 모듈을 검색하며, RHOSTS 및 PORTS와 같은 필수 매개변수를 구성하는 연습을 했습니다. 또한 네트워크 포트 스캔을 실행하고 Metasploit 의 강력한 데이터베이스 통합 기능을 활용하여 hosts 및 services 명령어로 정찰 데이터를 자동으로 저장하고 검토하는 방법을 익혔습니다.
이러한 기초 기술은 모든 보안 평가의 정보 수집 단계에서 워크플로우를 체계화하는 데 매우 중요합니다.



