⬇ Download sample (sample.zip)

DDOSAgent — botnet — ELF

49886b11ba85aef3f41d4a1e94cd9056ea12e927a47ef1853c7449028dcba22e
ELF · botnet · import-less
DDOSAgentbotnetddosgolangelfdohsockscronimport-lesslinuximport-less
MALICIOUS
90
confidence

关键事实

MD5
5fa693aad94069d036c7b381e077f4a2
SHA256
49886b11ba85aef3f41d4a1e94cd9056ea12e927a47ef1853c7449028dcba22e
大小
4587668
5.9758
格式
ELF
语言
Go
编译器
gc
加壳
import-less
架构

该样本为 Go 编译的 Linux ELF64 僵尸网络客户端,社区沙箱标记为 TR/LINUX.DDOSAgent 家族,多引擎情报 27/63 引擎判定恶意(0 误报)。字符串揭示完整 C2 框架:DoH TXT 记录解析 C2 地址、BotID 注册与系统信息上报、SOCKS 代理、文件上传及 cron 持久化。导入表为空(import-less),…

脱壳尝试(VPS 本地静态)

状态:静态脱壳未还原主载荷 — 需运行时 dump

未写出可分析载荷文件

no standard zlib/gzip stream yielded a useful payload; stub likely uses custom framing or runtime-only decryption;需运行时在 VirtualAlloc/OEP 处 dump

§4 结构 / 熵

无节表

