通過 RPC 防火墻停止橫向移動
RPC 是底層機制,用于多種橫向移動技術、偵察、中繼攻擊,或僅用于利用易受攻擊的 RPC 服務。
安裝RPC防火墻并將其配置為審計所有遠程RPC調用。一旦執行任何遠程攻擊工具,你將看到哪些RPC UUIDs和Opnums被遠程調用。
項目地址:https://github.com/zeronetworks/rpcfirewall
遠程RPC攻擊檢測
當RPC防火墻被配置為審計時,它會將事件寫到Windows事件日志中。
將此日志轉發到你的SIEM,并使用它來為你的服務器創建遠程RPC流量的基線。
一旦審計到異常的RPC調用,就用它來為你的SOC團隊觸發警報。
遠程RPC攻擊保護
RPC防火墻可以被配置為只阻止和審計潛在的惡意RPC調用。所有其他RPC調用不被審計,以減少噪音并提高性能。
一旦檢測到潛在的惡意RPC調用,它將被阻止和審計。這可以用來提醒你的SOC團隊,同時保持你的服務器受到保護。
什么是RPC防火墻組件?
由3個組件組成:
- RpcFwManager.exe - 負責管理RPC防火墻。
- RpcFirewall.dll - 注入的DLL,執行對RPC調用的審計和過濾。
- RpcMessages.dll - 一個共享功能的公共庫,以及將數據寫入Windows事件查看器的邏輯。
安裝
安裝時只需將RPC Firewall DLLs放入%SystemRoot%\System32中,并為事件查看器配置RPCFWP應用日志。確保事件查看器在安裝/卸載過程中被關閉。
RpcFwManager.exe /install RpcFwManager.exe /uninstall
保護進程
RpcFwManager試圖只將rpcFirewall.dll注入那些已經加載了RPCRT4.DLL的進程。
一旦rpcFirewall.dll被加載,它就會驗證主機進程是否有一個有效的RPC接口,并且正在監聽遠程連接。
否則,rpcFirewall.dll會從目標進程中卸載自己。
如果該進程是一個有效的RPC服務器,rpcFirewall就會根據配置文件開始審計和監控進入的RPC調用。
要通過pid來保護一個單一的進程:
RpcFwManager.exe /pid <pid>
要按名稱保護一個進程:
RpcFwManager.exe /process <process name>
要保護所有進程,只需將參數留空:
RpcFwManager.exe /process RpcFwManager.exe /pid
解除對進程的保護
要禁用RPC防火墻,要么卸載它,要么使用unprotect參數:
RpcFwManager.exe /unprotect (這將從所有進程中卸載rpcFirewall.dll)
配置
rpcFwManager.exe會在可執行文件的同一目錄中尋找一個RpcFw.conf文件。
- uuid -> 匹配一個特定的uuid
- opnum -> 匹配一個RPC opnum
- addr -> 匹配一個遠程 IP 地址
- 行動 -> 可以是允許或阻止(默認為允許)
- audit -> 真或假,控制事件是否被寫入RPCFWP日志(默認為假)
- verbose -> 當為真時,輸出特定RPC調用的調試信息(默認為假)
配置順序很重要,因為第一個匹配決定了RPC調用的結果。
例如,下面的配置將通過禁用非域名機器的MS-DRSR UUID來保護DC免受DCync攻擊。另外,請注意,只對被阻止的MS-DRSR嘗試啟用審計,這可能會提醒你的SOC注意潛在的攻擊
uuid:e3514235-4b06-11d1-ab04-00c04fc2dcd2 addr:<dc_addr1> action:allow uuid:e3514235-4b06-11d1-ab04-00c04fc2dcd2 addr:<dc_addr2> action:allow uuid:e3514235-4b06-11d1-ab04-00c04fc2dcd2 action:block audit:true
每當配置改變時,你需要通過更新命令通知rpcFirewall.dll。
RpcFwManager.exe /update
查看日志
打開事件查看器 -> 應用程序和服務日志 -> RPCFWP。