외부 Nmap 스캔 결과를 Metasploit 으로 가져오기

Kali LinuxBeginner
지금 연습하기

소개

이 랩에서는 Nmap 의 강력한 네트워크 스캐닝 기능을 Metasploit Framework 와 통합하는 방법을 배우게 됩니다. Metasploit 자체에도 내장된 스캐닝 기능이 있지만, Nmap 과 같은 외부 도구의 결과를 가져와야 하는 경우가 많습니다. 이는 침투 테스트에서 일반적인 워크플로우이며, 모든 정찰 데이터를 Metasploit 의 데이터베이스 내에 중앙 집중화할 수 있게 해줍니다.

Nmap 스캔 결과를 가져옴으로써, Nmap 이 발견한 호스트 및 서비스에 대해 Metasploit 의 데이터 관리 및 익스플로잇 기능을 활용할 수 있습니다. Nmap 스캔을 수행하고, 출력을 XML 파일로 저장한 다음, Metasploit 콘솔 내에서 db_import 명령을 사용하여 데이터베이스를 채우게 됩니다.

Metasploit 외부에서 Nmap 스캔을 실행하고 XML 로 저장하기

이 단계에서는 기본적인 Nmap 스캔을 수행하고 그 결과를 XML 파일로 저장합니다. XML 형식은 구조화되어 있고 파싱하기 쉽기 때문에 다른 도구로 가져오는 데 이상적입니다. 실행 중인 서비스와 해당 버전을 식별하기 위해 localhost를 스캔할 것입니다.

먼저, 기본 프로젝트 디렉토리인 /home/labex/project에 있는지 확인하십시오.

터미널에서 다음 nmap 명령을 실행합니다. 옵션에 대한 설명은 다음과 같습니다.

  • -sV: 열린 포트를 프로빙하여 서비스/버전 정보를 결정합니다.
  • -oX nmap_scan.xml: 스캔 결과를 nmap_scan.xml이라는 파일에 XML 형식으로 출력합니다.
  • localhost: 스캔 대상입니다.
nmap -sV -oX nmap_scan.xml localhost

스캔이 완료되면 다음과 유사한 요약 결과 출력이 표시됩니다. 실제 열린 포트는 다를 수 있습니다.

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00010s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu Linux; protocol 2.0)
...

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 5.43 seconds

이 명령은 현재 디렉토리 (~/project) 에 nmap_scan.xml이라는 파일을 생성합니다.

msfconsole 에서 db_import 명령 사용하기

이 단계에서는 Metasploit Framework 콘솔을 시작합니다. msfconsole은 Metasploit 과 상호 작용하는 기본 인터페이스로, 모듈에 액세스하고, 데이터를 관리하며, 공격을 시작할 수 있게 해줍니다.

더 깔끔한 인터페이스를 위해 시작 배너를 표시하지 않도록 -q (quiet) 플래그를 사용하여 msfconsole을 시작할 것입니다. 데이터베이스 연결은 자동으로 설정됩니다.

Metasploit 콘솔을 시작하려면 다음 명령을 실행하십시오.

msfconsole -q

잠시 후 터미널 프롬프트가 msf6 >으로 변경되어 Metasploit 콘솔 내부에 있음을 나타냅니다.

msf6 >

msfconsole 내에서 침투 테스트 워크플로우를 관리하는 많은 명령에 액세스할 수 있습니다. 그중 하나가 db_import이며, 다음 단계에서 Nmap 스캔 데이터를 로드하는 데 사용할 것입니다.

Nmap XML 파일 경로 지정하기

이제 Metasploit 콘솔 안에 있으므로 Nmap 스캔 결과를 가져올 수 있습니다. db_import 명령이 이 목적으로 사용됩니다. 첫 번째 단계에서 생성한 XML 파일의 전체 경로를 제공해야 합니다.

파일을 /home/labex/project에 생성했으므로 해당 경로를 사용합니다.

msfconsole 프롬프트 안에서 db_import 명령을 실행합니다.

db_import /home/labex/project/nmap_scan.xml

