该仓库包含一个用于检测与 CVE-2019-19781 相关的 Citrix ADC 设备被入侵情况的工具。 该工具及其资源编码了 FireEye Mandiant 调查期间收集的入侵指标。 欲了解更多信息,请阅读宣布该工具发布的博文。
总而言之,该工具将:
它不会:
通过社区反馈,该工具的检测能力可能会变得更加全面。 如果您有问题、想法或反馈,请提交 Issue、 提交 PR、 或联系作者。
该扫描器能够识别:
CVE-2019-19781 入侵指标 (IoC) 扫描器由 FireEye Mandiant 和 Citrix 基于从与 CVE-2019-19781 利用相关的事件响应中获取的知识共同开发。 扫描器的目标是分析可用的日志源和系统取证证据,以识别成功利用 CVE-2019-19781 的证据。 该工具所能完成的工作存在局限性,因此,运行该工具不应被视为系统未受入侵的保证。 例如,系统上存在入侵证据的日志文件可能已被截断或滚动、系统可能已重启、攻击者可能篡改了系统以删除入侵证据、和/或安装了隐藏入侵证据的 rootkit 等。
该工具的输出将分为以下三类之一:
入侵证据。此为默认类别。
任何属于此类的证据均表明设备已成功被入侵。
这可能包括执行泄露信息的命令(例如查看 ns.conf 或 smb.conf 配置文件)、
安装后门(例如 NOTROBIN、挖矿程序等)、
或投放基于 Perl 的 Web shell。
成功漏洞扫描的证据 (可能是授权的系统管理员或未授权的攻击者)。 任何属于此类的证据均表明系统处于易受攻击状态(例如尚未应用缓解措施), 并且利用 CVE-2019-19781 的第一步至少已成功。
失败漏洞扫描的证据。 任何属于此类的证据均表明尝试扫描或利用系统的行为已失败。
该工具不能保证找到所有入侵证据,或所有与 CVE-2019-19781 相关的入侵证据。 如果在系统上识别出入侵迹象,组织应对受入侵系统进行取证检查,以确定事件的范围和程度。 本工具按“原样”提供,不提供任何担保。
您应从该仓库的 Releases 标签页 下载独立的 Bash 脚本。 将源代码目录复制到 Citrix ADC 设备是可行的,但不推荐。
IoC 扫描器可以直接在 Citrix ADC 设备上运行。
在此模式下,该工具将扫描文件、进程和端口以查找已知指标。
该工具将诊断信息写入 STDERR 流,将结果写入 STDOUT 流。
在典型用法中,您应将 STDOUT 重定向到文件以供审查。
在 Citrix ADC 设备上以实时模式运行时,该工具必须以 root 身份运行。
例如:
$ sudo bash ./ioc-scanner-CVE-2019-19781-v1.1.sh > "/tmp/results-$(date).txt"
该工具设计用于以下产品:
IoC 扫描器还可以检查已挂载的取证镜像。 在此场景下,需传递一个命令行参数指定镜像根目录的路径。 在离线模式下运行无需 root 权限。
例如:
$ bash ./ioc-scanner-CVE-2019-19781-v1.1.sh /mnt/path/to/evidence/root/
在两种模式下,该工具会将支持代码提取到临时目录;脚本终止时该目录将被删除。 该工具不会对系统进行进一步更改,但可能会生成日志条目。
与所有取证分析一样,优先对 dd 镜像进行离线分析,而非实时响应。
这将消除工具导致相关证据被覆盖的可能性。
请查看常见问题以获取更多详细信息。
如果您发明了更多识别入侵的方法,请考虑向此 IoC 扫描器做出贡献。 我们希望提供尽可能全面、正确的扫描器。
主要目标是报告高置信度的入侵指标。 由于用户可能依赖此工具的输出来启动进一步调查,因此不让他们徒劳无功非常重要。 因此,简单的扫描等活动不应在默认模式下报告。 任何行为者获得系统访问权限、获取信息或创建内容的证据都应始终报告。
我们以 Bash 脚本形式提供此工具,因为它是 Citrix ADC 设备的共同分母。 以下是 Citrix ADC 版本的功能矩阵:
尽管我们看到恶意软件使用 Go 来针对 FreeBSD/NetScaler,但 Go 不支持 FreeBSD 6.x。
我们在 ./tests/ 目录中维护包含入侵证据的稀疏文件系统镜像。
当您向此工具添加 IoC(例如已知路径或黑名单内容)时,请提供用于测试的证据示例。
您可以在 Linux 或 macOS 系统上运行单元测试,如下所示:
$ bash ./tests/test.sh
正在运行测试: access-logs
正在运行测试: xml-template
正在运行测试: crontab
正在运行测试: var-cron-tabs-nobody
正在运行测试: error-logs
正在运行测试: file-system
正在运行测试: netscalerd
正在运行测试: notrobin-tmp-init
正在运行测试: notrobin-var-nstmp-nscache
正在运行测试: ns-content
正在运行测试: chr-encoded-template
正在运行测试: copied-ns-conf
正在运行测试: curl-in-template
正在运行测试: perms
正在运行测试: var-tmp-netscaler-portal-templates
正在运行测试: var-vpn-bookmark
正在运行测试: webshell-in-scripts
正在运行测试: shell-history
正在运行测试: bash_log
正在运行测试: notice_log
一旦您签出了源代码仓库,您可以使用 ./build.sh 工具构建一个独立的脚本。
这将主脚本和支持资源打包成一个单独的包。
执行时,它将解压到临时目录,从该目录执行,然后清理。
构建方法:
$ bash ./build.sh > ioc-scanner-CVE-2019-19781-rev$(git rev-parse HEAD | cut -c 1-8).sh
有关 FireEye 对 CVE-2019-19781 及其在野利用的更多信息,请参见:
对 CVE-2019-19781 的响应是整个安全行业的一项重大努力,这些博客大量引用了对该工具用户有价值的额外贡献。我们建议阅读这些文章中链接的材料,以最好地理解您环境中的活动。 与往常一样,FireEye Mandiant 团队可随时回答后续问题或进一步协助调查,请通过此处联系我们。
| NetScaler 版本 | 操作系统 | 可用语言 |
|---|
| 13.0 | FreeBSD 8.4 | Bash, Perl, Python |
| 12.1 | FreeBSD 8.4 | Bash, Perl, Python |
| 12.0 | FreeBSD 8.4 | Bash, Perl, Python |
| 11.1 | FreeBSD 8.4 | Bash, Perl |
| 10.5 | FreeBSD 8.4 | Bash, Perl |
| 10.1 | FreeBSD 6.3 | Bash, Perl |
| 9.3 | FreeBSD 6.3 | Bash, Perl |