此脚本旨在由具有 root 权限的用户在 F5 BIG-IP 的 Advanced Shell (bash) 中本地执行;不建议在任何其他环境中运行。注意:设备模式(Appliance Mode)不允许访问 Advanced Shell,因此该工具无法在此类系统上运行。
该脚本用于在 BIG-IP 上检查与 CVE-2020-5902 相关的失陷指标(Indicators of Compromise,IoC),这些指标在编写时已为 F5 Networks 所知。脚本汇总这些 IoC 并以报告形式呈现概览,供您参考以确定最佳行动方案。如果此工具发现任何 IoC,您应手动检查并确认,然后遵循您记录在案的疑似失陷系统处理流程。F5 的具体指导可参见 K11438344:当您怀疑 BIG-IP 系统发生安全失陷时的注意事项和指导。
注意:如果您对任何系统的完整性有任何不确定或疑虑,谨慎的做法是将该系统视为已失陷,并遵循您内部处理失陷系统的流程。另请注意,失陷系统上包含的任何信息本身也应被视为已失陷。这包括但不限于密码、私钥、数字证书、配置、日志等。
必须指出,由于时间流逝(例如日志轮转策略)或技术娴熟的攻击者清除,IoC 可能已不再存在。由于利用 CVE-2020-5902 可能以 root 用户身份执行远程代码,熟练的攻击者可以在利用后随意清除系统中的痕迹。
另请注意,攻击者可能污染系统上的任何二进制文件,包括 python。本工具已采取合理措施来避免这种情况;但是,对于任何疑似失陷的系统,您必须自行判断对该工具输出的信任程度。
在包含 sys-eicheck 的 BIG-IP 版本(13.1.0 及更高版本)上,此工具为管理员提供了将运行中的系统与原始安装 RPM 进行比对的机会,以查找任何文件修改,从而确保此工具所依赖的系统命令的完整性。请注意,无论是否具备 FIPS 功能,sys-eicheck 都可以在所有平台上运行。
在较早版本上,该工具目前不包含此功能,运行时不会检查原始安装的系统二进制文件是否被篡改。
此版本 CVE-2020-5902_bigip_ioc_checker.py 的 sha384 校验和为:ce674235744b54de3331c19a402f911c4390dbbf297643ec3eed165bda49a951f48c1be9188372de3d92dd9f28595cbb
您只应从 F5 DevCentral GitHub 仓库 下载这些文件。
请注意,有关 CVE-2020-5902 的权威信息来源始终是 F5 安全公告:K52145254:TMUI RCE 漏洞 CVE-2020-5902。
只需将 CVE-2020-5902_bigip_ioc_checker.py 文件下载到目标 BIG-IP,并使用 BIG-IP 上已有的 python 安装来运行它。
示例:
[root@hostname:Active:Standalone] tmp # python CVE-2020-5902_bigip_ioc_checker.py -h
USAGE: python CVE-2020-5902_bigip_ioc_checker.py
You can use the following options <-iajylcbwut> to skip some checks:
Option: -i or --skip_sys-eicheck
[+] Skip using the sys_eicheck utility to scan the BIG-IP system for any unexpected changes to the system software.
[+] Please refer to https://support.f5.com/csp/article/K00029945for more details about the sys-eicheck utility.
[+] The sys-eicheck utility may take several minutes to finish.
Option: -a or --skip_audit_check [+] Skip scanning the audit log for malicious activities.
Option: -j or --skip_journal_check [+] Skip scanning the journal log for malicious activities.
Option: -y or --skip_systems_check [+] Skip scanning /config/bigip_user.conf to look for malicious users.
Option: -l or --skip_alias_check [+] Skip scanning /config/bigip_*.conf for malicious alias definition.
Option: -c or --skip_catalina_check [+] Skip scanning the tomcat catalina.out log for malicious activities.
Option: -b or --skip_bigipstartup_check [+] Skip checking if /config/startup contains blacklisted words.
Option: -w or --skip_webshell_check [+] Skip checking Files created after 2020 Jun 29 in the /usr/local/www/ to look for possible webshell files.
Option: -u or --skip_autostart_check [+] Skip checking Files created after 2020 Jun 29 in /etc/ to look for the possible autostart script.
Option: -t or --skip_tmp_check [+] Skip checking Files created after 2020 Jun 29 in /tmp
Option: -p or --disable_color_print [+] Disable color print, better for saving result
Option: -q or --bigiq_cmd_check [+] Run BIG-IQ compatible malicious command check
Option: -h or --help [+] Print usage
如果 BIG-IP 由 BIG-IQ 或其他自动化/管理系统管理,它可能会收到来自 BIG-IQ 或其他自动化/管理系统的 bash 命令。某些 bash 命令嵌入了 base64 编码脚本。这些记录在 BIG-IP 审计日志中的 bash 命令可能导致 IoC 检测工具报告误报通知:"!! IoC pattern malicious bash command found"。为减少误报,您可以使用 -q 选项,使 IoC 检测工具忽略审计日志中合法的 base64 编码脚本。
升级系统可能会更新 /usr/local/www/ 中文件的时间戳,这可能导致误报,例如,如果修复后的软件是最近安装的。
如果在 /usr/local/www/、/etc/ 和 /tmp/ 中的任何文件创建日期检查返回了结果,则应检查这些文件以确定其合法性。
在升级到修复版本或应用临时规避措施后,仍有可能从 journalctl 日志中发现失陷指标。如果日志存在,请检查其时间戳,并确认它们发生在升级或应用临时规避措施之前。
# python CVE-2020-5902_bigip_ioc_checker.py -iqa
>>>> Skip sys-eicheck check
>>>> Run BIG-IQ compatible malicious command check
>>>> Skip audit log check
CVE-2020-5902 Indicators of Compromise checker. False positive reports are possible and all results should be manually verified.
[+] Version 13.1.0 Build 0.0.1868 CVE-2020-5902 Fixed: False
!! IoC pattern ['/etc/fakefile', '/etc/passwd', '/etc/fakefile1'] access denied in file /var/log/tomcat/catalina.out
!! IoC pattern ['/config/bigip_base.conf'] access denied in file /var/log/tomcat/catalina.out.1
!! IoC pattern Possible backdoor echo "<?php eval(\$_REQUEST[09ede7]);" > /usr/local/www/xui/common/css/webshell.php in file /config/startup
!! IoC pattern Possible backdoor echo "Runtime.getRuntime().exec("cmd.exe /C " + cmd);" > /usr/local/www/xui/common/css/webshell.jsp in file /config/startup
[+]========================== auto start script checking ==========================
!! Files created in /etc/ after 2020 Jun 29, need to check if those are malicious daemon startup script
95291 1 -rw-r--r-- 1 root root 0 Jul 20 14:49 /etc/rc.d/init.d/autostartbackdoor
104847 4 -rw------- 1 root root 199 Jul 13 10:46 /var/spool/cron/root
[+]================================ /tmp/ checking ================================
!! File /tmp/backdoor_curl could be a malicous script
!! File /tmp/CVE-2020-5902_bigip_ioc_checker.py could be a malicous script
!! Files created in /tmp/ after 2020 Jun 29, need to check if those are malicious scripts
18491 40 -rw-r--r-- 1 root root 38066 Jul 20 14:57 /tmp/CVE-2020-5902_bigip_ioc_checker.py
18497 1 -rw-r--r-- 1 root root 0 Jul 20 14:49 /tmp/backdoor_new
[+]============================== webshell checking ==============================
!! Files created in /usr/local/www/ after 2020 Jun 29, need to check if those are webshell or information leakage
243368 4 -rw-r--r-- 1 root root 33 Jul 20 14:49 /usr/local/www/xui/common/css/webshell.php
243367 4 -rw-r--r-- 1 root root 33 Jul 17 08:30 /usr/local/www/xui/common/css/css.php
243369 4 -rw-r--r-- 1 root root 46 Jul 20 14:49 /usr/local/www/xui/common/css/webshell.jsp
F5 提供 CVE-2020-5902 失陷指标检测工具,旨在帮助客户在 iHealth 之外分析其 F5 设备中与 CVE-2020-5902 相关的某些失陷指标。但请注意:
CVE-2020-5902 失陷指标检测工具并非全面,也无意做到全面:它不会识别所有可能的失陷指标,而仅识别 F5 根据对失陷 F5 设备的内部分析发现通常可靠的一组选定指标。
并非所有失陷的 F5 设备都会显示相同的指标,攻击者可能能够清除其活动痕迹。无法证明任何设备未被失陷;如果存在任何不确定性,可能需要进行额外分析和/或咨询您的安全团队。
为避免对用户的业务运营造成过度中断,CVE-2020-5902 失陷指标检测工具不应在流量高峰时段运行,而通常应在用户的常规维护窗口期间使用。
如果识别到失陷指标,F5 建议用户遵循其记录在案的内部事件响应流程。F5 在 K11438344:当您怀疑 BIG-IP 系统发生安全失陷时的注意事项和指导 中提供了通用注意事项和指导。此外,用户可以通过 客户支持门户 或 其他标准渠道 直接联系 F5 以获得额外支持。
CVE-2020-5902 失陷指标检测工具为方便 F5 用户而提供,并根据 Apache License 的条款按"原样"提供。您需自行承担使用 CVE-2020-5902 失陷指标检测工具的风险。
版权所有 © 2020 F5 Networks, Inc.
根据 Apache License 2.0 版(以下简称"许可证")获得许可;除非遵守许可证,否则您不得使用 CVE-2020-5902 失陷指标检测工具。您可以在以下位置获取许可证副本:
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则按许可证分发的软件按"原样"分发,不附带任何明示或暗示的保证或条件。请参阅许可证以了解管辖权限和限制的特定语言。