Metasploit 은 XML 파일을 파싱하여 데이터를 데이터베이스로 가져옵니다. 데이터가 가져와지고 있음을 확인하는 출력이 표시되어야 합니다.

msf6 > db_import /home/labex/project/nmap_scan.xml
[*] Importing 'Nmap XML' data from /home/labex/project/nmap_scan.xml
[*] Importing host 127.0.0.1
[*] Successfully imported /home/labex/project/nmap_scan.xml

이 메시지는 Nmap 스캔의 호스트, 포트 및 서비스가 이제 Metasploit 데이터베이스에 저장되었음을 확인합니다.

hosts 명령을 사용하여 가져온 호스트 확인하기

이 단계에서는 호스트 정보가 Metasploit 데이터베이스로 성공적으로 가져와졌는지 확인할 것입니다. msfconsolehosts 명령은 현재 워크스페이스에서 Metasploit 이 인지하고 있는 모든 호스트를 나열합니다.

스캔 데이터를 가져온 후 hosts 명령을 실행하면 스캔한 대상인 localhost (127.0.0.1) 이 표시되어야 합니다.

msfconsole 프롬프트 안에서 hosts 명령을 입력하고 Enter 키를 누릅니다.

hosts

출력은 IP 주소, MAC 주소 (사용 가능한 경우), 이름 및 운영 체제를 포함하여 데이터베이스의 호스트를 나열하는 테이블이 될 것입니다.

msf6 > hosts

Hosts
=====

address      mac  name       os_name        os_flavor  os_sp  purpose  info  comments
-------      ---  ----       -------        ---------  -----  -------  ----  --------
127.0.0.1         localhost  Ubuntu Linux   Linux             device

목록에서 127.0.0.1을 보는 것은 Nmap 스캔의 호스트 데이터가 데이터베이스에 올바르게 추가되었음을 확인합니다.

services 명령을 사용하여 가져온 서비스 조회하기

이 마지막 단계에서는 가져온 호스트에서 발견된 서비스를 검사합니다. msfconsoleservices 명령은 데이터베이스에 추가된 모든 열린 포트와 실행 중인 서비스를 나열합니다. 이는 잠재적인 공격 벡터를 식별하는 데 중요합니다.

msfconsole 프롬프트 안에서 services 명령을 실행합니다.

services

그러면 호스트, 포트, 프로토콜, 서비스 이름 및 버전 정보를 포함하여 모든 서비스에 대한 자세한 테이블이 표시됩니다.

msf6 > services

Services
========

host       port  proto  name  state  info
----       ----  -----  ----  -----  ----
127.0.0.1  22    tcp    ssh   open   OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu Linux; protocol 2.0)

이 출력은 Nmap 에서 발견한 특정 서비스가 이제 Metasploit 내에서 깔끔하게 정리되었음을 보여줍니다. 이제 이 정보를 사용하여 프레임워크 내에서 관련 익스플로잇 또는 보조 모듈을 검색할 수 있습니다.

Metasploit 콘솔을 종료하려면 exit를 입력하면 됩니다.

exit

요약

이 실습에서는 외부 도구를 Metasploit Framework 와 통합하는 기본적인 워크플로우를 성공적으로 학습했습니다.

다음 내용을 배웠습니다.

  • 버전 탐지를 포함한 Nmap 스캔을 실행하고 결과를 XML 파일로 저장하는 방법.
  • Metasploit 콘솔을 시작하고 db_import 명령을 사용하여 Nmap 스캔 데이터를 로드하는 방법.
  • hosts 명령을 사용하여 가져온 데이터를 확인하고 발견된 호스트를 보는 방법.
  • services 명령을 사용하여 데이터베이스에서 상세한 서비스 정보를 조회하는 방법.

이러한 스캔 데이터 가져오기 프로세스는 침투 테스트 중 효과적인 데이터 관리에 필수적이며, 다양한 소스의 정보를 단일의 강력한 플랫폼으로 통합하여 분석 및 익스플로잇에 활용할 수 있게 합니다.