首页 > 系统相关 >【权限维持】Linux下的几种隐藏技术

【权限维持】Linux下的几种隐藏技术

时间:2023-07-15 22:12:39浏览次数:36  
标签:-- 端口 复用 命令 Linux 权限 隐藏

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 [email protected]
#关闭复用
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,权限,隐藏
From: https://www.cnblogs.com/websec80/p/17557064.html

相关文章

  • linux 中 asprta 软件的安装
     001、下载软件:官网:https://www.ibm.com/aspera/connect/ 002、上传至linux系统中并安装tar-xzvfibm-aspera-connect_4.2.6.393_linux_x86_64.tar.gzbashibm-aspera-connect_4.2.6.393_linux_x86_64.sh 003、 ......
  • linux 中gz文件解压的同时保留源文件
     001、[root@PC1test01]#ls##测试文件a.txt.gz[root@PC1test01]#gzip-dca.txt.gz>a.txt##解压,同时保留源文件[root@PC1test01]#lsa.txta.txt.gz[root@PC1test01]#cata.txt12345678910。  ......
  • linux 中 md5sum -c选项
     001、[root@PC1test01]#ls[root@PC1test01]#seq5>a.txt;seq3>b.txt##生成测试数据[root@PC1test01]#lsa.txtb.txt[root@PC1test01]#md5sumb.txt>md5.txt##生成b.txt的MD5值[root@PC1test01]#lsa.txtb.txtmd5.txt[root......
  • 系统权限管理
     用户、角色、菜单三者之间的关系  认证与鉴权  角色鉴权 SpringSecurity的引入引入的话在登录页面前就会就如SpringSecurity的主页面,要求输入用户名、密码所以,要对SpringSecurity进行改造来符合我们的需求 编写SpringSecurity配置类 登录的判理逻辑 ......
  • linux 批量生成文件 随机数据
    seq20|xargs-iddif=/dev/urandomof=$(date+"%Y%m%d_%H%M%S"){}.databs=102400count=1#随机生成20个100K数据文件,文件名字为“日期时间_序号.data”nohupseq100000|xargs-iddif=/dev/zeroof={}.databs=102400count=1>>/dev/null2>&1&#加上后台运......
  • Eyoucms安全设置教程(目录权限设置)
    大致整理易优cms的网站目录权限设置如下,此教程仅供参考,如有问题欢迎反馈纠正。【安装环境】1、推荐采用apache服务器环境,官方已经内置一些限制执行脚本的权限,分别在各自文件夹的 .htaccess里,比如:图片上传目录2、如果是用nginx服务器环境,可以参考.htaccess文件对nginx做限......
  • 角色权限回显
    1.提交表单刷新即清空2.实现getRoleById因为上一张那个表为空,所以失败了......
  • [转]Linux终端更改字体(一般用来针对高分辨率屏幕使用大字体)
    原文地址:Linux终端更改字体-知乎1概述这里的终端是指通过F1-F6/F2-F7进入的纯命令终端。修改字体可以通过setfont命令。2查看字体可以通过查找目录consolefonts来确定本地机器上的字体位于哪里:find/-nameconsolefonts-typedupdatedblocateconsolefonts比如......
  • 角色权限设置显示
    1.树形控件点击查看代码<el-tree:data="data":props="defaultProps"@node-click="handleNodeClick"></el-tree>2.角色信息编辑对话框3.定义menuProps取的是表里的title字段menuList需要被定义写一个查询复制一个menuManage出来点击查看代码importrequ......
  • Linux下相对路径和绝对路径
    绝对路径cd/home/gyd/Desktop相对路径cdDesktop  特殊路径符1).表示当前目录2)..表示上一级目录3)~表示HOME目录......