本仓库包含一个用于检测与 CVE-2019-19781 相关的 Citrix ADC 设备是否被入侵的工具。
该工具及其资源编码了 FireEye Mandiant 调查过程中收集的入侵指标。
要了解更多信息,请阅读宣布该工具发布的博客。
总之,该工具将:
但它不会:
借助社区反馈,该工具的检测能力可能会更加完善。
如有问题、想法或反馈,请提交问题、
提交 Pull Request、
或联系作者。
该扫描器能够识别:
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
runnning test: access-logs
runnning test: xml-template
runnning test: crontab
runnning test: var-cron-tabs-nobody
runnning test: error-logs
runnning test: file-system
runnning test: netscalerd
runnning test: notrobin-tmp-init
runnning test: notrobin-var-nstmp-nscache
runnning test: ns-content
runnning test: chr-encoded-template
runnning test: copied-ns-conf
runnning test: curl-in-template
runnning test: perms
runnning test: var-tmp-netscaler-portal-templates
runnning test: var-vpn-bookmark
runnning test: webshell-in-scripts
runnning test: shell-history
runnning test: bash_log
runnning test: 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 |