新闻中心

    新闻中心  >  应战正当时 | 记一次供应链攻击实例分析,附企业长短期防范建议
    应战正当时 | 记一次供应链攻击实例分析,附企业长短期防范建议
    背景图 2023-08-09 19:24:35

    2023实战攻防演练今日正式开始,各企业单位是否已经做好了应战准备?

    供应链攻击作为近年来热门且有效的攻击手段,各位是否已经做好防范?

     

    有这么一个真实的案例:

    在某次大型攻防演练中,某负责国家关键信息基础建设和数据管理运营的大型企业,在做好严密的安全防护前提下,红队攻击者仍通过拿下供应链上某个供应商研发人员的测试机,从而成功拿到其重要信息系统管理员权限,获取到该目标企业的大量敏感数据,且可以随意增删改。

     

    如果是真实的黑客攻击,该企业将面临着数据泄露、系统瘫痪、业务中断、财产损失等严重后果!

    下面我们就从攻击队视角完整还原该事件,从中了解防范之道。

     

    01事件分析

    初步尝试:内网防护严密,转战信息系统

    攻击前,攻击队对该企业的外网资产进行了信息收集工作,发现该企业的防护十分严密,对外网暴露的业务系统很少,且都进行了多重安全设备防护。同时,该企业拥有完善的安全运维体系,一有风吹草动都会直接封禁攻击者的IP,如果采用常规的、正面突破的攻击手法,恐怕难以获取到目标企业的内网权限。

    于是攻击队转变思路,从原来的“外网突破-内网横向-获取目标权限”,转变为针对该企业的目标信息系统进行相关信息收集,看看是否能找到新的突破口。

     

    锁定供应链:招投标网站发现线索,确认供应商

    攻击队随即搜索该目标信息系统名字,并将搜索结果限定在目标企业管理的域名内。

    搜索发现

    搜索发现,该系统名称在某企业的招投标网站中出现,攻击队进一步检索这次招投标的最终结果,在中标公示中,确认该系统为由某供应商开发提供。为保险起见,攻击队还找到了该供应商的官网,在其示例案例中也发现了目标企业的名字。

    搜索发现

    于是攻击队初步敲定通过攻击该供应商,进一步获取目标权限的策略。

     

    攻破供应链:控制供应商云主机控制台权限

    攻击队对该供应商的外网资产进行信息收集,在信息收集的过程中,发现该供应商某个子域名下存在.git信息泄露漏洞。

    攻破供应链

    随后,攻击队通过.git信息泄露漏洞利用工具获取到了该站点的源码

    攻破供应链

    接着,攻击队对代码进行审计,过程中发现了该代码某处配置文件中,泄露了该供应商使用的某公有云OSS的AK、SK

    攻破供应链

    通过公有云利用工具使用泄露的AK、SK登录到某公有云后台,发现该AK、SK可以控制归属该供应商的数台云主机,并通过在公有云后台下发执行命令后获得了这些云主机的控制台权限。

     

    供应链内网横向:发现目标企业系统源码

    在获取到供应链部分云主机权限后,攻击队并没有急于进行内网横向,而是对这些云主机进行信息收集。经过信息收集后发现这些云主机挂载着该供应商多个业务系统,但是可惜并没有找到该目标信息系统的源码。

    但是,攻击队在这些系统的配置文件内发现该供应商的多个常用密码,于是攻击队用对应的常用密码字典,对供应商的多个C段网络进行服务探测及密码喷洒攻击,最终发现外网有多台主机使用了常用密码。

    攻击队基于密码喷洒的结果,一边进行内网横向,一边进行收集,终于,他们发现内网其中一台使用常用口令的主机为该供应商研发人员使用的测试机,里面包含该供应商开发的多套信息系统源码,其中就有本次演练目标系统的源码

     

    获取目标权限:遍历爆破,成功登录目标系统后台

    既然已经拿到目标系统的源码,攻击队马上开始进行现场代码审计,很快就发现了多个登录前的SQL注入漏洞,并且都在该供应商的同套代码的环境中测试成功。

    但是在对正式目标系统进行测试时,却被安全设备拦截,并且payload在经过多次组合变异都无法绕过安全设备的拦截,看来特征明显的攻击方式无法绕过目标严密的防守

    攻击队并没有轻易放弃,从头开始对整套源码的鉴权逻辑进行了分析,发现该系统某接口使用的JWT方式进行鉴权,在通过JWT鉴权后就会赋予用户对应的权限的session。并且,在源码内的某个配置文件中发现了JWT的加密密钥,只要知道用户名和用户id就可以构造出JWT token。

    通过代码,攻击队也了解到用户id是从1开始递增,可以通过遍历的方式进行爆破。于是攻击队开始通过对常用用户名(如:admin、test、manager等)和1-100的id进行组合生成一批JWT token字典列表,并通过burpsuite使用该列表对接口进行了低频爆破,最后成功爆破出admin用户的用户id为18,再利用该token赋予的session最终成功登录目标系统后台,并确认了admin用户的权限为管理员。

     

    最终攻击方可以通过该目标信息系统的管理员权限可以获取到该目标企业的大量敏感数据,且可以随意增删改。

     

    02事件总结

    在整个攻击事件中,不难看出该企业在安全防护上已经做得十分优秀,无论是信息收集阶段的暴露面收敛、系统的安全设备防护,还是在系统源码被拿到的情况下,利用SQL注入漏洞的攻击,都进行了成功的防守。

    但网络安全丝毫不容疏忽,由于供应商自身的安全疏漏,导致攻击队找到了跳板,最终在如此严密的布控下,该企业依然被拿下重要信息系统。

     

    03事件思考

    攻防演练中的软件供应链攻击

    在攻防演练中,常常会出现通过软件供应链攻击从而拿下目标的案例,攻击队为了在短时间内拿下目标,主要会采用以下3种手法对供应链进行攻击

    1.获取源码

    收集目标站点的供应商信息,通过攻击供应商或同源码站点获取目标系统源码,进行代码审计,最终获取目标权限;

    2.获取运维人员权限

    由于企业内网中有许多供应商提供的系统,当没有供应商的驻场人员时,企业往往需要通过提供内网远程接入方式给供应商进行运维。

    这时,攻击者会通过提前信息收集,确认目标企业的重要内网系统供应商,通过攻击供应商的运维人员,获取目标企业的VPN账号或跳板机权限,然后进一步进行内网横向获取目标权限;

    3. 升级包植入后门

    通过信息收集获取目标系统托管在供应商的升级服务器地址,通过攻击获取升级服务器权限,并在升级包中植入后门定向推送到目标系统,进而获取目标系统权限。

     

    企业防范之道

    随着国家对网络安全越来越重视,软件供应链安全也成为了国家重点关注的安全领域之一。

    软件供应链安全又包含了软件开发周期和软件运营周期,整个软件供应链又与开发人员、环境、供应商、工具等因素密切相关。软件供应链中拥有太多不稳定因素,所以,软件在开发过程中很容易被攻击者发现缺陷,最终被恶意利用导致安全事件的发生。

    在攻防演练中可以通过以下措施来减少软件供应链所带来的风险。

     

    供应链攻击防范-实战演练版

    ● 1、梳理提供给软件供应商的账号(如:VPN、零信任账号、源码仓库账号等),需要遵循最小权限范围原则,启用多重身份验证,并使用强密码;

    ● 2、梳理内网中的供应商系统,演练期间尽量使用离线更新包手动进行系统更新,不要开放外网自动更新机制;

    ● 3、对内外网系统进行全面排查,发现并整改存在高危漏洞的站点;

    ● 4、对企业内网权限进行收缩,不允许员工及供应商驻场人员同时访问内外网;

    ● 5、重点系统需要通过WAF、AF、aES、XDR等安全设备加强防护,尽可能防御攻击者通过0day进行攻击;

    ● 6、对供应商人员及员工进行安全培训,避免因为钓鱼攻击而被获取内网权限。

     

    企业不仅在攻防演练的过程中需要做好以上的安全措施,从长期来看,企业还需要密切关注软件从开发到运营的每个环节,并针对每个环节的潜在风险进行管控和消除。

    企业可以通过规划以下长期的投入来尽可能减少软件供应链风险。

     

    供应链攻击防范-长期规划版

    选择供应商阶段

    ● 1、结合企业的实际情况,构建软件供应商评估模型,指定软件供应商评估标准及安全框架;

    ● 2、根据指定的评估模型和相关标准,筛选出符合标准要求的供应商,并选出符合标准条件最多的供应商;

    ● 3、对通过标准审查的供应商进行安全风险评估,了解清楚软件供应商潜在的安全风险、存在的暴露面及有可能被外部突破的安全风险;

    ● 4、对企业内网权限进行收缩,不允许员工及供应商驻场人员同时访问内外网;

    ● 5、提供给软件供应商的账号(如:VPN、零信任账号、源码仓库账号等),需要遵循最小权限范围原则,启用多重身份验证,并使用强密码;

    ● 6、加强与软件供应商的数据共享管理机制,确保敏感数据最小权限化,并且可对数据细粒度权限进行管控,当数据泄露时可以进行溯源。

     

    企业运维阶段

    ● 1、软件开发前,针对开发人员或软件供应商做安全培训,确保SDL流程能有效实施并落地,同时根据最新的攻防形态提升研发团队的安全能力;

    ● 2、使用软件组成分析(SCA)、静态应用安全测试(SAST)和动态应用安全测试(DAST)等自动安全测试工具扫描企业内使用的源码和组件;

    ● 3、定期审视代码中使用的开源组件,不使用包含安全漏洞的开源组件版本;

    ● 4、针对企业中的源码做检视,确保代码没有被攻击人员恶意篡改。

     

    软件开发阶段

    ● 1、针对企业内使用远程办公软件的行为做限制,远控软件需启用多重身份验证和强密码,并确保使用远程办公软件的主机处于安全设备监控;

    ● 2、针对企业内的关键系统进行安全监控,避免关键系统受供应链后门影响;

    ● 3、定期扫描和修补易受攻击的系统。

     

    软件供应链安全是网络安全的关键问题之一,对保障整个软件生态的安全至关重要。企业需要对内和供应商强调软件供应链安全的重要性,提高内部和供应商的安全意识,共同维护整个软件生态的安全。

    祝各位不仅仅在本次实战攻防演练中取得好成绩,更是在日常中都能够建立一个安全、可信、可持续的软件供应链生态系统。