This detection identifies the presence of the PygmyGoat backdoor by scanning for its unique signature patterns within Azure Sentinel’s workload. Proactive hunting is essential to uncover dormant or early-stage infections that may evade standard alerting thresholds due to the rule’s low severity, ensuring timely containment before lateral movement occurs.
rule Linux_Backdoor_PygmyGoat : tc_detection malicious
{
meta:
author = "ReversingLabs"
source = "ReversingLabs"
status = "RELEASED"
sharing = "TLP:WHITE"
category = "MALWARE"
malware = "PYGMYGOAT"
description = "Yara rule that detects PygmyGoat backdoor."
tc_detection_type = "Backdoor"
tc_detection_name = "PygmyGoat"
tc_detection_factor = 5
strings:
$create_backdoor_socket = {
55 89 E5 57 56 53 81 EC ?? ?? ?? ?? E8 ?? ?? ?? ?? 81 C3 ?? ?? ?? ?? 8D 85 ?? ?? ??
?? B9 ?? ?? ?? ?? BE ?? ?? ?? ?? 89 30 89 74 08 ?? 8D 50 ?? 83 E2 ?? 29 D0 01 C1 83
E1 ?? C1 E9 ?? 89 D7 89 F0 F3 AB 83 EC ?? 6A ?? 6A ?? 6A ?? E8 ?? ?? ?? ?? 83 C4 ??
89 45 ?? 83 7D ?? ?? 79 ?? B8 ?? ?? ?? ?? E9 ?? ?? ?? ?? 66 C7 85 ?? ?? ?? ?? ?? ??
8D 83 ?? ?? ?? ?? 50 8D 83 ?? ?? ?? ?? 50 6A ?? 8D 85 ?? ?? ?? ?? 83 C0 ?? 50 E8 ??
?? ?? ?? 83 C4 ?? 83 EC ?? 8D 85 ?? ?? ?? ?? 83 C0 ?? 50 E8 ?? ?? ?? ?? 83 C4 ?? 83
C0 ?? 89 45 ?? 83 EC ?? 8D 85 ?? ?? ?? ?? 83 C0 ?? 50 E8 ?? ?? ?? ?? 83 C4 ?? 8B 45
?? 83 EC ?? 50 8D 85 ?? ?? ?? ?? 50 FF 75 ?? E8 ?? ?? ?? ?? 83 C4 ?? 89 45 ?? 83 7D
?? ?? 79 ?? 83 EC ?? FF 75 ?? E8 ?? ?? ?? ?? 83 C4 ?? B8 ?? ?? ?? ?? E9 ?? ?? ?? ??
83 EC ?? 68 ?? ?? ?? ?? 8D 85 ?? ?? ?? ?? 83 C0 ?? 50 E8 ?? ?? ?? ?? 83 C4 ?? 85 C0
79 ?? 83 EC ?? FF 75 ?? E8 ?? ?? ?? ?? 83 C4 ?? B8 ?? ?? ?? ?? E9 ?? ?? ?? ?? 8D 85
?? ?? ?? ?? C7 00 ?? ?? ?? ?? C7 40 ?? ?? ?? ?? ?? C7 40 ?? ?? ?? ?? ?? 66 C7 40 ??
?? ?? C6 40 ?? ?? 83 EC ?? 6A ?? 6A ?? 8D 85 ?? ?? ?? ?? 50 E8 ?? ?? ?? ?? 83 C4 ??
66 C7 85 ?? ?? ?? ?? ?? ?? 83 EC ?? 8D 85 ?? ?? ?? ?? 50 8D 85 ?? ?? ?? ?? 83 C0 ??
50 E8 ?? ?? ?? ?? 83 C4 ?? 83 EC ?? 8D 85 ?? ?? ?? ?? 50 E8 ?? ?? ?? ?? 83 C4 ?? 83
C0 ?? 89 45 ?? 83 EC ?? 6A ?? 8D 85 ?? ?? ?? ?? 83 C0 ?? 50 E8 ?? ?? ?? ?? 83 C4 ??
85 C0 74 ?? 83 EC ?? FF 75 ?? E8 ?? ?? ?? ?? 83 C4 ?? B8 ?? ?? ?? ?? EB ?? 8B 45 ??
83 EC ?? 50 8D 85 ?? ?? ?? ?? 50 FF 75 ?? E8 ?? ?? ?? ?? 83 C4 ?? 89 45 ?? 83 7D ??
?? 79 ?? 83 EC ?? FF 75 ?? E8 ?? ?? ?? ?? 83 C4 ?? B8 ?? ?? ?? ?? EB ?? 8B 45 ?? 8D
65 ?? 5B 5E 5F 5D C3
}
$backdoor_dataforward_p1 = {
55 89 E5 57 56 53 81 EC ?? ?? ?? ?? E8 ?? ?? ?? ?? 81 C3 ?? ?? ?? ?? BE ?? ?? ?? ??
BA ?? ?? ?? ?? 8D 85 ?? ?? ?? ?? 89 D1 89 C2 89 D7 89 F0 FC F3 AB 89 FA 89 4D ?? 89
55 ?? 8B 45 ?? 39 45 ?? 0F 4D 45 ?? 83 C0 ?? 89 45 ?? 83 7D ?? ?? 0F 88 ?? ?? ?? ??
83 7D ?? ?? 0F 88 ?? ?? ?? ?? 8B 45 ?? C1 E8 ?? 8B 55 ?? 83 E2 ?? 0F AB 94 85 ?? ??
?? ?? 8B 45 ?? C1 E8 ?? 8B 55 ?? 83 E2 ?? 0F AB 94 85 ?? ?? ?? ?? 83 EC ?? 6A ?? 6A
?? 6A ?? 8D 85 ?? ?? ?? ?? 50 FF 75 ?? E8 ?? ?? ?? ?? 83 C4 ?? 89 45 ?? 83 7D ?? ??
79 ?? E8 ?? ?? ?? ?? 8B 00 83 F8 ?? 75 ?? E9 ?? ?? ?? ?? E9 ?? ?? ?? ?? 8B 45 ?? 83
E0 ?? 8B 55 ?? C1 EA ?? 0F A3 84 95 ?? ?? ?? ?? 0F 92 C0 89 C6 89 F0 84 C0 0F 84 ??
?? ?? ?? 6A ?? 68 ?? ?? ?? ?? 8D 85 ?? ?? ?? ?? 50 FF 75 ?? E8 ?? ?? ?? ?? 83 C4 ??
89 45 ?? 83 7D ?? ?? 79 ?? E8 ?? ?? ?? ?? 8B 00 83 F8 ?? 75 ?? E9 ?? ?? ?? ?? E8 ??
?? ?? ?? 8B 00 83 F8 ?? 75 ?? E9 ?? ?? ?? ?? E9 ?? ?? ?? ?? 83 7D ?? ?? 75 ?? E9 ??
?? ?? ?? 8B 45 ?? 68 ?? ?? ?? ?? 50 8D 85 ?? ?? ?? ?? 50 FF 75 ?? E8 ?? ?? ?? ?? 83
}
$backdoor_dataforward_p2 = {
C4 ?? 89 45 ?? 83 7D ?? ?? 79 ?? E8 ?? ?? ?? ?? 8B 00 83 F8 ?? 75 ?? E9 ?? ?? ?? ??
E8 ?? ?? ?? ?? 8B 00 83 F8 ?? 75 ?? E9 ?? ?? ?? ?? E9 ?? ?? ?? ?? 8B 45 ?? 83 E0 ??
8B 55 ?? C1 EA ?? 0F A3 84 95 ?? ?? ?? ?? 0F 92 C0 89 C6 89 F0 84 C0 0F 84 ?? ?? ??
?? 6A ?? 68 ?? ?? ?? ?? 8D 85 ?? ?? ?? ?? 50 FF 75 ?? E8 ?? ?? ?? ?? 83 C4 ?? 89 45
?? 83 7D ?? ?? 79 ?? E8 ?? ?? ?? ?? 8B 00 83 F8 ?? 75 ?? EB ?? E8 ?? ?? ?? ?? 8B 00
83 F8 ?? 75 ?? EB ?? EB ?? 83 7D ?? ?? 75 ?? EB ?? 8B 45 ?? 68 ?? ?? ?? ?? 50 8D 85
?? ?? ?? ?? 50 FF 75 ?? E8 ?? ?? ?? ?? 83 C4 ?? 89 45 ?? 83 7D ?? ?? 79 ?? E8 ?? ??
?? ?? 8B 00 83 F8 ?? 75 ?? EB ?? E8 ?? ?? ?? ?? 8B 00 83 F8 ?? 75 ?? EB ?? EB ?? E9
?? ?? ?? ?? 83 EC ?? FF 75 ?? E8 ?? ?? ?? ?? 83 C4 ?? 83 EC ?? FF 75 ?? E8 ?? ?? ??
?? 83 C4 ?? B8 ?? ?? ?? ?? 8D 65 ?? 5B 5E 5F 5D C3
}
$main_constructor = {
55 89 E5 53 83 EC ?? E8 ?? ?? ?? ?? 81 C3 ?? ?? ?? ?? 8D 83 ?? ?? ?? ?? 89 45 ?? 8D
83 ?? ?? ?? ?? 89 45 ?? C7 45 ?? ?? ?? ?? ?? 83 EC ?? 8D 83 ?? ?? ?? ?? 50 E8 ?? ??
?? ?? 83 C4 ?? 83 EC ?? 6A ?? 8D 45 ?? 50 8D 83 ?? ?? ?? ?? 50 E8 ?? ?? ?? ?? 83 C4
?? 85 C0 79 ?? E9 ?? ?? ?? ?? 83 EC ?? 8D 83 ?? ?? ?? ?? 50 8D 83 ?? ?? ?? ?? 50 E8
?? ?? ?? ?? 83 C4 ?? 89 45 ?? 83 7D ?? ?? 75 ?? E9 ?? ?? ?? ?? 83 EC ?? 8D 45 ?? 50
8D 83 ?? ?? ?? ?? 50 FF 75 ?? E8 ?? ?? ?? ?? 83 C4 ?? 83 F8 ?? 74 ?? 83 EC ?? FF 75
?? E8 ?? ?? ?? ?? 83 C4 ?? E9 ?? ?? ?? ?? 83 EC ?? FF 75 ?? E8 ?? ?? ?? ?? 83 C4 ??
8B 45 ?? 83 F8 ?? 77 ?? 8B 45 ?? BA ?? ?? ?? ?? 29 C2 89 D0 83 EC ?? 50 E8 ?? ?? ??
?? 83 C4 ?? 83 EC ?? 68 ?? ?? ?? ?? 6A ?? 8D 83 ?? ?? ?? ?? 50 E8 ?? ?? ?? ?? 83 C4
?? 89 83 ?? ?? ?? ?? 8B 83 ?? ?? ?? ?? 85 C0 79 ?? E9 ?? ?? ?? ?? 8B 83 ?? ?? ?? ??
83 EC ?? 6A ?? 50 E8 ?? ?? ?? ?? 83 C4 ?? 85 C0 79 ?? E9 ?? ?? ?? ?? E8 ?? ?? ?? ??
50 8D 83 ?? ?? ?? ?? 50 6A ?? 8D 45 ?? 50 E8 ?? ?? ?? ?? 83 C4 ?? 83 EC ?? 8D 45 ??
50 E8 ?? ?? ?? ?? 83 C4 ?? 89 C2 8B 83 ?? ?? ?? ?? 83 EC ?? 52 8D 55 ?? 52 50 E8 ??
?? ?? ?? 83 C4 ?? E8 ?? ?? ?? ?? 89 45 ?? 83 7D ?? ?? 78 ?? 83 7D ?? ?? 75 ?? 83 EC
?? 6A ?? FF 75 ?? E8 ?? ?? ?? ?? 83 C4 ?? 83 F8 ?? 75 ?? 83 EC ?? 8D 83 ?? ?? ?? ??
50 E8 ?? ?? ?? ?? 83 C4 ?? 83 EC ?? 8D 45 ?? 50 E8 ?? ?? ?? ?? 83 C4 ?? E8 ?? ?? ??
?? 8B 83 ?? ?? ?? ?? 83 EC ?? 50 E8 ?? ?? ?? ?? 83 C4 ?? 8B 5D ?? C9 C3
}
$hook_accept_function_p1 = {
55 89 E5 53 83 EC ?? E8 ?? ?? ?? ?? 81 C3 ?? ?? ?? ?? C7 45 ?? ?? ?? ?? ?? C7 45 ??
?? ?? ?? ?? C7 45 ?? ?? ?? ?? ?? 83 EC ?? 8D 83 ?? ?? ?? ?? 50 E8 ?? ?? ?? ?? 83 C4
?? 83 EC ?? 8D 83 ?? ?? ?? ?? 50 6A ?? E8 ?? ?? ?? ?? 83 C4 ?? 89 45 ?? 83 7D ?? ??
74 ?? 8B 45 ?? 8B 00 89 45 ?? 83 7D ?? ?? 75 ?? B8 ?? ?? ?? ?? E9 ?? ?? ?? ?? 83 EC
?? FF 75 ?? FF 75 ?? FF 75 ?? 8B 45 ?? FF D0 83 C4 ?? 89 45 ?? 83 7D ?? ?? 79 ?? E9
?? ?? ?? ?? 83 EC ?? 6A ?? 6A ?? FF 75 ?? E8 ?? ?? ?? ?? 83 C4 ?? 83 F8 ?? 0F 94 C0
0F B6 C0 89 45 ?? 83 7D ?? ?? 74 ?? E9 ?? ?? ?? ?? 81 65 ?? ?? ?? ?? ?? 83 EC ?? 6A
?? 6A ?? FF 75 ?? E8 ?? ?? ?? ?? 83 C4 ?? 83 F8 ?? 75 ?? E9 ?? ?? ?? ?? C7 45 ?? ??
?? ?? ?? EB ?? 6A ?? 6A ?? 8D 45 ?? 50 FF 75 ?? E8 ?? ?? ?? ?? 83 C4 ?? 89 45 ?? 83
7D ?? ?? 0F 84 ?? ?? ?? ?? 83 7D ?? ?? 7E ?? 8B 45 ?? 83 EC ?? 50 8D 83 ?? ?? ?? ??
50 8D 45 ?? 50 E8 ?? ?? ?? ?? 83 C4 ?? 85 C0 0F 85 ?? ?? ?? ?? 83 7D ?? ?? 7E ?? EB
?? 83 EC ?? 6A ?? 8D 45 ?? 50 E8 ?? ?? ?? ?? 83 C4 ?? 83 45 ?? ?? 83 7D ?? ?? 76
}
$hook_accept_function_p2 = {
83 7D ?? ?? 76 ?? E9 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 45 ?? 83 7D ?? ?? 79 ?? E9 ?? ??
?? ?? 83 7D ?? ?? 0F 85 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 45 ?? 83 7D ?? ?? 79 ?? E9 ??
?? ?? ?? 83 7D ?? ?? 0F 85 ?? ?? ?? ?? E8 ?? ?? ?? ?? C7 45 ?? ?? ?? ?? ?? EB ?? 8B
45 ?? 3B 45 ?? 75 ?? EB ?? 83 EC ?? FF 75 ?? E8 ?? ?? ?? ?? 83 C4 ?? 83 45 ?? ?? 81
7D ?? ?? ?? ?? ?? 7E ?? E8 ?? ?? ?? ?? 89 45 ?? 83 7D ?? ?? 79 ?? 83 EC ?? FF 75 ??
E8 ?? ?? ?? ?? 83 C4 ?? 83 EC ?? 6A ?? E8 ?? ?? ?? ?? 83 EC ?? FF 75 ?? FF 75 ?? E8
?? ?? ?? ?? 83 C4 ?? 89 45 ?? 83 7D ?? ?? 79 ?? 83 EC ?? 6A ?? E8 ?? ?? ?? ?? 83 EC
?? 6A ?? E8 ?? ?? ?? ?? 83 EC ?? FF 75 ?? E8 ?? ?? ?? ?? 83 C4 ?? 83 EC ?? 6A ?? E8
?? ?? ?? ?? 83 EC ?? 6A ?? 6A ?? FF 75 ?? E8 ?? ?? ?? ?? 83 C4 ?? 83 EC ?? FF 75 ??
E8 ?? ?? ?? ?? 83 C4 ?? 83 7D ?? ?? 74 ?? 8B 45 ?? 8B 00 83 EC ?? 50 6A ?? FF 75 ??
E8 ?? ?? ?? ?? 83 C4 ?? 8B 45 ?? 8B 55 ?? 89 10 83 EC ?? FF 75 ?? FF 75 ?? FF 75 ??
E8 ?? ?? ?? ?? 83 C4 ?? EB ?? 8B 45 ?? 8B 5D ?? C9 C3
}
condition:
uint32(0) == 0x464C457F and
(
$create_backdoor_socket
) and
(
all of ($backdoor_dataforward_p*)
) and
(
$main_constructor
) and
(
all of ($hook_accept_function_p*)
)
}
This YARA rule can be deployed in the following contexts:
This rule contains 6 string patterns in its detection logic.
Here are 4 specific false positive scenarios for the PygmyGoat detection rule in an enterprise environment, along with suggested filters and exclusions:
Scenario: Legitimate Deployment of Microsoft Endpoint Configuration Manager (SCCM/MECM)
ccmexec.exe) often download and unpack large payloads containing nested archives or scripts that mimic the PygmyGoat’s behavior of creating temporary directories with specific file structures. The YARA rule may match the entropy or string signatures within these legitimate payload extracts.ccmexec.exe (Microsoft Configuration Manager) and its child processes. Alternatively, filter out alerts where the parent process is wuauserv.exe or smss.exe running on known management servers.Scenario: Automated Backup Jobs by Veeam Backup & Replication
VeeamService.exe) performs incremental backups, it creates temporary staging files and writes configuration manifests that can trigger the rule’s signature for “suspicious file creation” or “registry key modification.”C:\ProgramData\Veeam\ and process names starting with Veeam. Implement a time-based filter to suppress alerts during known backup maintenance windows (e.g., 02:00–04:00 daily).Scenario: Execution of Legitimate CI/CD Pipeline Scripts by Jenkins or GitLab Runner