DDOSAgent — botnet — ELF
49886b11ba85aef3f41d4a1e94cd9056ea12e927a47ef1853c7449028dcba22e
ELF · botnet · import-less
DDOSAgent botnet ddos golang elf doh socks cron import-less linux import-less
关键事实 脱壳 结构 流程 行为 ATT&CK IOC 结论
关键事实
MD5
5fa693aad94069d036c7b381e077f4a2
SHA256
49886b11ba85aef3f41d4a1e94cd9056ea12e927a47ef1853c7449028dcba22e
该样本为 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
md5 5fa693aad94069d036c7b381e077f4a2sha256 49886b11ba85aef3f41d4a1e94cd9056ea12e927a47ef1853c7449028dcba22efilename h30ez.exefilename zswap_shrinkdfilename 49886b11ba85aef3f41d4a1e94cd9056ea12e927a47ef1853c7449028dcba22e.elfother main.botCapsother Vision/bot/other anonymousSudan
§14 结论与处置
综合研判 :该样本为 Go 静态编译的 Linux ELF64 模块化僵尸网络客户端,归属于 DDOSAgent 家族。代码架构专业,具备 DoH 隐蔽 C2 发现、TLS 1.3 ECH 加密通信、SOCKS 代理隧道、任意命令执行、文件投递、cron 持久化等完整恶意能力链。多引擎情报 27/63 检出恶意且无假阳性,社区沙箱家族标记与引擎标签高度一致。
风险评级 :高危(High)——一旦激活,攻击者可获得受害 Linux 主机的持久化远控入口,并利用 SOCKS 代理在内网横向移动。
**…
立即隔离受影响 Linux 主机,断开网络连接,保留内存镜像与磁盘取证快照 在防火墙/代理层阻断出站 DoH(DNS over HTTPS)流量,除非企业明确使用受信任的 DoH 解析器 排查所有 Linux 主机的 crontab(/var/spool/cron/、/etc/crontab、/etc/cron.*/),搜索异常计划任务条目 在 SIEM/EDR 中建立检测规则:Go 二进制异常出站 TLS 连接、DoH 流量非标准端点、os/exec 调用链异常 提取运行时 C2 地址(需在可控沙箱中启用 DoH 解析后运行样本),将域名/IP 加入威胁情报黑名单并全网狩猎 检查 /proc/*/exe 中是否有伪装为 zswap_shrinkd 或其他系统守护进程名的异常 Go 二进制 审计 SSH 登录日志与 known_hosts 是否异常,防止 SOCKS 代理被用于横向移动后的跳板攻击