SMB 취약점 진단
SMB 취약점 진단
네트워크 모의해킹을 위해 포트스캐닝을 하다보면 tcp/445의 SMB가 거의 항상 보인다. SMB는 다른 컴퓨터의 파일/프린터/폴더를 네트워크 너머로 쓰게 해주는 프로토콜이다. (e.g. \\서버\공유폴더로 접근하는 네트워크 드라이브나 공용 프린터)
공유 폴더나 프린터뿐 아니라, Active Directory에서 로그인하고 그룹 정책을 뿌리는 작업 등 SMB를 탄다. 따라서 Windows가 있는 내부망은 445가 거의 항상 있고, Linux도 Samba를 깔면 SMB 공유를 열 수 있다.
SMB는 주로 아래와 같이 악용된다.
- 파일 공유
- 공유 폴더 내 중요 파일 등 노출
- 인증
- 탈취한 NTLM 해시를 이용한 Pass-the-Hash
- RCE
- e.g. EternalBlue(MS17-010)
SMB 진단 방법은 아래와 같다.
서비스 식별 및 열거
| 도구 | 용도 | 예시 |
|---|---|---|
| nmap NSE | SMB 관련 정보·취약점 스크립트 일괄 실행 | nmap -p 445 --script "smb-*" <target> |
| enum4linux-ng | 공유·사용자·그룹·패스워드 정책·RID 사이클링을 한 번에 수집 | enum4linux-ng -A <target> |
| smbclient | null 세션·게스트 접근 확인, 공유 접속 | smbclient -L //<target> -N |
| smbmap | 공유별 읽기/쓰기 권한 확인 | smbmap -H <target> -u guest |
| rpcclient | null 세션으로 사용자·정책 상세 확인 | 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 |
| 패스워드 spray | nxc smb <range> -u users.txt -p 'q1w2e3!' --continue-on-success |
| Pass-the-Hash | nxc smb <target> -u administrator -H <NTLM-hash> |
| Relay 대상 추출 | nxc smb <range> --gen-relay-list relay_targets.txt |
1-day
| 취약점 | CVE | Exploit |
|---|---|---|
| EternalBlue (MS17-010) | CVE-2017-0144 | nmap --script smb-vuln-ms17-010 |
| SMBGhost | CVE-2020-0796 | ollypwn/SMBGhost |
| SMBleed | CVE-2020-1206 | jamf/CVE-2020-1206-POC |
This post is licensed under CC BY 4.0 by the author.