Metasploit 콘솔 탐색 기본 사항

LinuxBeginner
지금 연습하기

소개

Metasploit 의 세계에 오신 것을 환영합니다! Metasploit Framework 는 보안 전문가들이 침투 테스트 (penetration testing) 및 취약점 평가 (vulnerability assessment) 에 사용하는 강력한 도구입니다. 그 핵심에는 Metasploit 콘솔, 즉 msfconsole이 있으며, 이는 프레임워크의 방대한 모듈, 익스플로잇 (exploits), 페이로드 (payloads) 에 접근할 수 있게 해주는 대화형 명령줄 인터페이스 (command-line interface) 입니다.

본 랩에서는 msfconsole 탐색에 필수적인 명령어들을 학습하게 됩니다. 이러한 기본 사항들을 숙달하는 것이 Metasploit 을 효과적으로 사용하기 위한 첫걸음입니다. 도움말을 얻는 방법, 워크스페이스 (workspaces) 를 사용하여 프로젝트를 관리하는 방법, 모듈을 검색하는 방법, 모듈에 대한 자세한 정보를 보는 방법, 그리고 콘솔을 올바르게 종료하는 방법을 다룰 것입니다.

이제 콘솔을 실행하여 시작하겠습니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 95%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

help 명령어로 핵심 명령어 탐색하기

이 단계에서는 Metasploit 콘솔을 실행하고 help 명령어를 사용하여 사용 가능한 명령어들을 탐색할 것입니다. help 명령어는 특정 명령어가 무엇을 하는지 또는 어떤 명령어들이 사용 가능한지 확신이 서지 않을 때 가장 유용한 자료입니다.

먼저, Metasploit 콘솔을 시작해 보겠습니다. 더 깔끔한 인터페이스를 위해 시작 배너를 건너뛰기 위해 -q (quiet) 플래그를 사용하겠습니다.

터미널에서 다음 명령어를 실행하세요:

msfconsole -q

명령 프롬프트가 msf >로 변경된 것을 확인할 수 있으며, 이는 현재 Metasploit 콘솔 내부에 있음을 나타냅니다.

이제 help 명령어를 사용하여 사용 가능한 모든 명령어 목록을 확인해 보겠습니다.

help

탐색을 용이하게 하기 위해 분류된 긴 명령어 목록이 표시될 것입니다.

Core Commands
=============

    Command       Description
    -------       -----------
    ?             Help menu
    banner        Display an awesome metasploit banner
    cd            Change the current working directory
    color         Toggle color output
    connect       Communicate with a host
    ...

Module Commands
===============

    Command       Description
    -------       -----------
    advanced      Displays advanced options for a module
    back          Move back from the current context
    info          Displays information about a module
    ...

또한 특정 명령어에 대한 자세한 도움말을 얻을 수도 있습니다. 예를 들어, search 명령어에 대해 더 자세히 알아보려면 help search를 입력할 수 있습니다.

help search

그러면 search 명령어의 구문과 옵션이 표시됩니다.

Usage: search [options] <keywords>

Search for modules, plugins, and other framework objects.

OPTIONS:

    -h, --help             Help banner.
    -o <file>, --output <file>  Send output to a file in csv format.
    -S <string>, --search <string>  Search string for row filtering.
    -t <type>, --type <type>  The type of module to search for (exploit, payload, auxiliary, etc)
...

다음 단계로 넘어가기 전에 help를 사용하여 다른 명령어들을 자유롭게 탐색해 보세요.

workspace 명령어로 작업 공간 관리 확인

이 단계에서는 워크스페이스 (workspaces) 에 대해 배웁니다. 워크스페이스는 Metasploit 내에서 작업을 구성하는 방법입니다. 각 워크스페이스는 특정 보안 점검 (engagement) 에 대한 호스트, 서비스, 취약점 및 수집된 데이터 (loot) 정보를 저장하는 독립적인 환경입니다. 이는 서로 다른 침투 테스트 프로젝트를 분리하여 관리하는 데 매우 유용합니다.

