IP Library Granted Patent US 12,204,959
Granted Patent B1
US 12,204,959 · App. 17/682,179 · Granted Jan 21, 2025

Using a software agent to provide a higher-level remote procdure call (RPC) mechanism

Inventors: Emmett Kelly (Belfast, GB); Paul Miseiko (Mississauga, CA)
Assignee: Rapid7, Inc.
G06F9/547H04L63/0428H04L67/02
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 12,204,959
App. No.
17/682,179
Granted
Jan 21, 2025
Kind
B1
Abstract

A software agent executing on a computing device receives a high-level command from a client and converts the high-level command into multiple low-level commands. The software agent executes individual low-level command on the computing device and sends a result of executing the individual low-level command to the client until each low-level command has been executed.

Claims (88)

1. A method comprising:

receiving, at a computing device and from a client that implements a scan engine that scans computers for security vulnerabilities, a high-level command to collect machine characteristics data about the computing device for a vulnerability assessment of the computing device, wherein the high-level command is a remote procedure call made by the scan engine to the computing device, wherein the high-level command is received via a network implemented over Internet and by a software agent executing on the computing device;

converting, by the software agent, the high-level command into a plurality of low-level commands executable to collect the machine characteristics data about the computing device, wherein the low-level commands include operating system commands executable to collect:

(a) contents of individual files of a plurality of files stored on the computing device,

(b) metadata associated with the plurality of files, and

(c) a plurality of user identifiers of users that are permitted to access the computing device;

executing, by the software agent, the plurality of low-level commands on the computing device;

determining, by the software agent, a result of executing the low-level commands on the computing device; and

sending, over the network and by the software agent, the result of executing the low-level commands on the computing device to the client.

2. The method of claim 1 , wherein the low-level commands are executable to collect an operating system version of the computing device.

3. The method of claim 1 , wherein the result comprises one of:

the contents of the individual files stored on the computing device;

the metadata associated with the files;

the plurality of user identifiers of users that are permitted to access the computing device;

a plurality of user permissions associated with users having access to the computing device;

a plurality of group names associated with groups defined on the computing device;

a plurality of group identifiers associated with one or more groups defined on the computing device;

a plurality of group permissions associated with one or more groups defined on the computing device;

group membership data associated with one or more groups defined on the computing device;

registry data associated with an operating system registry of the computing device; or

an output of executing a command line application on the computing device.

4. The method of claim 1 , wherein the software agent executes the low-level commands on the computing device as a shell script.

5. The method of claim 1 , wherein a single roundtrip across the network that connects the client to the computing device comprises:

receiving, by the software agent executing on the computing device, the high-level command from the client; and

sending, by the software agent, the result to the client.

6. The method of claim 1 , wherein

the result is sent to the client as a response to the remote procedure call.

7. The method of claim 1 , wherein:

the result is sent to the client as a second remote procedure call invoked by the software agent.

8. A computing device comprising:

one or more processors; and

one or more non-transitory computer readable media storing instructions executable by the one or more processors to perform operations comprising:

receiving, at the computing device and from a client that implements a scan engine that scans computers for security vulnerabilities, a high-level command to collect machine characteristics data about the computing device for a vulnerability assessment of the computing device, wherein the high-level command is a remote procedure call made by the scan engine to the computing device, wherein the high-level command is received via a network implemented over Internet and by a software agent executing on the computing device;

converting the high-level command into a plurality of low-level commands executable to collect the machine characteristics data about the computing device, wherein the low-level commands include operating system commands executable to collect:

(a) contents of individual files of a plurality of files stored on the computing device,

(b) metadata associated with the plurality of files, and

(c) a plurality of user identifiers of users that are permitted to access the computing device;

executing the plurality of low-level commands on the computing device;

determining a result of executing the low-level commands on the computing device; and

sending, over the network and by the software agent, the result of executing the low-level commands on the computing device to the client.

9. The computing device of claim 8 , wherein the low-level commands are executable to collect an operating system version of the computing device.

10. The computing device of claim 8 , wherein receiving, by the software agent executing on the computing device, the high-level command from the client comprises:

receiving the high-level command at a Hypertext Transfer Protocol Secure (HTTPS) endpoint on the computing device.

11. The computing device of claim 8 , wherein the result comprises one of:

the contents of the individual files stored on the computing device;

the metadata associated with the files;

the plurality of user identifiers of users that are permitted to access the computing device;

a plurality of user permissions associated with users that are permitted to access the computing device;

a plurality of group names associated with groups defined on the computing device;

a plurality of group identifiers associated with one or more groups defined on the computing device;

a plurality of group permissions associated with one or more groups defined on the computing device;

group membership data associated with one or more groups defined on the computing device;

registry data associated with an operating system registry of the computing device; or

an output of executing a command line application on the computing device.

12. The computing device of claim 8 , wherein:

the result is sent to the client as a response to the remote procedure call.

13. The computing device of claim 8 , wherein a single roundtrip across the network that connects the client to the computing device comprises:

receiving, by the software agent executing on the computing device, the high-level command from the client; and

sending, by the software agent, the result to the client.

14. One or more non-transitory computer readable media storing instructions executable by one or more processors of a computing device to perform operations comprising:

receiving, at a computing device and from a client that implements a scan engine that scans computers for security vulnerabilities, a high-level command to collect machine characteristics data about the computing device for a vulnerability assessment of the computing device, wherein the high-level command is a remote procedure call made by the scan engine to the computing device, wherein the high-level command is received via a network implemented over Internet and by a software agent executing on the computing device;

converting the high-level command into a plurality of low-level commands executable to collect the machine characteristics data about the computing device, wherein the low-level commands include operating system commands_executable to collect:

(a) contents of individual files of a plurality of files stored on the computing device,

(b) metadata associated with the plurality of files, and

(c) a plurality of user identifiers of users that are permitted to access the computing device;

executing the plurality of low-level commands on the computing device;

determining a result of executing the low-level commands on the computing device; and

sending, over the network and by the software agent, the result of executing the low-level commands on the computing device to the client.

15. The one or more non-transitory computer readable media of claim 14 , wherein the low-level commands are executable to collect an operating system version of the computing device.

16. The one or more non-transitory computer readable media of claim 14 , wherein:

the result is sent to the client as a second remote procedure call invoked by the software agent.

17. The one or more non-transitory computer readable media of claim 14 , wherein the result comprises one of:

the contents of the individual files stored on the computing device;

the metadata associated with the files;

the plurality of user identifiers of users that are permitted to access the computing device;

a plurality of user permissions associated with users that are permitted to access the computing device;

a plurality of group names associated with groups defined on the computing device;

a plurality of group identifiers associated with one or more groups defined on the computing device;

a plurality of group permissions associated with one or more groups defined on the computing device;

group membership data associated with one or more groups defined on the computing device;

registry data associated with an operating system registry of the computing device; or

an output of executing a command line application.

18. The one or more non-transitory computer readable media of claim 14 , wherein the software agent executes the low-level commands on the computing device as a shell script.

19. The one or more non-transitory computer readable media of claim 14 , wherein a single roundtrip across the network that connects the client to the computing device comprises:

receiving, by the software agent executing on the computing device, the high-level command from the client; and

sending, by the software agent, the result to the client.

20. The one or more non-transitory computer readable media of claim 14 , wherein:

the result is sent to the client as a response to the remote procedure call.

Assignments (2)
SECURITY INTEREST Recorded Jun 26, 2025
From: RAPID7, INC.; RAPID7 LLC
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 071743/0537 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 28, 2022
From: MISEIKO, PAUL; KELLY, EMMETT
To: RAPID7, INC.
Reel/Frame 059117/0524 →
References Cited (19)
US 20010025311A1 · Arai · 2001 [cited by examiner]
US 20010049752A1 · Kays, Jr. · 2001 [cited by examiner]
US 20020019881A1 · Bokhari · 2002 [cited by examiner]
US 20020046232A1 · Adams · 2002 [cited by examiner]
US 20020087657A1 · Hunt · 2002 [cited by examiner]
US 20020107067A1 · McGlone · 2002 [cited by examiner]
US 20020133738A1 · Zeigler · 2002 [cited by examiner]
US 20030037180A1 · Madineni · 2003 [cited by examiner]
US 20030078916A1 · DeForeest · 2003 [cited by examiner]
US 20040085327A1 · Jones · 2004 [cited by examiner]
US 20060074710A1 · Funk · 2006 [cited by examiner]
US 20060230148A1 · Forecast · 2006 [cited by examiner]
US 20080094410A1 · Jiao · 2008 [cited by examiner]
US 20110093954A1 · Lee · 2011 [cited by examiner]
US 20130174208A1 · Lee · 2013 [cited by examiner]
US 20140237596A1 · Grytsan · 2014 [cited by examiner]
US 20180157842A1 · Holz · 2018 [cited by examiner]
US 20180157860A1 · Nair · 2018 [cited by examiner]
US 20200082094A1 · Mcallister · 2020 [cited by examiner]
Cited By (1)
US 12,470,565