SMB enumeration

agnusdei·2025년 5월 25일

CTF

목록 보기
3/185

✅ [SMB Enumeration 수동 스크립트] + 설치 명령 포함 (OSCP 시험 범위 적합)

🎯 목표

  • 대상: 139, 445 포트 열린 SMB(Server Message Block) 서비스
  • 도구: 오직 OSCP 허용 도구(nmap, nbtscan, rpcclient, smbclient 등만)
  • enum4linux 사용 금지
  • 미설치된 경우를 고려해 도구 설치까지 자동 처리

📜 완전 자동 쉘 스크립트 (도구 설치 + SMB 정보 열거)

#!/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
smbclientSMB 공유 서버 탐색용 FTP 비슷한 도구sudo apt install -y smbclient
rpcclient윈도우 RPC 서버와 상호작용, 계정/정책 열람sudo apt install -y smbclient (같이 설치됨)
nbtscanNetBIOS 이름, 워크그룹 탐색sudo apt install -y nbtscan

✅ 참고: rpcclientsmbclient 패키지 설치 시 같이 포함됩니다.


🧠 주요 열거 목적 요약

항목목적
포트 열림 확인SMB 동작 여부 확인
OS/SMB 버전SMB 취약점 존재 여부 판단
NetBIOS 이름시스템 이름, 도메인, 워크그룹 확인
공유 폴더 확인무방비 공개된 리소스 탐색
사용자 계정크래킹 시도, 피싱 대상 추출
패스워드 정책크래킹 전략 수립 가능

🧒 어린이 요약

  • 해커는 집 문이 열렸는지(포트) 확인해요.
  • 열려 있다면, 누가 사는지(사용자), 어떤 문서가 공유되고 있는지(폴더), 문서에 들어갈 수 있는지(접근권한)를 살펴봐요.
  • 도구가 없으면 도구부터 설치하고 시작해요!

📚 기술사 요약정리

항목설명
개념SMB(Server Message Block)는 윈도우 기반 파일/프린터 공유 프로토콜
목적시스템 정보, 사용자, 공유 폴더, 보안 정책 수집
도구nmap, nbtscan, smbclient, rpcclient (기본 리눅스 도구)
원리SMB는 NetBIOS 및 RPC 기반으로 공유 정보 노출 가능
구조포트 139 (NetBIOS), 포트 445 (SMB 직접 연결), RPC 인터페이스
장점비인가 정보 노출 가능, 탐색만으로도 크리덴셜 수집 가능
단점공유 접근 제어 시 제한, 인증 필요시 수집 정보 한계
시험적합성enum4linux 제외, 순수 수동 도구 기반이라 OSCP 규정 충족

profile
DevSecOps, Pentest, Cloud(OpenStack), Develop, Data Engineering, AI-Agent

0개의 댓글