跳转至

常见问题的解决方法

0x01 文件无法删除

evil.sh文件 为例,下列提到的方法都是在常规 rwx 权限满足条件后依旧无法删除文件的情况

1. 文件被进程占用

lsof evil.sh 

2. 文件存在隐藏属性

lsattr evil.sh

image-20230427002008989

一般导致无法删除的隐藏属性有两种 ai

可以像图中一样使用下列命令进行取消

chattr -a evil.sh
chattr -i evil.sh

3. 文件上层目录存在 SBIT 权限

这种情况只存在于非 root 权限去删除其他用户创建的目录的情况,即使文件权限是 777也无法进行删除

以非 root 用户 join 删除 test1 用户创建的 /tmp/test1_dir/test1.txt 为例

image-20230427003700469

0x02 netstat -pantu pid处显示 -

1. 存在隐藏挂载

有些时候 netstat -pantu 显示 pid 处显示为 -

image-20230427005133559

可能是使用了下面的方法隐藏

  • mkdir .hidden
  • mount -o bind .hidden /proc/PID

这种情况可以使用 cat /proc/$$/mountinfo 来查看挂载信息

image-20230427005225645

通过 umount /proc/PID 来取消挂载就好了

image-20230427005405286

2. 权限不够

部分场景下,权限不够时也会显示 -

3. 进程刚刚释放

这是一种巧合情况,进程刚刚释放,在这一小段时间恰巧被大家捕捉到了,就可能显示为 -

0x03 ps、top 等工具无法看到恶意进程

1. 通过挂载进行了隐藏

有些时候 ps、top 无法发现恶意进程

image-20230427005649583

image-20230427005708491

可能是使用了下面的方法隐藏

  • mkdir .hidden
  • mount -o bind .hidden /proc/PID

这种情况可以使用 cat /proc/$$/mountinfo 来查看挂载信息

image-20230427005225645

通过 umount /proc/PID 来取消挂载就好了

image-20230427005753241

2. ps、top 命令被替换

检查系统完整性 (参考 小技巧章节 -> 0x04 系统完整性检查)

将携带的 busybox 程序拷贝至受害系统中进行相关查询

image-20230427010626027image-20230427010714451image-20230427010658417

3. LD_PRELOAD 等方法共享库劫持

image-20230427010953641

可以看到,pstop 都不是 bash 内置命令,而且都是动态链接的文件,因此会受到 LD_PRELOAD 这类共享库劫持的影响,可以通过 busybox来实现 pstop

image-20230427011327420

image-20230427010626027image-20230427010714451image-20230427010658417

0x04 终端出现乱码

img

这里分为两种情况

  • ssh 连接或者物理本地连接就是乱码
  • 打开二进制文件等出现乱码,原本是正常显示的

对于第一种情况,大概是语言显示问题,可以考虑更改语言显示,这个要让客户现场工作人员进行调整,属于是危险行为,所以这里也不给出具体的命令

第二种情况就比较常见了,在排查过程中很可能因为误读二进制文件导致终端乱码,可能出现提示符乱码、输入内容乱码、输入内容不可见等

如果再次获取一个终端环境,例如 ssh 或者本地打开终端非常方便,那就重新打开即可,如果再去获取终端环境较为困难,可以尝试以下方法

注意,即使输出不可见或乱码也不要担心,正常输入即可

1. reset

reset

reset 命令可以重置终端的设置,这意味着当前终端之前执行的命令会丢失,即通过上/下按键能够快速获取的命令

2. stty sane

stty sane

stty sane 命令可以将终端设置恢复到常规模式

执行 resetstty sane 命令通常不会影响 Bash 的配置文件(如 .bashrc.bash_profile 等),这些命令主要作用于当前终端会话的显示和输入输出设置。具体来说:

reset 命令

  • 不会影响 Bash 配置文件reset 命令不会修改或删除任何配置文件。它只是重置当前终端的状态,包括清除屏幕、重置颜色和光标位置等。
  • 重置终端状态:它会重置终端的显示模式和其他设置,但不会影响到 Bash 的配置。
  • 命令历史记录:虽然 reset 命令可能会清除当前屏幕上的命令历史显示,但不会影响 Bash 内部维护的命令历史记录文件(如 .bash_history)。

stty sane 命令

  • 不会影响 Bash 配置文件stty sane 命令也不会修改或删除任何配置文件。它只是将终端的各种设置恢复到默认的“正常”模式。
  • 恢复终端设置:它主要恢复终端的输入输出设置,如启用回显、启用特殊字符处理等,但不会影响到 Bash 的配置。

3. clear

clear

这个没啥可说的,能 clear 的属于是幸运情况

4. echo 字符

echo -e '\033c'

通过发送终端重置字符来恢复终端