기본적으로 사용자는 default 워크스페이스에 있습니다. workspace 명령어를 사용하여 현재 사용 중인 워크스페이스와 사용 가능한 워크스페이스를 볼 수 있습니다.

workspace

출력 결과는 사용 가능한 워크스페이스를 보여주며, 별표 *는 현재 사용 중인 워크스페이스를 나타냅니다.

* default

이제 프로젝트를 위한 새 워크스페이스를 생성해 보겠습니다. 이름은 myproject로 지정하겠습니다. 새 워크스페이스를 추가하려면 -a 플래그를 사용합니다.

workspace -a myproject

Metasploit 은 생성 확인 메시지를 표시하고 자동으로 새 워크스페이스로 전환합니다.

[*] Added workspace: myproject
[*] Workspace: myproject

이제 워크스페이스 목록을 다시 확인하면 defaultmyproject가 모두 표시되며, myproject가 활성 상태임을 알 수 있습니다.

workspace
  default
* myproject

이후 호스트 스캔이나 데이터 수집과 같은 모든 작업은 이제 myproject 워크스페이스 내에 저장됩니다.

이 단계에서는 search 명령어를 사용하여 모듈을 찾는 방법을 배웁니다. Metasploit Framework 에는 수천 개의 모듈이 포함되어 있으며, 이는 작업을 수행하는 데 사용할 핵심 구성 요소입니다. 여기에는 익스플로잇 (exploits), 보조 스캐너 (auxiliary scanners), 페이로드 (payloads) 등이 포함됩니다. search 명령어는 작업에 적합한 도구를 찾는 데 필수적입니다.

키워드를 기반으로 모듈을 검색할 수 있습니다. 예를 들어, 일반적인 네트워크 프로토콜인 smb (Server Message Block) 와 관련된 모듈을 검색해 보겠습니다.

search smb

출력 결과는 일치하는 모듈의 긴 목록이 될 것입니다. 결과는 다음과 같은 여러 열을 가진 표로 표시됩니다.

  • #: 결과의 인덱스 번호입니다.
  • Name: 모듈의 전체 경로와 이름입니다.
  • Disclosure Date: 취약점이 공개된 날짜입니다.
  • Rank: 익스플로잇의 신뢰도로, low부터 excellent까지 있습니다.
  • Check: 모듈에 취약점을 안전하게 테스트하기 위한 check 메서드가 있는지 여부를 나타냅니다.
  • Description: 모듈이 수행하는 작업에 대한 간략한 요약입니다.
Matching Modules
================

   ##   Name                                    Disclosure Date  Rank       Check  Description
   -   ----                                    ---------------  ----       -----  -----------
   0   auxiliary/admin/smb/impacket/secretsdump  2021-11-09       normal     No     SMB Secrets Dump
   1   auxiliary/admin/smb/psexec_ntdsgrab       2021-11-09       normal     No     PsExec NTDSGRAB
   ...
   58  exploit/windows/smb/ms17_010_eternalblue  2017-03-14       average    Yes    MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption
   ...

type, platform, name 등과 같은 키워드를 사용하여 검색을 구체화할 수 있습니다. 예를 들어, smb와 관련된 windows 플랫폼용 exploit 모듈만 찾으려면 다음 명령어를 사용할 수 있습니다.

search type:exploit platform:windows smb

이렇게 하면 훨씬 더 집중된 결과 목록을 얻을 수 있어 필요한 특정 익스플로잇을 더 쉽게 찾을 수 있습니다.

info 명령어로 모듈 정보 표시

이 단계에서는 use 명령어와 info 명령어를 사용하여 특정 모듈에 대한 상세 정보를 얻는 방법을 배웁니다. search 명령어로 유망한 모듈을 찾은 후에는 해당 모듈이 무엇을 하는지, 어떤 옵션이 필요한지, 그리고 어떤 대상을 공격하는지 이해해야 합니다.

먼저, 작업할 모듈을 선택해야 합니다. 이는 use 명령어 뒤에 검색 결과에 나온 모듈의 전체 이름을 입력하여 수행됩니다. 유명한 eternalblue 익스플로잇을 선택해 보겠습니다.

