软件发现是攻击者通过枚举系统或云环境中安装的软件及其版本来收集情报的技术,通常用于识别潜在攻击面(如存在漏洞的软件版本)或安全防护措施(如杀毒软件)。传统检测方法通过监控进程创建事件、命令行参数特征以及异常API调用序列来识别恶意枚举行为,防御措施侧重限制敏感工具的访问权限和实施最小特权原则。
为规避传统检测机制,攻击者发展出新型匿迹技术,通过合法管理工具劫持、软件信息碎片化嗅探等手段,将软件发现行为深度融入正常系统活动,在降低行为异常性的同时提升数据收集的隐蔽性。
当前软件发现匿迹技术的演进呈现两大特征:首先是对系统信任机制的滥用,通过合法工具调用和API函数合规化使用实现"白利用"攻击;其次是操作痕迹的时空分散化,采用非持久化执行、分布式任务分发等策略规避单点检测。具体而言,合法工具链隐蔽枚举技术利用系统管理行为的"灰色地带",通过参数级伪装规避基于命令行特征的检测;碎片化嗅探则通过旁路数据源的渐进式收集,避免触发针对直接探测的防御规则。这些技术的共同本质在于重构软件发现行为的特征表达形式,使其在行为模式、数据载体、交互协议等维度与合法活动形成高度相似性。
匿迹技术的发展迫使防御体系从单一事件检测转向行为链分析,需构建跨主机-网络-日志的协同检测框架,并引入软件资产指纹动态校验机制。同时应强化对系统管理工具的细粒度监控,建立基于上下文行为的异常操作识别模型。
| 效应类型 | 是否存在 |
|---|---|
| 特征伪装 | ✅ |
| 行为透明 | ❌ |
| 数据遮蔽 | ✅ |
| 时空释痕 | ✅ |
攻击者通过模拟合法管理工具的操作模式和输出格式,使软件发现行为在进程特征、命令行参数、日志记录等方面与正常运维活动高度一致。例如使用PowerShell脚本按标准格式输出软件列表,或构造符合Ansible剧本规范的扫描任务,有效规避基于行为特征匹配的检测规则。
命令语义混淆将软件发现活动与正常的系统管理操作混淆,使攻击行为看起来像是系统管理员的常规检查。采用HTTPS加密通道传输扫描结果或通过内存加密存储中间数据,避免敏感信息在磁盘或网络传输过程中暴露,有效隐藏了攻击者的侦查意图。
分布式架构将集中式扫描任务分解为跨地域、长周期的离散操作,单个节点的低频次探测行为难以触发阈值告警。结合日志注入技术制造的噪音背景,使得攻击特征在时间和空间维度被充分稀释,传统基于单点实时分析的检测机制难以有效识别。
| ID | Name | Description |
|---|---|---|
| S0534 | Bazar | |
| G0060 | BRONZE BUTLER |
BRONZE BUTLER has used tools to enumerate software installed on an infected host.[2] |
| S0482 | Bundlore |
Bundlore has the ability to enumerate what browser is being used as well as version information for Safari.[3] |
| S0674 | CharmPower |
CharmPower can list the installed applications on a compromised host.[4] |
| S0154 | Cobalt Strike |
The Cobalt Strike System Profiler can discover applications through the browser and identify the version of Java the target has.[5] |
| S0126 | ComRAT |
ComRAT can check the victim's default browser to determine which process to inject its communications module into.[6] |
| S1153 | Cuckoo Stealer |
Cuckoo Stealer has the ability to search systems for installed applications.[7] |
| S0472 | down_new |
down_new has the ability to gather information on installed applications.[2] |
| S0384 | Dridex |
Dridex has collected a list of installed software on the system.[8] |
| S0062 | DustySky |
DustySky lists all installed software for the infected machine.[9] |
| S0024 | Dyre |
Dyre has the ability to identify installed programs on a compromised host.[10] |
| G1001 | HEXANE |
HEXANE has enumerated programs installed on an infected machine.[11] |
| S0431 | HotCroissant |
HotCroissant can retrieve a list of applications from the |
| G0100 | Inception |
Inception has enumerated installed software on compromised systems.[13] |
| S0260 | InvisiMole |
InvisiMole can collect information about installed software used by specific users, software executed on user login, and software executed by each system.[14][15] |
| S0526 | KGH_SPY |
KGH_SPY can collect information on installed applications.[16] |
| S1141 | LunarWeb |
LunarWeb can list installed software on compromised systems.[17] |
| S0652 | MarkiRAT |
MarkiRAT can check for the Telegram installation directory by enumerating the files on disk.[18] |
| S0455 | Metamorfo |
Metamorfo has searched the compromised system for banking applications.[19][20] |
| G0069 | MuddyWater |
MuddyWater has used a PowerShell backdoor to check for Skype connectivity on the target machine.[21] |
| G0129 | Mustang Panda |
Mustang Panda has searched the victim system for the |
| C0016 | Operation Dust Storm |
During Operation Dust Storm, the threat actors deployed a file called |
| C0014 | Operation Wocao |
During Operation Wocao, threat actors collected a list of installed software on the infected system.[24] |
| S0229 | Orz | |
| S0598 | P.A.S. Webshell |
P.A.S. Webshell can list PHP server configuration details.[26] |
| S0650 | QakBot | |
| S1148 | Raccoon Stealer |
Raccoon Stealer is capable of identifying running software on victim machines.[28][29] |
| S0148 | RTM |
RTM can scan victim drives to look for specific banking software on the machine to determine next actions.[30] |
| S1099 | Samurai |
Samurai can check for the presence and version of the .NET framework.[31] |
| S0445 | ShimRatReporter |
ShimRatReporter gathered a list of installed software on the infected host.[32] |
| G1008 | SideCopy |
SideCopy has collected browser information from a compromised host.[33] |
| G0121 | Sidewinder |
Sidewinder has used tools to enumerate software installed on an infected host.[34][35] |
| S0623 | Siloscape | |
| S1124 | SocGholish |
SocGholish can identify the victim's browser in order to serve the correct fake update page.[37] |
| S0646 | SpicyOmelette |
SpicyOmelette can enumerate running software on a targeted system.[38] |
| S1042 | SUGARDUMP |
SUGARDUMP can identify Chrome, Opera, Edge Chromium, and Firefox browsers, including version number, on a compromised host.[39] |
| S1064 | SVCReady |
SVCReady can collect a list of installed software from an infected host.[40] |
| S0467 | TajMahal |
TajMahal has the ability to identify the Internet Explorer (IE) version on an infected host.[41] |
| G0081 | Tropic Trooper |
Tropic Trooper's backdoor could list the infected system's installed software.[42] |
| G1017 | Volt Typhoon |
Volt Typhoon has queried the Registry on compromised systems for information on installed software.[43][44] |
| G0124 | Windigo |
Windigo has used a script to detect installed software on targeted systems.[45] |
| G0112 | Windshift |
Windshift has used malware to identify installed software.[46] |
| G0102 | Wizard Spider |
Wizard Spider has utilized the PowerShell script |
| S1065 | Woody RAT |
Woody RAT can collect .NET, PowerShell, and Python information from an infected host.[48] |
| S0658 | XCSSET |
XCSSET uses |
This type of attack technique cannot be easily mitigated with preventive controls since it is based on the abuse of system features.
| ID | Data Source | Data Component | Detects |
|---|---|---|---|
| DS0017 | Command | Command Execution |
Monitor executed commands and arguments that may attempt to get a listing of software and software versions that are installed on a system or in a cloud environment. |
| DS0018 | Firewall | Firewall Enumeration |
Monitor for an extracted list of available firewalls and/or their associated settings/rules (ex: Azure Network Firewall CLI Show commands) |
| Firewall Metadata |
Monitor for contextual data about a firewall and activity around it such as name, policy, or status |
||
| DS0009 | Process | OS API Execution |
Monitor for API calls that may attempt to get a listing of software and software versions that are installed on a system or in a cloud environment. |
| Process Creation |
Monitor newly executed processes that may attempt to get a listing of software and software versions that are installed on a system or in a cloud environment. |