IP Library Granted Patent US 9,680,847
Granted Patent B2
US 9,680,847 · App. 14/885,765 · Granted Jun 13, 2017

Structural recognition of malicious code patterns

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 9,680,847
App. No.
14/885,765
Granted
Jun 13, 2017
Kind
B2
Abstract

Various embodiments include an apparatus comprising a detection database including a tree structure of descriptor parts including one or more root nodes and one or more child nodes linked to from one or more parent descriptor parts chains, each of the root nodes representing a descriptor part, and each root node linked to at least one of the child nodes, each root node and each child node linked to any possible additional child nodes, wherein the possible additional child nodes include any possible successor child nodes and a descriptor comparator coupled to the detection database, the descriptor comparator operable to receive data including a plurality of logic entities, once or successively, and to continuously compare logic entities provided to the tree structure of descriptor parts stored in detection database, and to provide an output based on the comparison.

Claims (73)

1. A non-transitory machine readable medium, on which are stored instructions, comprising instructions that when executed cause a machine to:

receive a file possibly containing malware; identify a logic entity in the file;

compare a chain of logic entities beginning with the logic entity to a path through a tree structure of structural code pattern descriptors, comprising instructions that when executed cause the machine to:

match the logic entity to a root node of the tree structure; and

match succeeding logic entities of the file with the path through the tree structure of structural code pattern descriptors from the root node to a terminal child node of the path; and

indicate the file contains malware responsive to matching the chain of logic entities to the path,

wherein each of the logic entities is:

a process flow statement:

a call to application programming interface call or a user-defined function: a definition or modification of a variable:

one or more variables passed with a call to an application programming interface or function: or

a boundary between two logically separated code blocks.

2. The non-transitory machine readable medium of claim 1 , wherein the instructions further comprise instructions that when executed cause the machine to:

compare a plurality of chains of logic entities to a plurality of paths through the tree structure of structural code pattern descriptors;

assign a match probability to each of the plurality of paths; and compare an overall match probability for the file based on the match probabilities assigned to each of the plurality of paths.

3. The non-transitory machine readable medium of claim 1 , wherein the instructions that when executed cause the machine to indicate the file contains malware comprise instructions that when executed cause the machine to:

output a single bit having a bit value indicative of whether or not malware has been detected in the received file based on whether any part of the chain of logic entities matches a path through the tree structure.

4. The non-transitory machine readable medium of claim 1 , wherein the instructions that when executed cause the machine to indicate the file contains malware comprise instructions that when executed cause the machine to:

output a malware name that can be assigned to an input file and represents a type or family of detected malicious code.

5. The non-transitory machine readable medium of claim 1 , wherein the instructions that when executed cause the machine to compare a chain of logic entities beginning with the logic entity to a path through a tree structure of structural code pattern descriptors further comprises instructions that when executed cause the machine to:

determine that the logic entity and succeeding logic entities of the file match a plurality of paths through the tree structure; and

determine which of the plurality of paths has a highest match probability.

6. The non-transitory machine readable medium of claim 1 , wherein the instructions that when executed cause the machine to compare a chain of logic entities beginning with the logic entity to a path through a tree structure of structural code pattern descriptors further comprises instructions that when executed cause the machine to:

terminate the comparison upon reaching a terminal child node in the path through the tree structure.

7. The non-transitory machine readable medium of claim 1 , wherein the instructions that when executed cause the machine to compare the chain of logic entities beginning with the logic entity to a path through a tree structure of structural code pattern descriptors further comprises instructions that when executed cause the machine to:

begin the comparison upon receiving a portion of the file; and continue to receive the file during the comparison.

8. A programmable device, comprising: one or more processors;

a memory, on which are stored instructions, comprising instructions that when executed cause at least some of the one or more processors to: receive a file possibly containing malware; identify a logic entity in the file;

compare a chain of logic entities beginning with the logic entity to a path through a tree structure of structural code pattern descriptors, comprising instructions that when executed cause at least some of the one or more processors to:

match the logic entity to a root node of the tree structure; and match succeeding logic entities of the file with the path through the tree structure of structural code pattern descriptors from the root node to a terminal child node of the path; and

indicate the file contains malware responsive to matching the chain of logic entities to the path,

wherein each of the logic entities is:

a process flow statement:

a call to application programming interface call or a user-defined function; a definition or modification of a variable;

one or more variables passed with a call to an application programming interface or function: or

a boundary between two logically separated code blocks.

9. The programmable device of claim 8 , wherein the instructions further comprise instructions that when executed cause at least some of the processors to:

compare a plurality of chains of logic entities to a plurality of paths through the tree structure of structural code pattern descriptors;

assign a match probability to each of the plurality of paths; and compare an overall match probability for the file based on the match probabilities assigned to each of the plurality of paths.

10. The programmable device of claim 9 , wherein the instructions that when executed cause at least some of the processors to indicate the file contains malware comprise instructions that when executed cause at least some of the processors to:

output a single bit having a bit value indicative of whether or not malware has been detected in the received file based on whether any part of the chain of logic entities matches a path through the tree structure.

