病毒分析
发现过程
/var/log/下不断生成巨大的sedXXXXXX文件。占满了系统盘。
比对内容发现与syslog基本一致。
用 inotifywait 试图实时监控 /var/log 的创建/写入。运行了 inotifywait -m -e create,move,close_write,open /var/log,并尝试把输出通过 grep/tee 记录。结果:在交互时 inotifywait 能看到 CREATE/OPEN/CLOSE_WRITE/MOVED_FROM 事件并打印出条目,表明新文件确实是被创建和写入的。你也在输出里看到了 lsof 对应的打开句柄(显示进程名 sed)。
(结论:这些 sed* 文件是运行中的进程产生的,进程名显示是 sed。)
列了 ps -ef 并查看了相关进程,发现有很多短寿命的 sed 进程;用 pstree 在捕获时能看到父进程链像 systemd → bash → timeout → sed。你也看到 sed 的命令参数非常可疑:sed -i “/X11/d” … 和 sed -i “/PATH=/d” …,直接在多个系统日志文件上做原地替换。
(结论:有脚本或服务在以 timeout+sed 的方式周期性清理日志,目标是删除包含 X11、PATH= 等关键痕迹。)
安装并运行 execsnoop-bpfcc(或 execsnoop-bpfcc -n sed 等),抓到很多短时 exec 事件,显示执行行像:
/usr/bin/timeout 5 sed -i /X11/d /var/log/messages-2025* /var/log/messages …
还有 /usr/bin/timeout 5 sed -i /PATH=/d /var/log/auth.log …
(结论:确认 sed 是通过 timeout 启动的,且是以命令行形式批量编辑日志文件来“清理痕迹”。)
systemd(1)─bash─timeout─sed
查看了 systemctl get-default(显示 graphical.target),但没有 display manager 服务在跑(gdm/sddm/lightdm 等未见)。你列了 systemctl list-timers,查了 dpkg 中 x11 相关包(系统确实装了 X11 库,但 Xorg 没在运行)。
(推测:攻击者可能尝试或伪装 X 相关活动,或者改变 target,但没有完整 desktop 服务在运行。)
发现命令行中存在 “exec ‘update’ “$@”” 型调用
在某些捕获的 exec 纪录或 journal 中,看到 /bin/bash -c “exec ‘update’ “$@”” “update” 这类条目,但系统里用 which update 查不到对应的合法可执行文件。
(结论:存在名为 update 的可疑/临时可执行脚本或 alias,被用作触发或调度恶意动作;它可能位于临时目录或被快速创建并删除。)
通过直接观察 execsnoop 和 inotifywait 输出,你确定 sed 的两个主要删除目标是 “X11” 和 “PATH=”。这两类被删的日志行很可能包含:启动图形/远程转发的记录、执行带 PATH 内容的命令或脚本路径的痕迹。删除这些行能显著降低入侵者留下的可追溯证据。
(结论:行为就是在主动清除可被审计器/管理员发现的痕迹。)
发现/var/log/auth.log只保留了很早以前的内容,似乎被故意删除替换。
sudo find / -path /home -prune -o -type f -name update -exec ls -l {} ; 2>/dev/null 寻找名叫update的脚本/程序
1 | -rwxr-xr-x 1 root root 17577 Jan 16 2025 /usr/local/libexec/.X11/.k/update |
发现病毒文件
文件位置
/usr/local/libexec/.X11/.k
———- 1 root root 1709 Apr 1 2024 cert_key.pem
———- 1 root root 965 Apr 1 2024 cert.pem
———- 1 root root 7268 Feb 20 2025 config.json
———- 1 root root 27 Mar 11 2025 dir
———- 1 root root 6936216 Apr 1 2024 python3
———- 1 root root 150 Apr 1 2024 SHA256SUMS
lrwxrwxrwx 1 root root 7 Jan 7 2025 train -> python3
———- 1 root root 17577 Jan 16 2025 update
/usr/games/.mozilla/.mozilla
———- 1 1826 1829 41864 Jan 31 2025 bashrc
———- 1 1826 1829 770 Feb 7 2025 cfg
IRC后门配置,连接到多个中继。包括加密的账号密码信息
———- 1 root root 92 Mar 11 2025 cron
每分钟定期执行的配置文件
———- 1 root root 29 Mar 11 2025 dir
———- 1 1826 1829 838583 Feb 21 2016 h64
———- 1 root root 7 Mar 19 2025 pid
———- 1 1826 1829 181 Jun 28 2021 run
执行当前目录下的 h64 可执行文件,参数 -s $HIDE(即 -s sshd),并把 ./run64 当作参数/子进程传给 h64
———- 1 1826 1829 4628605 Apr 20 2020 run64
———- 1 root root 13352 Feb 7 2025 update
访问并可能修改 /etc/ld.so.preload(多次访问),即植入恶意共享库以在程序加载阶段进行注入与钩子;这是高危持久化/注入技术。频繁调用 chattr/对 /usr/bin/chattr 或重要文件设置不可变,从而阻止系统工具被覆盖或卸载(我尝试了 apt 升级 e2fsprogs 失败)。创建只读或不可变占位文件以阻止普通脚本再写回原位置(在可移动失败时尝试保护自身复制品)。删除 pid 文件(rm -rf pid),清除运行痕迹或防止外部守护检测。
日志擦除与掩盖痕迹:使用 timeout 5 sed -i ‘/X11/d’ … 与 sed -i ‘/PATH=/d’ … 对多份日志文件(/var/log/messages, /var/log/syslog, /var/log/auth.log, /var/log/cron 等)进行行删除,意在清除包含关键痕迹的日志行。重复调用 fchmod 或修改日志文件模式,改变权限以阻止或影响后续读取(并记录到审计/跟踪里)。创建/修改临时日志名(例如 /var/log/sedi0sJvI)并对其做 fchmod/写入,表明在擦除同时尝试隐藏行为或使用临时文件作为掩护。
枚举网络、寻找通信通道与目标:读取 /proc/net/tcp, /proc/net/tcp6, /proc/net/udp 来枚举当前 TCP/UDP 会话和端点。使用 ss/netstat/grep EST 来查看监听与 ESTABLISHED 连接,定位现有的外联。用 grep 正则批量搜索日志/文件中是否含有一系列硬编码的 IP 与域名(多个 C2/IOC,如 5.250.178.69、sshd.run、pci.sh 等),以发现历史连接或可用的 C2 列表。基于端口模式(:21、:6667、:8080、:80、:443、http、irc 等)查找可能的服务/传播入口。
启动/构建与运行 payload:在可疑目录执行 make clean / make,说明程序可能含源码并会本地编译可执行文件(自编译变种)。运行 ./run、./update 等可执行文件,并用 sleep 控制节奏,表明其会周期性启动 payload。使用 dirname、sleep 等工具处理路径与控制流程。
cron
/var/spool/cron/crontabs/root, 2025 Mar 11植入
1 | /var/spool/cron/crontabs/root:4:* * * * * (cd /usr/games/.mozilla/.mozilla && PATH=:$PATH ; nohup update >/dev/null 2>&1 &) |
隔离
病毒使用自签证书进行通信,创建了cert.pem
与cert_key.pem
已经隔离;同时config.json
中使用了两个域名+一个IP地址作为poolIP地址为212.227.231.142
,服务器在西班牙,查看web测绘工具找到其除了常见端口外开放了8443
,7000
,1002
端口,其中8443
服务使用自签证书与服务器上的cert
签名一致。
查询WHOIS信息openssh.run
是一个私人注册的域名,域名注册者在凤凰城,应该是外国的自动扫描攻击。服务器用DNS负载均衡,分配到两台服务器上,一台在英国194.164.95.116:80
负责80端口,但是应该是HTTPs-over-80,证书与自签证书签名一致;另一台在德国217.160.79.44:443
,负责443端口,同样HTTPs证书通信,证书与自签名证书一致。
证书内容如下:
1 | Certificate: |
现在查看应该已经没有相关的cron、进程和socket连接了。/usr/local/libexec/.X11
伪装目录下通信使用的证书已经移除,/usr/games/.mozilla/.mozilla
路径下的所有文件全部隔离到/usr/games/.mozilla.backup
中。现在就算启动应该也会直接报错无法正常执行了。编译后的文件还留着,可以未来逆向。