当前位置:首页>Linux>Linux后门应急-增加超级用户账号(后门账户排查与权限维持手法全解析)|取证分析

Linux后门应急-增加超级用户账号(后门账户排查与权限维持手法全解析)|取证分析

  • 2026-09-29 14:27:57
Linux后门应急-增加超级用户账号(后门账户排查与权限维持手法全解析)|取证分析

📢 免责声明

本文所述技术仅用于合法授权的安全研究、教学演示及防御机制开发。作者及发布平台不承担因读者误用、滥用本内容所导致的任何法律责任。请严格遵守《中华人民共和国网络安全法》及相关法律法规。

2.1. Linux后门应急-增加超级用户账号


2.1.1. 添加超级用户账号

2.1.1.1. 方法一:可以交互设置允许uid=0的用户远程登录

添加超级用户账号命令:

echo "test:x:0:0::/:/bin/sh" >> /etc/passwd #增加超级用户账号passwd test #修改test的密码为123456

在默认的情况下,root不允许远程SSH密码登录!!!(配置文件默认注释了, #PermitRootLogin prohibit-password  ,且没有PermitRootLogin yes)

/etc/ssh/ssh_config文件下的PermitRootLogin 配置项的选项  :

PermitRootLogin 配置项有几个可能的选项,决定了如何允许 root 用户远程登录:

  • PermitRootLogin yes: 允许 root 用户通过 SSH 登录,无论是使用密码还是密钥认证。
  • PermitRootLogin no: 禁止 root 用户通过 SSH 登录,无论是密码还是密钥认证。
  • PermitRootLogin prohibit-password: 允许 root 用户通过 SSH 登录,但只允许使用 SSH 密钥认证,而禁止使用密码进行登录。
  • PermitRootLogin without-password: 同上,允许通过密钥认证但禁止密码认证(这个选项与 prohibit-password 等价)。
  • PermitRootLogin forced-commands-only: 允许 root 用户通过 SSH 登录,但仅限于执行特定命令(例如,通过配置文件指定的特定命令),这是一个更为严格的安全设置。

通过vim在/etc/ssh/sshd_confgi中添加(PermitRootLogin yes),并重启ssh服务(systemctl restart ssh)即可成功远程登录root权限用户!!!

远程登录成功!!!


2.1.1.2. 方法二:可以交互当不允许uid=0的用户远程登录

echo "0xSec:x:1000:1000::/:/bin/sh" >> /etc/passwd  #增加普通用户账号passwd 0xSec  #修改0xSec的密码为123456
2.1.1.2.1.  whoami 的原理 , Linux 的真实身份判断机制  
用户名 = 可读标签UID     = 真正身份

 系统内部识别身份用的是:  

UID(User ID)

 不是字符串名字。  

默认普通用户:

kali:x:1000:1000:...

而你追加了:

0xSec:x:1000:1000::/:/bin/sh

现在 /etc/passwd 里出现:

kali:x:1000:1000:...0xSec:x:1000:1000:...

两个用户名👉 同一个 UID=1000

whoami 实际调用的是:

getpwuid(getuid())

关键点:

返回第一个匹配 UID=1000 的条目

而 /etc/passwd 里:

kali 在前0xSec 在后

所以返回:

kali

反之返回:

0xSec

2.1.1.3. 方法三:不交互无回显添加Linux密码

2.1.1.3.1. 第一种:
#centos系列:useradd hhh -u 0 -o -g root -G root|| echo "123456" | passwd --stdin hhh #创建账户hhh、密码123456且为root权限useradd hhh -u 0 -o -g root -G root|| echo "123456" | passwd --stdin hhh #创建账户hhh、密码123456且为root权限#debian/ubuntu系列:useradd hhh -u 0 -o -g root -G root|| echo "hhh:123456" | chpasswduseradd hhh -u 0 -o -g root -G root|| echo "hhh:123456" | chpasswd

2.1.1.3.2. 第二种:
#centos系列:useradd  hhh02echo "123456" | passwd --stdin hhh02#debian/ubuntu系列:useradd  hhh02echo "hhh02:123456" | chpasswd
2.1.1.3.3. 第三种:

对密码强队有要求

使用 -e 选项启用转义字符,使得 \n 可以正确表示换行符,passwd 需要两次输入密码。确保两次密码一致,才能成功更改密码。  

useradd -u 0 -o -g root -G root hhh03 |echo -e "0xSec123456\n0xSec123456"|passwd hhh03useradd -u 0 -o -g root -G root hhh03 |echo -e "0xSec123456\n0xSec123456"|passwd hhh03

2.1.2. 应急响应

2.1.2.1. 应急第一步,查找Linux下可以远程登录的账户

  1. 找有登录 shell 的用户 ( 理论上 能登录系统的账号)
awk -F: '$7 !~ /nologin|false/ {print $1}' /etc/passwd

命令解释:

① -F:

指定分隔符为冒号 :

因为 /etc/passwd 是冒号分隔格式。


② $7 !~ /nologin|false/

含义:

  • $7
     → 第7列(shell)
  • !~
     → 不匹配正则
  • /nologin|false/
     → 包含 nologin 或 false

意思是:

👉 只保留 shell 不是:

  • /sbin/nologin
  • /bin/false

的用户


③ {print $1}

输出用户名。


  1. 排除被锁定的账号 ,以下账户就是可以远程登录的账户
awk -F: '$2 !~ /^!/ && $2 !~ /^\*/ {print $1}' /etc/shadow

命令逐段解释

$2 !~ /^!/

密码字段 不是以 ! 开头


$2 !~ /^\*/

密码字段 不是以 * 开头


&&

两个条件都要满足


2.1.2.1.1. 知识拓展1: /etc/passwd 结构  和 /etc/shadow结构
  1. /etc/passwd结构

每一行结构形式:

用户名:密码占位:UID:GID:描述:家目录:登录Shell

字段编号从 1 开始:

字段号

含义

$1

用户名

$7

登录 shell

  1. /etc/shadow结构,字段之间用 冒号 : 分隔,共 9 个字段:
用户名:加密密码:上次修改密码的日期:最小密码年龄:最大密码年龄:密码过期前警告天数:密码过期后的宽限天数:账户失效日期:保留字段
2.1.2.1.2. 知识拓展2:/etc/passwd中常见登录shell类型表

Shell 路径

是否可交互登录

类型

说明

/bin/bash

✅ 可以

主流交互 Shell

默认 Shell,绝大多数发行版使用

/bin/sh

✅ 可以

标准 Shell

POSIX 标准,通常链接到 bash 或 dash

/bin/zsh

✅ 可以

增强型 Shell

功能丰富,很多安全研究员常用

/bin/dash

✅ 可以

轻量 Shell

Debian/Ubuntu 默认 /bin/sh

 指向它

/bin/ksh

✅ 可以

Korn Shell

企业系统常见

/bin/tcsh

✅ 可以

C Shell 变体

较少见

/bin/csh

✅ 可以

传统 C Shell

旧系统使用

/usr/bin/fish

✅ 可以

现代 Shell

交互体验友好

/sbin/nologin

❌ 不可登录

禁止登录

系统服务账号常用

/usr/sbin/nologin

❌ 不可登录

禁止登录

某些发行版路径不同

/bin/false

❌ 不可登录

直接退出

强制拒绝登录

空字段

❌ 通常不可登录

异常

配置错误或特殊账号

2.1.2.1.3.  如何查看系统支持哪些 Shell?  
cat /etc/shells

2.1.2.2. 应急第二步,查找特权账户

awk -F: '$3==0 {print$1}' /etc/passwd

发现除了 root 账户,还有账户:test、hhh、hhh03都有 root 权限,因为只有 root 账户是管理员自己创建的属于正常的,其它账户都不是他创建的属于可疑账户。

2.1.2.3. 应急第三步,排查异常账号是否登录过系统

2.1.2.3.1. 排查异常账号的创建时间

进入 /home 目录,一半创建账户之后,会在 home 目录下新建一个账户的文件夹,因此可以查看账户文件夹的的创建时间来确定账号创建时间

发现只有kali的

为什么攻击者喜欢把 home 写成 /

因为:

  • 不容易被注意
  • 不生成目录
  • 不留明显痕迹
  • 登录后直接在根目录

这其实是一个常见权限维持手法。


2.1.2.3.2. 排查异常账号的登录时间
last -i | grep pts/

发现在2.28、2.27有root、0xSec、test、hhh02、hhh、test多个可疑用户ssh登录

2.1.2.3.2.1. last关键字段解释:

终端类型

含义

是否 SSH

pts/x

伪终端

✅ SSH / 远程

tty1

本地控制台

❌ 本地

:0

图形界面

❌ 本机 GUI

console

本地物理终端

❌

2.1.2.3.3. 查看ssh登录失败的信息
lastb

2.1.2.4. 应急第四步,查看root账户的历史命令

history

2.1.2.5. 应急第五步,处置后门账户

  1. 首先查看当前所有的账户
  1. 执行强制删除账户的命令
userdel -f 0xSecuserdel -f testuserdel -f hhhuserdel -f hhh02userdel -f hhh03

最新文章

随机文章