IP Library Granted Patent US 11,693,962
Granted Patent B2
US 11,693,962 · App. 17/240,284 · Granted Jul 4, 2023

Malware clustering based on function call graph similarity

Inventors: Srivathsan Srinivasagopalan (Austin, TX); Alex Lisle (Austin, TX); Russell Spitler (Austin, TX); Roger Thornton (Austin, TX)
Assignee: AlienVault, Inc.
G06F21/563G06F16/2462G06F16/285G06F2221/033
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,693,962
App. No.
17/240,284
Granted
Jul 4, 2023
Kind
B2
Abstract

Techniques are disclosed relating to malware clustering based on function call graph similarity. In some embodiments, a computer system may access information corresponding to a plurality of malware samples and, based on the information, generate a function call graph for each of the malware samples. In some embodiments, generating the function call graph for a given malware sample includes identifying a plurality of function calls included in the information, assigning a label to each of the function calls, identifying relationships between the function calls, and generating the function call graph based on the relationships and the labels. Based on the function call graphs, the computer system may assign each of the plurality of malware samples into one of a plurality of clusters of related malware samples.

Claims (66)

1. A method comprising:

maintaining, by a computer system, malware information corresponding to a plurality of malware samples;

receiving, by the computer system, information corresponding to a particular malware sample;

based at least in part on the information corresponding to the particular malware sample, generating, by the computer system, a function call graph corresponding to the particular malware sample;

generating, by the computer system based on the function call graph corresponding to the particular malware sample, a particular string representing the function call graph corresponding to the particular malware sample, wherein the particular string is indicative of a structure of the function call graph for the particular malware sample and identifies relationships between a plurality of function calls associated with the particular malware sample;

generating, by the computer system based at least in part on the particular string, a particular set of statistical properties associated with the particular malware sample;

executing, by the computer system, a query against the malware information to retrieve malware samples similar to the particular malware sample, wherein the query specifies one or more of the particular set of statistical properties;

based on the query, identifying, by the computer system, a first subset of malware samples, of the plurality of malware samples, that match the particular malware sample; and

assigning, by the computer system, the particular malware sample and the first subset of malware samples into one of a plurality of clusters of related malware samples.

2. The method of claim 1 , wherein the information corresponding to the particular malware sample includes code for the particular malware sample, and wherein generating the particular string comprises:

identifying the plurality of function calls, wherein the plurality of function calls are included in the code for the particular malware sample; and

generating the function call graph for the particular malware sample based on the relationships between the plurality of function calls.

3. The method of claim 2 , wherein the code for the particular malware sample is provided in an assembly language, and wherein the code specifies names for the plurality of function calls in each of the plurality of malware samples.

4. The method of claim 1 , wherein the particular set of statistical properties includes a distribution of function calls included in the function call graph for the particular malware sample, and wherein executing the query is based on the particular set of statistical properties.

5. The method of claim 1 , wherein the particular string is an adjacency list specifying a call structure of the plurality of function calls called by the particular malware sample.

6. The method of claim 1 , further comprising storing, by the computer system, the particular string and the particular set of statistical properties as part of the malware information.

7. The method of claim 6 , further comprising:

receiving, by the computer system, subsequent information corresponding to a subsequent malware sample;

based at least in part on the subsequent information corresponding to the subsequent malware sample, generating, by the computer system, a function call graph corresponding to the subsequent malware sample;

generating, by the computer system based on the function call graph corresponding to the subsequent malware sample, a string representing the function call graph corresponding to the subsequent malware sample;

generating, by the computer system based at least in part on the string representing the function call graph corresponding to the subsequent malware sample, a set of statistical properties associated with the subsequent malware sample;

executing, by the computer system, a subsequent query against the malware information; and

based on the subsequent query, identifying, by the computer system, a second subset of malware samples, of the plurality of malware samples, that match the subsequent malware sample, wherein the second subset of malware samples includes the particular malware sample.

8. The method of claim 1 , further comprising analyzing, by the computer system, statistical properties associated with the first subset of malware samples to identify at least one anomalous sample included in the first subset of malware samples, wherein, during the assigning, the at least one anomalous sample is not included in the one of the plurality of clusters of related malware samples.

9. A non-transitory, computer-readable medium having instructions stored thereon that, when executed by a processor of a computer system, cause the computer system to perform operations comprising:

maintaining malware information corresponding to a plurality of malware samples;

receiving, from a client system, information corresponding to a particular malware sample;

based at least in part on the information corresponding to the particular malware sample, generating a function call graph corresponding to the particular malware sample;

generating, based on the function call graph corresponding to the particular malware sample, a particular string representing the function call graph corresponding to the particular malware sample, wherein the particular string is indicative of a structure of the function call graph for the particular malware sample and identifies relationships between a plurality of function calls associated with the particular malware sample;

generating, based at least in part on the particular string, a particular set of statistical properties associated with the particular malware sample;

executing a query against the malware information to retrieve malware samples similar to the particular malware sample, wherein the query specifies one or more of the particular set of statistical properties;

