IP Library Granted Patent US 8,499,352
Granted Patent B2
US 8,499,352 · App. 13/440,595 · Granted Jul 30, 2013

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,499,352
App. No.
13/440,595
Granted
Jul 30, 2013
Kind
B2
Abstract

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for detecting obfuscated malware. In one aspect, a method includes identifying call instructions in a binary executable; executing the call instruction; executing instructions subsequent to a target of the call instruction; determining that an address identified by a stack pointer is different from the return address; in response to the determination that the address is different, determining if there is a non-obfuscation signal; if there is a non-obfuscation signal, identifying the call instruction as a non-obfuscated call instruction; if there is not a non-obfuscation signal, identifying the call instruction as a possibly obfuscated call instruction; determining whether the call instructions identified as possibly obfuscated call instructions exceeds a threshold; in response to the determination that the call instructions identified as possibly obfuscated call instructions exceeds the threshold, identifying the executable as an obfuscated executable.

Claims (85)

1. A computer-implemented method, comprising:

identifying a number of call instructions in a binary executable;

for each of the number of call instructions:

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

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

determining that an address identified by a stack pointer of the call stack is different from the return address;

in response to the determination that the address identified by the stack pointer is different from the return address, 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:

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

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

determining that an address identified by a stack pointer of the call stack is different from the return address;

in response to the determination that the address identified by the stack pointer is different from the return address, 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.

18. A computer program product, encoded on one or more memory storage devices, including instructions that when executed by one or more data processing apparatuses cause the one or more data processing apparatuses to perform operations comprising:

identifying a number of call instructions in a binary executable;

for each of the number of call instructions:

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

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

determining that an address identified by a stack pointer of the call stack is different from the return address;

in response to the determination that the address identified by the stack pointer is different from the return address, 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.

19. The computer program product of claim 18 , 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.

20. The computer program product of claim 18 , 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.

Assignments (9)
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: JPMORGAN CHASE BANK, N.A.
Reel/Frame 045055/0786 →
SECURITY INTEREST Recorded Jan 12, 2018
From: MCAFEE, LLC
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 045056/0676 →
CHANGE OF NAME AND ENTITY CONVERSION Recorded Aug 24, 2017
From: MCAFEE, INC.
To: MCAFEE, LLC
Reel/Frame 043665/0918 →