Connectionless and Connection-Oriented DCE/RPC Traffic
DCE/RPC messages comply with one of two distinct DCE/RPC Protocol Data Unit (PDU) protocols:
- connection-oriented DCE/RPC PDU protocol
-
The DCE/RPC preprocessor detects connection-oriented DCE/RPC in the TCP, SMB, and RPC over HTTP transports.
- connectionless DCE/RPC PDU protocol
-
The DCE/RPC preprocessor detects connectionless DCE/RPC in the UDP transport.
The two DCE/RPC PDU protocols have their own unique headers and data characteristics. For example, the connection-oriented DCE/RPC header length is typically 24 bytes and the connectionless DCE/RPC header length is fixed at 80 bytes. Also, correct fragment order of fragmented connectionless DCE/RPC cannot be handled by a connectionless transport and, instead, must be ensured by connectionless DCE/RPC header values; in contrast, the transport protocol ensures correct fragment order for connection-oriented DCE/RPC. The DCE/RPC preprocessor uses these and other protocol-specific characteristics to monitor both protocols for anomalies and other evasion techniques, and to decode and defragment traffic before passing it to the rules engine.
The following diagram illustrates the point at which the DCE/RPC preprocessor begins processing DCE/RPC traffic for the different transports.
Note the following in the figure:
-
The well-known TCP or UDP port 135 identifies DCE/RPC traffic in the TCP and UDP transports.
-
The figure does not include RPC over HTTP.
For RPC over HTTP, connection-oriented DCE/RPC is transported directly over TCP as shown in the figure after an initial setup sequence over HTTP.
-
The DCE/RPC preprocessor typically receives SMB traffic on the well-known TCP port 139 for the NetBIOS Session Service or the similarly implemented well-known Windows port 445.
Because SMB has many functions other than transporting DCE/RPC, the preprocessor first tests whether the SMB traffic is carrying DCE/RPC traffic and stops processing if it is not or continues processing if it is.
-
IP encapsulates all DCE/RPC transports.
-
TCP transports all connection-oriented DCE/RPC.
-
UDP transports connectionless DCE/RPC.