T1027.007 IBM QRadar · QRadar

Detect Dynamic API Resolution in IBM QRadar

Adversaries may obfuscate then dynamically resolve API functions called by their malware in order to conceal malicious functionalities and impair defensive analysis. API functions called by malware leave static artifacts such as strings in payload files and in the Import Address Table (IAT). To avoid static analysis, adversaries use dynamic API resolution: hashes of function names are stored in malware in lieu of literal strings, and malware uses GetProcAddress() and LoadLibrary() to manually reproduce the linking process. Threat actors including Mustang Panda, Lazarus Group, Latrodectus, Bazar, Brute Ratel C4, TONESHELL, PlugX, Raccoon Stealer, AvosLocker, and CHIMNEYSWEEP use this technique.

MITRE ATT&CK

Tactic
Defense Evasion
Technique
T1027 Obfuscated Files or Information
Sub-technique
T1027.007 Dynamic API Resolution
Canonical reference
https://attack.mitre.org/techniques/T1027/007/

QRadar Detection Query

IBM QRadar (QRadar)
sql
SELECT
  LOGSOURCEADDRESS(logsourceid) AS hostname,
  "SourceImage" AS process_path,
  COUNT(DISTINCT "ImageLoaded") AS core_dll_count,
  MIN(starttime) AS first_seen,
  MAX(starttime) AS last_seen
FROM events
WHERE
  LOGSOURCETYPEID(logsourceid) ILIKE '%sysmon%'
  AND eventid = 7
  AND (
    "ImageLoaded" ILIKE '%\\kernel32.dll'
    OR "ImageLoaded" ILIKE '%\\kernelbase.dll'
    OR "ImageLoaded" ILIKE '%\\ntdll.dll'
  )
  AND "SourceImage" NOT ILIKE 'C:\\Windows\\%'
  AND "SourceImage" NOT ILIKE 'C:\\Program Files\\%'
  AND "SourceImage" NOT ILIKE 'C:\\Program Files (x86)\\%'
  AND "SourceImage" IS NOT NULL
  AND "SourceImage" NOT ILIKE ''
  LAST 1440 MINUTES
GROUP BY
  hostname,
  process_path
HAVING core_dll_count >= 1
ORDER BY core_dll_count ASC
high severity medium confidence

QRadar AQL query detecting dynamic API resolution via Sysmon Event ID 7 (Image Load) records. Correlates core Windows DLL loads (kernel32.dll, kernelbase.dll, ntdll.dll) against the initiating process path, filtering out loads originating from standard Windows directories. Processes from unexpected paths with these low-level DLL loads are indicative of malware using GetProcAddress-based API resolution to evade static import analysis.

Data Sources

Microsoft Windows Sysmon DSM (Event ID 7 - Image Load)QRadar Windows Security Event Log DSM

Required Tables

events

False Positives & Tuning

  • Custom in-house enterprise applications deployed to non-standard paths (e.g., E:\CompanyApps\) that legitimately load kernel32.dll or ntdll.dll as part of normal Windows process initialization
  • Portable software bundles distributed via network shares or removable drives that execute outside Program Files and require core system DLL loading at runtime
  • Security and monitoring agents (SIEM forwarders, EDR sensors) installed in administrator-defined custom directories that instrument DLL loading for telemetry purposes
Download portable Sigma rule (.yml)

Other platforms for T1027.007


Testing Methodology

Validate this detection against 4 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.

  1. Test 1Demonstrate GetProcAddress Dynamic API Resolution in PowerShell

    Expected signal: Sysmon Event ID 1: PowerShell process creation with Add-Type and DllImport. PowerShell ScriptBlock Log Event ID 4104: the P/Invoke declarations and GetProcAddress call. Sysmon Event ID 7: user32.dll loaded by powershell.exe.

  2. Test 2API Hash Resolution Simulation

    Expected signal: PowerShell ScriptBlock Log Event ID 4104: the hash function implementation and the list of API names being hashed. The output shows API-to-hash mappings as adversarial malware would store them.

  3. Test 3Inspect Binary IAT for Dynamic Resolution Indicators

    Expected signal: Sysmon Event ID 1: dumpbin.exe execution with /imports argument on calc.exe. The findstr filter shows LoadLibrary and GetProcAddress imports if present.

  4. Test 4Create Minimal-Import Executable for Testing

    Expected signal: Sysmon Event ID 1: csc.exe compilation (T1027.004 indicator). Sysmon Event ID 1: dynapi.exe execution from Temp. Sysmon Event ID 7: kernel32.dll and user32.dll loaded by dynapi.exe. The dynapi.exe IAT will contain only LoadLibrary and GetProcAddress.

Unlock Pro Content

Get the full detection package for T1027.007 including response playbook, investigation guide, and atomic red team tests.

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections