139/445 - SMB

SMB는 Windows에서 사용되는 파일 공유 서버 프로토콜입니다. Linux 운영체제에서는 SMB 대신 Samba 프로토콜을 사용하기도 합니다. 기본적으로 445번 포트에서 실행되며 쉐어를 통한 파일 전송은 139번 포트에서 이뤄집니다. 따라서 서버에서 139, 445번 포트가 활성화 되어있다면 Windows 운영체제라고 추측이 가능합니다.

SMB는 버전이 취약할 경우 Eternal Blue 취약점에 취약할 수도 있지만 17년도 익스플로잇이기 때문에 웬만한 환경의 SMB에서는 프로토콜 자체의 취약점보다는 익명 바인딩, 크리덴셜 정보 등으로 인해 취약점이 발생합니다. 익명 바인딩이 가능하다면 쉐어 목록, 유저 목록을 확인해보고 impacket-lookupsid를 사용하여 RID Cycling 공격을 통한 유저 정보를 수집합니다.

# 익명 로그인 여부 확인
nxc smb <IP> -u '' -p ''

# Guest 계정 로그인 여부 확인
nxc smb <IP> -u Guest -p ''

# 공유 쉐어 목록 확인
nxc smb <IP> -u <USER> -p <PASS> --shares

# 도메인 유저 정보 확인
nxc smb <IP> -u <USER> -p <PASS> --users

# 도메인 유저 정보 수집
nxc smb <IP> -u <USER> -p <PASS> --rid-brute
impacket-lookupsid anonymous@<IP> 10000 -no-pass

또한 공유된 쉐어가 웹 디렉토리라면 SMB 파일 업로드를 통한 웹 쉘 접속 시도도 가능합니다. 쉐어와의 마운트는 다음과 같이 할 수 있습니다.

# 익명 쉐어 마운트
mount -t cifs //<IP>/<Share> /mnt

# 쉐어 마운트
mount -t cifs //<IP>/<Share> /mnt -o username=<USER>,password=<PASS>

nxc를 통한 익명 로그인이 성공하는 반면, shares 플래그를 통한 쉐어 목록 수집이 권한 거부 메시지가 출력된다면 smbclient를 사용하여 쉐어 목록을 수집할 수 있습니다.

# 명령어 양식
smbclient -L //<IP>/

Last updated

Was this helpful?