Linux Persistence - Hidden Part

本文主要介绍了Linux下的几种隐藏技术,包括隐藏文件、隐藏权限、隐藏历史操作命令、端口复用、进程隐藏等方面的技巧。

攻击者在获取服务器权限后,会通过一些技巧来隐藏自己的踪迹和后门文件,本文介绍Linux下的几种隐藏技术。

隐藏文件

Linux 下创建一个隐藏文件:touch .test.txt

一般的Linux下的隐藏目录使用命令ls -l是查看不出来的,只能查看到文件及文件夹,查看Linux下的隐藏文件需要用到命令:ls -al

这里,我们可以看到在/tmp下,默认存在多个隐藏目录,这些目录是恶意文件常用来藏身的地方。如/temp/.ICE-unix/、/temp/.Test-unix/、/temp/.X11-unix/、/temp/.XIM-unix/

隐藏文件时间戳

Unix 下藏后门必须要修改时间,否则很容易被发现,直接利用 touch 就可以了。

比如参考 index.php 的时间,再赋给 webshell.php,结果两个文件的时间就一样了。

利用方法

touch -r index.php webshell.php

或者直接将时间戳修改成某年某月某日。如下 2014 年 01 月 02 日。

touch -t 1401021042.30 webshell.php

隐藏权限

在Linux中,使用chattr命令来防止root和其他管理用户误删除和修改重要文件及目录,此权限用ls -l是查看不出来的,从而达到隐藏权限的目的。

这个技巧常被用在后门,变成了一些难以清除的后门文件,令很多新手朋友感到头疼。

隐藏历史操作命令

在shell中执行的命令,不希望被记录在命令行历史中,如何在linux中开启无痕操作模式呢?

技巧一:只针对你的工作关闭历史记录

上面的命令会临时禁用历史功能,这意味着在这命令之后你执行的所有操作都不会记录到历史中,然而这个命令之前的所有东西都会原样记录在历史列表中。

要重新开启历史功能,执行下面的命令:

技巧二:从历史记录中删除指定的命令

假设历史记录中已经包含了一些你不希望记录的命令。这种情况下我们怎么办?很简单。通过下面的命令来删除:

输出历史记录中匹配的命令,每一条前面会有个数字。从历史记录中删除那个指定的项:

这种技巧是关键记录删除,或者我们可以暴力点,比如前150行是用户的正常操作记录,150以后是攻击者操作记录。我们可以只保留正常的操作,删除攻击痕迹的历史操作记录,这里,我们只保留前150行:

隐藏远程SSH登陆记录

不记录ssh公钥在本地.ssh目录中

端口复用

通过端口复用来达到隐藏端口的目的,在Linux下,如何实现端口复用呢?

第一种方式:通过SSLH在同一端口上共享SSH与HTTPS

第二种方式:利用IPTables进行端口复用

利用方式:

远程遥控 IPTables 进行端口复用

进程隐藏

管理员无法通过相关命令工具查找到你运行的进程,从而达到隐藏目的,实现进程隐藏。

第一种方法:libprocesshider

github项目地址:

Not found

利用 LD_PRELOAD 来实现系统函数的劫持,实现如下

测试:运行 evil_script.py

此时发现在top 与 ps 中都无法找到 evil_script.py, cpu 使用率高,但是却找不到任何占用cpu高的程序。

如何在Linux中发现隐藏的进程,

unhide 是一个小巧的网络取证工具,能够发现那些借助rootkit,LKM及其它技术隐藏的进程和TCP / UDP端口。这个工具在Linux,UNIX类,MS-Windows等操作系统下都可以工作。

下载地址:

使用unhide proc发现隐藏进程evil_script.py,如下图所示:

第二种方法:进程注入工具linux-inject

linux-inject是用于将共享对象注入Linux进程的工具

github项目地址: https://github.com/gaffe23/linux-inject.git

验证进程注入成功,如下图所示:

Cymothoa是一款隐秘的后门工具。它通过向目标主机活跃的进程注入恶意代码,从而获取和原进程相同的权限。该工具最大的优点就是不创建新的进程,不容易被发现。

下载地址:

参考文章:

Tiny Shell

这款工具通过在源码中设置PROCESS_NAME为bash,以使得其运行后的进程名显示为bash。 在恶意代码中通过设置具有迷惑性的进程名字,以达到躲避管理员检查的目的。

Not found

参考文章:https://www.freebuf.com/sectool/138350.html

mount-bind

利用mount —bind 将另外一个目录挂载覆盖至/proc/目录下指定进程ID的目录

聊一聊Linux下进程隐藏的常见手法及侦测手段

反入侵之发现后门利用mount-bind将进程和端口信息隐匿

Linux 共享库注入后门

linux 进程注入后门工具Cymothoa

如何隐藏你的 Linux 的命令行历史

利用sslh实现端口复用

远程遥控 IPTables 进行端口复用

Venom 多级代理工具

linux 下隐藏进程的一种方法及遇到的坑

如何在 Linux/Unix/Windows 中发现隐藏的进程和端口

最后更新于

这有帮助吗?