S1145 Pikabot
Pikabot is a backdoor used for initial access and follow-on tool deployment active since early 2023. Pikabot is notable for extensive use of multiple encoding, encryption, and defense evasion mechanisms to evade defenses and avoid analysis. Pikabot has some overlaps with QakBot, but insufficient evidence exists to definitively link these two malware families. Pikabot is frequently used to deploy follow on tools such as Cobalt Strike or ransomware variants.123
| Item | Value |
|---|---|
| ID | S1145 |
| Associated Names | |
| Type | MALWARE |
| Version | 1.0 |
| Created | 12 July 2024 |
| Last Modified | 28 October 2024 |
| Navigation Layer | View In ATT&CK® Navigator |
Techniques Used
| Domain | ID | Name | Use |
|---|---|---|---|
| enterprise | T1087 | Account Discovery | - |
| enterprise | T1087.001 | Local Account | Pikabot will retrieve the name of the user associated with the thread under which the malware is executing.2 |
| enterprise | T1547 | Boot or Logon Autostart Execution | - |
| enterprise | T1547.001 | Registry Run Keys / Startup Folder | Pikabot maintains persistence following system checks through the Run key in the registry.1 |
| enterprise | T1059 | Command and Scripting Interpreter | - |
| enterprise | T1059.003 | Windows Command Shell | Pikabot can execute Windows shell commands via cmd.exe.1 |
| enterprise | T1132 | Data Encoding | - |
| enterprise | T1132.001 | Standard Encoding | Pikabot uses base64 encoding in conjunction with symmetric encryption mechanisms to obfuscate command and control communications.12 |
| enterprise | T1622 | Debugger Evasion | Pikabot features several methods to evade debugging by analysts, including checks for active debuggers, the use of breakpoints during execution, and checking various system information items such as system memory and the number of processors.123 |
| enterprise | T1140 | Deobfuscate/Decode Files or Information | Pikabot decrypts command and control URIs using ADVobfuscator, and decrypts IP addresses and port numbers with a custom algorithm.1 Other versions of Pikabot decode chunks of stored stage 2 payload content in the initial payload .text section before consolidating them for further execution.2 Overall LunarMail is associated with multiple encoding and encryption mechanisms to obfuscate the malware’s presence and avoid analysis or detection.3 |
| enterprise | T1482 | Domain Trust Discovery | Pikabot will gather information concerning the Windows Domain the victim machine is a member of during execution.2 |
| enterprise | T1573 | Encrypted Channel | - |
| enterprise | T1573.001 | Symmetric Cryptography | Earlier Pikabot variants use a custom encryption procedure leveraging multiple mechanisms including AES with multiple rounds of Base64 encoding for its command and control communication.1 Later Pikabot variants eliminate the use of AES and instead use RC4 encryption for transmitted information.2 |
| enterprise | T1480 | Execution Guardrails | - |
| enterprise | T1480.001 | Environmental Keying | Pikabot stops execution if the infected system language matches one of several languages, with various versions referencing: Georgian, Kazakh, Uzbek, Tajik, Russian, Ukrainian, Belarussian, and Slovenian.12 |
| enterprise | T1041 | Exfiltration Over C2 Channel | During the initial Pikabot command and control check-in, Pikabot will transmit collected system information encrypted using RC4.2 |
| enterprise | T1106 | Native API | Pikabot uses native Windows APIs to determine if the process is being debugged and analyzed, such as CheckRemoteDebuggerPresent, NtQueryInformationProcess, ProcessDebugPort, and ProcessDebugFlags.1 Other Pikabot variants populate a global list of Windows API addresses from the NTDLL and KERNEL32 libraries, and references these items instead of calling the API items to obfuscate execution.2 |
| enterprise | T1571 | Non-Standard Port | Pikabot uses non-standard ports, such as 2967, 2223, and others, for HTTPS command and control communication.2 |
| enterprise | T1027 | Obfuscated Files or Information | - |
| enterprise | T1027.003 | Steganography | Pikabot loads a set of PNG images stored in the malware’s resources section (RCDATA), each with an encrypted section containing portions of the core Pikabot core module. These sections are loaded and decrypted using a bitwise XOR operation with a hardcoded 32 bit key.1 |
| enterprise | T1027.009 | Embedded Payloads | Pikabot further decrypts information embedded via steganography using AES-CBC with the same 32 bit key as initial XOR operations combined with the first 16 bytes of the encrypted data as an initialization vector.1 Other Pikabot variants include encrypted, chunked sections of the stage 2 payload in the initial loader .text section before decrypting and assembling these during execution.2 |
| enterprise | T1027.011 | Fileless Storage | Some versions of Pikabot build the final PE payload in memory to avoid writing contents to disk on the executing machine.2 |
| enterprise | T1055 | Process Injection | - |
| enterprise | T1055.002 | Portable Executable Injection | Pikabot, following payload decryption, creates a process hard-coded into the dropped (e.g., WerFault.exe) and injects the decrypted core modules into it.1 |
| enterprise | T1055.003 | Thread Execution Hijacking | Pikabot can create a suspended instance of a legitimate process (e.g., ctfmon.exe), allocate memory within the suspended process corresponding to Pikabot’s core module, then redirect execution flow via SetContextThread API so that when the thread resumes the Pikabot core module is executed.2 |
| enterprise | T1620 | Reflective Code Loading | Pikabot reflectively loads stored, previously encrypted components of the PE file into memory of the currently executing process to avoid writing content to disk on the executing machine.2 |
| enterprise | T1082 | System Information Discovery | Pikabot performs a variety of system checks and gathers system information, including commands such as whoami.12 |
| enterprise | T1016 | System Network Configuration Discovery | Pikabot gathers victim network information through commands such as ipconfig and ipconfig /all.1 |
| enterprise | T1497 | Virtualization/Sandbox Evasion | - |
| enterprise | T1497.001 | System Checks | Pikabot performs a variety of system checks to determine if it is running in an analysis environment or sandbox, such as checking the number of processors (must be greater than two), and the amount of RAM (must be greater than 2GB).2 |
Groups That Use This Software
| ID | Name | References |
|---|---|---|
| G1037 | TA577 | 6 |
References
-
Brett Stone-Gross & Nikolaos Pantazopoulos. (2023, May 24). Technical Analysis of Pikabot. Retrieved July 12, 2024. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩
-
Daniel Stepanic & Salim Bitam. (2024, February 23). PIKABOT, I choose you!. Retrieved July 12, 2024. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩
-
Swachchhanda Shrawan Poudel. (2024, February). Pikabot: A Sophisticated and Modular Backdoor Trojan with Advanced Evasion Techniques. Retrieved July 12, 2024. ↩↩↩
-
Nikolaos Pantazopoulos. (2024, February 12). The (D)Evolution of Pikabot. Retrieved July 17, 2024. ↩
-
Shinji Robert Arasawa, Joshua Aquino, Charles Steven Derion, Juhn Emmanuel Atanque, Francisrey Joshua Castillo, John Carlo Marquez, Henry Salcedo, John Rainier Navato, Arianne Dela Cruz, Raymart Yambot & Ian Kenefick. (2024, January 9). Black Basta-Affiliated Water Curupira’s Pikabot Spam Campaign. Retrieved July 17, 2024. ↩
-
Proofpoint Threat Research and Team Cymru S2 Threat Research. (2024, April 4). Latrodectus: This Spider Bytes Like Ice . Retrieved May 31, 2024. ↩