IP Library Granted Patent US 10,121,002
Granted Patent B2
US 10,121,002 · App. 14/837,101 · Granted Nov 6, 2018

Detecting executable code within a data entity

Inventors: Meni Farjon (Ramat Gan, IL); Boris Vaynberg (Netanya, IL); Yossi Sara (Ramat-Gan, IL)
Assignee: Solebit Labs Ltd.
G06F21/562
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 10,121,002
App. No.
14/837,101
Granted
Nov 6, 2018
Kind
B2
Abstract

A method that includes receiving a data entity by the computer; storing the data entity in a first sector of the memory; wherein the first sector is isolated from another memory sector and executable code in the first sector is prevented from performing a write action to the other memory sector; generating, by the processor, an intermediate representation of the data entity; searching, by the processor, for an executable code that was not expected to be included in the data entity in the intermediate representation of the data entity; and when finding the executable code that was not expected to be included in the data entity then preventing a copying of the data entity to the other memory sector.

Claims (46)

1. A computer implemented method for protecting a computer, the method comprising:

receiving by the computer, a data block entering a network;

detecting, by the computer, a type of the data block;

selecting a process for generating a binary representation of the data block based on the type of the data block;

generating, by the computer, a binary representation of the data block based on the selected process;

searching, by the computer, for anchors within the data block, wherein an anchor is a pre-defined code artifact that can be disassembled for a machine instruction from a specific set of instructions;

when said searching locates one or more anchors within the data block, then disassembling a pre-defined number of successive bytes of the data block following the anchors to discover additional machine instructions;

further searching, by the computer, for machine instructions in the data block for jumping to different locations within the data block;

following the jump instructions to the jump location, and further disassembling, by the computer, the pre-defined number of successive bytes of the data block to discover yet additional machines instructions;

attempting to build, by the computer, an execution path from the discovered machine instructions, comprising:

parsing the discovered machine instructions; and

following the flow of the execution path, including conditional and unconditional branches of the parsed machine instructions, to validate or invalidate the execution path;

validating, by the computer, an incremented location by scanning a built execution path for machine instructions that increment a register that stores a location on the execution path;

finding, by the computer after validating the incremented location, a self-modifying artifact by scanning remaining machine instructions in the built execution path for an arithmetic or logic operation performed on a register that currently or previously held a location in the validated incremented location;

finding, by the computer after finding the self-modifying artifact, a modified loop index by scanning remaining machine instructions in the built execution path for registers that hold a loop value that is incremented or decremented;

preventing, by the computer, the data block from entering the network when a modified loop index is found.

2. The computer implemented method according to claim 1 , comprising:

storing the data block in a first sector of a memory of the computer, wherein the first sector is isolated from other memory sectors, and executable code in the first sector is prevented from performing a write action to the other memory sectors.

3. The computer implemented method according to claim 1 , further comprising checking whether the executable code was expected to be included in the data block.

4. The computer implemented method according to claim 3 , further comprising:

finding one or more executable flow anchors; and

disassembling one or more portions of the binary representation of the data block that are proximate to the one or more executable flow anchors, wherein the disassembling comprises recreating an assembly code from a binary machine code.

5. The computer implemented method according to claim 4 wherein the searching comprises searching for partially decoded representations of the one or more anchors.

6. The computer implemented method according to claim 1 , wherein the data block was generated by a first software, and wherein said generating comprises generating a binary representation of the data block by a second software that has a security level that exceeds a security level of the first software.

7. The computerized method according to claim 1 wherein the validity of the execution path is based on significance values assigned to bytes of the data block in accordance with a probability that the bytes of the data block are executable codes.

8. A non-transitory computer-readable medium that stores instructions that, once executed by a computer, causes the computer to:

receive a data block entering a network;

detect a type of the data block;

select a process for generating a binary representation of the data block based on the type of the data block;

generate a binary representation of the data block based on the selected process;

search for anchors within the data block, wherein an anchor is a predefined code artifact that can be disassembled to a machine instruction from a specific set of instructions;

when the search locates one or more anchors within the data block, then disassemble a pre-defined number of successive bytes of the data block following the anchors, to discover additional machine instructions;

further search for machine instructions in the data block for jumping to different locations within the data block;

follow the jump instructions to the jump locations, and further disassemble the pre-defined number of successive bytes of the data block to discover yet additional machine instructions;

attempt to build, by the computer, an execution path from the discovered machine instructions, comprising:

parse the discovered machine instructions; and

follow the flow of the execution path, including conditional and unconditional branches of the parsed machine instructions, to validate or invalidate the execution path;

validate an incremented location by scanning a built execution path for machine instructions that increment a register that stores a location on the execution path;

find, after validating the incremented location, a self-modifying artifact by scanning remaining machine instructions in the built execution path for an arithmetic or logic operation performed on a register that currently or previously held a location in the validated incremented location;

find, after finding the self-modifying artifact, a modified loop index by scanning remaining machine instructions in the built execution path for registers that hold a loop value that is incremented or decremented;

prevent the data block from entering the network when a modified loop index is found.

9. The non-transitory computer readable medium according to claim 8 that stores instructions for

storing the data block in a first sector of a memory of the computer, wherein the first sector is isolated from other memory sectors and executable code in the first sector is prevented from performing a write action to the other memory sectors.

10. The non-transitory computer readable medium according to claim 8 , wherein the non-transitory computer readable medium stores instructions for checking whether the executable code was expected to be included in the data block.

11. The non-transitory computer readable medium according to claim 8 , wherein the data block was generated by a first software, and wherein the computer generates a binary representation of the data block by a second software that has a security level that exceeds a security level of the first software.

12. The non-transitory computer readable medium according to claim 8 , wherein the validity of the execution path is based on significance values assigned to bytes of the data block in accordance with a probability that the bytes of the data block are executable codes.

Assignments (3)
CHANGE OF NAME Recorded May 6, 2020
From: SOLEBIT LABS LTD
To: MIMECAST ISRAEL LTD.
Reel/Frame 052585/0358 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 4, 2018
From: FARJON, MENI; VAYNBERG, BORIS; SARA, YOSSI
To: SOLEBIT LABS LTD.
Reel/Frame 045100/0871 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 12, 2015
From: SARA, YOSSI; FARJON, MENI; VAYNBERG, BORIS
To: SOLEBIT LABS LTD.
Reel/Frame 037018/0412 →
Continuity (2)
Provisional Application 62044252 · Aug 31, 2014
Related Publication 20160063247A1 · Mar 3, 2016