IP Library › Granted Patent US 11,928,213
Granted Patent B2
US 11,928,213 · App. 16/826,033 · Granted Mar 12, 2024

Malware detection

Inventors: Andrew Davis (Portland, OR); Matthew Wolff (Laguna Niguel, CA); Derek A. Soeder (Irvine, CA); Glenn Chisholm (Irvine, CA); Ryan Permeh (Laguna Hills, CA)
Assignee: Cylance Inc.
G06F21/565G06F21/562G06N3/08G06F2221/034
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,928,213
App. No.
16/826,033
Granted
Mar 12, 2024
Kind
B2
Abstract

In one respect, there is provided a system for training a neural network adapted for classifying one or more scripts. The system may include at least one processor and at least one memory. The memory may include program code which when executed by the at least one memory provides operations including: receiving a disassembled binary file that includes a plurality of instructions; processing the disassembled binary file with a convolutional neural network configured to detect a presence of one or more sequences of instructions amongst the plurality of instructions and determine a classification for the disassembled binary file based at least in part on the presence of the one or more sequences of instructions; and providing, as an output, the classification of the disassembled binary file. Related computer-implemented methods are also disclosed.

Claims (48)

1. A system comprising:

at least one processor; and

at least one memory including program code which when executed by the at least one memory provides operations comprising:

receiving a disassembled binary file that includes a plurality of instructions;

generating fixed length representations of the plurality of instructions by processing each of the plurality of instructions having lengths other than a first length by either truncating the instructions so that they are the first length or by padding the instructions so that they are the first length;

processing the disassembled binary file with a trained convolutional neural network configured to (i) apply a first plurality of kernels to detect a presence of one or more sequences of instructions amongst the plurality of instructions, the plurality of kernels being adapted to detect different sequences of instructions (ii) apply a second plurality of kernels to the disassembled binary file, the second plurality of kernels being adapted to detect specific sequences of two or more instructions detected by the first plurality of kernels, and (iii) determine a classification for the disassembled binary file based at least in part on the presence of the one or more sequences of instructions; and

providing, as an output, the classification of the disassembled binary file to determine whether to execute, open, or access a binary file corresponding to the disassembled binary file.

2. The system of claim 1 , wherein the plurality of instructions are variable in length.

3. The system of claim 2 , wherein the fixed length representations of the plurality of instructions includes a mnemonic associated with each instruction.

4. The system of claim 2 , wherein the system is further configured to:

encoding the fixed length representations of the plurality of instructions, wherein the encoding is based on one-hot encoding or binary encoding.

5. The system of claim 1 , wherein applying the first plurality of kernels includes applying a first weight matrix to a matrix representation of the disassembled binary file, and wherein the matrix representation of the disassembled binary file comprises encoded fixed length representations of the plurality of instructions included in the disassembled binary file.

6. The system of claim 5 , wherein the system is further configured to train the convolutional neural network by at least:

receiving a plurality of training files, wherein the plurality of training files comprises a plurality of disassembled binary files;

determining a classification of a first training file by at least processing the first training file with the convolutional neural network;

back propagating an error associated with the classification of the first training file; and

adjusting at least the first weight matrix to minimize the error associated with the classification of the first training file.

7. The system of claim 6 , wherein training the convolutional neural network further comprises:

determining a classification for a second training file by at least processing the second training file with the convolutional neural network;

back propagating an error associated with the classification of the second training file; and

readjusting at least the first weight matrix to minimize the error associated with the classification of the second training file.

8. A computer-implemented method, comprising:

receiving a disassembled binary file that includes a plurality of instructions;

processing the disassembled binary file with a trained convolutional neural network configured to (i) apply a first plurality of kernels to detect a presence of one or more sequences of instructions amongst the plurality of instructions, the first plurality of kernels being adapted to detect different sequences of instructions (ii) apply a second plurality of kernels to the disassembled binary file, the second plurality of kernels being adapted to detect specific sequences of two or more sequences of instructions detected by the first plurality of kernels, and (iii) determine a classification for the disassembled binary file based at least in part on the presence of the one or more sequences of instructions; and

providing, as an output, the classification of the disassembled binary file to determine whether to execute, open, or access a binary file corresponding to the disassembled binary file;

wherein the convolutional network is trained using a plurality of training files having fixed length representations of instructions, the fixed length representations of instructions are applied to a plurality of kernels adapted to generate increasingly abstract representations of such instructions, some of the kernels are configured to detect specific sequences of instructions while subsequent application of other kernels are configured to detect instances where certain sequences of instructions that appear in a specific order.

9. The method of claim 8 , wherein the plurality of instructions are variable in length.

10. The method of claim 9 , further comprising:

generating fixed length representations of the plurality of instructions by truncating or padding each of the plurality of instructions to a same length.

11. The method of claim 10 , wherein the fixed length representations of the plurality of instructions includes a mnemonic associated with each instruction.

12. The method of claim 8 , further comprising:

encoding the fixed length representations of the plurality of instructions, wherein the encoding is based on one-hot encoding or binary encoding.

13. The method of claim 12 , wherein applying the first plurality of kernels includes applying a first weight matrix to a matrix representation of the disassembled binary file, and wherein the matrix representation of the disassembled binary file comprises encoded fixed length representations of the plurality of instructions included in the disassembled binary file.

14. The method of claim 13 , further comprising training the convolutional neural network by at least:

receiving a plurality of training files, wherein the plurality of training files comprises a plurality of disassembled binary files;

determining a classification of a first training file by at least processing the first training file with the convolutional neural network;

back propagating an error associated with the classification of the first training file;

adjusting at least the first weight matrix to minimize the error associated with the classification of the first training file.

15. The method of claim 14 , wherein training the convolutional neural network further comprises:

determining a classification for a second training file by at least processing the second training file with the convolutional neural network;

back propagating an error associated with the classification of the second training file; and

readjusting at least the first weight matrix to minimize the error associated with the classification of the second training file.

16. A computer-implemented method, comprising:

receiving a disassembled binary file that includes a plurality of instructions;

generating fixed length representations of the plurality of instructions by processing each of the plurality of instructions having lengths other than a first length by either truncating the instructions so that they are the first length or by padding the instructions so that they are the first length, the truncating maintaining instruction mnemonics and operands in the corresponding instructions;

processing the generated fixed length representation of the plurality of instructions with a trained convolutional neural network configured to apply two different pluralities of kernels to first detect a presence of one or more sequences of instructions amongst the plurality of instructions, subsequently detect specific sequences of two or more sequences of instructions, and determine a classification for the disassembled binary file based at least in part on the presence of the one or more sequences of instructions; and

providing, as an output, the classification of the disassembled binary file to determine whether to execute, open, or access a binary file corresponding to the disassembled binary file.

17. The method of claim 16 , wherein the trained convolutional neural network applies a first plurality of kernels that are adapted to detect different sequences of instruction.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 20, 2020
From: DAVIS, ANDREW; WOLFF, MATTHEW; SOEDER, DEREK A.; CHISHOLM, GLENN; PERMEH, RYAN
To: CYLANCE INC.
Reel/Frame 052183/0001 →
Continuity (4)
Continuation 16183624 · Nov 7, 2018
Continuation 15210761 · Jul 14, 2016
Provisional Application 62193025 · Jul 15, 2015
Related Publication 20200218807A1 · Jul 9, 2020