被攻击后,第一优先级不是重装系统,而是立刻核对系统账户和权限,大多数隐蔽后门都以看似正常的账户形式存在,等你重装完,攻击者可能早就通过这个账户重新掌控了机器。
被攻击后为什么第一件事是核对账户
攻击者拿到服务器权限后,通常会在几分钟内建立一个备用账户,这个账户可能伪装成普通用户名,比如helper、support、svc-oms,或者用当前机器已有用户名的变体。业内专家指出,多数持久化后门都依赖账号体系,单纯清毒并不能杀死后门,只有把账户层面的漏洞堵死,才谈得上安全,账户核对是整个应急响应的起点。
攻击者惯用的账户型后门手法包括以下几种。
- 新建一个普通用户,然后将其加入管理员组或sudo组,隐藏真实权限。
- 给现有账户追加额外权限,比如把一个标准用户添加到远程桌面组。
- 向
~/.ssh/authorized_keys里写入攻击者的公钥,实现免密登录。 - 在计划任务或开机启动项里挂一个定时脚本,脚本内容就是创建新账户,即使你手动删了,过几分钟它还会重新出现。
这些手法单独看都不难识别,难的是很多人根本不会去查,你只盯着网页文件、恶意进程和异常流量,却漏掉了系统账户这个最直接的入口。
如何检查系统账户是否被添加后门
检查的目的是建立信任基线,确认看到的每个账户都是自己认识的,这个方法对Windows和Linux都适用,你就把当前系统里所有能登录的账户全部列出来,一个一个跟之前的记录比对。
Windows系统账户排查路径
以管理员身份打开命令行或PowerShell,依次执行以下操作。
net user列出全部用户,重点留意近期创建、名称陌生或拼写可疑的账户。net localgroup administrators查看管理员组成员,对比名单是否与预期一致。wmic useraccount get name,sid,disabled,status查看账户状态和SID,如果某个账户SID后缀是-500但用户名不是Admin,说明管理员账户被篡改。- 打开“计算机管理”里的“本地用户和组”,逐一点开查看属性,确认“隶属于”选项卡里没有异常组。
- 在“事件查看器”中筛选安全日志,事件ID为4720的记录代表账户创建,4728和
4732
分别代表将成员加入安全组和管理员组,重点核查这些事件发生的时间是否与入侵时间点吻合。
Linux系统账户排查路径
在终端执行下面这些命令,操作同样直白。
cat /etc/passwd查看所有账户,重点关注/bin/bash或/bin/sh结尾的行,系统服务账户通常对应/sbin/nologin或/bin/false,凡是能用shell登录的账户都必须逐一确认。awk -F: '$3==0 {print $1}' /etc/passwd找出所有UID为0的账户,正常情况下输出应该只有root一个。awk -F: '$2=="" {print $1}' /etc/shadow检查是否存在空密码账户,这项需要root权限。cat ~/.ssh/authorized_keys查看SSH授权公钥,如果里面出现你从未见过的密钥,说明攻击者已经拿到免密登录入口。last和lastlog查看登录历史和每个账户最近一次的登录时间,异常登录IP和时间段都能从这里发现端倪。
Windows和Linux排查命令对比见下表,方便你在不同机器上快速切换。
| 排查动作 | Windows命令 | Linux命令 |
|---|---|---|
| 列出所有账户 | net user |
cat /etc/passwd |
| 查看管理员组 | net localgroup administrators |
grep -e '^sudo' /etc/group |
| 检查空密码 | 在本地用户管理中逐项查看 | awk -F: '$2=="" {print $1}' /etc/shadow |
| 查看免密登录入口 | 不适用 | cat ~/.ssh/authorized_keys |
| 排查账户创建记录 | 事件ID 4720 | grep 'useradd' /var/log/secure |
登录日志是判断当前账户是否已经被攻击者使用过的直接证据,如果发现某个账户在深夜两点有过登录记录,而你当时正在睡觉,这个账户大概率已经被控制。
被入侵后如何彻底清除账户层面的隐藏后门
确认异常账户后,不要急着删除,先做证据留存,再执行清理,最后加固收尾。
先备份证据再动手
在删除或禁用任何账户之前,备份如下数据。
- 该账户的完整属性信息和所属组列表,Windows下用导出的方式保存截图或文本,Linux下直接复制
和/etc/passwd
/etc/shadow相关行。 - 受影响机器的系统日志,Windows导出安全日志,Linux复制
/var/log/secure和/var/log/auth.log。 - 计划任务列表、启动项和SSH公钥文件,这些都是判断后门行为的重要依据。
证据备份完成后,进入清理环节。
禁用并移除异常账户
Windows下先执行net user [用户名] /active:no禁用账户,确认不影响业务后再删除。
net user [用户名] [随机强密码]修改密码,阻断攻击者继续使用。net localgroup administrators [用户名] /delete将其从管理员组移除。net user [用户名] /active:no禁用账户。- 后续确认无业务关联时,使用
net user [用户名] /add配合右键删除,或直接在“本地用户和组”中执行删除操作。
Linux下先用usermod -L [用户名]锁住账户,再逐个清理相关联的权限记录。
usermod -L [用户名]封锁账户,使其无法登录。usermod -G [] [用户名]清空附加组,将账户退回到无权限状态。awk -F: '/[用户名]/ {print}' /etc/passwd确认账户记录仍然存在,保留观察一段时间。- 确认无后患后执行
userdel -r [用户名]连带删除其家目录。
清理后门的再生机制
只删除账户远远不够,如果计划任务或启动项里还留着创建账户的脚本,被删掉的账户很快会回来。
- Windows下运行
schtasks /query /fo LIST查看当前机器上的计划任务,再打开注册表编辑器,检查HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun和RunOnce这两个键值,删除可疑的异常启动项。 - Linux下检查
/etc/cron.d/、/var/spool/cron/目录,以及root和当前用户的crontab -l输出,另外不要漏掉/etc/rc.local和~/.bashrc里的恶意加载项。
清除SSH免密后门
在Linux机器上,清点authorized_keys里的每一条公钥记录,只保留你自己创建的部分,操作时先备份原始文件,然后用vim逐行删除可疑密钥,最后重启sshd服务让变更生效。
清理完成后的账户安全加固
清除动作结束后,进入最耗耐心但最关键的一步:加固。
- 强制所有本地账户在下次登录时修改密码,Windows组策略中勾选“用户下次登录时须更改密码”,Linux执行
chage -d 0 [用户名]。 - 为管理员账户启用二次验证,Windows支持内置的Windows Hello或第三方MFA工具,Linux可以配置PAM插件实现双因素认证。
- 配置登录IP白名单,Windows防火墙只允许可信IP访问远程桌面端口,Linux的
/etc/hosts.allow中加入可信地址,/etc/hosts.deny禁止其余所有来源。 - 为Linux服务器安装
fail2ban,连续多次密码失败后自动封锁来源IP,这能挡住相当一大批批量扫描攻击。 - 配置登录告警,Windows开启安全日志审核策略,Linux通过
auditd监听关键文件改动,异常行为直接推送邮件。
行业共识认为,账户加固的核心是阻断攻击者重来的路径,只要重置了密码、收紧了权限、封堵了入口,就能大幅降低再次被入侵的风险。
被攻击后服务器账户安全相关FAQ
被攻击后必须重装系统吗?
如果服务器被攻击者获取了高权限,且无法确认其是否替换了系统核心文件或启动加载项,重装系统是最保险的彻底清除方案,流程上应先把日志和应用数据备份出来,再做磁盘格式化和操作系统重新部署,最后恢复数据时先扫描已知后门特征。
检查到异常账户但不确定是否可以删除怎么办?
先锁定该账户而不是直接删除,Windows下执行net user [用户名] /active:no,Linux下执行usermod -L [用户名],观察一周业务是否受影响,同时监控该账户的登录尝试和文件访问记录,确认无业务依赖后再执行删除操作。
怎么通过日志判断账户是否被异地登录?
Windows查看安全日志中的登录事件ID 4624,重点记录登录类型为3的网络登录,以及登录进程和来源IP字段,Linux查看/var/log/secure中Accepted publickey for ... from和Failed password for ... from这两行记录,对比来源IP是否位于你常驻的城市或机房,异常登录的IP、时间和操作命令组合在一起,是判断账户被控的核心依据。
被攻击后,账户核对是应急响应的发令枪,每一次权限变更、每一轮密码重置、每一处加固配置,都要追着攻击者的路径走一遍,把账户这个最基础的入口守住了,攻击者的后门就没有生根的土壤。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/651854.html




