一切的起因是在我大半夜3点被一条腾讯云的告警短信吵醒的,由于学生云快到期又没办法续费的情况下,各种捣鼓重装,玩各种环境,方便起见都设的弱密码,结果大半夜的就被人爆出来密码然后挂了个挖矿jio本,作为一个(弱)安全研究人员,被打了当然不能就这么算了,所以稍微溯源了一下
溯源(day1)
最开始我除了修改了服务器的密码没有做任何的措施,所以被很轻松的入侵进来,等我看到腾讯云的告警上线查看时,原来的密码已经登录不上了
这时靠着腾讯云的重置密码把密码改回来才登录上服务器
接着就是查看告警的~/.bashtemp
路径
我们能得到这样的一个目录结构
执行top指令会发现有一个占了你99%cpu的cron在跑
先进.bashtemp
看看里面的
一级目录下只有对应对应的绝对路径和定时任务脚本
然后a
目录下就是很平淡无奇的挖矿脚本,启动、停止脚本
比较有点东西的在b
里的run
大概能猜到这是一个perl写的后门并base64加密过了,然后下面rm -rf .ssh
的操作也让我们知道为什么原先已加过authorized_keys的机子没办法直接登录
然后我们稍微把perl后门base64解一下,然后发现还有perl混淆
解下混淆我们就能看到对应的后门源码了
然后发现了个ip,稍微查了下来自欧盟,但这范围也太大了,我不喜欢,于是我就接着去有没有相关信息,最终在netstat里发现有个未知ip连着ssh端口就稍微查了一下
感觉像是个管理后门的服务器(当时域名还无法加载,在写的时候又去看了看发现已经挂上Univention Corporate Server)
由于这个主机只连上了一会,所以没来得及截图(可惜)
之后连的ip就只有perl后门所指定的ip了,当时差不多凌晨三四点了,实在顶不住就去睡了
蜜罐搭建(day2)
只有被打完的结果却不知道怎么被打的,进来后怎么操作的,所以试了一波蜜罐搭建来请君入瓮
这里我选择的是用cowrie来搭建,为了查看日志方便就不用docker,直接按文档来安装
(本人环境为ubuntu18.04)
step 1(安装依赖)
sudo apt-get install -y git python-virtualenv libssl-dev libffi-dev build-essential libpython-dev python2.7-minimal authbind
step 2(新建蜜罐用户)
sudo adduser --disabled-password cowrie
sudo su - cowrie
step 3(把cowrie项目 git下来)
git clone http://github.com/cowrie/cowrie
step 4(切换到项目根目录&&安装虚拟python环境)
cd ~/cowrie
virtualenv --python=python3 cowrie-env
此时终端应该变成类似(cowrie-env) $
的样子
如果没有请在bash下重新操作试试
step 5(进入虚拟环境里安装好对应的库)
source cowrie-env/bin/activate
pip install --upgrade pip
pip install --upgrade -r requirements.txt
step 6(修改配置文件)
这里由于只是要收集由ssh手段进入服务器的操作所以只要修改[telnet]
下的false为true就行了
cd etc
cp cowrie.cfg.dist cowrie.cfg
step 7(启动环境)
./cowrie start
step 8(修改ssh默认端口&&转发端口)
注意:这里要先切root账户再进行以下操作
先打开/etc/ssh/sshd_config
找到Port 22
修改22为你想要的端口,然后重启ssh服务
再通过sudo netstat -tunlp | grep ssh
来查看是否修改成功
sudo service ssh restart
sudo netstat -tunlp | grep ssh
然后将2222
端口的流量转发到22
sudo iptables -t nat -A PREROUTING -p tcp --dport 2222 -j REDIRECT --to-port 22
然后蜜罐到这里就算是搭建完成了,等鱼上钩
日志审计(day3)
鱼儿上钩的总是那么快,直接把工具都扔上来了
我们本着研究的态度拿来看看
大概就是这个文件包没跑了,锁定这个ip看看还干了些啥
该说不愧是想要挖矿的,上来就是找cpu核数
这里解释下这个指令的意思,chpasswd是批量更新用户口令的一个指令,这里被用于更改root用户本身的密码
紧接着对方就开始收集服务器的mem状态了
然后也不知道干嘛查看了ls的路径和状态
然后就是安装矿包的过程了
不过在这之中看到了熟悉的删.ssh目录并添加authorized_keys的操作,证明了我们最初的猜想应该算正确的
然后我们简单的看下攻击包的安装
实际上是通过init和init2来保证挖矿程序的权限维持以及定时任务的写入
然后我们对anacron文件进行查看,能发现对方钱包地址,稍微查了下之前并没有出现过,可能是某个新团队在进行攻击
结语
第一次被人黑进来种挖矿木马,处理的方式反思了一下还能再好一点,不过在这途中也学到了不少取证相关的知识和技术,也学会了蜜罐的搭建,总的来说还是受益良多的