소개
Metasploit 의 세계에 오신 것을 환영합니다! Metasploit Framework 는 사이버 보안 전문가들이 익스플로잇 (exploit) 을 개발, 테스트 및 실행하는 데 사용하는 매우 강력한 오픈 소스 도구입니다. 이 프레임워크는 다양한 침투 테스트 작업에 사용될 수 있는 코드 조각인 모듈 (modules) 의 방대한 데이터베이스를 포함하고 있습니다. 이러한 모듈에는 익스플로잇, 페이로드 (payloads), 그리고 보조 도구 (auxiliary tools) 가 포함됩니다.
본 랩에서는 Metasploit 모듈을 다루는 기본적인 작업 흐름을 학습하게 됩니다. Metasploit 콘솔을 실행하는 것부터 시작하여, 특정 모듈을 검색하는 방법, 사용을 위해 모듈을 선택하는 방법, 그리고 기본 옵션을 구성하는 방법을 배우게 됩니다. 이는 모든 예비 침투 테스터에게 필수적인 기초 기술입니다.
search type:exploit 명령어로 익스플로잇 검색
이 단계에서는 search 명령어를 사용하여 Metasploit Framework 내에서 모듈을 검색하는 방법을 배웁니다. search 명령어는 사용 가능한 수천 개의 모듈을 탐색하는 주요 도구입니다.
먼저, Metasploit Framework 콘솔을 실행해 보겠습니다. 시작하는 데 약간의 시간이 걸릴 수 있습니다.
msfconsole
배너와 함께 msf >와 같이 표시되는 Metasploit 명령 프롬프트가 나타납니다. 이 랩의 모든 후속 명령어는 이 콘솔 내에서 실행됩니다.
검색을 더 효과적으로 만들기 위해 키워드를 사용하여 결과를 필터링할 수 있습니다. 가장 일반적인 키워드 중 하나는 type이며, 이를 사용하여 찾고 있는 모듈의 종류 (예: exploit, payload, auxiliary) 를 지정할 수 있습니다.
익스플로잇으로 분류된 모든 모듈을 검색해 보겠습니다. Metasploit 콘솔에 다음 명령어를 입력하십시오.
search type:exploit
사용 가능한 익스플로잇의 긴 목록이 표시됩니다. 출력은 다음과 같은 열로 구성되어 있습니다.
- #: 검색 결과의 인덱스 번호입니다.
- Name: 모듈의 전체 경로 및 이름입니다.
- Disclosure Date: 취약점이 공개된 날짜입니다.
- Rank: 익스플로잇의 신뢰도로,
low부터excellent까지 있습니다. - Check: 모듈이 익스플로잇 없이 대상이 취약한지 확인할 수 있는지 여부를 나타냅니다.
- Description: 모듈이 수행하는 작업에 대한 간략한 요약입니다.
msf > search type:exploit
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/windows/local/adobe_sandbox_esc 2011-04-15 excellent No Adobe Reader/Acrobat "Movie" Annotation Sandbox Escape
1 exploit/windows/fileformat/acdsee_pica 2011-01-12 good No ACDSee PicaView 2.0 EML File Parsing Buffer Overflow
... (output truncated) ...
이를 통해 사용 가능한 익스플로잇에 대한 일반적인 아이디어를 얻을 수 있지만, 목록이 너무 길어 실용적이지 않습니다. 다음 단계에서는 목록을 좁혀 보겠습니다.
search platform:linux 명령어로 플랫폼별 검색 필터링
이 단계에서는 검색 결과를 구체화하는 방법을 배웁니다. 이전 검색에서는 여러 다른 운영 체제에 대한 수천 개의 익스플로잇이 반환되었습니다. 관련 익스플로잇을 찾으려면 더 많은 필터를 추가해야 합니다.
platform 키워드를 사용하면 windows, linux, osx, android와 같이 대상 운영 체제를 기반으로 모듈을 필터링할 수 있습니다. 여러 키워드를 단일 search 명령어로 결합하여 매우 구체적인 쿼리를 만들 수 있습니다.
Linux 플랫폼 전용으로 설계된 익스플로잇을 검색해 보겠습니다.
search type:exploit platform:linux
이제 출력은 Linux 시스템과 관련된 익스플로잇의 훨씬 더 짧고 관리하기 쉬운 목록이 될 것입니다.
msf > search type:exploit platform:linux
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/linux/http/advantech_switch_bash_env_exec 2014-09-24 excellent Yes Advantech Switch Bash Environment Variable Code Injection (Shellshock)
1 exploit/linux/http/airties_login_cgi_bof 2012-01-17 excellent No AirTies login.cgi Buffer Overflow
... (output truncated) ...
키워드를 결합함으로써 특정 대상에 필요한 정확한 모듈을 신속하게 찾아낼 수 있습니다.
exploit/multi/handler 모듈 사용
이 단계에서는 함께 작업할 모듈을 선택하는 방법을 배웁니다. search 명령어로 모듈을 찾은 후에는 use 명령어를 사용하여 해당 모듈을 프레임워크 컨텍스트로 로드해야 합니다.
use 명령어는 모듈의 전체 이름을 인수로 사용합니다. 검색 결과에서 이름을 직접 복사할 수 있습니다.
이 랩에서는 특별하고 매우 일반적인 모듈인 exploit/multi/handler를 선택할 것입니다. 이 모듈은 특정 취약점을 대상으로 하는 일반적인 익스플로잇이 아닙니다. 대신, 대상 시스템에서 실행된 페이로드 (payload) 로부터 들어오는 연결을 기다리는 일반적인 리스너 (listener) 입니다. 이는 리버스 쉘 (reverse shell) 을 잡기 위한 기본적인 도구입니다.
다음 명령어로 핸들러 모듈을 로드합니다.
use exploit/multi/handler
명령어를 실행한 후, 명령 프롬프트가 변경된 것을 확인할 수 있습니다.
msf > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf exploit(multi/handler) >
프롬프트 msf exploit(multi/handler) >는 현재 exploit/multi/handler 모듈의 컨텍스트 내에 있음을 나타냅니다. 이제 실행하는 모든 명령어 (예: 옵션 설정) 는 이 특정 모듈에 적용됩니다.
show options 명령어로 모듈 옵션 확인
이 단계에서는 선택한 모듈에 대해 구성 가능한 매개변수를 확인하는 방법을 배웁니다. 모든 모듈에는 실행되기 전에 구성해야 할 수 있는 일련의 옵션이 있습니다. 이러한 옵션은 대상의 IP 주소나 수신 대기할 포트와 같이 모듈의 동작을 정의합니다.
show options 명령어는 현재 로드된 모듈에 대해 사용 가능한 모든 옵션을 표시합니다.
현재 exploit/multi/handler 컨텍스트에 있으므로 다음 명령어를 실행합니다.
show options
출력에는 모듈의 옵션과 현재 설정 및 설명이 나열됩니다.
msf exploit(multi/handler) > show options
Module options (exploit/multi/handler):
Name Current Setting Required Description
---- --------------- -------- -----------
Payload options (generic/shell_reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Wildcard Target
Required 열에 주의를 기울이십시오. yes로 표시된 모든 옵션은 모듈을 실행하기 전에 설정해야 합니다. multi/handler의 경우 LHOST(Listen Host) 와 LPORT(Listen Port) 가 필수입니다. LHOST는 시스템이 수신 대기할 IP 주소이며 LPORT는 포트입니다.
set LHOST 명령어로 기본 옵션 설정
이 단계에서는 set 명령어를 사용하여 모듈의 옵션을 구성하는 방법을 배웁니다. 이 명령어를 사용하면 show options로 확인했던 매개변수에 값을 할당할 수 있습니다.
일반적인 구문은 set <OPTION_NAME> <VALUE>입니다.
multi/handler 모듈에서 구성해야 할 가장 중요한 옵션은 "Listen Host"를 의미하는 LHOST입니다. 이는 핸들러가 페이로드로부터 들어오는 연결을 수신 대기할 IP 주소를 지정합니다.
핸들러가 로컬 머신에서 수신 대기하도록 LHOST 옵션을 루프백 주소인 127.0.0.1로 설정해 보겠습니다.
set LHOST 127.0.0.1
Metasploit 은 변경 사항을 확인해 줄 것입니다.
LHOST => 127.0.0.1
show options를 다시 실행하여 옵션이 업데이트되었는지 확인할 수 있습니다. LHOST의 Current Setting으로 127.0.0.1이 나열된 것을 볼 수 있습니다. 이 간단한 set 명령어가 공격을 시작하기 전에 모든 모듈을 구성하는 방법입니다.
Metasploit 콘솔을 종료하려면 exit를 입력할 수 있습니다.
exit
요약
이 랩을 완료하신 것을 축하드립니다! Metasploit Framework 를 사용하는 데 필요한 필수적인 첫 단계를 학습했습니다.
이제 다음을 수행하는 방법을 알게 되었습니다.
- Metasploit 콘솔 실행 (
msfconsole). search명령어를 사용하여 모듈 검색 및type과platform으로 필터링.use명령어를 사용하여 특정 모듈 선택.show options로 모듈의 구성 가능한 매개변수 확인.set명령어를 사용하여 모듈의 매개변수 구성 (예: 리스너에 LHOST 설정).
이 명령어들은 Metasploit 에서 수행할 모든 작업의 핵심 워크플로우를 구성합니다. 이를 숙달하는 것이 이 강력한 침투 테스트 도구를 효과적으로 사용하는 열쇠입니다.



