139, 445 포트 열린 SMB(Server Message Block) 서비스nmap, nbtscan, rpcclient, smbclient 등만)enum4linux 사용 금지#!/bin/bash
# 사용 전 TARGET IP 입력
TARGET=10.10.10.10
echo "[*] Target: $TARGET"
echo "=========================================="
# 0. 도구 설치 확인 및 설치
echo "[0] 도구 설치 확인 중..."
for tool in nmap smbclient rpcclient nbtscan; do
if ! command -v $tool &> /dev/null; then
echo "[!] $tool 미설치 → 설치 진행"
sudo apt update && sudo apt install -y $tool
else
echo "[+] $tool 설치됨"
fi
done
echo "------------------------------------------"
# 1. 포트 스캔
echo "[1] Nmap으로 SMB 포트(139, 445) 확인"
nmap -p 139,445 $TARGET
echo "------------------------------------------"
# 2. SMB 운영체제 / 버전 확인
echo "[2] SMB OS 및 버전 정보 수집"
nmap --script=smb-os-discovery -p 139,445 $TARGET
echo "------------------------------------------"
# 3. NetBIOS 이름 확인
echo "[3] NetBIOS 이름 수집 (nbtscan)"
nbtscan $TARGET
echo "------------------------------------------"
# 4. 공유 폴더 목록 확인
echo "[4] 공유 폴더 나열 (smbclient -L)"
smbclient -L //$TARGET -N
echo "------------------------------------------"
# 5. 공유 접근 가능 여부 확인
echo "[5] 접근 가능한 공유 폴더 확인 시도"
shares=$(smbclient -L //$TARGET -N 2>/dev/null | grep "Disk" | awk '{print $1}')
for share in $shares; do
echo "[+] 시도 중인 공유: $share"
mkdir -p /tmp/smb_$TARGET_$share
smbclient //$TARGET/$share -N -c "ls" || echo "[-] 접근 거부됨: $share"
done
echo "------------------------------------------"
# 6. 사용자 계정 열거 (rpcclient)
echo "[6] 사용자 계정 열거 (rpcclient)"
rpcclient -U "" $TARGET -N -c "enumdomusers"
echo "------------------------------------------"
# 7. 사용자 이름 상세 매핑 (RID → 이름)
echo "[7] 사용자 SID → 이름 확인"
rpcclient -U "" $TARGET -N -c "enumdomusers" | grep 'rid:' | cut -d' ' -f5 | while read RID; do
rpcclient -U "" $TARGET -N -c "lookupnames $RID"
done
echo "------------------------------------------"
# 8. 그룹 목록 열거
echo "[8] 그룹 목록 확인"
rpcclient -U "" $TARGET -N -c "enumdomgroups"
echo "------------------------------------------"
# 9. 그룹 이름 상세 조회
echo "[9] 그룹 RID → 이름 확인"
rpcclient -U "" $TARGET -N -c "enumdomgroups" | grep 'rid:' | cut -d' ' -f5 | while read GRID; do
rpcclient -U "" $TARGET -N -c "querygroup $GRID"
done
echo "------------------------------------------"
# 10. 패스워드 정책 확인
echo "[10] 패스워드 정책 확인"
rpcclient -U "" $TARGET -N -c "getdompwinfo"
echo "=========================================="
echo "[*] SMB 수동 열거 완료!"
| 도구 | 설명 | 설치 명령어 |
|---|---|---|
nmap | 포트 스캐너, SMB OS 정보 수집 가능 | sudo apt install -y nmap |
smbclient | SMB 공유 서버 탐색용 FTP 비슷한 도구 | sudo apt install -y smbclient |
rpcclient | 윈도우 RPC 서버와 상호작용, 계정/정책 열람 | sudo apt install -y smbclient (같이 설치됨) |
nbtscan | NetBIOS 이름, 워크그룹 탐색 | sudo apt install -y nbtscan |
✅ 참고:
rpcclient는smbclient패키지 설치 시 같이 포함됩니다.
| 항목 | 목적 |
|---|---|
| 포트 열림 확인 | SMB 동작 여부 확인 |
| OS/SMB 버전 | SMB 취약점 존재 여부 판단 |
| NetBIOS 이름 | 시스템 이름, 도메인, 워크그룹 확인 |
| 공유 폴더 확인 | 무방비 공개된 리소스 탐색 |
| 사용자 계정 | 크래킹 시도, 피싱 대상 추출 |
| 패스워드 정책 | 크래킹 전략 수립 가능 |
| 항목 | 설명 |
|---|---|
| 개념 | SMB(Server Message Block)는 윈도우 기반 파일/프린터 공유 프로토콜 |
| 목적 | 시스템 정보, 사용자, 공유 폴더, 보안 정책 수집 |
| 도구 | nmap, nbtscan, smbclient, rpcclient (기본 리눅스 도구) |
| 원리 | SMB는 NetBIOS 및 RPC 기반으로 공유 정보 노출 가능 |
| 구조 | 포트 139 (NetBIOS), 포트 445 (SMB 직접 연결), RPC 인터페이스 |
| 장점 | 비인가 정보 노출 가능, 탐색만으로도 크리덴셜 수집 가능 |
| 단점 | 공유 접근 제어 시 제한, 인증 필요시 수집 정보 한계 |
| 시험적합성 | enum4linux 제외, 순수 수동 도구 기반이라 OSCP 규정 충족 |