
악성 원격 프로시저 호출을 감사, 탐지 및 차단하여 DCSync 및 ZeroLogon과 같은 RPC 기반 공격의 측면 이동, 정찰 및 악용을 방지하는 Windows RPC 방화벽입니다.
RPC Firewall 블로그 게시물 또는 BlackHat 발표를 확인하여 RPC, RPC 공격 및 솔루션인 RPC Firewall에 대한 더 나은 이해를 얻으십시오.
질문, 문제 또는 단순히 의견을 공유하려면 |Zero| Labs Slack 커뮤니티 워크스페이스에 가입하세요.
이메일을 통한 연락도 환영합니다(그런 유형의 사람이라면). [email protected]으로 연락해 주세요.
다음 튜토리얼은 RPC Firewall의 기본 설치 및 설정과 다양한 RPC 기반 공격으로부터 보호하는 방법을 보여줍니다.
RPC는 수많은 수평 이동(lateral movement) 기술, 정찰(reconnaissance), 릴레이(relay) 공격 또는 단순히 취약한 RPC 서비스 악용에 사용되는 기본 메커니즘입니다.
DCSync 공격? RPC를 통해. Remote DCOM? RPC를 통해. WMIC? RPC를 통해. SharpHound? RPC를 통해. PetitPotam? RPC를 통해. PsExec? RPC를 통해. ZeroLogon? RPC를 통해... 음, 감이 오시죠 :)
이 문서 전체에서 다음 용어를 사용합니다.
모든 원격 RPC 호출을 감사(audit)하는 데 사용할 수 있습니다. 원격 공격 도구를 실행하면 어떤 RPC UUID와 Opnum이 원격으로 호출되었는지 확인할 수 있습니다.
예제 구성은 여기에서 확인하세요.
RPCFW 구성이 감사 모드로 설정되면 이벤트가 Windows 이벤트 로그에 기록됩니다. RPC 필터 이벤트는 이벤트 ID 5712로 보안 로그에 기록됩니다. RPC Firewall 로그는 Application/RPCFW에 기록됩니다.
사용자는 이러한 로그를 SIEM으로 전달하여 다양한 서버의 원격 RPC 트래픽 기준선을 생성하는 데 사용할 수 있습니다. 비정상적인 RPC 호출이 감사되면 SOC 팀에 경고를 트리거하는 데 사용하세요.
비정상적인 RPC 활동 및 공격을 탐지하는 데 사용할 수 있는 여러 Sigma 규칙을 통합했습니다.
RPCFW 구성은 잠재적으로 악의적인 RPC 호출만 차단 및 감사하도록 구성할 수 있습니다. 다른 모든 RPC 호출은 노이즈를 줄이고 성능을 향상시키기 위해 감사되지 않습니다.
잠재적으로 악의적인 RPC 호출이 감지되면 차단되고 감사됩니다. 이를 통해 SOC 팀에 경고를 보내는 동시에 서버를 보호할 수 있습니다.
보호를 보완하기 위해 RpcFwManager.exe를 통해 지원되는 RPC 필터링 기능을 사용할 수 있습니다.
이러한 구성의 예는 여기에서 찾을 수 있습니다.
3가지 구성 요소로 이루어져 있습니다.
각 방법을 사용하는 데는 장단점이 있지만, RPC Firewall을 사용할 때의 몇 가지 주요 이점은 특별한 주의가 필요합니다. 다음과 같습니다.
반면에 RPC 필터는 전체 UUID를 대량 허용 또는 거부하는 데 문제 없이 탁월합니다.
명령을 실행하기 전에 배포 상태를 확인하는 것이 좋습니다. 이는 '/status' 명령을 사용하여 수행됩니다.
RpcFwManager.exe /status
이것은 RPC Firewall 및 RPC 필터의 상태를 모두 표시합니다. 설치 상태 및 배포의 실행 상태에 대한 자세한 정보를 출력합니다.
거의 모든 명령 끝에 fw 또는 flt를 접미사로 붙일 수 있습니다. 이는 RPCFW Manager에게 명령이 RPC Firewall('fw'), RPC 필터('flt') 또는 접미사를 사용하지 않을 때 둘 다에 적용되는지 알려줍니다.
해당 기능(RPC 필터 / RPC Firewall / 둘 다)의 설치를 수행합니다.
설치/제거 중에는 이벤트 뷰어를 닫아야 합니다. 또한 이전 버전이 설치되지 않았는지 확인하기 위해 설치 전에 중지 및 제거하는 것이 좋습니다.
RpcFwManager.exe /stop
RpcFwManager.exe /uninstall
RpcFwManager.exe /install
제거는 반대 작업을 수행합니다. 여기서도 제거 전에 서비스를 중지하는 것이 좋습니다.
RpcFwManager.exe /stop
RpcFwManager.exe /uninstall
RPC 필터는 본질적으로 시스템 전체, 모든 RPC 서버에 적용됩니다. 이러한 필터를 적용하면 재부팅 후에도 유지됩니다. 모든 새 프로세스나 기존 프로세스는 RPCFW 구성에 따라 RPC 필터에 의해 보호됩니다.
RPC Firewall은 주입되어 원격 RPC 호출을 수신하는 모든 RPC 서버 프로세스를 보호합니다. 이는 RPCRT4.DLL(RPC 런타임)을 로드하는 프로세스에 RPC Firewall을 주입하여 수행됩니다. 로드되면 RPC Firewall은 RPC 서버가 원격 RPC 호출을 수신 중인지 감지합니다. 그렇지 않으면 자체를 언로드합니다. 프로세스가 유효한 RPC 서버인 경우 rpcFirewall은 RPCFW 구성에 따라 들어오는 RPC 호출을 감사 및 모니터링하기 시작합니다.
RPC 서비스를 보호하는 권장 방법은 '/start' 명령을 사용하는 것입니다. 이는 RPC Firewall 서비스를 시작하고('fw' 또는 접미사 없음) RPC 필터를 생성합니다('flt' 또는 접미사 없음).
RpcFwManager.exe /start
또한 RPC Firewall을 임시로 사용하여 특정 프로세스를 보호할 수도 있습니다. 이는 RPC Firewall 서비스를 시작하지 않으며 재부팅 후에도 유지되지 않습니다.
프로세스 ID(PID)로 단일 프로세스를 보호하려면:
RpcFwManager.exe /start pid <pid>
이름으로 단일 프로세스를 보호하려면:
RpcFwManager.exe /start process <process name>
보호를 중지하려면 적절한 접미사를 사용하여 '/stop' 명령을 실행하기만 하면 됩니다(특정 프로세스에 대한 보호를 중지하는 것은 불가능합니다).
RpcFwManager.exe /stop
사용된 접미사('fw' 또는 'flt' 또는 없음)에 따라 이는 RPC Firewall 서비스를 중지하고 모든 프로세스에서 RPC Firewall dll을 언로드합니다. RPC 필터의 경우 RPCFW Manager에 의해 생성된 모든 필터를 삭제합니다.
시작되면 RPC Firewall은 재부팅 후에도 유지됩니다. RPC 필터도 유지됩니다.
RPCFW Manager는 실행 파일과 동일한 디렉토리에서 RpcFw.conf 파일을 찾습니다. 이 파일은 다음 구성 옵션을 사용합니다.
중요: 각 구성 줄은 'fw:' 또는 *'flt:'*로 시작하여 해당 줄이 RPC Firewall 또는 RPC 필터에 적용되는지 나타내야 합니다.
더 많은 RPC 관련 "것들"을 보려면 show 명령이 있습니다. 현재로서는 RPC 방화벽 모듈로 보호할 수 없는 보호된 프로세스만 표시합니다.
RpcFwManager.exe /show
구성 순서는 중요하며, 첫 번째 일치 항목이 RPC 호출의 결과를 결정합니다.
예를 들어, 다음 구성 조각은 RPC Firewall을 사용하여 DCSync로부터 DC를 보호합니다. MS-DRSR UUID의 "위험한" opnum 3 DRSGetNCChanges를 다른 도메인 컨트롤러에서만 활성화하여 수행합니다.
fw:uuid:e3514235-4b06-11d1-ab04-00c04fc2dcd2 addr:<dc_addr1> opnum:3 action:allow
fw:uuid:e3514235-4b06-11d1-ab04-00c04fc2dcd2 addr:<dc_addr2> opnum:3 action:allow
fw:uuid:e3514235-4b06-11d1-ab04-00c04fc2dcd2 opnum:3 action:block
구성이 변경될 때마다 업데이트 명령을 통해 rpcFirewall.dll에 알려야 합니다.
RpcFwManager.exe /update
RPC Firewall의 경우 이벤트 뷰어 -> 응용 프로그램 및 서비스 로그 -> RPCFW를 엽니다. 이벤트 ID 1과 2는 '보호' 및 '보호 해제' 이벤트를 나타냅니다. 이벤트 3은 실제 RPC 호출을 감사합니다. 또한 키워드 열을 추가하세요. 이 열에는 RPC 호출이 차단되었는지 여부를 의미하는 감사 성공/실패가 포함됩니다.
RPC 필터의 경우 이벤트 뷰어 -> 보안 -> RPCFW를 엽니다. 이벤트 ID 5712로 필터링하세요.
네! 풀 리퀘스트를 주저하지 마세요.
저희도 그렇습니다! 생각, 아이디어 또는 문제가 있으면 언제든지 연락주세요: [email protected]
자세한 내용은 LICENSE를 참조하세요.
| 매개변수 이름 | 설명 | 지원 대상 ... |
|---|
| opnum: | RPC opnum 일치 | RPC Firewall |
| verbose: | true 또는 false일 수 있습니다. true인 경우 특정 RPC 호출에 대한 디버그 정보를 출력합니다(기본값 false) | RPC Firewall |
| prot: | 사용된 프로토콜을 프로토콜 시퀀스 상수 중 하나와 일치시킵니다 | RPC Firewall 및 필터 모두 |
| addr: | 원격 IP 주소(IPv4 또는 IPv6, CIDR 포함) 일치 | RPC Firewall 및 부분적으로 RPC 필터, 여기서 더 읽기 |
| uuid: | 특정 uuid 일치 | RPC Firewall 및 필터 모두 |
| action: | allow 또는 block일 수 있습니다(기본값 allow) | RPC Firewall 및 필터 모두 |
| audit: | true 또는 false일 수 있습니다. 이벤트가 RPCFW 로그에 기록되는지 제어합니다(기본값 false) | RPC Firewall 및 필터 모두 |
| sid: | 인증된 사용자를 보안 식별자와 일치시킵니다. 특정 사용자 또는 그룹일 수 있습니다. | RPC Firewall 및 필터 모두 |