APT29 is threat group that has been attributed to Russia's Foreign Intelligence Service (SVR).[1][2] They have operated since at least 2008, often targeting government networks in Europe and NATO member countries, research institutes, and think tanks. APT29 reportedly compromised the Democratic National Committee starting in the summer of 2015.[3][4][5][6]
In April 2021, the US and UK governments attributed the SolarWinds Compromise to the SVR; public statements included citations to APT29, Cozy Bear, and The Dukes.[7][8] Industry reporting also referred to the actors involved in this campaign as UNC2452, NOBELIUM, StellarParticle, Dark Halo, and SolarStorm.[9][10][11][12][13][14]
| Name | Description |
|---|---|
| IRON RITUAL | |
| IRON HEMLOCK | |
| NobleBaron | |
| Dark Halo | |
| NOBELIUM | |
| UNC2452 | |
| YTTRIUM | |
| The Dukes | |
| Cozy Bear | |
| CozyDuke | |
| SolarStorm | |
| Blue Kitsune | |
| UNC3524 | |
| Midnight Blizzard |
| Domain | ID | Name | Use | |
|---|---|---|---|---|
| Enterprise | T1047 | Windows管理规范 |
APT29 used WMI to steal credentials and execute backdoors at a future time.[30] During the SolarWinds Compromise, APT29 used WMI for the remote execution of files for lateral movement.[31][32] |
|
| Enterprise | T1595 | .002 | 主动扫描: Vulnerability Scanning |
APT29 has conducted widespread scanning of target environments to identify vulnerabilities for exploit.[13] |
| Enterprise | T1546 | .003 | 事件触发执行: Windows Management Instrumentation Event Subscription |
APT29 has used WMI event subscriptions for persistence.[30] During the SolarWinds Compromise, APT29 used a WMI event filter to invoke a command-line event consumer at system boot time to launch a backdoor with During Operation Ghost, APT29 used WMI event subscriptions to establish persistence for malware.[22] |
| .008 | 事件触发执行: Accessibility Features |
APT29 used sticky-keys to obtain unauthenticated, privileged console access.[30][33] |
||
| Enterprise | T1651 | 云管理命令 |
APT29 has used Azure Run Command and Azure Admin-on-Behalf-of (AOBO) to execute code on virtual machines.[34] |
|
| Enterprise | T1213 | 从信息存储库获取数据 |
During the SolarWinds Compromise, APT29 accessed victims' internal knowledge repositories (wikis) to view sensitive corporate information on products, services, and internal business operations.[24] |
|
| .003 | Code Repositories |
During the SolarWinds Compromise, APT29 downloaded source code from code repositories.[35] |
||
| Enterprise | T1555 | .003 | 从密码存储中获取凭证: Credentials from Web Browsers |
During the SolarWinds Compromise, APT29 stole users' saved passwords from Chrome.[24] |
| Enterprise | T1005 | 从本地系统获取数据 |
APT29 has stolen data from compromised hosts.[27] During the SolarWinds Compromise, APT29 extracted files from compromised networks.[12] |
|
| Enterprise | T1090 | .001 | 代理: Internal Proxy |
During the SolarWinds Compromise, APT29 used SSH port forwarding capabilities on public-facing systems, and configured at least one instance of Cobalt Strike to use a network pipe over SMB.[24][36] |
| .002 | 代理: External Proxy |
APT29 uses compromised residential endpoints as proxies for defense evasion and network access.[37] |
||
| .003 | 代理: Multi-hop Proxy |
A backdoor used by APT29 created a Tor hidden service to forward traffic from the Tor client to local ports 3389 (RDP), 139 (Netbios), and 445 (SMB) enabling full remote access from outside the network and has also used TOR.[30][34] |
||
| .004 | 代理: Domain Fronting |
APT29 has used the meek domain fronting plugin for Tor to hide the destination of C2 traffic.[30] |
||
| Enterprise | T1036 | .004 | 伪装: Masquerade Task or Service |
During the SolarWinds Compromise, APT29 named tasks |
| .005 | 伪装: Match Legitimate Name or Location |
APT29 has renamed malicious DLLs with legitimate names to appear benign; they have also created an Azure AD certificate with a Common Name that matched the display name of the compromised service principal.[17][38] During the SolarWinds Compromise, APT29 renamed software and DLLs with legitimate names to appear benign.[12][39] |
||
| Enterprise | T1606 | .001 | 伪造Web凭证: Web Cookies |
During the SolarWinds Compromise, APT29 bypassed MFA set on OWA accounts by generating a cookie value from a previously stolen secret key.[12] |
| .002 | 伪造Web凭证: SAML Tokens |
During the SolarWinds Compromise, APT29 created tokens using compromised SAML signing certificates.[40][15] |
||
| Enterprise | T1550 | .001 | 使用备用认证材料: Application Access Token |
During the SolarWinds Compromise, APT29 used compromised service principals to make changes to the Office 365 environment.[24] |
| .003 | 使用备用认证材料: Pass the Ticket |
APT29 used Kerberos ticket attacks for lateral movement.[30] |
||
| .004 | 使用备用认证材料: Web Session Cookie |
During the SolarWinds Compromise, APT29 used stolen cookies to access cloud resources and a forged |
||
| Enterprise | T1195 | .002 | 供应链破坏: Compromise Software Supply Chain |
During the SolarWinds Compromise, APT29 gained initial network access to some victims via a trojanized update of SolarWinds Orion software.[41][9][13][32] |
| Enterprise | T1199 | 信任关系 |
APT29 has compromised IT, cloud services, and managed services providers to gain broad access to multiple customers for subsequent operations.[34] During the SolarWinds Compromise, APT29 gained access through compromised accounts at cloud solution partners, and used compromised certificates issued by Mimecast to authenticate to Mimecast customer systems.[13][24] |
|
| Enterprise | T1556 | .007 | 修改身份验证过程: Hybrid Identity |
APT29 has edited the |
| Enterprise | T1136 | .003 | 创建账户: Cloud Account | |
| Enterprise | T1190 | 利用公开应用程序漏洞 |
APT29 has exploited CVE-2019-19781 for Citrix, CVE-2019-11510 for Pulse Secure VPNs, CVE-2018-13379 for FortiGate VPNs, and CVE-2019-9670 in Zimbra software to gain access.[13][23] During the SolarWinds Compromise, APT29 exploited CVE-2020-0688 against the Microsoft Exchange Control Panel to regain access to a network.[12][13] |
|
| Enterprise | T1573 | 加密通道 |
APT29 has used multiple layers of encryption within malware to protect C2 communication.[16] |
|
| Enterprise | T1568 | 动态解析 |
APT29 has used Dynamic DNS providers for their malware C2 infrastructure.[27] During the SolarWinds Compromise, APT29 used dynamic DNS resolution to construct and resolve to randomly-generated subdomains for C2.[12] |
|
| Enterprise | T1140 | 反混淆/解码文件或信息 |
During the SolarWinds Compromise, APT29 used 7-Zip to decode their Raindrop malware.[36] |
|
| Enterprise | T1037 | 启动或登录初始化脚本 |
APT29 has hijacked legitimate application-specific startup scripts to enable malware to execute on system startup.[27] |
|
| .004 | RC Scripts |
APT29 has installed a run command on a compromised system to enable malware execution on system startup.[27] |
||
| Enterprise | T1547 | .001 | 启动或登录自动启动执行: Registry Run Keys / Startup Folder | |
| Enterprise | T1059 | .001 | 命令与脚本解释器: PowerShell |
APT29 has used encoded PowerShell scripts uploaded to CozyCar installations to download and install SeaDuke.[43][30][44][16] During the SolarWinds Compromise, APT29 used PowerShell to create new tasks on remote machines, identify configuration settings, exfiltrate data, and execute other commands.[12][39][24] |
| .003 | 命令与脚本解释器: Windows Command Shell |
During the SolarWinds Compromise, APT29 used |
||
| .005 | 命令与脚本解释器: Visual Basic |
For the SolarWinds Compromise, APT29 wrote malware such as Sibot in Visual Basic.[13] |
||
| .006 | 命令与脚本解释器: Python | |||
| .009 | 命令与脚本解释器: Cloud API |
APT29 has leveraged the Microsoft Graph API to perform various actions across Azure and M365 environments. They have also utilized AADInternals PowerShell Modules to access the API [19] |
||
| Enterprise | T1482 | 域信任发现 |
During the SolarWinds Compromise, APT29 used the |
|
| Enterprise | T1484 | .002 | 域或租户策略修改: Trust Modification |
During the SolarWinds Compromise, APT29 changed domain federation trust settings using Azure AD administrative permissions to configure the domain to accept authorization tokens signed by their own SAML signing certificate.[15][31] |
| Enterprise | T1584 | .001 | 基础设施妥协: Domains |
For the SolarWinds Compromise, APT29 compromised domains to use for C2.[10] |
| Enterprise | T1133 | 外部远程服务 |
APT29 has used compromised identities to access networks via VPNs and Citrix.[23][38] For the SolarWinds Compromise, APT29 used compromised identities to access networks via SSH, VPNs, and other remote access tools.[10][24] |
|
| Enterprise | T1621 | 多因素身份验证请求生成 |
APT29 has used repeated MFA requests to gain access to victim accounts.[45][37] |
|
| Enterprise | T1562 | .001 | 妨碍防御: Disable or Modify Tools |
During the SolarWinds Compromise, APT29 used the service control manager on a remote system to disable services associated with security monitoring products.[32] |
| .002 | 妨碍防御: Disable Windows Event Logging |
During the SolarWinds Compromise, APT29, used |
||
| .004 | 妨碍防御: Disable or Modify System Firewall |
During the SolarWinds Compromise, APT29 used |
||
| .008 | 妨碍防御: Disable or Modify Cloud Logs |
APT29 has disabled Purview Audit on targeted accounts prior to stealing emails from Microsoft 365 tenants.[38] |
||
| Enterprise | T1203 | 客户端执行漏洞利用 |
APT29 has used multiple software exploits for common client software, like Microsoft Word, Exchange, and Adobe Reader, to gain code execution.[3][13][18] |
|
| Enterprise | T1071 | .001 | 应用层协议: Web Protocols |
During the SolarWinds Compromise, APT29 used HTTP for C2 and data exfiltration.[12] |
| Enterprise | T1585 | .001 | 建立账户: Social Media Accounts |
For Operation Ghost, APT29 registered Twitter accounts to host C2 nodes.[22] |
| Enterprise | T1587 | .001 | 开发能力: Malware |
APT29 has used unique malware in many of their operations.[3][30][19][27] For the SolarWinds Compromise, APT29 used numerous pieces of malware that were likely developed for or by the group, including SUNBURST, SUNSPOT, Raindrop, and TEARDROP.[9][11][32] For Operation Ghost, APT29 used new strains of malware including FatDuke, MiniDuke, RegDuke, and PolyglotDuke.[22] |
| .003 | 开发能力: Digital Certificates |
APT29 has created self-signed digital certificates to enable mutual TLS authentication for malware.[25][26] |
||
| Enterprise | T1560 | .001 | 归档收集数据: Archive via Utility |
During the SolarWinds Compromise, APT29 used 7-Zip to compress stolen emails into password-protected archives prior to exfltration; APT29 also compressed text files into zipped archives.[12][32][24] |
| Enterprise | T1003 | .002 | 操作系统凭证转储: Security Account Manager |
APT29 has used the |
| .004 | 操作系统凭证转储: LSA Secrets |
APT29 has used the |
||
| .006 | 操作系统凭证转储: DCSync |
During the SolarWinds Compromise, APT29 used privileged accounts to replicate directory service data with domain controllers.[31][32][24] |
||
| Enterprise | T1589 | .001 | 收集受害者身份信息: Credentials |
For the SolarWinds Compromise, APT29 conducted credential theft operations to obtain credentials to be used for access to victim environments.[24] |
| Enterprise | T1074 | .002 | 数据分段: Remote Data Staging |
During the SolarWinds Compromise, APT29 staged data and files in password-protected archives on a victim's OWA server.[12] |
| Enterprise | T1001 | .002 | 数据混淆: Steganography |
During Operation Ghost, APT29 used steganography to hide the communications between the implants and their C&C servers.[22] |
| Enterprise | T1083 | 文件和目录发现 |
During the SolarWinds Compromise, APT29 obtained information about the configured Exchange virtual directory using |
|
| Enterprise | T1110 | .001 | 暴力破解: Password Guessing |
APT29 has successfully conducted password guessing attacks against a list of mailboxes.[38] |
| .003 | 暴力破解: Password Spraying |
APT29 has conducted brute force password spray attacks.[20][34][37] |
||
| Enterprise | T1048 | .002 | 替代协议渗出: Exfiltration Over Asymmetric Encrypted Non-C2 Protocol |
During the SolarWinds Compromise, APT29 exfiltrated collected data over a simple HTTPS request to a password-protected archive staged on a victim's OWA servers.[12] |
| Enterprise | T1078 | 有效账户 |
APT29 has used a compromised account to access an organization's VPN infrastructure.[38] During the SolarWinds Compromise, APT29 used different compromised credentials for remote access and to move laterally.[9][10][13] |
|
| .002 | Domain Accounts |
During the SolarWinds Compromise, APT29 used domain administrators' accounts to help facilitate lateral movement on compromised networks.[24] For Operation Ghost, APT29 used stolen administrator credentials for lateral movement on compromised networks.[22] |
||
| .003 | Local Accounts |
APT29 targets dormant or inactive user accounts, accounts belonging to individuals no longer at the organization but whose accounts remain on the system, for access and persistence.[37] During the SolarWinds Compromise, APT29 used compromised local accounts to access victims' networks.[24] |
||
| .004 | Cloud Accounts |
APT29 has gained access to a global administrator account in Azure AD and has used During the SolarWinds Compromise, APT29 used a compromised O365 administrator account to create a new Service Principal.[24] |
||
| Enterprise | T1505 | .003 | 服务器软件组件: Web Shell |
APT29 has installed web shells on exploited Microsoft Exchange servers.[13][27] |
| Enterprise | T1552 | .004 | 未加密凭证: Private Keys |
During the SolarWinds Compromise, APT29 obtained PKI keys, certificate files, and the private encryption key from an Active Directory Federation Services (AD FS) container to decrypt corresponding SAML signing certificates.[31][13] |
| Enterprise | T1068 | 权限提升漏洞利用 |
APT29 has exploited CVE-2021-36934 to escalate privileges on a compromised host.[44] |
|
| Enterprise | T1069 | .002 | 权限组发现: Domain Groups |
During the SolarWinds Compromise, APT29 used AdFind to enumerate domain groups.[24] |
| Enterprise | T1027 | .001 | 混淆文件或信息: Binary Padding |
APT29 used large size files to avoid detection by security solutions with hardcoded size limits.[17] |
| .002 | 混淆文件或信息: Software Packing | |||
| .003 | 混淆文件或信息: Steganography |
During Operation Ghost, APT29 used steganography to hide payloads inside valid images.[22] |
||
| .006 | 混淆文件或信息: HTML Smuggling |
APT29 has embedded an ISO file within an HTML attachment that contained JavaScript code to initiate malware execution.[44] |
||
| Enterprise | T1548 | .002 | 滥用权限提升控制机制: Bypass User Account Control | |
| Enterprise | T1204 | .001 | 用户执行: Malicious Link |
APT29 has used various forms of spearphishing attempting to get a user to click on a malicious link.[18][46] |
| .002 | 用户执行: Malicious File |
APT29 has used various forms of spearphishing attempting to get a user to open attachments, including, but not limited to, malicious Microsoft Word documents, .pdf, and .lnk files. [3][44][16] |
||
| Enterprise | T1114 | .002 | 电子邮件收集: Remote Email Collection |
APT29 has collected emails from targeted mailboxes within a compromised Azure AD tenant and compromised Exchange servers, including via Exchange Web Services (EWS) API requests.[38][27] During the SolarWinds Compromise, APT29 collected emails from specific individuals, such as executives and IT staff, using |
| Enterprise | T1070 | .004 | 移除指标: File Deletion |
APT29 has used SDelete to remove artifacts from victim networks.[30] During the SolarWinds Compromise, APT29 routinely removed their tools, including custom backdoors, once remote access was achieved.[9] |
| .006 | 移除指标: Timestomp |
APT29 has used timestomping to alter the Standard Information timestamps on their web shells to match other files in the same directory.[27] During the SolarWinds Compromise, APT29 modified timestamps of backdoors to match legitimate Windows files.[32] |
||
| .008 | 移除指标: Clear Mailbox Data |
During the SolarWinds Compromise, APT29 removed evidence of email export requests using |
||
| Enterprise | T1539 | 窃取Web会话Cookie |
During the SolarWinds Compromise, APT29 stole Chrome browser cookies by copying the Chrome profile directories of targeted users.[24] |
|
| Enterprise | T1528 | 窃取应用访问令牌 |
APT29 uses stolen tokens to access victim accounts, without needing a password.[37] |
|
| Enterprise | T1558 | .003 | 窃取或伪造Kerberos票据: Kerberoasting |
During the SolarWinds Compromise, APT29 obtained Ticket Granting Service (TGS) tickets for Active Directory Service Principle Names to crack offline.[32] |
| Enterprise | T1649 | 窃取或伪造身份认证证书 |
APT29 has abused misconfigured AD CS certificate templates to impersonate admin users and create additional authentication certificates.[47] |
|
| Enterprise | T1218 | .005 | 系统二进制代理执行: Mshta |
APT29 has use |
| .011 | 系统二进制代理执行: Rundll32 |
During the SolarWinds Compromise, APT29 used |
||
| Enterprise | T1082 | 系统信息发现 |
During the SolarWinds Compromise, APT29 used |
|
| Enterprise | T1016 | .001 | 系统网络配置发现: Internet Connection Discovery |
APT29 has ensured web servers in a victim environment are Internet accessible before copying tools or malware to it.[27] During the SolarWinds Compromise, APT29 used GoldFinder to perform HTTP GET requests to check internet connectivity and identify HTTP proxy servers and other redirectors that an HTTP request travels through.[10] |
| Enterprise | T1102 | .002 | 网络服务: Bidirectional Communication |
For Operation Ghost, APT29 used social media platforms to hide communications to C2 servers.[22] |
| Enterprise | T1583 | .001 | 获取基础设施: Domains |
For the SolarWinds Compromise, APT29 acquired C2 domains, sometimes through resellers.[10][48] For Operation Ghost, APT29 registered domains for use in C2 including some crafted to appear as existing legitimate domains.[22] |
| .006 | 获取基础设施: Web Services |
APT29 has registered algorithmically generated Twitter handles that are used for C2 by malware, such as HAMMERTOSS. APT29 has also used legitimate web services such as Dropbox and Constant Contact in their operations.[49][18] |
||
| Enterprise | T1588 | .002 | 获取能力: Tool |
APT29 has obtained and used a variety of tools including Mimikatz, SDelete, Tor, meek, and Cobalt Strike.[30][3][27] |
| Enterprise | T1087 | .002 | 账号发现: Domain Account |
During the SolarWinds Compromise, APT29 used PowerShell to discover domain accounts by exectuing |
| .004 | 账号发现: Cloud Account | |||
| Enterprise | T1586 | .002 | 账号妥协: Email Accounts |
APT29 has compromised email accounts to further enable phishing campaigns and taken control of dormant accounts.[50][38] |
| .003 | 账号妥协: Cloud Accounts |
APT29 has used residential proxies, including Azure Virtual Machines, to obfuscate their access to victim environments.[38] |
||
| Enterprise | T1098 | .001 | 账号操控: Additional Cloud Credentials |
During the SolarWinds Compromise, APT29 added credentials to OAuth Applications and Service Principals.[40][24] |
| .002 | 账号操控: Additional Email Delegate Permissions |
APT29 has used a compromised global administrator account in Azure AD to backdoor a service principal with During the SolarWinds Compromise, APT29 added their own devices as allowed IDs for active sync using |
||
| .003 | 账号操控: Additional Cloud Roles |
During the SolarWinds Compromise, APT29 granted |
||
| .005 | 账号操控: Device Registration |
APT29 has enrolled their own devices into compromised cloud tenants, including enrolling a device in MFA to an Azure AD environment following a successful password guessing attack against a dormant account.[38][37] During the SolarWinds Compromise, APT29 registered devices in order to enable mailbox syncing via the |
||
| Enterprise | T1105 | 输入工具传输 |
APT29 has downloaded additional tools and malware onto compromised networks.[30][25][3][27] During the SolarWinds Compromise, APT29 downloaded additional malware, such as TEARDROP and Cobalt Strike, onto a compromised host following initial access.[9] |
|
| Enterprise | T1057 | 进程发现 |
During the SolarWinds Compromise, APT29 used multiple command-line utilities to enumerate running processes.[12][32][24] |
|
| Enterprise | T1021 | .001 | 远程服务: Remote Desktop Protocol |
During the SolarWinds Compromise, APT29 used RDP sessions from public-facing systems to internal servers.[24] |
| .002 | 远程服务: SMB/Windows Admin Shares |
During the SolarWinds Compromise, APT29 used administrative accounts to connect over SMB to targeted users.[24] |
||
| .006 | 远程服务: Windows Remote Management |
During the SolarWinds Compromise, APT29 used WinRM via PowerShell to execute commands and payloads on remote hosts.[36] |
||
| .007 | 远程服务: Cloud Services |
APT29 has leveraged compromised high-privileged on-premises accounts synced to Office 365 to move laterally into a cloud environment, including through the use of Azure AD PowerShell.[51] |
||
| Enterprise | T1018 | 远程系统发现 |
During the SolarWinds Compromise, APT29 used AdFind to enumerate remote systems.[32] |
|
| Enterprise | T1566 | .001 | 钓鱼: Spearphishing Attachment |
APT29 has used spearphishing emails with an attachment to deliver files with exploits to initial victims.[3][18][44][16] |
| .002 | 钓鱼: Spearphishing Link |
APT29 has used spearphishing with a link to trick victims into clicking on a link to a zip file containing malicious files.[30][18][46] |
||
| .003 | 钓鱼: Spearphishing via Service |
APT29 has used the legitimate mailing service Constant Contact to send phishing e-mails.[18] |
||
| Enterprise | T1665 | 隐藏基础设施 |
APT29 uses compromised residential endpoints, typically within the same ISP IP address range, as proxies to hide the true source of C2 traffic.[37] During the SolarWinds Compromise, APT29 set the hostnames of their C2 infrastructure to match legitimate hostnames in the victim environment. They also used IP addresses originating from the same country as the victim for their VPN infrastructure.[9] |
|
| Enterprise | T1053 | .005 | 预定任务/作业: Scheduled Task |
APT29 has used named and hijacked scheduled tasks to establish persistence.[30] During the SolarWinds Compromise, APT29 used |
| Enterprise | T1553 | .002 | 颠覆信任控制: Code Signing |
During the SolarWinds Compromise, APT29 was able to get SUNBURST signed by SolarWinds code signing certificates by injecting the malware into the SolarWinds Orion software lifecycle.[9] |
| .005 | 颠覆信任控制: Mark-of-the-Web Bypass |
APT29 has embedded ISO images and VHDX files in HTML to evade Mark-of-the-Web.[44] |
||