Shellcode Detection via Function Call Redirection

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current methods fail to effectively detect malicious shellcode injected into computer systems, particularly in web browsers, due to techniques like heap spraying and self-decoding JavaScript, which make it difficult to identify and prevent execution before it causes harm.

Innovation Solution

Redirecting function calls from decoding functions, such as the JavaScript Unescape function, to a scanning function that checks for suspect code or data, allowing for early detection and inhibition of malicious activity, thereby preventing shellcode execution.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If heap spraying technique is used to inject shellcode into memory, then the likelihood of successful code execution is improved, but the difficulty of detecting and preventing the attack increases

Engineering Contradiction:
Improvesuccess rate of code executionVSAvoiddifficulty of detecting shellcode injection
Core Design Contradiction:
ReliabilityVSDifficulty of detecting and measuring

Solution Approach 1:

The patent applies preliminary action by intercepting and scanning data before it is decoded and executed. The scanning function analyzes the compressed or encoded data in its original form, before JavaScript engines or decoding functions transform it into executable shellcode. This prevents the attack at an early stage, countering the reliability improvement from heap spraying by detecting malicious content before it can be successfully executed.

Inventive Principle:
Principle #10Preliminary action

2Adaptability or versatility

If self-decoding JavaScript is used to obfuscate shellcode, then the ability to evade signature-based scanning is improved, but the complexity of the malicious code increases

Engineering Contradiction:
Improveability to evade detectionVSAvoidcomplexity of malicious code
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent introduces an intermediary scanning function that sits between the data reception and the decoding/execution process. This intermediary analyzes the compressed or encoded data before it is processed by JavaScript engines or decoding functions. The scanning function acts as a mediator that can detect malicious content regardless of obfuscation techniques, countering the adaptability improvement from self-decoding JavaScript by maintaining detection capability despite increased code complexity.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Adaptability or versatility

If shellcode is injected into the heap memory using compressed or encoded data, then the ability to evade simple signature scanning is improved, but the risk of detection by advanced scanning methods increases

Engineering Contradiction:
Improveability to evade simple scanningVSAvoiddetectability by advanced scanning
Core Design Contradiction:
Adaptability or versatilityVSObject-affected harmful factors

Solution Approach 1:

The patent applies preliminary action by performing security scanning on compressed or encoded data before it is decoded and executed. The scanning function analyzes the data in its original compressed form, identifying malicious patterns before they are transformed into executable shellcode. This approach maintains the ability to evade simple signature scanning while reducing detectability by advanced scanning methods, as the scan occurs at the earliest possible point in the attack chain.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS8984637B2Method and apparatus for detecting shellcode insertion
Publication Date: 2015.03.17 F SECURE CORP
  • US8984637B2 patent drawing
  • US8984637B2 patent drawing
  • US8984637B2 patent drawing

AI summary

A method of detecting malware present on a computer system where the computer system is running an application. The method includes redirecting a function call, made by the application to a decoding function that performs decoding of an argument provided to it by an application, to a scanning function. The scanning function is then employed to scan an argument of the function call for suspect code or data. In the event that suspect code or data is detected, the function call is inhibited, otherwise program control is returned to the called decoding function.