IP Library › Granted Patent US 11,574,051
Granted Patent B2
US 11,574,051 · App. 16/053,479 · Granted Feb 7, 2023

Malware identification using multiple artificial neural networks

Inventor: Xu Yang (Burnaby, CA)
Assignee: Fortinet, Inc.
G06F21/56G06K9/6264G06N3/0454G06N3/084H04L63/1416
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,574,051
App. No.
16/053,479
Filed
Aug 2, 2018
Granted
Feb 7, 2023
Kind
B2
Art Unit
2495
USPC
706/15
Abstract

Systems and methods for malware detection using multiple neural networks are provided. According to one embodiment, for each training sample, a supervised learning process is performed, including: (i) generating multiple code blocks of assembly language instructions by disassembling machine language instructions contained within the training sample; (ii) extracting dynamic features corresponding to each of the code blocks by executing each of the code blocks within a virtual environment; (iii) feeding each code block into a first neural network and the corresponding dynamic features into a second neural network; (iv) updating weights and biases of the neural networks based on whether the training sample was malware or benign; and (v) after processing a predetermined or configurable number of the training samples, the neural networks criticize each other and unify their respective weights and biases by exchanging their respective weights and biases and adjusting their respective weights and biases accordingly.

Claims (38)

1. A method of training a deep neural network model for classification of malware, the method comprising:

for each training sample of a plurality of training samples, including malware samples and benign samples in a form of executable files, performing a supervised learning process, including:

generating, by a pre-processing module running on a computer system, a plurality of code blocks of assembly language instructions by disassembling machine language instructions contained within the training sample,

wherein said generating, by a pre-processing module running on a computer system, a plurality of code blocks further comprises dividing the assembly language instructions into the plurality of code blocks by parsing the assembly language instructions for a predetermined or configurable set of code block delimiters, wherein the predetermined or configurable set of code block delimiters include a jump instruction, a conditional jump instruction and a call instruction;

extracting, by the pre-processing module, dynamic features corresponding to each of the plurality of code blocks by executing each of the plurality of code blocks within a virtual environment;

for each code block of the plurality of code blocks:

feeding the code block into a first neural network:

feeding the corresponding dynamic features for the code block into a second neural network;

updating weights and biases of the first neural network and weights and biases of the second neural network based on whether the training sample was a malware sample or a benign sample; and

after processing a predetermined or configurable number of the plurality of training samples, the first neural network and the second neural network criticize each other and unify their respective weights and biases by exchanging their respective weights and biases and adjusting their respective weights and biases accordingly, wherein the first neural network updates the weights and biases of the first neural network based on a function of the weights and biases of the first neural network and the weights and biases received from the second neural network and the second neural network updates the weights and biases of the second neural network based on a function of the weights and biases of the second neural network and the weights and biases received from the first neural network.

2. The method of claim 1 , wherein the first neural network and the second neural network are trained by backpropagation using a gradient-based optimizer.

3. The method of claim 2 , wherein the gradient-based optimizer comprises a gradient descent optimizer.

4. The method of claim 1 , wherein the corresponding dynamic features comprise run-time status of each of the plurality of code blocks.

5. The method of claim 4 , wherein the run-time status for a particular code block of the plurality of code blocks comprises a status of one or more general purpose registers and a status of a flags register after execution of the particular code block within the virtual environment is complete.

6. The method of claim 1 , wherein the computer system is part of a cloud-based cybersecurity service.

7. A non-transitory, computer-readable medium comprising source code that, when executed by a processor, performs a method of training a deep neural network model for classification of malware, the method comprising:

for each training sample of a plurality of training samples, including malware samples and benign samples in a form of executable files, performing a supervised learning process, including:

generating, by a pre-processing module running on a computer system, a plurality of code blocks of assembly language instructions by disassembling machine language instructions contained within the training sample,

wherein said generating, by a pre-processing module running on a computer system, a plurality of code blocks further comprises dividing the assembly language instructions into the plurality of code blocks by parsing the assembly language instructions for a predetermined or configurable set of code block delimiters, wherein the predetermined or configurable set of code block delimiters include a jump instruction, a conditional jump instruction and a call instruction;

extracting, by the pre-processing module, dynamic features corresponding to each of the plurality of code blocks by executing each of the plurality of code blocks within a virtual environment;

for each code block of the plurality of code blocks:

feeding the code block into a first neural network:

feeding the corresponding dynamic features for the code block into a second neural network;

updating weights and biases of the first neural network and weights and biases of the second neural network based on whether the training sample was a malware sample or a benign sample; and

after processing a predetermined or configurable number of the plurality of training samples, the first neural network and the second neural network criticize each other and unify their respective weights and biases by exchanging their respective weights and biases and adjusting their respective weights and biases accordingly, wherein the first neural network updates the weights and biases of the first neural network based on a function of the weights and biases of the first neural network and the weights and biases received from the second neural network and the second neural network updates the weights and biases of the second neural network based on a function of the weights and biases of the second neural network and the weights and biases received from the first neural network.

8. A network device for training a deep neural network model for classification of malware, the network device comprising:

a processor;

a network interface, coupled to the processor; and

a memory, coupled to the processor, and comprising:

a first module to, for each training sample of a plurality of training samples, including malware samples and benign samples in a form of executable files, perform a supervised learning process, including:

generating, by a pre-processing module running on a computer system, a plurality of code blocks of assembly language instructions by disassembling machine language instructions contained within the training sample,

wherein said generating, by a pre-processing module running on a computer system, a plurality of code blocks further comprises dividing the assembly language instructions into the plurality of code blocks by parsing the assembly language instructions for a predetermined or configurable set of code block delimiters, wherein the predetermined or configurable set of code block delimiters include a jump instruction, a conditional jump instruction and a call instruction;

extracting, by the pre-processing module, dynamic features corresponding to each of the plurality of code blocks by executing each of the plurality of code blocks within a virtual environment;

for each code block of the plurality of code blocks:

feeding the code block into a first neural network:

feeding the corresponding dynamic features for the code block into a second neural network;

updating weights and biases of the first neural network and weights and biases of the second neural network based on whether the training sample was a malware sample or a benign sample; and

after processing a predetermined or configurable number of the plurality of training samples, the first neural network and the second neural network criticize each other and unify their respective weights and biases by exchanging their respective weights and biases and adjusting their respective weights and biases accordingly, wherein the first neural network updates the weights and biases of the first neural network based on a function of the weights and biases of the first neural network and the weights and biases received from the second neural network and the second neural network updates the weights and biases of the second neural network based on a function of the weights and biases of the second neural network and the weights and biases received from the first neural network.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 2, 2018
From: YANG, XU
To: FORTINET, INC.
Reel/Frame 046543/0011 →
Continuity (1)
Related Publication 20200042701A1 · Feb 6, 2020