use exploit/windows/smb/ms17_010_eternalblue

프롬프트가 변경된 것을 확인하십시오. 이제 활성 모듈의 이름이 포함되어 해당 모듈의 컨텍스트 내에 있음을 나타냅니다.

msf exploit(windows/smb/ms17_010_eternalblue) >

모듈이 선택되었으므로 이제 info 명령어를 사용하여 해당 모듈에 대한 상세 정보를 얻을 수 있습니다.

info

이 명령어는 다음을 포함하여 모듈에 대한 포괄적인 개요를 표시합니다.

  • Name, Module, Platform, Arch
  • Privileged: 특별한 권한이 필요한지 여부입니다.
  • LicenseRank
  • Provided by: 모듈 작성자입니다.
  • Available targets: 공격할 수 있는 특정 운영 체제 또는 애플리케이션입니다.
  • Basic options: 구성해야 하는 매개변수 (예: 대상 IP 주소 RHOSTS) 입니다.
  • Payload information: 전달할 수 있는 페이로드 유형입니다.
  • Description: 취약점에 대한 자세한 설명입니다.
  • References: 권고 및 기사 링크 (CVE, BID 등) 입니다.
       Name: MS17-010 EternalBlue SMB Remote Windows Kernel Pool Corruption
     Module: exploit/windows/smb/ms17_010_eternalblue
   Platform: Windows
       Arch: x86, x64
 Privileged: Yes
    License: Metasploit Framework License (BSD)
       Rank: Average
...

Basic options:
  Name      Current Setting  Required  Description
  ----      ---------------  --------  -----------
  RHOSTS                     yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
  RPORT     445              yes       The target port (TCP)
  SMBDomain .                no        (Optional) The Windows domain to use for authentication
...

이 정보를 검토하는 것은 익스플로잇을 실행하기 전에 중요한 단계입니다.

exit 명령어로 콘솔 종료

마지막 단계에서는 Metasploit Console 을 올바르게 종료하는 방법을 배웁니다. 터미널 창을 닫거나 Ctrl+C를 사용할 수도 있지만, msfconsole을 종료하는 권장 방법은 exit 명령어를 사용하는 것입니다.

이렇게 하면 프레임워크가 정상적으로 종료되어 실행 중인 모든 작업 (jobs) 을 중지하고 현재 상태를 저장할 수 있습니다.

종료하기 전에, back 명령어를 사용하여 모듈 컨텍스트에서 기본 msfconsole 프롬프트로 돌아갈 수 있습니다.

back

프롬프트가 표준 msf >로 돌아갈 것입니다.

이제 콘솔을 완전히 종료하려면 단순히 exit를 입력합니다.

exit

종료 메시지가 표시되며, 일반 시스템 셸 프롬프트로 돌아가게 됩니다.

labex:project$

이로써 Metasploit Console 탐색에 대한 기본적인 안내를 마칩니다.

요약

축하합니다! Metasploit Console 탐색 기본 사항에 대한 이 실습을 성공적으로 완료했습니다.

이 실습에서 여러분은 msfconsole 내에서 가장 기본적인 작업을 수행하는 방법을 배웠습니다.

  • 콘솔을 시작하고 help 명령어를 사용하여 다른 명령어를 발견하고 배우는 방법.
  • workspace 명령어를 사용하여 별도의 환경을 생성하고 관리함으로써 프로젝트를 구성하는 방법.
  • 강력한 search 명령어와 그 필터를 사용하여 모든 작업에 대한 모듈을 찾는 방법.
  • info 명령어를 사용하여 모듈의 세부 정보, 옵션 및 대상을 검토하는 방법.
  • exit 명령어를 사용하여 프레임워크를 올바르게 종료하는 방법.

이러한 명령어들은 앞으로 Metasploit 에서 수행할 모든 작업의 기반이 됩니다. 이 지식을 바탕으로 이제 모듈 구성 및 실행과 같은 더 고급 주제를 탐색할 준비가 되었습니다.