IP Library Granted Patent US 8,176,559
Granted Patent B2
US 8,176,559 · App. 12/639,465 · Granted May 8, 2012

Obfuscated malware detection

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 8,176,559
App. No.
12/639,465
Granted
May 8, 2012
Kind
B2
Abstract

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for obfuscated malware. In one aspect, a method includes executing from a binary executable a call instruction and a plurality of instruction subsequent to a target of the call instruction, determining if the value identified by the stack pointer of the call stack is equal to a default value stored in the call stack prior to emulation, determining if there is a non-obfuscation signal resulting from the execution of the call instructions and the plurality of instructions, and if the value identified by the stack pointer is the default value and there is no obfuscation signal, identifying the call instruction as a possibly obfuscated call instruction; Additionally, the method includes determining that if the number of call instructions identified as possibly obfuscated call instructions exceeds a threshold number, identifying the binary executable as an obfuscated executable.

Claims (71)

1. A computer-implemented method, comprising:

identifying a number of call instructions in a binary executable;

for each of the number of call instructions:

storing in a call stack a default value generated for the call instruction;

executing the call instruction, wherein executing the call instruction causes a return address after the call instruction to be stored in the call stack;

sequentially executing a plurality of instructions subsequent to a target of the call instruction;

determining that a value identified by a stack pointer of the call stack is equal to the default value;

in response to the determination that the value identified by the stack pointer is equal to the default value, determining if there is a non-obfuscation signal present;

if there is a non-obfuscation signal present, identifying the call instruction as a non-obfuscated call instruction;

if there is not a non-obfuscation signal present, identifying the call instruction as a possibly obfuscated call instruction;

determining whether the call instructions identified as possibly obfuscated call instructions exceeds a threshold number;

in response to the determination that the call instructions identified as possibly obfuscated call instructions exceeds the threshold number, identifying the binary executable as an obfuscated executable; and

in response to the determination that the call instructions identified as possibly obfuscated call instructions do not exceed the threshold number, identifying the binary executable as a non-obfuscated executable.

2. The method of claim 1 , wherein identifying a number of call instructions in a binary executable comprises identifying call instructions in the binary executable, wherein for each of the identified call instructions a target of the call instruction has an offset that is unique from offsets of targets of any of the other identified call instructions, and wherein the offset of a target of the call instruction is a position of the target of the call in the binary executable relative to a memory space addressed at a beginning address of the binary executable.

3. The method of claim 1 , wherein determining if there is a non-obfuscation signal present comprises:

determining whether the call instruction executed; and

if the call instruction did not execute, then identifying the call instruction as a non-obfuscated call instruction.

4. The method of claim 1 , wherein determining if there is a non-obfuscation signal present comprises:

determining whether an instruction pointer points to the call instruction; and

if the instruction pointer points to the call instruction, then identifying the call instruction as a non-obfuscated call instruction.

5. The method of claim 4 , further comprising:

if the instruction pointer does not point to the call instruction, determining whether the instruction pointer points to a next instruction after the call instruction;

if the instruction pointer points to the next instruction after the call instruction, identifying the call instruction as a non-obfuscated call instruction; and

if the instruction pointer does not point to the next instruction after the call instruction, identifying the call instruction as a possibly obfuscated call instruction.

6. The method of claim 1 , wherein determining if there is a non-obfuscation signal present comprises:

determining whether an instruction pointer points to a next instruction after the call instruction;

if the instruction pointer points to the next instruction after the call instruction, identifying the call instruction as a non-obfuscated call instruction; and

if the instruction pointer does not point to the next instruction after the call instruction, identifying the call instruction as a possibly obfuscated call instruction.

7. The method of claim 1 , further comprising:

identifying in the plurality of instructions subsequent to a target of the call instruction a subsequent call instruction; and

converting each subsequent call instruction to a non-operational instruction.

8. The method of claim 7 , wherein identifying a subsequent call instruction comprises identifying subsequent call instructions only within a control range of the target, the control range being a predetermined range of bytes within the target.

9. The method of claim 8 further comprising:

determining whether any of the plurality of instructions reference a location outside the control range from the target of the call instruction;

if the location is not outside the control range, processing the plurality of instructions; and

if the location is outside the control range, identifying the call instruction as a non-obfuscated call instruction.

10. A system, comprising:

one or more computers; and;

a computer-readable medium coupled to the one or more computers having instructions stored thereon which, when executed by the one or more computers, cause the one or more computers to perform operations comprising:

identifying a number of call instructions in a binary executable;

for each of the number of call instructions:

storing in a call stack a default value generated for the call instruction;

executing the call instruction, wherein executing the call instruction causes a return address after the call instruction to be stored in the call stack;

sequentially executing a plurality of instructions subsequent to a target of the call instruction;

determining that a value identified by a stack pointer of the call stack is equal to the default value;

in response to the determination that the value identified by the stack pointer is equal to the default value, determining if there is a non-obfuscation signal present;

 if there is a non-obfuscation signal present, identifying the call instruction as a non-obfuscated call instruction;

 if there is not a non-obfuscation signal present, identifying the call instruction as a possibly obfuscated call instruction;

determining whether the call instructions identified as possibly obfuscated call instructions exceeds a threshold number;

in response to the determination that the call instructions identified as possibly obfuscated call instructions exceeds the threshold number, identifying the binary executable as an obfuscated executable; and

in response to the determination that the call instructions identified as possibly obfuscated call instructions do not exceed the threshold number, identifying the binary executable as a non-obfuscated executable.

11. The system of claim 10 , wherein identifying a number of call instructions in a binary executable comprises identifying call instructions in the binary executable wherein for each of the identified called instructions a target of the call instruction has an offset that is unique from offsets of targets of any of the other identified call instructions, and wherein the offset of a target of the call instruction is a position of the target of the call in the binary executable relative to a memory space addressed at a beginning address of the binary executable.

12. The system of claim 10 , wherein determining if there is a non-obfuscation signal present comprises:

determining whether an instruction pointer points to the call instruction; and

if the instruction pointer points to the call instruction, then identifying the call instruction as a non-obfuscated call instruction.

13. The system of claim 12 , further comprising:

if the instruction pointer does not point to the call instruction, determining whether the instruction pointer points to a next instruction after the call instruction;

if the instruction pointer points to the next instruction after the call instruction, identifying the call instruction as a non-obfuscated call instruction; and

if the instruction pointer does not point to the next instruction after the call instruction, identifying the call instruction as a possibly obfuscated call instruction.

14. The system of claim 10 , wherein determining if there is a non-obfuscation signal present comprises:

determining whether an instruction pointer points to a next instruction after the call instruction;

if the instruction pointer points to the next instruction after the call instruction, identifying the call instruction as a non-obfuscated call instruction; and

if the instruction pointer does not point to the next instruction after the call instruction, identifying the call instruction as a possibly obfuscated call instruction.

15. The system of claim 10 , further comprising:

identifying in the plurality of instructions subsequent to a target of the call instruction a subsequent call instruction; and

converting each subsequent call instruction to a non-operational instruction.

16. The system of claim 15 , wherein identifying a subsequent call instruction comprising identifying subsequent call instructions only within a control range of the target, the control range being a predetermined range of bytes within the target.

17. The system of claim 16 further comprising:

determining whether any of the plurality of instructions reference a location outside the control range from the target of the call instruction;

if the location is not outside the control range, processing the plurality of instructions; and

if the location is outside the control range, identifying the call instruction as a non-obfuscated call instruction.

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 13, 2010
From: MATHUR, RACHIT; COCHIN, CEDRIC
To: MCAFEE, INC.
Reel/Frame 023775/0094 →