11. The programmable device of claim 9 , wherein the instructions that when executed cause at least some of the processors to indicate the file contains malware comprise instructions that when executed cause at least some of the processors to:

output a malware name that can be assigned to an input file and represents a type or family of detected malicious code.

12. The programmable device of claim 9 , wherein the instructions that when executed cause at least some of the processors to compare a chain of logic entities beginning with the logic entity to a path through a tree structure of structural code pattern descriptors further comprises instructions that when executed cause at least some of the processors to:

determine that the logic entity and succeeding logic entities of the file match a plurality of paths through the tree structure; and

determine which of the plurality of paths has a highest match probability.

13. The programmable device of claim 9 , wherein the instructions that when executed cause at least some of the processors to compare a chain of logic entities beginning with the logic entity to a path through a tree structure of structural code pattern descriptors further comprises instructions that when executed cause at least some of the processors to:

terminate the comparison upon reaching a terminal child node in the path through the tree structure.

14. The programmable device of claim 9 , wherein the instructions that when executed cause at least some of the processors to compare the chain of logic entities beginning with the logic entity to a path through a tree structure of structural code pattern descriptors further comprises instructions that when executed cause at least some of the processors to:

begin the comparison upon receiving a portion of the file; and continue to receive the file during the comparison.

15. A method for detecting malware, comprising:

receiving by a programmable device a file possibly containing malware;

identifying by the programmable device a logic entity in the file;

comparing by the programmable device a chain of logic entities beginning with the logic entity to a path through a tree structure of structural code pattern descriptors, comprising:

matching the logic entity to a root node of the tree structure; and

matching succeeding logic entities of the file with the path through the tree structure of structural code pattern descriptors from the root node to a terminal child node of the path; and

indicating by the programmable device the file contains malware responsive to matching the chain of logic entities to the path,

wherein each of the logic entities is:

a process flow statement;

a call to application programming interface call or a user-defined function; a definition or modification of a variable;

one or more variables passed with a call to an application programming interface or function; or

a boundary between two logically separated code blocks.

16. The method of claim 15 , further comprising:

comparing a plurality of chains of logic entities to a plurality of paths through the tree structure of structural code pattern descriptors;

assigning a match probability to each of the plurality of paths; and comparing an overall match probability for the file based on the match probabilities assigned to each of the plurality of paths.

17. The method of claim 15 , wherein indicating the file contains malware comprises:

outputting a single bit having a bit value indicative of whether or not malware has been detected in the received file based on whether any part of the chain of logic entities matches a path through the tree structure.

18. The method of claim 15 , wherein indicating the file contains malware comprises:

outputting a malware name that can be assigned to an input file and represents a type or family of detected malicious code.

19. The method of claim 15 , wherein comparing a chain of logic entities beginning with the logic entity to a path through a tree structure of structural code pattern descriptors further comprises:

determining that the logic entity and succeeding logic entities of the file match a plurality of paths through the tree structure; and

determining which of the plurality of paths has a highest match probability.

20. The method of claim 15 , wherein comparing a chain of logic entities beginning with the logic entity to a path through a tree structure of structural code pattern descriptors further comprises:

terminating the comparison upon reaching a terminal child node in the path through the tree structure.

Assignments (10)
CORRECTIVE ASSIGNMENT TO CORRECT THE THE PATENT TITLES AND REMOVE DUPLICATES IN THE SCHEDULE PREVIOUSLY RECORDED AT REEL: 059354 FRAME: 0335. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jun 23, 2022
From: MCAFEE, LLC
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 060792/0307 →
SECURITY INTEREST Recorded Mar 3, 2022
From: MCAFEE, LLC
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT AND COLLATERAL AGENT
Reel/Frame 059354/0335 →
RELEASE OF INTELLECTUAL PROPERTY COLLATERAL - REEL/FRAME 045056/0676 Recorded Mar 2, 2022
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: MCAFEE, LLC
Reel/Frame 059354/0213 →
RELEASE OF INTELLECTUAL PROPERTY COLLATERAL - REEL/FRAME 045055/0786 Recorded Oct 26, 2020
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: MCAFEE, LLC
Reel/Frame 054238/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENT 6336186 PREVIOUSLY RECORDED ON REEL 045056 FRAME 0676. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Oct 22, 2020
From: MCAFEE, LLC
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 054206/0593 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENT 6336186 PREVIOUSLY RECORDED ON REEL 045055 FRAME 786. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Oct 22, 2020
From: MCAFEE, LLC
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 055854/0047 →
SECURITY INTEREST Recorded Jan 12, 2018
From: MCAFEE, LLC
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 045056/0676 →
SECURITY INTEREST Recorded Jan 12, 2018
From: MCAFEE, LLC
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 045055/0786 →
CHANGE OF NAME AND ENTITY CONVERSION Recorded Aug 24, 2017
From: MCAFEE, INC.
To: MCAFEE, LLC
Reel/Frame 043665/0918 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2016
From: ALME, CHRISTOPH
To: MCAFEE, INC.
Reel/Frame 037544/0058 →