证据:ELF64 格式,机器架构 0x15 (EM_X86_64),无动态链接器(interpreter=null),表明为静态链接的 Go 可执行体。导入/导出表均为空,节表信息未被完整解析(Go 二进制使用自定义节布局,常规解析器常无法识别)。Go build ID 字符串和 runtime.main 引用确认是 Go 运行时环境。字符串池庞大(235 条),包含 Go 标准库符号路径:Vision/bot/ 目录树(co…

§5 反汇编与行为流程

01. 操作系统加载 ELF64 静态链接映像至内存,控制权移交至 Go runtime 入口(rt0_amd64_linux → runtime.main)。
02. Go runtime 初始化:goroutine 调度器、GC、内存分配器就绪;由于导入表为空(import-less),所有系统调用通过 Go syscall 包于运行时动态发起,不依赖 ELF .dynamic 段。
03. main.main() 启动 → 推测从 main.botCaps 初始化能力集,加载配置模块(Vision/bot/config.go),定义支持的协议与功能(TCP、UDP、HTTP、DNS、SOCKS、exec 等)。
04. 若配置解析成功,进入 C2 寻址阶段:通过 palkia DoH 客户端向 DoH 服务器发起 TXT 记录查询(dialga 成功回调),从 DNS TXT 响应中提取加密编码的 C2 地址(main:…
01. 操作系统加载 ELF 映像,控制权转至入口点
02. 检测到加壳/保护线索:import-less(confidence=55)— 存根可能先解压/解密载荷
03. 导入表为空 → 推断运行时动态解析 API(LoadLibrary/GetProcAddress 或手工 PEB 遍历)
04. (以上为 VPS 本地静态行为流程,不依赖外部沙箱)

反汇编引擎:—

§7 深度行为(静态)

无高危 API 静态映射(常见于空导入加壳样本)

证据:基于 235 条 Go 符号字符串与包路径分析,该样本具备以下静态可推断的恶意行为模块:

| 能力模块 | 证据字符串 / 路径 | 行为推断 |

|---------|------------------|---------|

| 命令执行 | os/exec.Cmd、syscall.Exec、os/exec.Command | 通过 Go os/exec 包调用 /bin/sh 执行任意系统命令 |

| C2 通信 | main.rawHTTPGet、main.rawHTTPGetStream、crypto/tls | 以原始 HT…

§2 情报交叉

多引擎 malicious=27 suspicious=0 · 家族线索=TR/LINUX.DDOSAgent

证据:多引擎情报扫描共 63 引擎参与,其中 27 引擎判定恶意(malicious),0 引擎标记可疑(suspicious),0 引擎标记无害(harmless),33 引擎未检出,3 引擎故障,11 引擎不支持该格式。热门威胁标签集中于 ddosagent(3 次)、usblgt26(2 次)、abtrojan(1 次),分类均为 troja…

§8 判定要点

证据一——静态加壳特征:导入表完全为空(import-less,confidence=55)。Go 原生二进制虽可通过直接系统调用绕过常规导入表,但该样本同时缺少节表信息,且脱壳尝试(标准 zlib/gzip)未成功。unpack 结论为 runtime_needed=true,表明存根在运行时自行解密/解压载荷并动态解析 API。这种技术常用于恶意软件对抗静态分析。

证据二——多引擎情报交叉:社区沙箱与多引擎情报均收录该哈希并给出恶意判定。27 个引擎标记 malicious(0 标记 harmless),热门威胁标签集中于 DDOSAgent/trojan/usblgt…

§9 ATT&CK

T1059.004
Command and Scripting Interpreter: Unix Shell
字符串含 os/exec.Cmd、syscall.Exec,可通过 Go os/exec 调用 /bin/sh 执行任意系统命令
T1071.004
Application Layer Protocol: DNS
palkia/dialga DoH TXT 查询流程:Trying DoH server → Parsed TXT data → DoH TXT lookup success → main: Resolving C2 address
T1573
Encrypted Channel
TLS 1.3 ECH + ECDHE-ECDSA-AES-128/256-GCM-SHA256 套件字符串保护 C2 通信
T1041
Exfiltration Over C2 Channel
Bot 注册字符串:Registering - BotID/Arch/RAM/CPU/Proc/Uplink,系统信息经 C2 信道外传
T1090
Proxy
Vision/bot/socks.go 模块 + !socksauth <user> <pass> 命令,提供 SOCKS 代理隧道
T1105
Ingress Tool Transfer
!upload <path> <base64data> 命令支持向受害主机投递 Base64 编码文件
T1053.003
Scheduled Task/Job: Cron
persist.go + DEBUG 日志 Would install cron job,通过 cron 计划任务实现持久化

§13 IOC

§14 结论与处置

综合研判:该样本为 Go 静态编译的 Linux ELF64 模块化僵尸网络客户端,归属于 DDOSAgent 家族。代码架构专业,具备 DoH 隐蔽 C2 发现、TLS 1.3 ECH 加密通信、SOCKS 代理隧道、任意命令执行、文件投递、cron 持久化等完整恶意能力链。多引擎情报 27/63 检出恶意且无假阳性,社区沙箱家族标记与引擎标签高度一致。

风险评级:高危(High)——一旦激活,攻击者可获得受害 Linux 主机的持久化远控入口,并利用 SOCKS 代理在内网横向移动。

**…

  1. 立即隔离受影响 Linux 主机,断开网络连接,保留内存镜像与磁盘取证快照
  2. 在防火墙/代理层阻断出站 DoH(DNS over HTTPS)流量,除非企业明确使用受信任的 DoH 解析器
  3. 排查所有 Linux 主机的 crontab(/var/spool/cron/、/etc/crontab、/etc/cron.*/),搜索异常计划任务条目
  4. 在 SIEM/EDR 中建立检测规则:Go 二进制异常出站 TLS 连接、DoH 流量非标准端点、os/exec 调用链异常
  5. 提取运行时 C2 地址(需在可控沙箱中启用 DoH 解析后运行样本),将域名/IP 加入威胁情报黑名单并全网狩猎
  6. 检查 /proc/*/exe 中是否有伪装为 zswap_shrinkd 或其他系统守护进程名的异常 Go 二进制
  7. 审计 SSH 登录日志与 known_hosts 是否异常,防止 SOCKS 代理被用于横向移动后的跳板攻击