本机API滥用指攻击者直接调用操作系统底层接口实施恶意操作的技术手段,涉及进程创建、内存操作、设备控制等敏感功能。与传统命令行操作相比,API调用具备更高的执行效率和更低的交互可见性。防御方通常通过监控关键API调用序列(如CreateRemoteThread、VirtualAllocEx)、分析进程加载的系统DLL行为(如异常加载ntdll.dll)、以及检测用户态钩子篡改事件等手段进行防护。但由于合法应用程序广泛使用系统API,准确区分正常与恶意调用成为核心挑战。
为规避基于API调用监控的检测体系,攻击者发展出多层次API滥用匿迹技术。通过内核级调用路径重构、动态函数解析、调用链污染以及进程上下文劫持等手法,将恶意操作深度嵌入系统合法行为流中,突破传统基于规则匹配或静态特征检测的防御边界,形成"底层化、动态化、寄生化"的新型API攻击范式。
当前本机API匿迹技术的核心演进方向集中于调用路径的立体化伪装与执行环境的深度融合。攻击者通过垂直跨越用户态-内核态边界(直接系统调用)消除用户层监控可见性,利用运行时动态解析机制(哈希寻址+延迟绑定)破坏静态分析基础,构建多维调用链混淆(逻辑嵌套+噪声注入)干扰行为分析,最终借助内存寄生技术实现恶意代码与合法进程的深度绑定。这些技术的共性在于突破传统API监控的观测维度:在调用层级上规避用户态钩子,在时间维度上延迟关键操作触发,在空间维度上隐藏于可信进程内存。通过将攻击行为分解重组为符合系统正常交互模式的微操作序列,实现"形散而神聚"的隐蔽攻击效果。
匿迹技术的演进导致传统基于API调用黑名单或单次异常调用的检测方法逐渐失效。防御方需构建跨进程、跨线程的调用链时空关联分析能力,实施内存与寄存器级别的行为完整性校验,并引入机器学习模型识别隐蔽的API调用模式异常,方能应对日益复杂的本机API滥用威胁。
| 效应类型 | 是否存在 |
|---|---|
| 特征伪装 | ✅ |
| 行为透明 | ✅ |
| 数据遮蔽 | ✅ |
| 时空释痕 | ❌ |
攻击者通过动态API解析和调用链混淆,将恶意系统调用特征融入合法API使用模式。例如使用哈希算法动态获取API地址,消除导入表特征;在关键恶意操作前后插入冗余API调用,构建符合正常软件行为的调用序列。这种深度伪装使静态分析和动态监控均难以有效提取攻击特征。
通过内存注入劫持合法进程的API调用流,攻击者使恶意操作在受信任进程上下文中执行。例如寄生在系统服务进程中调用敏感API,利用宿主进程的合法身份掩盖异常行为。这种技术使得防御方难以通过进程行为基线分析发现异常,实现"借壳攻击"的透明化效果。
在直接系统调用场景中,攻击者通过汇编指令直接触发内核交互,避免用户态API调用参数的明文记录。部分高级实现会加密核心调用参数或使用进程间通信传递敏感数据,使得基于API参数监控的检测手段失效,关键攻击数据在传输过程中始终处于遮蔽状态。
| ID | Name | Description |
|---|---|---|
| S0045 | ADVSTORESHELL |
ADVSTORESHELL is capable of starting a process using CreateProcess.[1] |
| S1129 | Akira |
Akira executes native Windows functions such as |
| S1025 | Amadey |
Amadey has used a variety of Windows API calls, including |
| S0622 | AppleSeed |
AppleSeed has the ability to use multiple dynamically resolved API calls.[4] |
| G0067 | APT37 |
APT37 leverages the Windows API calls: VirtualAlloc(), WriteProcessMemory(), and CreateRemoteThread() for process injection.[5] |
| G0082 | APT38 |
APT38 has used the Windows API to execute code within a victim's system.[6] |
| S0456 | Aria-body |
Aria-body has the ability to launch files using |
| S1087 | AsyncRAT |
AsyncRAT has the ability to use OS APIs including |
| S0438 | Attor |
Attor's dispatcher has used CreateProcessW API for execution.[9] |
| S0640 | Avaddon |
Avaddon has used the Windows Crypto API to generate an AES key.[10] |
| S1053 | AvosLocker |
AvosLocker has used a variety of Windows API calls, including |
| S0638 | Babuk |
Babuk can use multiple Windows API calls for actions on compromised hosts including discovery and execution.[12][13][14] |
| S0475 | BackConfig |
BackConfig can leverage API functions such as |
| S0606 | Bad Rabbit |
Bad Rabbit has used various Windows API calls.[16] |
| S1081 | BADHATCH |
BADHATCH can utilize Native API functions such as, |
| S0128 | BADNEWS |
BADNEWS has a command to download an .exe and execute it via CreateProcess API. It can also run with ShellExecute.[18][19] |
| S0234 | Bandook | |
| S0239 | Bankshot |
Bankshot creates processes using the Windows API calls: CreateProcessA() and CreateProcessAsUserA().[21] |
| S0534 | Bazar |
Bazar can use various APIs to allocate memory and facilitate code execution/injection.[22] |
| S0470 | BBK |
BBK has the ability to use the |
| S0574 | BendyBear |
BendyBear can load and execute modules and Windows Application Programming (API) calls using standard shellcode API hashing.[24] |
| S0268 | Bisonal |
Bisonal has used the Windows API to communicate with the Service Control Manager to execute a thread.[25] |
| S0570 | BitPaymer |
BitPaymer has used dynamic API resolution to avoid identifiable strings within the binary, including |
| S1070 | Black Basta |
Black Basta has the ability to use native APIs for numerous functions including discovery and defense evasion.[27][28][29][30] |
| G0098 | BlackTech | |
| S0521 | BloodHound |
BloodHound can use .NET API calls in the SharpHound ingestor component to pull Active Directory data.[32] |
| S0651 | BoxCaon |
BoxCaon has used Windows API calls to obtain information about the compromised host.[33] |
| S1063 | Brute Ratel C4 |
Brute Ratel C4 can call multiple Windows APIs for execution, to share memory, and defense evasion.[34][35] |
| S0471 | build_downer |
build_downer has the ability to use the |
| S1039 | Bumblebee | |
| S0693 | CaddyWiper |
CaddyWiper has the ability to dynamically resolve and use APIs, including |
| S0484 | Carberp |
Carberp has used the NtQueryDirectoryFile and ZwQueryDirectoryFile functions to hide files and directories.[39] |
| S0631 | Chaes |
Chaes used the |
| G0114 | Chimera |
Chimera has used direct Windows system calls by leveraging Dumpert.[41] |
| S1149 | CHIMNEYSWEEP |
CHIMNEYSWEEP can use Windows APIs including |
| S0667 | Chrommme |
Chrommme can use Windows API including |
| S0611 | Clop |
Clop has used built-in API functions such as WNetOpenEnumW(), WNetEnumResourceW(), WNetCloseEnum(), GetProcAddress(), and VirtualAlloc().[44][45] |
| S0154 | Cobalt Strike |
Cobalt Strike's Beacon payload is capable of running shell commands without |
| S0126 | ComRAT |
ComRAT can load a PE file from memory or the file system and execute it with |
| S0575 | Conti | |
| S0614 | CostaBricks |
CostaBricks has used a number of API calls, including |
| S0625 | Cuba |
Cuba has used several built-in API functions for discovery like GetIpNetTable and NetShareEnum.[53] |
| S0687 | Cyclops Blink |
Cyclops Blink can use various Linux API functions including those for execution and discovery.[54] |
| S1111 | DarkGate |
DarkGate uses the native Windows API |
| S1066 | DarkTortilla |
DarkTortilla can use a variety of API calls for persistence and defense evasion.[57] |
| S1033 | DCSrv |
DCSrv has used various Windows API functions, including |
| S1052 | DEADEYE |
DEADEYE can execute the |
| S0354 | Denis |
Denis used the |
| S0659 | Diavol |
Diavol has used several API calls like |
| S0695 | Donut |
Donut code modules use various API functions to load and inject code.[62] |
| S0694 | DRATzarus |
DRATzarus can use various API calls to see if it is running in a sandbox.[63] |
| S0384 | Dridex |
Dridex has used the |
| S0554 | Egregor |
Egregor has used the Windows API to make detection more difficult.[65] |
| S0367 | Emotet |
Emotet has used |
| S0363 | Empire |
Empire contains a variety of enumeration modules that have an option to use API calls to carry out tasks.[67] |
| S0396 | EvilBunny |
EvilBunny has used various API calls as part of its checks to see if the malware is running in a sandbox.[68] |
| S0569 | Explosive |
Explosive has a function to call the OpenClipboard wrapper.[69] |
| S0512 | FatDuke |
FatDuke can call |
| S0696 | Flagpro |
Flagpro can use Native API to enable obfuscation including |
| S0661 | FoggyWeb |
FoggyWeb's loader can use API functions to load the FoggyWeb backdoor into the same Application Domain within which the legitimate AD FS managed code is executed.[72] |
| S1044 | FunnyDream |
FunnyDream can use Native API for defense evasion, discovery, and collection.[73] |
| G0047 | Gamaredon Group |
Gamaredon Group malware has used |
| S0666 | Gelsemium |
Gelsemium has the ability to use various Windows API functions to perform tasks.[43] |
| S0032 | gh0st RAT |
gh0st RAT has used the |
| S0493 | GoldenSpy |
GoldenSpy can execute remote commands in the Windows command shell using the |
| S0477 | Goopy |
Goopy has the ability to enumerate the infected system's user name via |
| G0078 | Gorgon Group |
Gorgon Group malware can leverage the Windows API call, CreateProcessA(), for execution.[77] |
| S0531 | Grandoreiro |
Grandoreiro can execute through the |
| S0632 | GrimAgent |
GrimAgent can use Native API including |
| S0561 | GuLoader |
GuLoader can use a number of different APIs for discovery and execution.[80] |
| S0499 | Hancitor |
Hancitor has used |
| S0391 | HAWKBALL |
HAWKBALL has leveraged several Windows API calls to create processes, gather disk information, and detect debugger activity.[82] |
| S0697 | HermeticWiper |
HermeticWiper can call multiple Windows API functions used for privilege escalation, service execution, and to overwrite random bites of data.[83][84][85][86] |
| S0698 | HermeticWizard |
HermeticWizard can connect to remote shares using |
| G0126 | Higaisa | |
| S0431 | HotCroissant |
HotCroissant can perform dynamic DLL importing and API lookups using |
| S0398 | HyperBro |
HyperBro has the ability to run an application ( |
| S0537 | HyperStack |
HyperStack can use Windows API's |
| S0483 | IcedID |
IcedID has called |
| S1152 | IMAPLoader |
IMAPLoader imports native Windows APIs such as |
| S0434 | Imminent Monitor |
Imminent Monitor has leveraged CreateProcessW() call to execute the debugger.[93] |
| S1139 | INC Ransomware |
INC Ransomware can use the API |
| S0259 | InnaputRAT |
InnaputRAT uses the API call ShellExecuteW for execution.[95] |
| S0260 | InvisiMole |
InvisiMole can use winapiexec tool for indirect execution of |
| S1020 | Kevin | |
| S0607 | KillDisk |
KillDisk has called the Windows API to retrieve the hard disk handle and shut down the machine.[98] |
| S0669 | KOCTOPUS |
KOCTOPUS can use the |
| S0356 | KONNI |
KONNI has hardcoded API calls within its functions to use on the victim's machine.[100] |
| S1160 | Latrodectus |
Latrodectus has used multiple Windows API post exploitation including |
| G0032 | Lazarus Group |
Lazarus Group has used the Windows API |
| S0395 | LightNeuron |
LightNeuron is capable of starting a process using CreateProcess.[106] |
| S0680 | LitePower | |
| S0681 | Lizar |
Lizar has used various Windows API functions on a victim's machine.[108] |
| S0447 | Lokibot |
Lokibot has used LoadLibrary(), GetProcAddress() and CreateRemoteThread() API functions to execute its shellcode.[109] |
| S1016 | MacMa |
MacMa has used macOS API functions to perform tasks.[110][111] |
| S1060 | Mafalda | |
| S0652 | MarkiRAT |
MarkiRAT can run the ShellExecuteW API via the Windows Command Shell.[113] |
| S0449 | Maze |
Maze has used several Windows API functions throughout the encryption process including IsDebuggerPresent, TerminateProcess, Process32FirstW, among others.[114] |
| S0576 | MegaCortex |
After escalating privileges, MegaCortex calls |
| G0045 | menuPass |
menuPass has used native APIs including |
| S1059 | metaMain |
metaMain can execute an operator-provided Windows command by leveraging functions such as |
| S0455 | Metamorfo | |
| S0688 | Meteor |
Meteor can use |
| S1015 | Milan | |
| S0084 | Mis-Type |
Mis-Type has used Windows API calls, including |
| S0083 | Misdat |
Misdat has used Windows APIs, including |
| S1122 | Mispadu |
Mispadu has used a variety of Windows API calls, including ShellExecute and WriteProcessMemory.[122][123] |
| S0256 | Mosquito |
Mosquito leverages the CreateProcess() and LoadLibrary() calls to execute files with the .dll and .exe extensions.[124] |
| S0630 | Nebulae |
Nebulae has the ability to use |
| S0457 | Netwalker |
Netwalker can use Windows API functions to inject the ransomware DLL.[126] |
| S0198 | NETWIRE |
NETWIRE can use Native API including |
| S1090 | NightClub |
NightClub can use multiple native APIs including |
| S1100 | Ninja |
The Ninja loader can call Windows APIs for discovery, process injection, and payload decryption.[129][130] |
| S0385 | njRAT |
njRAT has used the ShellExecute() function within a script.[131] |
| C0022 | Operation Dream Job |
During Operation Dream Job, Lazarus Group used Windows API |
| C0006 | Operation Honeybee |
During Operation Honeybee, the threat actors deployed malware that used API calls, including |
| C0013 | Operation Sharpshooter |
During Operation Sharpshooter, the first stage downloader resolved various Windows libraries and APIs, including |
| C0014 | Operation Wocao |
During Operation Wocao, threat actors used the |
| S1050 | PcShare | |
| S1145 | Pikabot |
Pikabot uses native Windows APIs to determine if the process is being debugged and analyzed, such as |
| S0517 | Pillowmint |
Pillowmint has used multiple native Windows APIs to execute and conduct process injections.[137] |
| S0501 | PipeMon |
PipeMon's first stage has been executed by a call to |
| S0435 | PLEAD | |
| S0013 | PlugX |
PlugX can use the Windows API functions |
| S0518 | PolyglotDuke |
PolyglotDuke can use |
| S0453 | Pony |
Pony has used several Windows functions for various purposes.[142] |
| S1058 | Prestige |
Prestige has used the |
| S0147 | Pteranodon |
Pteranodon has used various API calls.[144] |
| S0650 | QakBot |
QakBot can use |
| S1076 | QUIETCANARY |
QUIETCANARY can call |
| S0629 | RainyDay |
The file collection tool used by RainyDay can utilize native API including |
| S0458 | Ramsay |
Ramsay can use Windows API functions such as |
| S0662 | RCSession |
RCSession can use WinSock API for communication including |
| S0416 | RDFSNIFFER |
RDFSNIFFER has used several Win32 API functions to interact with the victim machine.[149] |
| S0496 | REvil |
REvil can use Native API for execution and to retrieve active services.[150][151] |
| S0448 | Rising Sun |
Rising Sun used dynamic API resolutions to various Windows APIs by leveraging |
| S0240 | ROKRAT |
ROKRAT can use a variety of API calls to execute shellcode.[152] |
| S1078 | RotaJakiro |
When executing with non-root permissions, RotaJakiro uses the the |
| S1073 | Royal |
Royal can use multiple APIs for discovery, communication, and execution.[154] |
| S0148 | RTM |
RTM can use the |
| S0446 | Ryuk |
Ryuk has used multiple native APIs including |
| S0085 | S-Type |
S-Type has used Windows APIs, including |
| S1018 | Saint Bot |
Saint Bot has used different API calls, including |
| S1099 | Samurai | |
| G0034 | Sandworm Team |
Sandworm Team uses Prestige to disable and restore file system redirection by using the following functions: |
| S1085 | Sardonic |
Sardonic has the ability to call Win32 API functions to determine if |
| S1089 | SharpDisco |
SharpDisco can leverage Native APIs through plugins including |
| S0444 | ShimRat |
ShimRat has used Windows API functions to install the service and shim.[160] |
| S0445 | ShimRatReporter |
ShimRatReporter used several Windows API functions to gather information from the infected system.[160] |
| G1008 | SideCopy |
SideCopy has executed malware by calling the API function |
| S0610 | SideTwist |
SideTwist can use |
| G0091 | Silence |
Silence has leveraged the Windows API, including using CreateProcess() or ShellExecute(), to perform a variety of tasks.[163][164] |
| S0692 | SILENTTRINITY |
SILENTTRINITY has the ability to leverage API including |
| S0623 | Siloscape | |
| S0627 | SodaMaster |
SodaMaster can use |
| S0615 | SombRAT |
SombRAT has the ability to respawn itself using |
| S1034 | StrifeWater |
StrifeWater can use a variety of APIs for execution.[168] |
| S0603 | Stuxnet |
Stuxnet uses the SetSecurityDescriptorDacl API to reduce object integrity levels.[169] |
| S0562 | SUNSPOT |
SUNSPOT used Windows API functions such as |
| S1064 | SVCReady |
SVCReady can use Windows API calls to gather information from an infected host.[171] |
| S0242 | SynAck |
SynAck parses the export tables of system DLLs to locate and call various Windows API functions.[172][173] |
| S0663 | SysUpdate |
SysUpdate can call the |
| G0092 | TA505 |
TA505 has deployed payloads that use Windows API calls on a compromised host.[175] |
| S0011 | Taidoor |
Taidoor has the ability to use native APIs for execution including |
| S0595 | ThiefQuest |
ThiefQuest uses various API to perform behaviors such as executing payloads and performing local enumeration.[178] |
| S0668 | TinyTurla |
TinyTurla has used |
| G1022 | ToddyCat |
ToddyCat has used |
| S0678 | Torisma | |
| S0266 | TrickBot |
TrickBot uses the Windows API call, CreateProcessW(), to manage execution flow.[181] TrickBot has also used |
| G0081 | Tropic Trooper |
Tropic Trooper has used multiple Windows APIs including HttpInitialize, HttpCreateHttpHandle, and HttpAddUrl.[183] |
| G0010 | Turla |
Turla and its RPC backdoors have used APIs calls for various tasks related to subverting AMSI and accessing then executing commands through RPC and/or named pipes.[184] |
| S0022 | Uroburos |
Uroburos can use native Windows APIs including |
| S0386 | Ursnif |
Ursnif has used |
| S0180 | Volgmer |
Volgmer executes payloads using the Windows API call CreateProcessW().[187] |
| S0670 | WarzoneRAT |
WarzoneRAT can use a variety of API calls on a compromised host.[188] |
| S0612 | WastedLocker |
WastedLocker's custom crypter, CryptOne, leveraged the VirtualAlloc() API function to help execute the payload.[189] |
| S0579 | Waterbear | |
| S0689 | WhisperGate |
WhisperGate has used the |
| S0466 | WindTail |
WindTail can invoke Apple APIs |
| S0141 | Winnti for Windows |
Winnti for Windows can use Native API to create a new process and to start services.[194] |
| S1065 | Woody RAT |
Woody RAT can use multiple native APIs, including |
| S0161 | XAgentOSX |
XAgentOSX contains the execFile function to execute a specified file on the system using the NSTask:launch method.[196] |
| S0653 | xCaon |
xCaon has leveraged native OS function calls to retrieve victim's network adapter's information using GetAdapterInfo() API.[33] |
| S1151 | ZeroCleare |
ZeroCleare can call the |
| S0412 | ZxShell |
ZxShell can leverage native API including |
| S1013 | ZxxZ |
ZxxZ has used API functions such as |
| ID | Mitigation | Description |
|---|---|---|
| M1040 | Behavior Prevention on Endpoint |
On Windows 10, enable Attack Surface Reduction (ASR) rules to prevent Office VBA macros from calling Win32 APIs. [198] |
| M1038 | Execution Prevention |
Identify and block potentially malicious software executed that may be executed through this technique by using application control [199] tools, like Windows Defender Application Control[200], AppLocker, [201] [202] or Software Restriction Policies [203] where appropriate. [204] |
| ID | Data Source | Data Component | Detects |
|---|---|---|---|
| DS0011 | Module | Module Load |
Monitor DLL/PE file events, specifically creation of these binary files as well as the loading of DLLs into processes. Utilization of the Windows APIs may involve processes loading/accessing system DLLs associated with providing called functions (ex: ntdll.dll, kernel32.dll, advapi32.dll, user32.dll, and gdi32.dll). Monitoring for DLL loads, especially to abnormal/unusual or potentially malicious processes, may indicate abuse of the Windows API. Though noisy, this data can be combined with other indicators to identify adversary activity. Analytic 1 - Look for unusual or abnormal DLL loads, processes loading DLLs not typically associated with them
|
| DS0009 | Process | OS API Execution |
Monitoring API calls may generate a significant amount of data and may not be useful for defense unless collected under specific circumstances, since benign use of API functions are common and may be difficult to distinguish from malicious behavior. Correlation of other events with behavior surrounding API function calls using API monitoring will provide additional context to an event that may assist in determining if it is due to malicious behavior. Correlation of activity by process lineage by process ID may be sufficient. |