IP Library Granted Patent US 11,080,395
Granted Patent B1
US 11,080,395 · App. 16/698,920 · Granted Aug 3, 2021

Interactive shell event detection

Inventor: Brandon M. Edwards (Brooklyn, NY)
Assignee: Capsule8, Inc.
G06F21/554G06F11/3636
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,080,395
App. No.
16/698,920
Granted
Aug 3, 2021
Kind
B1
Abstract

Telemetry associated with a system call denoting that a program has been invoked via a process is received. A determination is made that the invoked process is a shell. Subsequent to determining that the invoked program is a shell, additional information comprising at least one of a determination that the program has attempted to obtain terminal information, and keystroke timing information is received. Based at least in part on the received additional information, a determination is made that the program is an interactive shell. In response to determining that the program is an interactive shell, an action is taken.

Claims (42)

1. A system, comprising:

a processor configured to:

receive telemetry associated with a system call denoting that a program has been invoked via a process;

determine that the program invoked via the process is a shell program;

subsequent to determining that the invoked program is a shell program, determine that the shell program is being interacted with directly by a human user instead of programmatically and tag the shell program as an interactive shell program based at least in part on determining that keystrokes were provided by a human instead of being programmatically provided by a script;

associate keystroke timing information with a specific user; and

in response to determining that the program is an interactive shell program, transmit an out-of-band query to the specific user to determine whether the specific user provided the keystrokes; and

a memory coupled to the processor and configured to provide the processor with instructions.

2. The system of claim 1 , wherein the processor is further configured to insert data associated with the process into a Process Tree.

3. The system of claim 2 , wherein the data includes a current state of the program executing.

4. The system of claim 1 , wherein determining that the program is a shell program includes using a Shell Utility.

5. The system of claim 4 , wherein the Shell Utility is configured to determine that the program is a shell program by matching a program path against a list of known shell programs.

6. The system of claim 1 , wherein tagging the shell program as an interactive shell program includes associating a shell Tag with the process in a Process Tree.

7. The system of claim 1 , wherein the shell program is determined to be an interactive shell program based at least in part on receipt of an ioctl event.

8. The system of claim 1 , wherein the shell program is determined to be an interactive shell program based at least in part on information obtained using a Kprobe.

9. The system of claim 1 , wherein the shell program is determined to be an interactive shell program based at least in part on information obtained using a debugging tracepoint.

10. The system of claim 1 , wherein the processor is further configured to propagate a tag upon occurrence of at least one of a program execution system call and a fork.

11. The system of claim 1 , wherein the processor is further configured to determine a command being executed in the interactive shell program.

12. The system of claim 11 , wherein the determined command is displayed as output in a real-time view interface.

13. A method, comprising:

receiving telemetry associated with a system call denoting that a program has been invoked via a process;

determining that the program invoked via the process is a shell program;

subsequent to determining that the invoked program is a shell program, determining that the shell program is being interacted with directly by a human user instead of programmatically and tag the shell program as an interactive shell program based at least in part on determining that keystrokes were provided by a human instead of being programmatically provided by a script;

associating keystroke timing information with a specific user; and

in response to determining that the program is an interactive shell program, transmitting an out-of-band query to the specific user to determine whether the specific user provided the keystrokes.

14. The method of claim 13 , further comprising inserting data associated with the process into a Process Tree.

15. The method of claim 14 , wherein the data includes a current state of the program executing.

16. The method of claim 13 , wherein determining that the program is a shell program includes using a Shell Utility.

17. The method of claim 16 , wherein the Shell Utility is configured to determine that the program is a shell program by matching a program path against a list of known shell programs.

18. The method of claim 13 , wherein tagging the shell program as an interactive shell program includes associating a shell Tag with the process in a Process Tree.

19. The method of claim 13 , wherein the shell program is determined to be an interactive shell program based at least in part on receipt of an ioctl event.

20. The method of claim 13 , wherein the shell program is determined to be an interactive shell program based at least in part on information obtained using a Kprobe.

21. The method of claim 13 , wherein the shell program is determined to be an interactive shell program based at least in part on information obtained using a debugging tracepoint.

22. The method of claim 13 , further comprising propagating a tag upon occurrence of at least one of a program execution system call and a fork.

23. The method of claim 13 , further comprising determining a command being executed in the interactive shell program.

24. The method of claim 23 , wherein the determined command is displayed as output in a real-time view interface.

25. A computer program product embodied in a non-transitory computer readable storage medium and comprising computer instructions for:

receiving telemetry associated with a system call denoting that a program has been invoked via a process;

determining that the program invoked via the process is a shell program;

subsequent to determining that the invoked program is a shell program, determining that the shell program is being interacted with directly by a human user instead of programmatically and tag the shell program as an interactive shell program based at least in part determining that keystrokes were provided by a human instead of being programmatically provided by a script;

associating keystroke timing information with a specific user;

in response to determining that the program is an interactive shell program, transmitting an out-of-band query to a specific user to determine whether the specific user provided the keystrokes.

Assignments (4)
MERGER Recorded Nov 19, 2025
From: CAPSULE8, LLC
To: SOPHOS INC.
Reel/Frame 072966/0801 →
CHANGE OF NAME Recorded Nov 19, 2025
From: CAPSULE8, INC.
To: CAPSULE8, LLC
Reel/Frame 073333/0484 →
SECURITY INTEREST Recorded Oct 29, 2021
From: CAPSULE8, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 057966/0648 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 30, 2020
From: EDWARDS, BRANDON M.
To: CAPSULE8, INC.
Reel/Frame 053091/0607 →
Continuity (2)
Provisional Application 62773892 · Nov 30, 2018
Provisional Application 62825737 · Mar 28, 2019