Skip to main content

RPC - 111

기본 정보​

포트: 135 (RPC), 49152-65535 (Dynamic RPC)

RPC(Remote Procedure Call)는 원격 프로시저 호출을 위한 프로토콜입니다.

rpcclient​

# Null 세션으로 연결
rpcclient -U "" <RHOST>

# 사용자명 지정
rpcclient -U "<USERNAME>" <RHOST>

# 비밀번호와 함께
rpcclient -U "<USERNAME>%<PASSWORD>" <RHOST>

rpcclient 명령어​

# 도메인 컨트롤러 정보
dsr_getdcname
dsr_getdcnameex
dsr_getdcnameex2
dsr_getsitename

# 열거
enumdata
enumdomgroups # 도메인 그룹 열거
enumdomusers # 도메인 사용자 열거
enumjobs # 프린터 작업 열거
enumports # 프린터 포트 열거
enumprivs # 권한 열거

# DC 이름 가져오기
getanydcname
getdcname

# SID 조회
lookupsids <SID>
lsaenumsid
lsaquery

# 네트워크 정보
netconnenum # 네트워크 연결 열거
netdiskenum # 디스크 열거
netfileenum # 파일 열거
netsessenum # 세션 열거
netshareenum # 공유 열거
netshareenumall # 모든 공유 열거
netsharegetinfo # 공유 정보

# 사용자 정보
queryuser <USERNAME>
queryusergroups <RID>
querygroup <RID>
querygroupmem <RID>
querydominfo

# 서버 정보
srvinfo

RID 브루트포스​

# RID Cycling
for i in $(seq 500 1100); do
rpcclient -N -U "" <RHOST> -c "queryuser 0x$(printf '%x\n' $i)"
done

enum4linux​

# 기본 열거
enum4linux <RHOST>

# 전체 열거
enum4linux -a <RHOST>

# 사용자 열거
enum4linux -U <RHOST>

# 공유 열거
enum4linux -S <RHOST>

# 그룹 열거
enum4linux -G <RHOST>

# 비밀번호 정책
enum4linux -P <RHOST>

enum4linux-ng​

# Python 버전 (더 빠름)
enum4linux-ng <RHOST>

# 전체 열거
enum4linux-ng -A <RHOST>

# JSON 출력
enum4linux-ng -A <RHOST> -oJ output.json

Nmap​

# RPC 포트 스캔
sudo nmap -p135 -sV <RHOST>

# RPC 열거
sudo nmap -p135 --script rpc-grind <RHOST>

# MS-RPC 열거
sudo nmap -p135 --script msrpc-enum <RHOST>

impacket-rpcdump​

# RPC 엔드포인트 열거
impacket-rpcdump <RHOST>

# 자격증명 사용
impacket-rpcdump <DOMAIN>/<USERNAME>:<PASSWORD>@<RHOST>

참고​

  • Null 세션 확인
  • 익명 바인딩 가능 여부
  • 사용자 및 그룹 열거
  • 공유 열거
  • RID Cycling을 통한 사용자 발견
  • MS-RPC 서비스 열거