Uroburos is a sophisticated cyber espionage tool written in C that has been used by units within Russia's Federal Security Service (FSB) associated with the Turla toolset to collect intelligence on sensitive targets worldwide. Uroburos has several variants and has undergone nearly constant upgrade since its initial development in 2003 to keep it viable after public disclosures. Uroburos is typically deployed to external-facing nodes on a targeted network and has the ability to leverage additional tools and TTPs to further exploit an internal network. Uroburos has interoperable implants for Windows, Linux, and macOS, employs a high level of stealth in communications and architecture, and can easily incorporate new or replacement components.[1][2]
| Name | Description |
|---|---|
| Snake |
| Domain | ID | Name | Use | |
|---|---|---|---|---|
| Enterprise | T1014 | Rootkit |
Uroburos can use its kernel module to prevent its host components from being listed by the targeted system's OS and to mediate requests between user mode and concealed components.[2][1] |
|
| Enterprise | T1005 | 从本地系统获取数据 |
Uroburos can use its |
|
| Enterprise | T1090 | .003 | 代理: Multi-hop Proxy |
Uroburos can use implants on multiple compromised machines to proxy communications through its worldwide P2P network.[1] |
| Enterprise | T1036 | .004 | 伪装: Masquerade Task or Service |
Uroburos has registered a service named |
| Enterprise | T1112 | 修改注册表 |
Uroburos can store configuration information in the Registry including the initialization vector and AES key needed to find and decrypt other Uroburos components.[1] |
|
| Enterprise | T1543 | .003 | 创建或修改系统进程: Windows Service |
Uroburos has registered a service, typically named |
| Enterprise | T1573 | .001 | 加密通道: Symmetric Cryptography |
Uroburos can encrypt the data beneath its http2 or tcp encryption at the session layer with CAST-128, using a different key for incoming and outgoing data.[1] |
| .002 | 加密通道: Asymmetric Cryptography |
Uroburos has used a combination of a Diffie-Hellman key exchange mixed with a pre-shared key (PSK) to encrypt its top layer of C2 communications.[1] |
||
| Enterprise | T1572 | 协议隧道 |
Uroburos has the ability to communicate over custom communications methodologies that ride over common network protocols including raw TCP and UDP sockets, HTTP, SMTP, and DNS.[1] |
|
| Enterprise | T1620 | 反射性代码加载 |
Uroburos has the ability to load new modules directly into memory using its |
|
| Enterprise | T1140 | 反混淆/解码文件或信息 |
Uroburos can decrypt command parameters sent through C2 and use unpacking code to extract its packed executable.[1] |
|
| Enterprise | T1059 | .003 | 命令与脚本解释器: Windows Command Shell |
Uroburos has the ability to use the command line for execution on the targeted system.[1] |
| Enterprise | T1008 | 回退信道 |
Uroburos can use up to 10 channels to communicate between implants.[1] |
|
| Enterprise | T1104 | 多阶段信道 |
Individual Uroburos implants can use multiple communication channels based on one of four available modes of operation.[1] |
|
| Enterprise | T1071 | .001 | 应用层协议: Web Protocols |
Uroburos can use a custom HTTP-based protocol for large data communications that can blend with normal network traffic by riding on top of standard HTTP.[1] |
| .003 | 应用层协议: Mail Protocols |
Uroburos can use custom communications protocols that ride over SMTP.[1] |
||
| .004 | 应用层协议: DNS |
Uroburos has encoded outbound C2 communications in DNS requests consisting of character strings made to resemble standard domain names. The actual information transmitted by Uroburos is contained in the part of the character string prior to the first ‘.’ character.[1] |
||
| Enterprise | T1001 | .001 | 数据混淆: Junk Data |
Uroburos can add extra characters in encoded strings to help mimic DNS legitimate requests.[1] |
| .003 | 数据混淆: Protocol or Service Impersonation |
Uroburos can use custom communication methodologies that ride over common protocols including TCP, UDP, HTTP, SMTP, and DNS in order to blend with normal network traffic. [1] |
||
| Enterprise | T1132 | .002 | 数据编码: Non-Standard Encoding |
Uroburos can use a custom base62 and a de-facto base32 encoding that uses digits 0-9 and lowercase letters a-z in C2 communications.[1] |
| Enterprise | T1083 | 文件和目录发现 |
Uroburos can search for specific files on a compromised system.[1] |
|
| Enterprise | T1106 | 本机API |
Uroburos can use native Windows APIs including |
|
| Enterprise | T1012 | 查询注册表 |
Uroburos can query the Registry, typically |
|
| Enterprise | T1205 | 流量激活 |
Uroburos can intercept the first client to server packet in the 3-way TCP handshake to determine if the packet contains the correct unique value for a specific Uroburos implant. If the value does not match, the packet and the rest of the TCP session are passed to the legitimate listening application.[1] |
|
| Enterprise | T1027 | .002 | 混淆文件或信息: Software Packing | |
| .009 | 混淆文件或信息: Embedded Payloads |
The Uroburos Queue file contains embedded executable files along with key material, communication channels, and modes of operation.[1] |
||
| .011 | 混淆文件或信息: Fileless Storage |
Uroburos can store configuration information for the kernel driver and kernel driver loader components in an encrypted blob typically found at |
||
| .013 | 混淆文件或信息: Encrypted/Encoded File |
Uroburos can use AES and CAST-128 encryption to obfuscate resources.[1] |
||
| Enterprise | T1070 | .004 | 移除指标: File Deletion |
Uroburos can run a |
| Enterprise | T1082 | 系统信息发现 |
Uroburos has the ability to gather basic system information and run the POSIX API |
|
| Enterprise | T1105 | 输入工具传输 |
Uroburos can use a |
|
| Enterprise | T1057 | 进程发现 |
Uroburos can use its |
|
| Enterprise | T1055 | .001 | 进程注入: Dynamic-link Library Injection |
Uroburos can use DLL injection to load embedded files and modules.[1] |
| Enterprise | T1559 | 进程间通信 |
Uroburos has the ability to move data between its kernel and user mode components, generally using named pipes.[1] |
|
| Enterprise | T1564 | .005 | 隐藏伪装: Hidden File System |
Uroburos can use concealed storage mechanisms including an NTFS or FAT-16 filesystem encrypted with CAST-128 in CBC mode.[1] |
| Enterprise | T1095 | 非应用层协议 |
Uroburos can communicate through custom methodologies for UDP, ICMP, and TCP that use distinct sessions to ride over the legitimate protocols.[1] |
|