这是一个关于在 Linux 系统中寻找持久化攻击的博客系列,主要内容如下:
- 概述:通过“进攻告知防御”的方法,依据MITRE ATT&CK Matrix for Linux,探索攻击者维持对受感染 Linux 系统持久访问的方法,包括如何部署后门、如何监测和检测这些安装等,该系列涵盖多种持久化技术,此篇重点关注日志和监控,以 Web 外壳为例。系列大纲包括多个部分,分别讨论不同的持久化技术。
- 持久化介绍:攻击者使用持久化技术在系统重启、更改凭证等情况下保持对系统的访问,成功获取访问权后,需通过网络横向移动并获取敏感数据,由于重新攻击可能困难,所以会安装后门以可靠地维持对受损机器的访问。
0. Linux 日志和审计:
- 文件完整性监控:攻击者安装持久化所需的配置更改通常会触及磁盘,可通过监控文件创建或修改来捕捉攻击者,可使用 Auditbeat 的文件完整性监控、auditd、Wazuh 的文件完整性监控等工具,本系列主要使用 auditd 和 auditbeats 联合监控。
auditd 和 sysmon:
- sysmon 和 auditd 介绍:auditd 是 Linux 系统的审计和日志记录工具,sysmon 是 Linux 版的系统监控工具,需配置规则以生成有意义的日志和警报,分别使用https://github.com/Neo23x0/auditd和https://github.com/microsoft/MSTIC-Sysmon/tree/main/linux。
- sysmon 和 auditd 比较:sysmon 规则定义更灵活但存在文件完整性监控弱点,如仅触发 FileCreate 事件,不监控文件修改等,而 auditd 可基于 inodes 监控文件,但需文件存在时启动服务,整体对未来采用 sysmon 持乐观态度,但仍依赖其他工具进行文件完整性监控。
- osquery:osquery 可通过 SQL 查询调查端点,简化调查和收集证据工作,与 fleetdm 等管理界面配合可获取环境基线和搜索对手,安装说明可在官方文档找到。
1. 服务器软件组件:Web 外壳:
- Web 外壳介绍:Web 外壳是攻击者安装在 Web 服务器中的后门,可通过 Web 应用的漏洞或已有访问权限进行安装,如 2017 年 Equifax 数据泄露事件。
- 安装自己的 Web 外壳:假设已有 RCE,添加包含 Web 外壳的
phpinfo.php
文件,可选择JohnTroony/php-webshells中的示例,也可通过 unrestricted 上传安装image.png.php
形式的后门。 检测:创建或修改 php 文件:
- 使用 auditbeat 的文件完整性监控:在 auditbeat 的文件完整性监控中添加
/var/www/html
路径,可监控 Web 应用目录的文件变化,vi
命令会导致文件“移动”(实际是更新),curl
命令下载文件会产生created
日志。 - 使用 audit 监控变化:向 auditd 添加规则
-w /var/www/html -p wa -k www_changes
,可搜索/var/www/html
中的写或更新操作,auditd 日志包含有关操作的详细信息。 - 关于检测 Web 外壳的文件完整性监控注意事项:可通过版本控制比较当前状态与已知良好状态来检测差异,但对于经常写入和修改文件的文件夹,文件完整性监控可能不完全有效,需要精细调整警报。
- 使用 auditbeat 的文件完整性监控:在 auditbeat 的文件完整性监控中添加
- 检测:查找 www-data 的命令执行:Web 服务器通常以
www-data
用户运行,正常操作不应看到该用户执行whoami
或ls
等命令,可使用 auditd 规则-a always,exit -F arch=b64 -F euid=33 -S execve -k detect_execve_www
检测www-data
的execve
系统调用,同时要注意使用现成的检测规则可能存在问题,需测试规则是否能检测到已知的恶意行为。 - 检测:查找 www-data 的命令执行(使用 sysmon):[MSTIC-Sysmon]有两个相关规则,可检测
www-data
用户的进程创建和命令执行,通过规则可以触发相应的事件,但可通过特定方式绕过T1505.003
规则,也可编写自己的 sysmon 规则进行文件完整性监控等。 - 检测:查找 www-data 发起的连接:如果 Web 服务器不应该创建出站连接,可监控
www-data
用户创建的出站连接,auditd 需查找特定的系统调用,日志不包含 IP 元数据,sysmon 规则更易获取有用字段,如DestinationIp
,在 log4shell 示例中,sysmon 规则更便于过滤特定应用的连接。 - 使用 osquery 搜索 Web 外壳:通过 osquery 可查找 Web 外壳的证据,如查找建立反向 shell 的出站连接,可通过特定的 SQL 查询找到相关进程和连接信息。
- 后续内容:已讨论了使用 sysmon、osquery、auditd 和 auditbeats 进行监控和日志记录的基础知识,并以检测 Web 外壳的创建和使用为例,后续将深入讨论更多的持久化技术。
附录:
- 设置 nginx 和 php:需先安装 nginx 和 php-fpm,并配置 nginx 以使用 php,使其能运行 php 代码。
- 设置 sysmon for linux:在 Debian 10 上,通过一系列命令安装 sysmon,并可使用https://github.com/microsoft/MSTIC-Sysmon进行配置和添加规则,日志位于
/var/log/syslog
。 - 设置 auditbeats 和 auditd for linux:安装 auditbeat 并配置 Elasticsearch 输出,配置 auditd 规则,可根据需要添加自定义规则,注意某些规则在 Debian 10 中可能需要删除。
- 其他来源:提供了多个相关的参考资料链接。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。