based on the query, identifying a subset of malware samples, of the plurality of malware samples, that match the particular malware sample; and

assigning the particular malware sample and the subset of malware samples into one of a plurality of clusters of related malware samples.

10. The non-transitory, computer-readable medium of claim 9 , wherein the operations further comprise sending, to the client system, information specifying that the particular malware sample has been assigned to the one of the plurality of clusters of related malware samples, wherein the information further specifies a malware classification of the one of the plurality of clusters of related malware samples.

11. The non-transitory, computer-readable medium of claim 9 , wherein the operations further comprise generating, for a first malware sample of the plurality of malware samples, a first string specifying a function call graph for the first malware sample, and wherein generating the first string specifying the function call graph for the first malware sample comprises:

accessing a directed graph associated with the first malware sample;

identifying a plurality of function calls included in the directed graph;

generating the function call graph for the first malware sample based on relationships between the plurality of function calls included in the directed graph; and

generating the first string based on the function call graph for the first malware sample, wherein the first string is indicative of a structure of the function call graph for the first malware sample, and wherein the first string is included in the malware information.

12. The non-transitory, computer-readable medium of claim 9 , wherein identifying the subset of malware samples is performed using a subgraph-matching algorithm.

13. A system comprising:

at least one processor; and

a memory having instructions stored thereon that are executable by the at least one processor to cause the system to perform operations comprising

maintaining malware information corresponding to a plurality of malware samples,

receiving information corresponding to a particular malware sample,

based at least in part on the information corresponding to the particular malware sample, generating a function call graph corresponding to the particular malware sample,

generating, based on the function call graph corresponding to the particular malware sample, a particular string representing the function call graph corresponding to the particular malware sample, wherein the particular string is indicative of a structure of the function call graph for the particular malware sample and identifies relationships between a plurality of function calls associated with the particular malware sample,

generating, based at least in part on the particular string, a particular set of statistical properties associated with the particular malware sample,

executing a query against the malware information to retrieve malware samples similar to the particular malware sample, wherein the query specifies one or more of the particular set of statistical properties,

based on the query, identifying a first subset of malware samples, of the plurality of malware samples, that match the particular malware sample, and

assigning the particular malware sample and the first subset of malware samples into one of a plurality of clusters of related malware samples.

14. The system of claim 13 , wherein the information corresponding to the particular malware sample includes code for the particular malware sample, and wherein generating the particular string comprises:

identifying the plurality of function calls, wherein the plurality of function calls are included in the code for the particular malware sample; and

generating the function call graph for the particular malware sample based on the relationships between the plurality of function calls.

15. The system of claim 14 , wherein the code for the particular malware sample is provided in an assembly language, and wherein the code specifies names for the plurality of function calls in each of the plurality of malware samples.

16. The system of claim 13 , wherein the particular set of statistical properties includes a distribution of function calls included in the function call graph for the particular malware sample, and wherein executing the query is based on the particular set of statistical properties.

17. The system of claim 13 , wherein the particular string is an adjacency list specifying a call structure of the plurality of function calls called by the particular malware sample.

18. The system of claim 13 , wherein the operations further comprise storing the particular string and the particular set of statistical properties as part of the malware information.

19. The system of claim 18 , wherein the operations further comprise:

receiving subsequent information corresponding to a subsequent malware sample;

based at least in part on the subsequent information corresponding to the subsequent malware sample, generating a function call graph corresponding to the subsequent malware sample;

generating, based on the function call graph corresponding to the subsequent malware sample, a string representing the function call graph corresponding to the subsequent malware sample;

generating, based at least in part on the string representing the function call graph corresponding to the subsequent malware sample, a set of statistical properties associated with the subsequent malware sample;

executing a subsequent query against the malware information; and

based on the subsequent query, identifying a second subset of malware samples, of the plurality of malware samples, that match the subsequent malware sample, wherein the second subset of malware samples includes the particular malware sample.

20. The system of claim 13 , wherein the operations further comprise analyzing statistical properties associated with the first subset of malware samples to identify at least one anomalous sample included in the first subset of malware samples, wherein, during the assigning, the at least one anomalous sample is not included in the one of the plurality of clusters of related malware samples.

Assignments (4)
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 071914/0110 Recorded Apr 30, 2026
From: ANKURA TRUST COMPANY, LLC
To: ALIENVAULT, INC.
Reel/Frame 075366/0934 →
SECURITY INTEREST Recorded Aug 1, 2025
From: ALIENVAULT, INC.
To: ANKURA TRUST COMPANY, LLC
Reel/Frame 071914/0110 →
SECURITY INTEREST Recorded Apr 22, 2024
From: ALIENVAULT, INC.
To: AT&T CORP.
Reel/Frame 067182/0676 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 3, 2021
From: SRINIVASAGOPALAN, SRIVATHSAN; LISLE, ALEX; SPITLER, RUSSELL; THORNTON, ROGER
To: ALIENVAULT, INC.
Reel/Frame 056112/0411 →
Continuity (2)
Continuation 16115012 · Aug 28, 2018
Related Publication 20210248234A1 · Aug 12, 2021