소개
Metasploit 프레임워크는 침투 테스트 (penetration testing), 취약점 평가 (vulnerability assessment), 익스플로잇 개발 (exploit development) 에 사용되는 강력한 오픈 소스 도구입니다. 방대한 익스플로잇 모음으로 유명하지만, "보조 (auxiliary)" 모듈 모음도 포함하고 있습니다. 이 모듈들은 직접적인 익스플로잇을 수반하지 않는 작업, 예를 들어 스캐닝, 퍼징 (fuzzing), 스니핑 (sniffing), 정찰 (reconnaissance) 등을 수행합니다.
본 랩에서는 Metasploit 의 가장 기본적인 보조 모듈 중 하나인 TCP 포트 스캐너를 사용하는 방법을 배웁니다. 모듈을 선택하고, 대상 호스트 및 포트와 같은 옵션을 구성하며, 스캔을 실행하여 대상 시스템에서 열린 포트를 발견하는 방법을 학습하게 됩니다.
use auxiliary/scanner/portscan/tcp를 사용하여 포트 스캐너 모듈 사용
이 단계에서는 Metasploit 프레임워크 콘솔을 시작하고 TCP 포트 스캐너 모듈을 선택합니다.
먼저 Metasploit 콘솔을 실행해야 합니다. 이것이 프레임워크와 상호 작용하기 위한 기본 인터페이스입니다. 터미널을 열고 다음 명령을 실행합니다.
msfconsole -q
-q 플래그는 "quiet"를 의미하며, 더 깔끔한 인터페이스를 위해 시작 배너를 억제합니다. 로드되면 msf >와 같이 보이는 Metasploit 명령 프롬프트가 나타납니다.
다음으로, use 명령을 사용하여 TCP 포트 스캐닝을 위한 보조 모듈을 선택합니다. 이 명령은 지정된 모듈을 로드하고 구성할 준비를 합니다.
Metasploit 프롬프트에 다음 명령을 입력합니다.
use auxiliary/scanner/portscan/tcp
명령을 실행한 후, 현재 로드된 모듈을 반영하도록 프롬프트가 변경되는 것을 알 수 있습니다. 이는 현재 TCP 포트 스캐너의 컨텍스트 내에서 작업하고 있음을 확인시켜 줍니다.
이제 프롬프트는 다음과 같이 보여야 합니다.
msf auxiliary(scanner/portscan/tcp) >
RHOSTS 192.168.1.0/24 로 스캔 범위 설정
이 단계에서는 스캔 대상을 구성합니다. Metasploit 에서 대상 호스트는 RHOSTS(Remote Hosts) 변수로 정의됩니다.
모듈을 실행하기 전에 어디로 작업을 지시할지 알려줘야 합니다. set 명령은 모듈 옵션을 구성하는 데 사용됩니다. RHOSTS는 단일 IP 주소, 호스트 이름, IP 범위 (예: 192.168.1.10-192.168.1.20), 또는 CIDR 표기법의 네트워크 범위 (예: 192.168.1.0/24) 일 수 있습니다.
본 랩에서는 로컬 머신에서 설정 스크립트에 의해 시작된 서비스를 찾기 위해 로컬 머신을 스캔할 것입니다. 로컬 머신의 IP 주소는 127.0.0.1입니다.
set 명령을 사용하여 대상을 지정합니다.
set RHOSTS 127.0.0.1
Metasploit 은 변수와 그 새 값을 출력하여 설정을 확인합니다.
RHOSTS => 127.0.0.1
현재 모듈에 대해 사용 가능한 모든 옵션을 확인하고 설정을 검증하려면, 언제든지 show options 명령을 사용할 수 있습니다.
PORTS 1-1000 으로 포트 구성
이 단계에서는 대상 호스트에서 스캔할 포트를 지정합니다. 기본적으로 스캐너는 일반적인 포트의 작은 목록만 확인할 수 있습니다. 보다 철저한 스캔을 수행하려면 PORTS 변수를 구성해야 합니다.
PORTS 옵션은 쉼표로 구분된 포트 목록 (예: 22,80,443) 또는 포트 범위 (예: 1-1024) 를 허용합니다. 이 랩의 설정 스크립트는 포트 999와 8000에서 서비스를 시작했습니다. 스캔이 이를 찾도록 하려면 광범위한 포트 범위를 스캔할 것입니다.
포트 범위를 1 에서 10000 으로 설정해 보겠습니다. 다시 set 명령을 사용합니다.
set PORTS 1-10000
콘솔에서 변경 사항을 확인합니다.
PORTS => 1-10000
이제 스캐너는 대상 호스트 127.0.0.1의 1 부터 10000 까지의 모든 포트를 확인하도록 구성되었습니다.
run 명령어로 스캔 실행
이 단계에서는 포트 스캔을 실행합니다. 모듈이 선택되고 필요한 모든 옵션 (RHOSTS 및 PORTS) 이 구성되었으므로 스캐너를 시작할 준비가 되었습니다.
run 명령 (또는 별칭인 exploit) 은 Metasploit 에게 제공된 설정으로 현재 로드된 모듈을 실행하도록 지시합니다.
스캔을 시작하려면 다음을 입력하기만 하면 됩니다.
run
Metasploit 은 스캔 프로세스를 시작합니다. 대상 호스트의 지정된 범위에 있는 각 포트에 연결을 시도합니다. 열린 포트를 찾으면 콘솔에 메시지를 출력합니다. 이전에 설정한 열린 포트를 나타내는 출력을 보게 될 것입니다.
출력은 다음과 유사하게 보일 것입니다.
[+] 127.0.0.1 - 127.0.0.1:22 - TCP OPEN
[+] 127.0.0.1 - 127.0.0.1:3002 - TCP OPEN
[+] 127.0.0.1 - 127.0.0.1:3001 - TCP OPEN
[+] 127.0.0.1 - 127.0.0.1:5433 - TCP OPEN
[*] 127.0.0.1 - Scanned 1 of 1 hosts (100% complete)
이 출력은 스캐너가 로컬 머신에서 열린 포트를 성공적으로 식별했음을 확인시켜 줍니다.
jobs -l 로 스캔 결과 분석
이 단계에서는 Metasploit 작업을 백그라운드 작업으로 관리하는 방법을 배웁니다. 이전 단계에서는 스캔 결과가 화면에 직접 출력되었지만, 콘솔을 다른 명령에 사용할 수 있도록 긴 작업은 종종 백그라운드에서 실행됩니다.
모듈을 백그라운드 작업으로 실행하려면 run 명령에 -j 플래그를 추가할 수 있습니다. 포트 스캐너로 이를 시도해 보겠습니다.
run -j
이번에는 스캔이 끝날 때까지 기다리는 대신 즉시 프롬프트가 돌아옵니다. Metasploit 은 모듈이 백그라운드 작업으로 실행 중임을 알려줄 것입니다.
[*] Auxiliary module running as background job 1.
계속하려면
Enter를 누르십시오.
실행 중인 모든 백그라운드 작업 목록을 보려면 jobs 명령을 사용할 수 있습니다. -l 플래그는 더 자세한 목록을 제공합니다.
jobs -l
출력에는 작업의 ID, 이름 및 상태가 표시됩니다.
Jobs
====
Id Name Payload Payload opts
-- ---- ------- ------------
1 Auxiliary: scanner/portscan/tcp
jobs 명령은 긴 스캔을 실행하는 동시에 다른 익스플로잇을 구성하는 등 여러 작업을 관리하는 데 필수적입니다. 작업 ID 를 사용하여 해당 작업과 상호 작용할 수 있습니다 (예: 출력 보기 또는 중지).
요약
실습을 완료하신 것을 축하드립니다! Metasploit 보조 (auxiliary) 모듈을 사용하여 네트워크 포트 스캔을 성공적으로 수행했습니다.
본 실습에서 다음 사항들을 배웠습니다.
- Metasploit Framework 콘솔 (
msfconsole) 실행 방법. use명령을 사용하여 보조 모듈 선택 방법.set명령을 사용하여RHOSTS및PORTS와 같은 모듈 옵션 구성 방법.run명령으로 모듈 실행 방법.- 모듈을 백그라운드 작업으로 실행하고
jobs명령으로 관리하는 방법.
포트 스캐닝은 모든 침투 테스트에서 중요한 첫 단계이며, Metasploit 은 이 작업을 수행하는 강력하고 유연한 방법을 제공합니다. 이는 사용 가능한 수백 개의 보조 모듈 중 하나일 뿐입니다. 다른 유형의 스캐닝 및 정찰을 위해 다른 모듈을 탐색해 보시기를 권장합니다.



