IP Library › Patent Application 12718683
Patent Application
App. No. 12/718,683

METHOD AND SYSTEM FOR DISCOVERING LARGE CLUSTERS OF FILES THAT SHARE SIMILAR CODE TO DEVELOP GENERIC DETECTIONS OF MALWARE

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 None
App. No.
12/718,683
Filed
Mar 5, 2010
Art Unit
2169
USPC
707/738
Abstract

A computer-implemented method for determining similarities between system executable objects includes the steps of determining with one or more computing systems a plurality of subsequences of operation codes in a plurality of disassembled system executable objects, for each subsequence, determining with the one or more computing systems a first set of system executable objects associated with the subsequence, with the computing systems, clustering the first set of system executable objects with a cluster. The cluster includes a set of system executable objects. The step of clustering the first set of system executable objects and the cluster includes the steps of determining with the computing systems the relative similarity between the first set of system executable objects and the cluster, and if the first set of system executable objects is similar to the cluster, adding with the computing systems the system executable objects to the cluster.

Claims (86)

1 . A computer-implemented method for determining similarities between system executable objects, comprising the steps of:

determining with one or more computing systems a plurality of subsequences of operation codes in a plurality of disassembled system executable objects;

for each subsequence, determining with the one or more computing systems a first set of system executable objects associated with the subsequence; and

with the one or more computing systems, clustering the first set of system executable objects with a cluster, the cluster comprising a second set of system executable objects, wherein

clustering the first set of system executable objects and the cluster comprises the steps of:

determining with the one or more computing systems the relative similarity between the first set of system executable objects and the cluster; and

if the first set of system executable objects is similar to the cluster, adding with the one or more computing systems the system executable objects to the cluster.

2 . The method of claim 1 , wherein the step of determining the relative similarity between the first set of system executable objects and the cluster further comprises calculating with the one or more computing systems a Jaccardian distance between the first set of system executable objects and the cluster.

3 . The method of claim 1 , wherein the step of determining the relative similarity between the first set of system executable objects and the cluster further comprises:

with the one or more computing systems, comparing a Jaccardian distance between the first set of system executable objects and the cluster against a threshold; and

if the Jaccardian distance is less than the threshold, determining with the one or more computing systems that the first set of system executable objects and the cluster are similar.

4 . The method of claim 1 , wherein the step of clustering the first set of system executable objects with a cluster comprises the step of creating with the one or more computing systems the cluster, the cluster comprising the first set of system executable objects, wherein:

the relative similarity between the first set of system executable objects and one or more other clusters was determined; and

the first set of system executable objects was not similar to any of the one or more other clusters.

5 . The method of claim 1 , further comprising the step of disassembling with the one or more computing systems a plurality of system executable objects into a sequence of operational codes.

6 . The method of claim 1 , wherein:

the cluster comprises a count associated with each of the system executable objects in the cluster; and

the step of adding the first set of system executable objects to the cluster further comprises increasing with the one or more computing systems the count associated with each member of the first set of system executable objects that are in the cluster.

7 . The method of claim 6 , further comprising the step of removing with the one or more computing systems a first cluster, wherein:

the first cluster comprises a system executable object;

the system executable object is present in the first cluster and in a second cluster; and

the count associated with the system executable object in the first cluster is less than the count associated with the system executable object in the second cluster.

8 . The method of claim 6 , further comprising the step of, with the one or more computing systems, eliminating a cluster, the cluster comprising a system executable object with a statistically insignificant count.

9 . The method of claim 6 , further comprising the step of eliminating a first cluster, wherein:

the first cluster comprises a plurality of system executable objects present in a second cluster; and

the relative similarity between the plurality of system executable objects and the first cluster is less than the relative similarity between the plurality of system executable objects and the second cluster.

10 . The method of claim 1 , further comprising the step of generating with the one or more computing systems a generic signature for the files of the cluster.

11 . An article of manufacture, comprising:

a computer readable medium; and

computer-executable instructions carried on the computer readable medium, the instructions readable by a processor, the instructions, when read and executed, for causing the processor to:

determine a plurality of subsequences of operation codes in a plurality of disassembled system executable objects;

for each subsequence, determine a first set of system executable objects associated with the subsequence; and

merge the first set of system executable objects with a cluster, the cluster comprising a second set of system executable objects, wherein:

causing the processor to merge the first set of system executable objects and the cluster comprises further causing the processor to:

determine the relative similarity between the first set of system executable objects and the cluster; and

if the first set of system executable objects is similar to the cluster, add the system executable objects to the cluster.

12 . The article of claim 11 , wherein causing the processor to determine the relative similarity between the first set of system executable objects and the cluster further comprises causing the processor to calculate a Jaccardian distance between the first set of system executable objects and the cluster.

