IP Library Granted Patent US 11,082,404
Granted Patent B2
US 11,082,404 · App. 16/512,158 · Granted Aug 3, 2021

RPC call interception

Inventor: Ion-Alexandru Ionescu (Seattle, WA)
Assignee: CrowdStrike, Inc.
H04L63/0281G06F9/545G06F9/547G06F21/54H04L63/1408H04L67/2804H04L67/2814G06F2209/542H04L67/142
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,082,404
App. No.
16/512,158
Granted
Aug 3, 2021
Kind
B2
Abstract

A service proxy is described herein. The service proxy is configured to act as an intermediary between a client and a service. The service proxy may observe communications, modify communications, log communications, or the like, particularly so as to enhance the security and reliability of the host device. In some implementations, the service proxy may cooperate with an operating system to take over a named port object. In some implementations, the service proxy may receive messages as an intermediary between the client and the server. In some implementations, the service proxy may attach to a shared memory to intercept communications. In some implementations, the service proxy may be injected into a client process to appear to be the client itself.

Claims (48)

1. A computer-implemented method comprising:

receiving, from a client process, an indication of a communication session between the client process and a service, the indication including a reference to a service port associated with the service;

injecting a proxy thread into the client process;

creating a modified indication of the communication session based, at least in part, on the indication of the communication session, the modified indication of the communication session referencing the proxy thread instead of the service port;

providing the modified indication of the communication session to the client process;

receiving, by the proxy thread from the client process, a message to be received by the service port;

analyzing, by the proxy thread, the message; and

forwarding, by the proxy thread, the message to the service port.

2. The computer-implemented method of claim 1 , further comprising:

receiving, by the proxy thread from the service, a service response to be received by a client port of the client process;

analyzing, by the proxy thread, the service response; and

forwarding, by the proxy thread, the service response to the client port.

3. The computer-implemented method of claim 2 , wherein the analyzing the service response includes determining that the service response references data stored in a shared memory region and further analyzing at least a portion of the data stored in the shared memory region.

4. The computer-implemented method of claim 1 , wherein the analyzing the message includes determining that the message references data stored in a shared memory region and further analyzing at least a portion of the data stored in the shared memory region.

5. The computer-implemented method of claim 1 , wherein the client process, including the proxy thread, is configured to have less-than kernel-level permissions.

6. The computer-implemented method of claim 1 , wherein the client process and the service are associated with different address spaces.

7. The computer-implemented method of claim 6 , wherein the different address spaces are different virtual address spaces that map to a same physical address space on a host computing device.

8. The computer-implemented method of claim 1 , wherein the proxy thread is injected into an address space of the client process.

9. The computer-implemented method of claim 8 , wherein the proxy thread is injected into a program area of an existing thread of the client process.

10. The computer-implemented method of claim 1 , wherein the injecting causes the proxy thread to have at least one of a same process identifier (PID) or a same thread identifier (TID) as the client process.

11. The computer-implemented method of claim 1 , wherein the indication of the communication session is a request to communicate with the service, and the modified indication causes the client process to communicate with the proxy thread, during the communication session, instead of the service port.

12. The computer-implemented method of claim 1 , wherein the client process and the service execute on a host computing device, and the proxy thread is associated with a security agent operating on the host computing device.

13. The computer-implemented method of claim 1 , wherein the service is a local procedure call (LPC) service associated with the client process.

14. A computing device, comprising:

one or more processors; and

memory storing computer-executable instructions that, when executed by the one or more processors, cause the one or more processors to perform operations comprising:

receiving, from a client process, an indication of a communication session between the client process and a service, the indication including a reference to a service port associated with the service;

injecting a proxy thread into the client process;

creating a modified indication of the communication session based, at least in part, on the indication of the communication session, the modified indication of the communication session referencing the proxy thread instead of the service port;

providing the modified indication of the communication session to the client process;

receiving, by the proxy thread from a sender, a message to be received by a receiver;

analyzing, by the proxy thread, the message; and

forwarding, by the proxy thread, the message to the receiver,

wherein the sender is one of the client process or the service, and the receiver is the service port or a client port of the client process.

15. The computing device of claim 14 , wherein the analyzing the message includes determining that the message references data stored in a shared memory region and further analyzing at least a portion of the data stored in the shared memory region.

16. The computing device of claim 14 , wherein the proxy thread is injected into an address space of the client process.

17. The computing device of claim 14 , wherein the injecting causes the proxy thread to have at least one of a same process identifier (PID) or a same thread identifier (TID) as the client process.

18. One or more non-transitory computer-readable media storing computer-executable instructions that, when executed by one or more processors of a computing device, cause the one or more processors to perform operations comprising:

receiving, from a client process, an indication of a communication session between the client process and a service, the indication including a reference to a service port associated with the service;

injecting a proxy thread into the client process;

creating a modified indication of the communication session based, at least in part, on the indication of the communication session, the modified indication of the communication session referencing the proxy thread instead of the service port;

providing the modified indication of the communication session to the client process;

receiving, by the proxy thread from a sender, a message to be received by a receiver;

analyzing, by the proxy thread, the message; and

forwarding, by the proxy thread, the message to the receiver,

wherein the sender is one of the client process or the service, and the receiver is the service port or a client port of the client process.

19. The one or more non-transitory computer-readable media of claim 18 , wherein the analyzing the message includes determining that the message references data stored in a shared memory region and further analyzing at least a portion of the data stored in the shared memory region.

20. The one or more non-transitory computer-readable media of claim 18 , wherein the proxy thread is injected into an address space of the client process.

Assignments (3)
RELEASE OF SECURITY INTEREST Recorded Jan 6, 2026
From: FIRST-CITIZENS BANK & TRUST COMPANY
To: CROWDSTRIKE HOLDINGS, INC.; CROWDSTRIKE, INC.
Reel/Frame 074202/0710 →
PATENT SECURITY AGREEMENT Recorded Jan 5, 2021
From: CROWDSTRIKE HOLDINGS, INC.; CROWDSTRIKE, INC.
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 054899/0848 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 15, 2019
From: IONESCU, ION-ALEXANDRU
To: CROWDSTRIKE, INC.
Reel/Frame 049756/0757 →
Continuity (2)
Continuation 14098246 · Dec 5, 2013
Related Publication 20190342268A1 · Nov 7, 2019