IntelAMT 固件密码绕过登录漏洞分析与实战
IntelAMT 固件密码绕过登录漏洞分析与实战
Byantian365.com simeon
1.1漏洞简介
2017年5月1日,英特尔公布了AMT漏洞(INTEL-SA-00075),但该漏洞的细节未公开。2017年5月5日,Tenable公司研究人员卡洛斯·佩雷斯通过分析LMS软件包,最终发现并成功利用该漏洞。
1.漏洞编号
IntelAMT 固件密码绕过登录漏洞CVE漏洞编号CVE-2017-5689;Intel AMT 固件可以配置英特尔可管理性SKU:英特尔主动管理技术(AMT)和英特尔标准可管理性(ISM)。换句话说可以通过安装LMS软件包来管理硬件,提供Web访问接口。无特权网络***者可以获得系统权限,可以添加管理员帐号,可以更改网络设置,可以远程重启计算机等。
AMT是一款可通过设备的有线以太网接口网络端口16992访问的带外管理工具:它将系统的完全控制暴露到网络,允许IT人员和其它系统管理员远程重启、修复并轻微调整服务器和工作站。它能够提供一个虚拟串行控制台和(如果安装的是正确的驱动)远程桌面访问权限。在获取权限之前应该要求提供密码,但是上述提到的漏洞意味着***者能够***硬件的控制面板。即使已经为系统的AMT访问权限设置了防火墙,但在用户网络上的***者或恶意软件仍然能够利用这个漏洞进入AMT管理的工作站和服务器并进一步攻陷企业。
2.受影响系统
受影响的硬件版本6.x,7.x,8.x ,9.x,10.x,11.0,11.5和11.6:
第一代 Core family: 6.2.61.3535
第二代 Core family: 7.1.91.3272
第三代Core family: 8.1.71.3608
第四代Core family: 9.1.41.3024 and 9.5.61.3012
第五代Core family: 10.0.55.3000
第六代Core family: 11.0.25.3001
第七代Core family: 11.6.27.3264
3.***场景
(1)可以直接关闭服务器电源
(2)通过加载img镜像文件重启系统,运行指定系统。
(3)直接修改BIOS
(4)通过KVM进行管理
4.漏洞利用原理
AMT登录管理中通过response_length值来进行判断,也即关键代码:
if(strncmp(computed_response,user_response, response_length))
deny_access();
这个标准函数仅仅比较两个字符串中每一个的response_length字节,看看它们是不是一样,加以比较的两个字符串是试图登录所发送的验证响应(user_response)和服务要求的响应(computed_response)。如果两者相符,密码肯定对的,所以该函数返回零,代码继续授予访问权。如果两个字符串不一样,该函数返回值是非零,这意味着密码不对,所以拒绝访问。所以如果提供的是空字符串,长度为零,没有字节被检查,因而没有字节是不一样的;不出所料,strncmp()返回零,表明验证成功。因而,空的响应字符串被认为有效而被放行,实际上明明是无效的,因此通过修改response的所有值为空,即可绕过验证进行登录。
1.2漏洞利用还原
1.搜索端口号
存在该漏洞对外提供的端口为16992、16993和623,可以借助zoomeye和shodan等搜索引擎搜索“port:16992”、“port: 16993”和“port: 623”来获取,为了更加精准收集目标信息,可以可以增加关键字IntelActive Management Technology,如图1所示,直接搜索IntelActiveManagement Technology country:China country:China port:16992。
图1搜索存在端口的服务器
2.查看是否正常运行web服务器
在搜索结果中对存在二个正方形的图标的记录进行查看,例如直接单击打开“118.150.17.193”搜索结果记录地址“http://118.150.17.193:16992/logon.htm”如图2所示,网站能够正常运行。
图2查看AMT服务是否正常运行
3.修改burpsuite设置
运行burpsuite后,单击“Proxy”-“Option”,在“Match andReplace”中新建或者编辑Request Header条目,Match值为response\s*="[0-9a-f]+",Replace 的值为response="",设置如图3所示,在拦截(Intercept)中设置拦截开关为“Interceptis On”。
图3修改burpsuite设置
4.使用admin登录
回到浏览器中(一定要设置IE代理为127.0.0.1代理端口8080),单击“Log On”进行登录,用户名输入admin,密码随便输入。
图4使用admin进行登录
5.成功登录AMT管理界面
在burpsuite的Intercept中,单击“Forward”进行放行,如图5所示,成功登录AMT管理界面,在该界面中可以看到电源的状态是休眠,IP地址,无线IP地址,系统ID等信息,还可以查看系统、处理器、内存、磁盘和电源等详细情况。
图5登录AMT管理界面
6.远程重启系统
单击“Remote Control”(远程控制),如图6所示,可以进行常规启动,从光盘启动,从硬盘启动,甚至直接关闭电源!对于重要的系统,一旦关闭电源,其后果可以想象一下!
图6远程控制系统
7.用户帐号管理
单击“User Accounts”,在其中可以新建用户,修改用户密码,删除用户以及更改管理员,如图7所示,还可以设置管理员的权限级别。添加用户其密码强度有要求,要求最少8位,密码为字母大小写,数字和特殊字符组成,如图8所示,否则无法添加成功。
图7用户管理
图8修改密码
8.使用Nmap对目标IP进行全TCP端口扫描
使用Nmap对目标IP进行全TCP端口扫描的结果表明,存在16992、16994和623端口。如图9所示,跟Tenable公司研究提出的端口16992、16993和 623有所出入。
1.3 kali平台下msf利用
直接运行msf,然后使用以下模块进行测试:
use auxiliary/scanner/http/intel_amt_digest_bypass
msf auxiliary(intel_amt_digest_bypass) >show actions
msf auxiliary(intel_amt_digest_bypass) >set ACTION <action-name>
msf auxiliary(intel_amt_digest_bypass) >show options
msf auxiliary(intel_amt_digest_bypass) >run
1.4安全防范
1.扫描
Tenable公司已经在Nessus中更新最新脚本,使用该扫描器的朋友可以更新其Scripts即可。对其它扫描器,可以增加扫描端口16992、16993、16994和623端口。一旦开启通过手工访问进行判断。
2.加固
在防火墙上关闭16992、16993、16994和623端口,等待intel公司提供升级补丁后更新固件或者升级。
1.5参考文章
(1)https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5689
(2)https://threatpost.com/researcher-baseless-assumptions-exist-about-intel-amt-vulnerability
/125390/
(3)https://www.tenable.com/blog/rediscovering-the-intel-amt-vulnerability
(4)https://www.embedi.com/files/white-papers/Silent-Bob-is-Silent.pdf
(5)https://www.rapid7.com/db/modules/auxiliary/scanner/http/intel_amt_digest_bypass