13 . The article of claim 11 , wherein the causing the processor to determine the relative similarity between the first set of system executable objects and the cluster further comprises causing the processor to:

compare a Jaccardian distance between the first set of system executable objects and the cluster against a threshold;

if the Jaccardian distance is less than the threshold, determine that the first set of system executable objects and the cluster are similar.

14 . The article of claim 11 , wherein causing the processor to merge the first set of system executable objects with a cluster of sets of system executable objects further comprises causing the processor to create the cluster of sets of system executable objects, the cluster comprising the first set of system executable objects, wherein:

the relative similarity between the first set of system executable objects and one or more other clusters was determined; and

the first set of system executable objects was not similar to any of the one or more other clusters.

15 . The article of claim 11 , wherein the processor is further caused to disassemble a plurality of system executable objects into a sequence of operational codes.

16 . The article of claim 11 , wherein:

the cluster comprises a count associated with each of the system executable objects in the cluster; and

causing the processor to add the first set of system executable objects to the cluster further comprises causing the processor to increase the count associated with each of the system executable objects in the cluster.

17 . The article of claim 16 , wherein the processor is further caused to remove a first cluster, wherein:

the first cluster comprises a system executable object;

the system executable object is present in the first cluster and in a second cluster;

the count associated with the system executable object in the first cluster is less than the count associated with the system executable object in the second cluster.

18 . The article of claim 16 , wherein the processor is further caused to eliminate a cluster, the cluster comprising a system executable object with a statistically insignificant count.

19 . The article of claim 16 , wherein the processor is further caused to eliminate a first cluster, wherein:

the first cluster comprises a plurality of system executable objects present in a second cluster;

the relative similarity between the plurality of system executable objects and the first cluster is less than the relative similarity between the plurality of system executable objects and the second cluster.

20 . The article of claim 11 , wherein the processor is further caused to generate a generic signature for the files of the cluster.

21 . A system comprising:

a processor;

a computer readable medium; and

computer-executable instructions carried on the computer readable medium, the instructions readable by the processor, the instructions, when read and executed, for causing the processor to:

determine a plurality of subsequences of operation codes in a plurality of disassembled system executable objects;

for each subsequence, determine a first set of system executable objects associated with the subsequence; and

merge the first set of system executable objects with a cluster, the cluster comprising a second set of system executable objects, wherein:

causing the processor to merge the first set of system executable objects and the cluster comprises further causing the processor to:

determine the relative similarity between the first set of system executable objects and the cluster; and

if the first set of system executable objects is similar to the cluster, add the system executable objects to the cluster.

22 . The system of claim 21 , wherein causing the processor to determine the relative similarity between the first set of system executable objects and the cluster further comprises causing the processor to calculate a Jaccardian distance between the first set of system executable objects and the cluster.

23 . The system of claim 21 , wherein the causing the processor to determine the relative similarity between the first set of system executable objects and the cluster further comprises causing the processor to:

compare a Jaccardian distance between the first set of system executable objects and the cluster against a threshold;

if the Jaccardian distance is less than the threshold, determine that the first set of system executable objects and the cluster are similar.

24 . The system of claim 21 , wherein causing the processor to merge the first set of system executable objects with a cluster of sets of system executable objects further comprises causing the processor to create the cluster of sets of system executable objects, the cluster comprising the first set of system executable objects, wherein:

the relative similarity between the first set of system executable objects and one or more other clusters was determined; and

the first set of system executable objects was not similar to any of the one or more other clusters.

25 . The system of claim 21 , wherein the processor is further caused to disassemble a plurality of system executable objects into a sequence of operational codes.

26 . The system of claim 21 , wherein:

the cluster comprises a count associated with each of the system executable objects in the cluster; and

causing the processor to add the first set of system executable objects to the cluster further comprises causing the processor to increase the count associated with each of the system executable objects in the cluster.

27 . The system of claim 26 , wherein the processor is further caused to remove a first cluster, wherein:

the first cluster comprises a system executable object;

the system executable object is present in the first cluster and in a second cluster;

the count associated with the system executable object in the first cluster is less than the count associated with the system executable object in the second cluster.

28 . The article of claim 26 , wherein the processor is further caused to eliminate a cluster, the cluster comprising a system executable object with a statistically insignificant count.

29 . The system of claim 26 , wherein the processor is further caused to eliminate a first cluster, wherein:

the first cluster comprises a plurality of system executable objects present in a second cluster;

the relative similarity between the plurality of system executable objects and the first cluster is less than the relative similarity between the plurality of system executable objects and the second cluster.

30 . The system of claim 21 , wherein the processor is further caused to generate a generic signature for the files of the cluster.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 5, 2010
From: BARTRAM, ANTHONY VAUGHAN; DUNBAR, ADRIAN M.
To: MCAFEE, INC.
Reel/Frame 024037/0688 →