在 Linux 系统渗透测试领域,全面了解目标服务器的潜在攻击面至关重要,这就好比绘制一幅详细的“攻击地图”,标注出所有可能的入侵点,才能制定精准的攻击策略。我尝试梳理了 Linux 服务器的七大主要攻击面,涵盖从弱凭证到容器逃逸等各个方面,希望能为各位读者提供一些参考,抛砖引玉。
另,从安全研究的角度来看,Linux 服务器的攻击面可以被视为服务器安全状态空间的一个子集,它包含了所有可能被攻击者利用的漏洞、配置错误和弱点。对攻击面的研究,有助于我们系统地理解 Linux 系统的安全风险,并开发更有效的防御机制。例如,通过分析不同攻击面的特征和利用方式,我们可以设计更有针对性的入侵检测规则、开发更精准的漏洞扫描工具、并制定更全面的安全策略。此外,攻击面的研究也为安全评估和风险管理提供了重要的依据,可以帮助我们更准确地评估系统的安全风险,并优先处理高风险的攻击面。
编号 | 名称 |
1 | 弱密码或重复使用凭据 |
2 | Sudo 设置错误 |
3 | 计划任务 |
4 | 应用/服务配置错误 |
5 | 内核漏洞利用 |
6 | 容器逃逸 |
7 | 第三方软件 |
- 攻击点: 用户账户,尤其是特权账户(例如 root、sudo 用户)。这些账户的凭据是攻击者的首要目标,获取这些凭据就相当于拿到了“万能钥匙”。
- 攻击手段和技术原理:
- 暴力破解: 利用工具尝试所有可能的密码组合,例如Hydra、Medusa、等。该方法的成功率取决于密码的复杂度和字典的完备性。
- 字典攻击 : 使用包含常用密码、根据目标用户习惯和信息定制的字典进行尝试登录,效率比暴力破解更高。
- 凭据填充: 使用从其他网站泄露的用户名和密码组合进行尝试登录,利用用户在不同平台重复使用密码的习惯。
- 密码喷洒: 针对多个用户账户,尝试少量常用密码,例如 "123456"、 "password" 等,试图找到使用弱密码的用户。这种方法可以绕过一些账户锁定机制。
- 难点: 密码复杂度要求高、账户锁定机制、多因素认证 (MFA)。
- 技巧: 结合社工库信息,获取目标用户的个人信息、常用密码等,提高攻击成功率;利用撞库攻击,尝试从其他系统中获取用户的凭据;利用网络钓鱼等社会工程学手段,窃取用户凭据。
- 最佳攻击场景实践: 目标系统没有启用多因素认证,并且没有限制登录尝试次数,或者密码策略比较弱,例如允许使用短密码或简单密码。
- 服务器监控预警绕过策略:
- 针对账户锁定:降低攻击频率,或者使用多个 IP 地址进行攻击。
- 针对 MFA:尝试绕过 MFA,例如利用MFA的漏洞,或者使用社会工程学手段欺骗用户。
- 防御措施:
- 实施强密码策略:要求密码长度至少为 12 位,包含大小写字母、数字和特殊字符,并禁止使用常用密码。
- 限制登录尝试次数:例如,连续 5 次登录失败后锁定账户。
- 启用多因素身份验证 (MFA):例如,使用 Google Authenticator、短信验证码、硬件令牌等。
- 定期更改密码:例如,每 90 天更换一次密码。
- 禁用或删除不必要的账户:例如,禁用guest账户,删除不再使用的账户。
2. Sudo 设置错误 (也可以参见再说 Sudo 提权)
- 攻击点:sudoers 文件 (/etc/sudoers 或 /etc/sudoers.d/ 目录下的文件)。该文件控制着哪些用户可以使用 sudo 命令,以及可以使用 sudo 执行哪些命令。
- 攻击手段和技术原理:
- 配置错误利用:如果 sudoers 文件配置不当,例如授予用户过高的权限,或者允许用户执行危险的命令,攻击者就可以利用这些错误配置,提升权限或执行未授权的命令。
- 通配符滥用: sudo 命令支持使用通配符,如果 sudoers 文件中存在通配符滥用,攻击者可能会利用通配符的特性执行非预期的命令。例如,如果 sudoers 文件允许用户以 root 权限执行 sudo cp /tmp/* /etc/,攻击者就可以在 /tmp 目录下创建一个名为 shadow- 的文件,然后利用该命令将 /etc/shadow 文件覆盖掉,从而导致系统无法正常登录。
- 命令参数注入:如果sudo命令的参数没有进行正确的过滤和转义, 攻击者就可能注入恶意命令。例如,如果 sudoers 文件允许用户以 root 权限执行 /usr/bin/find / -name $USER,攻击者可以将 $USER 环境变量设置为 ; rm -rf /,从而删除根目录下的所有文件。
- SUID SGID 二进制文件: SUID (Set User ID) 和 SGID (Set Group ID) 是 Linux 系统中的一种特殊权限,允许用户以文件所有者或文件所属组的权限执行该文件。攻击者可能会利用SUID 或 SGID 二进制文件中的漏洞, 以root权限执行恶意代码。
- 难点: 需要找到 sudoers 文件中的配置错误,或者找到具有 SUID 或 SGID 权限的二进制文件中的漏洞。
- 技巧:
- 仔细阅读 sudoers 文件的配置规则,寻找可以被利用的漏洞。
- 使用 find 命令查找具有 SUID 或 SGID 权限的二进制文件,例如 find / -perm -4000 -o -perm -2000。
- 最佳攻击场景实践:
- 目标系统的 sudoers 文件配置不当,例如,允许普通用户以 root 权限执行某些危险的命令。
- 目标系统中存在具有 SUID 或 SGID 权限的二进制文件,并且这些二进制文件存在漏洞。
- 服务器监控预警绕过策略:
- 修改 sudo 日志: 如果攻击者获取了 root 权限,他们可能会修改 sudo 日志,清除攻击痕迹。
- 禁用日志记录:攻击者可能会禁用系统的日志记录功能,或者修改日志文件的权限,防止安全人员查看日志。
- 防御措施:
- 遵循最小权限原则,只授予用户必要的 sudo 权限,避免过度授权。
- 避免使用通配符,或者对通配符的使用进行严格限制。
- 使用 visudo 命令编辑 sudoers 文件,避免语法错误。
- 定期审查 sudoers 文件的配置,确保其安全性。
- 对具有 SUID 或 SGID 权限的二进制文件进行严格的安全审查,确保其安全性。
3. 计划任务
- 攻击点:Cron 作业配置文件(/etc/crontab、 /etc/cron.d/*、 /var/spool/cron/crontabs/*) 。Cron 作业是 Linux 系统中用于定时执行任务的机制,攻击者可以利用Cron 作业来执行恶意代码,例如定时下载并执行恶意软件、定时删除数据等。
- 攻击手段和技术原理:
- 修改 Cron 作业:攻击者可以修改现有的 Cron 作业,例如修改执行时间、执行的命令等。例如,一个Cron 作业每天凌晨 2 点执行数据库备份,攻击者可以修改 Cron 作业的执行时间,使其立即执行,从而窃取数据库备份文件。
- 添加恶意 Cron 作业:攻击者可以添加新的 Cron 作业,定时执行恶意代码,例如,下载并执行恶意软件、定时发送垃圾邮件等。 攻击者可能会利用各种漏洞或配置错误, 例如 sudo 提权漏洞、不安全的crontab文件权限等,来获取修改Cron作业的权限。
- Cron 作业劫持:攻击者可以通过入侵具有 Cron 作业配置权限的账户, 或者利用系统漏洞,例如 sudo 提权漏洞,来修改 crontab 文件,添加恶意命令。
- 不安全的脚本执行:如果 Cron 作业执行的脚本没有进行严格的输入验证和过滤,攻击者就可能利用脚本中的漏洞,例如命令注入漏洞,来执行恶意命令。
- 难点:需要获取修改 Cron 作业文件的权限。
- 技巧:攻击者可能会利用系统漏洞或配置错误,例如 sudo 提权漏洞、不安全的 crontab 文件权限等,来获取修改 Cron 作业的权限。
- 最佳攻击场景实践:目标系统存在弱密码或配置错误,导致攻击者可以轻易地获取 root 权限,从而修改 Cron 作业。
- 服务器监控预警绕过策略:
- 修改cron日志: 攻击者可能会修改 cron 的日志文件,清除攻击痕迹。
- 禁用日志记录:攻击者可能会禁用系统的日志记录功能, 或者修改日志文件的权限,防止安全人员查看日志。
- 隐藏恶意Cron作业:攻击者可能会将恶 Cron作业隐藏在系统目录中,或者使用特殊字符来混淆 Cron 作业的配置。
- 防御措施:
- 限制对 Cron 作业配置文件的访问权限: 例如,只允许 root 用户和授权用户访问和修改 Cron 作业配置文件。可以使用 ACL (访问控制列表) 来限制对 crontab 文件的访问权限,或者将 crontab 文件存储在加密的文件系统中。
- 使用强密码策略,并启用多因素身份验证, 防止攻击者获取系统权限。
- 定期审查 Cron 作业,删除不必要的作业,并确保所有 Cron 作业都是安全的。可以使用自动化工具,例如 Lynis,来检查 Cron 作业的配置是否安全。
- 对 Cron 作业执行的脚本进行严格的输入验证和过滤,防止命令注入等漏洞被利用。
4. 应用/服务配置错误
- 攻击点:Web 服务器配置文件、应用程序配置文件、数据库配置文件、 服务启动脚本等。这些配置文件通常包含敏感信息,例如数据库密码、API 密钥等,或者控制着应用程序和服务的行为,例如访问权限、网络配置等。
- 攻击手段和技术原理: 攻击者利用应用程序或服务的配置错误,例如弱口令、未授权访问、不安全的默认配置等,入侵系统或窃取数据。
- 默认凭据:许多应用程序和服务都有默认的用户名和密码,攻击者可以尝试使用这些默认凭据进行登录。
- 弱口令:如果应用程序或服务使用了弱口令,攻击者可以使用暴力破解或字典攻击等方式破解密码。
- 未授权访问:如果应用程序或服务的访问控制机制配置不当,例如没有进行身份验证或授权,攻击者就可以未经授权访问敏感数据或功能。
- 不安全的默认配置:许多应用程序和服务都有一些不安全的默认配置, 例如,启用了不必要的服务、没有启用日志记录、使用了不安全的加密算法等。攻击者可以利用这些默认配置来攻击系统。
- 信息泄露:应用程序或服务的配置文件中可能包含敏感信息,例如数据库密码、API 密钥等,攻击者可以通过各种方式,例如目录遍历漏洞、文件包含漏洞等,来获取这些敏感信息。
- 难点:需要找到应用程序或服务的配置文件,并识别其中的配置错误。有些配置文件可能存储在隐蔽的位置,或者使用加密或混淆技术进行保护。
- 技巧:
- 关注常见的配置错误: 例如,默认用户名和密码、不安全的权限设置、未加密的敏感信息等。
- 使用工具扫描:使用漏洞扫描工具,例如 Nessus、OpenVAS 等,可以帮助我们快速识别一些常见的配置错误。
- 手动检查配置文件: 仔细阅读配置文件,并根据安全最佳实践,检查是否存在配置错误。
- 最佳攻击场景实践:
- 目标系统使用了默认的用户名和密码, 或者使用了弱口令。
- 目标系统的访问控制机制配置不当,例如没有进行身份验证或授权。
- 目标系统使用了不安全的默认配置, 例如启用了不必要的服务。
- 目标系统的配置文件中包含敏感信息,并且攻击者可以访问这些文件。
- 服务器监控预警绕过策略:
- 修改日志文件:如果攻击者成功利用了配置错误入侵了系统,他们可能会修改日志文件,清除攻击痕迹。
- 禁用监控和告警:攻击者可能会禁用系统的监控和告警功能,或者修改监控和告警系统的配置,防止安全人员发现攻击行为。
- 防御措施:
- 遵循安全配置最佳实践:例如,修改默认密码、限制访问权限、加密敏感信息等。
- 使用安全配置检查工具,例如 Lynis、rkhunter 等, 定期扫描系统,识别和修复配置错误。
- 及时更新软件版本,修复已知的漏洞。
- 对配置文件进行访问控制,只允许授权用户访问和修改配置文件。
- 使用强密码保护配置文件,并定期更改密码。
- 对配置文件中的敏感信息进行加密存储。
原文始发于微信公众号(再说安全):Linux服务器攻击面梳理(2024)上集
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论