IP Library › Granted Patent US 11,080,400
Granted Patent B2
US 11,080,400 · App. 16/554,442 · Granted Aug 3, 2021

Analyzing multiple CPU architecture malware samples

Inventors: Zihang Xiao (Los Gatos, CA); Cong Zheng (San Jose, CA); ChienHua Lu (San Jose, CA)
Assignee: Palo Alto Networks, Inc.
G06F21/567G06F8/41G06F21/53
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,080,400
App. No.
16/554,442
Granted
Aug 3, 2021
Kind
B2
Abstract

A sample is received for analysis by a virtualized environment. A determination is made that the sample was compiled for a CPU architecture that is different from a host CPU architecture. The sample is executed in an emulated user space corresponding to the CPU architecture for which the sample was compiled.

Claims (40)

1. A system, comprising:

a processor configured to:

receive a first sample for analysis;

receive a second sample for analysis;

determine that the first sample was compiled for a CPU architecture that is different from a host CPU architecture;

execute the first sample in an emulated user space corresponding to the CPU architecture for which the first sample was compiled, wherein the emulated user space is provided by executing a user space emulation utility in a virtual machine that shares the host CPU architecture; and

at a time at least partially overlapping a time during which the first sample is being executed, execute the second sample in a second emulated user space corresponding to a CPU architecture that is different from the CPU architecture for which the first sample was compiled; and

a memory coupled to the processor and configured to provide the processor with instructions.

2. The system of claim 1 , wherein the virtual machine is initialized with a set comprising a plurality of versions of a particular library, wherein each of the plurality of versions corresponds to a different CPU architecture.

3. The system of claim 2 , wherein, when the first sample is executed, a library selected from the set, and corresponding to the CPU architecture for which the first sample was compiled, is loaded.

4. The system of claim 1 , wherein the determination that the first sample was compiled for the CPU architecture that is different from the host CPU architecture is performed by a loader.

5. The system of claim 1 , wherein the processor is further configured to patch at least one of the first sample and an execution environment associated with executing the first sample.

6. The system of claim 5 , wherein the patching includes patching a path to a library.

7. The system of claim 6 , wherein patching the path to the library includes substituting a path to a library as compiled for the CPU architecture that is different from the host CPU architecture with a path to the library as compiled for the CPU architecture of the host CPU.

8. The system of claim 1 , wherein monitoring of the executing of the first sample is performed by a guest operating system and wherein the guest operating system executes the first sample in the emulated user space.

9. The system of claim 1 , wherein the first sample while executing causes a download of the second sample.

10. The system of claim 1 , wherein analysis of the first sample and second sample is performed by a single virtual machine instance during a single dynamic analysis session.

11. The system of claim 1 , wherein the processor is further configured to determine a verdict for the first sample.

12. A method, comprising:

receiving a first sample for analysis;

receiving a second sample for analysis;

determining that the first sample was compiled for a CPU architecture that is different from a host CPU architecture;

executing the first sample in an emulated user space corresponding to the CPU architecture for which the first sample was compiled, wherein the emulated user space is provided by executing a user space emulation utility in a virtual machine that shares the host CPU architecture; and

at a time at least partially overlapping a time during which the first sample is being executed, executing the second sample in a second emulated user space corresponding to a CPU architecture that is different from the CPU architecture for which the first sample was compiled.

13. The method of claim 12 , wherein the virtual machine is initialized with a set comprising a plurality of versions of a particular library, wherein each of the plurality of versions corresponds to a different CPU architecture.

14. The method of claim 13 , wherein, when the first sample is executed, a library selected from the set, and corresponding to the CPU architecture for which the first sample was compiled, is loaded.

15. The method of claim 12 , wherein the determination that the first sample was compiled for the CPU architecture that is different from the host CPU architecture is performed by a loader.

16. The method of claim 12 , further comprising patching at least one of the first sample and an execution environment associated with executing the first sample.

17. The method of claim 12 , wherein monitoring of the executing of the first sample is performed by a guest operating system and wherein the guest operating system executes the first sample in the emulated user space.

18. The method of claim 16 , wherein the patching includes patching a path to a library.

19. The method of claim 18 , wherein patching the path to the library includes substituting a path to a library as compiled for the CPU architecture that is different from the host CPU architecture with a path to the library as compiled for the CPU architecture of the host CPU.

20. The method of claim 12 , wherein the first sample while executing causes a download of the second sample.

21. The method of claim 12 , wherein analysis of the first sample and the second sample is performed by a single virtual machine instance during a single dynamic analysis session.

22. The method of claim 12 , further comprising determining a verdict for the first sample.

23. A computer program product embodied in a tangible, non-transitory computer readable storage medium and comprising computer instructions for:

receiving a first sample for analysis;

receiving a second sample for analysis;

determining that the first sample was compiled for a CPU architecture that is different from a host CPU architecture;

executing the first sample in an emulated user space corresponding to the CPU architecture for which the first sample was compiled, wherein the emulated user space is provided by executing a user space emulation utility in a virtual machine that shares the host CPU architecture; and

at a time at least partially overlapping a time during which the first sample is being executed, executing the second sample in a second emulated user space corresponding to a CPU architecture that is different from the CPU architecture for which the first sample was compiled.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 5, 2019
From: XIAO, ZIHANG; ZHENG, CONG; LU, CHIENHUA
To: PALO ALTO NETWORKS, INC.
Reel/Frame 050923/0739 →
Continuity (1)
Related Publication 20210064753A1 · Mar 4, 2021