NTFS(New Technology File System)特权提升(NTFS Privilege Escalation)是一种通过操控Windows系统中的NTFS文件系统来提升权限的攻击手段。攻击者通过更改文件和目录的权限、所有权或其他与NTFS相关的设置,能够提升自己的权限,绕过系统的访问控制机制,从而获取更高的特权或访问敏感信息。

NTFS 概述 | Microsoft Learn

NTFS(New Technology File System)特权提升(NTFS Privilege Escalation)是一种通过操控Windows系统中的NTFS文件系统来提升权限的攻击手段。攻击者通过更改文件和目录的权限、所有权或其他与NTFS相关的设置,能够提升自己的权限,绕过系统的访问控制机制,从而获取更高的特权或访问敏感信息。

时间线模型分析 NTFS 特权提升攻击

  1. 初始渗透(Initial Compromise)

    • 攻击手段:攻击者通过各种途径(如社交工程、钓鱼邮件、漏洞利用等)获得低权限的用户账户或访问权限,或者通过弱密码攻击获得用户账户。
    • 目标:获取一个低权限的用户账户或在受害者机器上建立恶意载体(如木马、恶意软件等)。
  2. 识别文件系统与权限漏洞(Discovery of Vulnerabilities)

    • 文件和目录权限检查:攻击者开始检查目标机器上重要文件、目录的权限(如 C:\Windows 目录,系统配置文件、日志文件等)。通过分析文件系统,攻击者寻找权限过于宽松的文件。
    • 访问控制列表(ACLs)分析:攻击者通过工具(如 icacls 或 cacls)列出文件和目录的权限,分析哪些文件或目录可能具有可利用的权限设置。例如,攻击者可能会查看是否有文件的访问权限被错误配置为 "Everyone" 可读/可写/可执行等。
  3. 权限绕过(Privilege Bypass)

    • 操控文件或目录权限:攻击者识别到具有过宽权限的文件或目录,接下来可能会修改其访问控制列表(ACL)或利用权限继承机制进行修改。例如,将一个系统敏感文件的权限更改为普通用户可写权限。
    • 文件属性修改:通过更改文件或目录的所有权,攻击者可以将文件所有者设置为自己,这样就能够以高权限来修改或执行该文件。通过 takeown 或 icacls 命令,攻击者可以将文件所有权从系统管理员(Administrator)或其他高权限用户手中转移到自己账户。
      • 例子:将系统文件 C:\Windows\System32\calc.exe 的所有权从 SYSTEM 或 Administrator 转移到攻击者账户,从而可以修改该文件或执行它。
  4. 特权提升(Privilege Escalation)

    • 获得更高权限的控制:一旦攻击者通过修改文件权限获得了对系统关键文件的控制,他们可以利用这些文件来进一步提升权限。例如,攻击者可能替换某些系统文件(如 cmd.exe)为一个包含恶意代码的版本,或者利用可执行文件进行反向 shell 启动,执行恶意命令。
    • 提权到管理员权限:攻击者可能利用更高的文件权限来获得管理员权限或 SYSTEM 权限。如果攻击者能够修改用户账户控制(UAC)设置或利用特定的系统漏洞,他们还可以直接获得完全控制权。
  5. 持久化(Persistence)

    • 修改启动项:攻击者可能在系统启动目录中创建恶意脚本或文件,或者修改注册表,使得恶意程序在系统重启后能够自动执行。通过这种方式,攻击者可以保证长期对目标系统的控制。
    • 创建新账户:为了确保能够长期访问,攻击者可能会创建一个新的管理员账户,并授予其管理员权限,避免因现有账户被发现或清除而丧失对系统的控制。
  6. 数据窃取或破坏(Data Exfiltration or Damage)

    • 获取敏感信息:一旦获得了管理员权限,攻击者可能会寻找并窃取敏感文件,如数据库备份、密码文件、私人密钥等。
    • 执行破坏性操作:攻击者也可能通过修改系统文件、删除关键数据或导致系统崩溃等方式来破坏目标系统或网络。

攻击流程总结

  1. 获取低权限用户账户
  2. 识别并分析 NTFS 权限设置
  3. 通过权限绕过、修改 ACL 或所有权进行攻击
  4. 通过修改文件控制、替换系统文件等方式提升权限
  5. 在系统中保持持久化控制
  6. 执行数据窃取或破坏操作

防护措施

  1. 严格权限管理

    • 限制对敏感目录(如 C:\Windows)的访问权限,确保只有必要的用户和系统进程可以访问这些目录。
    • 确保所有的文件和目录访问控制列表(ACL)正确配置,避免广泛授权给 Everyone
  2. 最小权限原则

    • 用户和应用程序应遵循最小权限原则,仅授予执行任务所需的最低权限。避免给予普通用户管理员权限。
  3. 文件完整性监控

    • 使用文件完整性监控工具,检测系统文件和目录的任何未经授权的更改。这些工具可以在文件被篡改时生成警报。
  4. 定期审核权限设置

    • 定期审查和清理权限,特别是对于已不再使用的账户或文件夹。
  5. 使用防病毒和安全软件

    • 部署实时防病毒和防恶意软件程序,能够检测并防止利用 NTFS 特权提升漏洞的攻击。
  6. 定期安全更新

    • 保持系统和应用程序的安全更新,以修补已知的漏洞,防止攻击者通过已知漏洞进行提权。

通过时间线模型,我们可以清晰地看到 NTFS 特权提升攻击的全过程,从最初的渗透到最后的数据窃取或破坏。及时采取防护措施可以有效减少这类攻击的风险。


逻辑链(logic chain)”把 NTFS 特权提升的因果流程拆得清清楚楚:每一步的前提(Prerequisite)→ 操作(Action)→ 结果/目标(Effect/Goal),并标注所需权限、常见手法、可检测项与防护要点。把它当成攻击/防守双方都能直接用的检查清单。

概览(一句话)

NTFS 特权提升本质是:攻击者利用NTFS 的权限模型、所有权、重解析点/链接、备份API等特性或管理员/服务配置不当,改变或替换关键文件/可执行体,从而从低权限账户提升到管理员或 SYSTEM。


逻辑链分解(按因果步骤)

下面按步骤列出常见的逻辑链,每一条包含「前提 → 行动 → 结果/目标」并给出检测和缓解建议。

1. 错误或过宽的文件/目录 ACL

  • 前提:某些系统敏感文件/文件夹(或服务可执行文件、脚本、配置文件)对低权限用户可写(DACL 包含 Everyone 或 非预期用户/组有写权限)。
  • 行动:攻击者写入/替换该文件(例如替换服务可执行文件、脚本或 DLL)。
  • 结果/目标:在系统重启或服务重启时,以服务权限(通常为 SYSTEM 或管理员)执行恶意二进制,从而提权。
  • 检测指标:对关键文件的 ACL 修改、文件 hash 突变、服务二进制路径的变更、异常文件创建时间。
  • 缓解:最小权限、定期 ACL 审计(icacls 导出并比对)、文件完整性监控(FIM)。

2. 所有权滥用(takeown / 所有者可修改)

  • 前提:低权限用户拥有 Take Ownership 权限或目标文件允许所有者转移;或管理员疏忽导致所有权可转移。
  • 行动:攻击者 takeown 获取文件所有权,再修改 ACL 赋予自己写权限,或直接替换文件。
  • 结果/目标:绕过原 ACL,修改关键文件获取提权。
  • 检测指标:文件所有者变化、takeown 或 SetOwner 类命令的出现、所有者账户异常。
  • 缓解:限制 SeTakeOwnershipPrivilege,仅授予给受信主体;监控所有权变更。

3. NTFS 硬链接 / 符号链接 / 目录联结(junction)滥用

  • 前提:程序/服务在处理文件时以不安全方式解析路径(例如以管理员权限打开由低权限用户能创建的临时路径),或程序在临时目录中使用固定文件名并以高权限打开。
  • 行动:创建符号链/目录联结,把高权限进程将要写入的位置重定向到受保护的文件(如覆盖系统文件)。
  • 结果/目标:高权限进程不慎写入到受保护目标,实现提权或持久化。
  • 检测指标:系统中异常符号链接/联结、程序打开不应被访问的位置、程序以管理员权限写临时文件的日志。
  • 缓解:程序在解析路径前验证目标是否是链接(拒绝处理可被替换的路径);使用安全的临时文件函数(atomic create with exclusive flags)。

4. NTFS 备份/还原 API 滥用(SeBackupPrivilege / SeRestorePrivilege)

  • 前提:攻击者持有 SeBackupPrivilege 或 SeRestorePrivilege(例如通过某些服务或错误配置),或有代码能调用备份/还原API。
  • 行动:使用备份 API 读取或还原写入任意文件(备份API可以在不受 ACL 限制下读/写文件)。
  • 结果/目标:直接将恶意文件写入受保护路径或导出敏感文件,从而提权或窃密。
  • 检测指标:备份/还原 API 调用日志异常、使用 wbadmin 或第三方备份工具的异常行为。
  • 缓解:最小化授予备份/还原特权;审计拥有这些权限的账户;监控与备份 API 相关的进程行为。

5. 可写的服务配置与二进制(Service Binary Writable)

  • 前提:服务可执行文件路径所指向的文件或其目录对普通用户可写,或服务的 ImagePath 可被修改。
  • 行动:替换服务二进制或修改 ImagePath 指向恶意程序,重启服务后以服务账户执行恶意程序。
  • 结果/目标:获得服务账户权限(通常为 SYSTEM)。
  • 检测指标:服务二进制哈希变化、服务 ImagePath 修改、服务重启时异常活动。
  • 缓解:限制服务文件夹写权限,保护注册表中服务键(HKLM\SYSTEM\CurrentControlSet\Services\...),监控服务配置变更。

6. 可写的任务计划/启动文件(Scheduled Tasks / Startup)

  • 前提:计划任务条目(.job)或启动文件夹/注册表启动项可被低权限用户写入。
  • 行动:添加/修改任务或启动项使恶意程序以高权限运行。
  • 结果/目标:在下次计划触发或用户登录时提权执行。
  • 检测指标:新增或被修改的计划任务、启动项、注册表 Run/RunOnce 项变更。
  • 缓解:保护计划任务/启动注册表项写权限,审计任务变更。

7. 利用 NTFS 交替数据流(ADS)

  • 前提:某些程序会在不校验 ADS 的情况下执行文件或加载资源;或杀软/检测系统不监控 ADS。
  • 行动:将恶意负载藏入 ADS(例如 file.txt:evil.exe),并利用可执行器或加载流程触发。
  • 结果/目标:绕过检测并在触发点执行隐藏的 payload,实现持久化或提权。
  • 检测指标:含 ADS 的文件、不寻常的文件大小/元数据不匹配。
  • 缓解:监控 ADS 使用、检测针对 ADS 的可疑 I/O。

8. 替换/注入系统 DLL(DLL Hijacking / Binary Replacement)

  • 前提:高权限进程在搜索 DLL 时使用不安全的搜索顺序,或某些路径可被普通用户写入。
  • 行动:把恶意 DLL 放在被优先搜索的位置(或替换可执行文件),当高权限进程加载时执行 DLL 代码。
  • 结果/目标:以目标进程权限执行任意代码。
  • 检测指标:不常见目录下的新 DLL、进程加载不期望的模块。
  • 缓解:为可执行文件和 DLL 目录设置只读权限;使用显式完整路径加载 DLL(或应用签名强制)。

9. 利用 TrustedInstaller / Windows 保护者权限误用

  • 前提:系统文件受 TrustedInstaller 拥有,但某些操作允许临时提升或通过错误配置绕过。
  • 行动:通过工具或漏洞获取对受保护文件的写入(例如先获取所有权,再写入)。
  • 结果/目标:替换关键系统文件以获得 SYSTEM 权限。
  • 检测指标:对受 TrustedInstaller 所有文件的所有权变更或写入尝试。
  • 缓解:严格控制谁能更改所有权;监控对受保护文件的写入/所有权变更。

权限需求矩阵(快速参考)

  • 无权限/低权限用户能做的事:创建符号链接(在缺省策略下有时被限制)、写入自身有写权限的位置、创建计划任务(若允许)。
  • 需要 SeTakeOwnershipPrivilege:直接 takeown 系统文件。
  • 需要 SeBackup/SeRestore:绕过 ACL 读/写任意文件。
  • 需要管理员/系统权限:替换系统服务、修改注册表服务项、修改系统保护文件(若已有足够写权限则无需额外提升)。

常见检测点(SIEM / EDR 规则建议)

  1. 对关键系统文件/服务二进制的哈希变化与时间戳突变告警。
  2. ACL / 所有者变更(文件/目录)的审计事件。
  3. 出现 takeownicaclscaclsSet-Acl 等命令行工具的异常使用。
  4. 异常的符号链接 / junction 创建活动。
  5. 计划任务 / 服务配置在非维护时间被修改或由非常用账户修改。
  6. 备份/还原 API 或工具使用异常(wbadminvssadmin 等)。
  7. 进程加载未签名或来自非正常位置的 DLL 模块。

优先级防护措施(按效果与可实现性)

  1. 最小权限原则:所有文件/目录/服务仅授予必要最小权限。
  2. ACL 审计与定期基线比对:定期导出 icacls,并与基线比对。
  3. 文件完整性监控(FIM):关键系统路径与服务二进制启用 FIM。
  4. 限制敏感权限:严格控制 SeTakeOwnershipSeBackupPrivilegeSeRestorePrivilege 的分配。
  5. 保护服务与计划任务配置:注册表/服务配置只允许管理员写入,并监控变更。
  6. 安全开发实践:开发时避免以高权限打开用户可控路径,避免不安全的临时文件/路径使用。
  7. 强制代码签名 / 白名单执行:关键目录应用白名单策略或仅允许签名可执行文件。
  8. EDR/日志监控:建立针对上面检测点的告警。

常见误区(提醒)

  • “只要限制写权限就安全” —— 写权限只是关键一环,所有权、备份特权、符号链接解析、程序自身的不安全行为都能绕过单一措施。
  • “杀软会拦截所有替换” —— 有时文件替换发生在系统启动或服务重启时,且恶意文件被放置在看似正常的位置,传统签名/特征检测可能漏报。
  • 硬链接攻击并非总是需要管理员 —— 在特定情形(程序以管理员打开由低权限用户控制的路径)下,低权限也能通过链接达到高权限写入。

示例命令(仅用于防护/审计场景)

  • 导出 ACL:icacls C:\Windows\System32 > acl_backup.txt
  • 查看文件所有者:powershell -Command "(Get-Acl 'C:\Windows\System32\drivers\etc\hosts').Owner"
  • 列出计划任务:schtasks /query /fo LIST /v

注:示例命令用于检测与防护场景,请勿在未经授权的系统上执行攻击性操作。


总结(可当检查列表)

  1. 审查哪些文件/目录被赋予写权限(Everyone、非预期用户)。
  2. 审计文件所有权与最近变更历史。
  3. 检查服务二进制路径、计划任务和启动项写权限。
  4. 限制并审计高风险特权(SeTakeOwnership、SeBackup/SeRestore)。
  5. 部署 FIM 和 EDR 规则捕获可疑 ACL/所有权/链接/备份行为。
  6. 在代码层面确保安全的临时文件处理和路径验证。

开发者在编写安全的代码时,需要关注多个方面来避免常见的安全漏洞。以下是一个面向开发者的安全编码检查清单,其中包含了避免符号链接、临时文件不安全使用等问题的建议:

1. 避免符号链接攻击

  • 限制符号链接的使用:避免在应用程序中允许或创建符号链接,特别是在允许用户上传文件或文件路径时,确保无法通过符号链接访问系统中的敏感资源。
  • 检查文件路径:在处理文件时,验证路径的真实性,避免通过符号链接访问外部文件。
  • 使用绝对路径:避免相对路径,尽可能使用绝对路径来确保文件的访问路径明确且安全。

2. 临时文件的安全使用

  • 使用安全的临时文件目录:确保所有临时文件存放在操作系统指定的安全位置(例如Linux的/tmp目录),并且文件权限设置适当。
  • 生成唯一文件名:使用加密或随机算法来生成临时文件的名称,避免因文件名冲突或猜测导致的文件泄露。
  • 避免使用用户输入的文件名:不要直接使用用户输入的文件名作为临时文件名,防止恶意用户通过文件名注入攻击。
  • 设置适当的文件权限:对于临时文件,设置严格的读写权限,确保只有应用程序自身可以访问,避免外部用户获取到文件内容。
  • 删除临时文件:在使用完临时文件后,务必立即删除它们,确保不会留下潜在的安全漏洞。

3. 输入验证与输出编码

  • 输入验证:所有来自用户的输入都必须进行严格验证,防止SQL注入、跨站脚本(XSS)等攻击。
  • 输出编码:对输出进行适当编码,尤其是在Web应用中,确保用户输入的数据不会被误认为是代码执行。

4. 防止路径遍历攻击

  • 规范化路径:在处理文件路径时,使用平台提供的路径解析方法(例如,Python的os.path模块)来防止路径遍历攻击。
  • 限制访问目录:明确限制允许访问的文件目录,避免用户访问到不应访问的敏感文件。

5. 使用安全的文件上传机制

  • 文件类型验证:对于文件上传功能,验证文件类型(如MIME类型和扩展名),确保文件类型符合预期。
  • 限制文件大小:限制上传文件的大小,防止恶意用户上传过大的文件,影响系统性能。
  • 避免执行上传的文件:确保上传的文件不能被执行。例如,将上传的可执行文件保存在只读目录中,或者在Web服务器上禁用文件的执行权限。

6. 权限控制

  • 最小权限原则:应用程序应该以最小权限运行,避免使用管理员权限执行不必要的操作,降低系统被攻破的风险。
  • 文件和目录权限:对应用程序中的所有文件和目录设置适当的访问权限,防止未经授权的访问。

7. 日志和错误处理

  • 详细日志记录:应用程序应记录关键操作和异常事件,帮助开发者监控和分析系统行为。
  • 避免泄漏敏感信息:确保错误信息不会暴露敏感数据,如数据库连接字符串、文件路径等。错误信息应该对用户隐藏,只提供通用的错误提示。

8. 使用现代的安全库和框架

  • 依赖安全的库和框架:使用经过验证的安全库和框架来处理敏感操作,如认证、授权、密码存储等,避免自行实现安全功能。
  • 及时更新依赖:确保使用的库和框架是最新版本,及时修复已知的安全漏洞。

9. 避免硬编码敏感信息

  • 环境变量管理:避免在代码中硬编码敏感信息,如密码、API密钥、数据库凭据等。应将敏感信息存储在环境变量或安全的密钥管理系统中。
  • 加密敏感数据:在传输或存储敏感数据时,使用加密技术确保数据的机密性。

10. 防止资源泄露

  • 关闭不必要的资源:确保所有打开的文件、数据库连接、网络套接字等资源在不再使用时及时关闭,避免资源泄漏。
  • 监控资源使用情况:定期检查系统资源的使用情况,确保没有被滥用或泄漏。

通过这些安全编码实践,可以有效减少因符号链接、临时文件处理不当等问题引发的安全漏洞,确保应用程序在生产环境中的安全性。


适用于 SIEM(Security Information and Event Management)和 EDR(Endpoint Detection and Response)工具的规则示例。示例包括常见的日志查询规则,可以用于检测安全事件和异常行为。这里以 SplunkElasticMicrosoft Sentinel 为例,展示如何编写和使用查询。

1. 异常登录检测

目标:检测异常登录行为(例如,频繁的失败登录尝试,或从不常见的IP地址登录)。

Splunk:

 
index=security sourcetype=wineventlog:security
(EventCode=4625 OR EventCode=4624)
| stats count by src_ip, user, EventCode, _time
| where count > 5
  • 解释:此查询检查了Windows安全日志中的登录事件(4624表示成功登录,4625表示失败登录)。如果同一个源IP地址或用户的登录失败超过5次,就会触发警报。

Elastic:

json
{
  "query": {
    "bool": {
      "should": [
        { "match": { "event.code": "4625" }},
        { "match": { "event.code": "4624" }}
      ],
      "filter": [
        { "range": { "@timestamp": { "gte": "now-1h" }}}
      ]
    }
  },
  "aggs": {
    "by_user": {
      "terms": {
        "field": "user.name.keyword",
        "size": 10
      }
    }
  }
}
  • 解释:此查询在Elastic中使用,寻找4625(失败登录)和4624(成功登录)事件,并按用户分组。它会返回过去一小时内的登录活动。

Sentinel:

 
SecurityEvent
| where EventID == 4624 or EventID == 4625
| summarize Count = count() by Account, SourceIP, EventID, bin(TimeGenerated, 1h)
| where Count > 5
  • 解释:此查询在Microsoft Sentinel中用于检测每小时内多次失败的登录尝试。它筛选了Windows安全日志(EventID 4624 和 4625)。

2. 恶意进程执行检测

目标:监测可能的恶意进程执行,比如通过命令行工具执行不常见的可执行文件。

Splunk:

 
index=security sourcetype=wineventlog:security
EventCode=4688
| search CommandLine="*cmd.exe*" OR CommandLine="*powershell.exe*" 
| stats count by CommandLine, user, _time, src_ip
| where count > 3
  • 解释:此查询捕获Windows事件代码4688(进程创建事件),特别查找命令行中包含cmd.exepowershell.exe的记录。如果同一命令行在短时间内频繁出现,则可能是恶意进程。

Elastic:

json
{
  "query": {
    "bool": {
      "must": [
        { "match": { "event.code": "4688" }},
        { "wildcard": { "process.command_line": "*cmd.exe*" }},
        { "wildcard": { "process.command_line": "*powershell.exe*" }}
      ]
    }
  },
  "aggs": {
    "by_command": {
      "terms": {
        "field": "process.command_line.keyword",
        "size": 10
      }
    }
  }
}
  • 解释:此查询使用Elastic Search捕获进程创建事件(Event Code 4688),并筛选出包含cmd.exepowershell.exe的命令行。它还会聚合查询结果,以便查看最常见的命令行模式。

Sentinel:

 
SecurityEvent
| where EventID == 4688
| where ProcessCommandLine contains "cmd.exe" or ProcessCommandLine contains "powershell.exe"
| summarize Count = count() by ProcessCommandLine, Account, SourceIP, bin(TimeGenerated, 1h)
| where Count > 3
  • 解释:此查询在Microsoft Sentinel中用于检测命令行中包含cmd.exepowershell.exe的进程执行,并按每小时汇总。如果同一命令行出现多次,会触发警报。

3. 文件操作监控(删除、修改、创建)

目标:监控敏感文件的创建、删除或修改。

Splunk:

 
index=security sourcetype=wineventlog:security
(EventCode=4663)
| stats count by FileName, user, EventCode, _time
| where count > 5
  • 解释:此查询捕捉Windows日志中有关文件操作的事件(EventCode 4663)。如果某个文件在短时间内多次被修改或删除,将触发警报。

Elastic:

json
{
  "query": {
    "match": {
      "event.code": "4663"
    }
  },
  "aggs": {
    "by_filename": {
      "terms": {
        "field": "file.path.keyword",
        "size": 10
      }
    }
  }
}
  • 解释:此查询针对Windows的文件操作事件(Event Code 4663)进行筛选,并聚合出最常见的文件路径。

Sentinel:

 
SecurityEvent
| where EventID == 4663
| summarize Count = count() by FileName, Account, SourceIP, bin(TimeGenerated, 1h)
| where Count > 5
  • 解释:此查询在Microsoft Sentinel中用于检测文件操作(例如文件被修改或删除)的事件。如果同一文件被频繁修改或删除,将触发警报。

4. RDP 登录监控

目标:检测不正常的RDP(远程桌面)登录行为。

Splunk:

 
index=security sourcetype=wineventlog:security
EventCode=4624
| search LogonType=10
| stats count by src_ip, user, _time
| where count > 3
  • 解释:此查询查找RDP登录(Event Code 4624,LogonType=10)并统计同一IP地址或用户的登录次数。如果某个IP频繁进行RDP登录,可能存在不正常的访问行为。

Elastic:

json
{
  "query": {
    "bool": {
      "must": [
        { "match": { "event.code": "4624" }},
        { "match": { "logon.type": "10" }}
      ]
    }
  },
  "aggs": {
    "by_user": {
      "terms": {
        "field": "user.name.keyword",
        "size": 10
      }
    }
  }
}
  • 解释:此查询捕捉RDP登录事件(Event Code 4624,LogonType=10),并聚合每个用户的RDP登录活动。

Sentinel:

 
SecurityEvent
| where EventID == 4624 and LogonType == 10
| summarize Count = count() by Account, SourceIP, bin(TimeGenerated, 1h)
| where Count > 3
  • 解释:此查询在Microsoft Sentinel中用于检测RDP登录。如果同一账户或IP地址在短时间内进行多次RDP登录,将触发警报。

5. 恶意网络连接监测(异常端口)

目标:检测异常的网络连接,尤其是访问常见端口(如22、3389等)的连接。

Splunk:

 
index=network sourcetype=netflow
| search dest_port=22 OR dest_port=3389
| stats count by src_ip, dest_ip, dest_port, _time
| where count > 5
  • 解释:此查询用于检测从外部IP地址到常见端口(如SSH端口22或RDP端口3389)的连接。如果同一IP地址频繁连接这些端口,将触发警报。

Elastic:

json
{
  "query": {
    "bool": {
      "should": [
        { "match": { "network.port": 22 }},
        { "match": { "network.port": 3389 }}
      ]
    }
  },
  "aggs": {
    "by_ip": {
      "terms": {
        "field": "source.ip.keyword",
        "size": 10
      }
    }
  }
}
  • 解释:此查询在Elastic中用于检测到常见端口(如22或3389)的大量流量。它按IP地址聚合。

包含命令和优先级的审计清单,您可以将其直接导入为CSV格式或表格,便于管理和跟踪安全检查。每个条目都包括了相关的安全检查项、命令以及优先级。

 
检查项, 命令, 优先级
"限制符号链接的使用", "find / -type l", "高"
"检查文件路径的真实性", "realpath <path>", "高"
"使用绝对路径避免相对路径", "grep -r '../' <file_or_directory>", "高"
"确保临时文件存放在安全位置", "echo $TMPDIR", "中"
"生成唯一文件名", "mktemp <template>", "中"
"避免使用用户输入的文件名", "validate_input_for_filename <user_input>", "高"
"设置适当的文件权限", "chmod 600 <file>", "高"
"删除临时文件", "rm <temporary_file>", "中"
"验证用户输入", "input_validation <user_input>", "高"
"对输出进行编码", "html_encode <output>", "中"
"规范化路径避免路径遍历", "realpath <path>", "高"
"限制访问目录", "chroot <directory>", "高"
"验证上传文件类型", "file --mime-type <uploaded_file>", "高"
"限制上传文件大小", "ulimit -f <size_limit>", "中"
"确保上传文件不能执行", "chmod 444 <uploaded_file>", "中"
"最小权限原则", "setcap cap_net_bind_service=+ep <binary_file>", "高"
"设置文件和目录权限", "chmod 700 <directory>", "高"
"记录详细日志", "logger <message>", "中"
"避免泄漏敏感信息", "grep -r 'error' <log_file>", "高"
"使用现代安全库和框架", "npm audit", "高"
"及时更新依赖", "apt-get update && apt-get upgrade", "高"
"避免硬编码敏感信息", "grep -r 'password' <source_code>", "高"
"加密敏感数据", "openssl enc -aes-256-cbc -in <file> -out <encrypted_file>", "高"
"关闭不必要的资源", "lsof -i", "中"
"监控资源使用情况", "top -b", "中"

说明:

  • 检查项:审计的安全检查项,描述要执行的操作。
  • 命令:建议的命令或方法,用于执行相关的检查或修复操作。
  • 优先级:根据漏洞的严重程度,优先级分为高、中、低。高优先级的检查项应优先执行。

导入说明:

  1. CSV格式:您可以直接将上述内容复制到 .csv 文件中,然后使用Excel或其他表格工具打开。
  2. 表格导入:如果您希望将这些检查项导入数据库或安全审计工具,只需将CSV格式的数据导入即可。

这样,您可以在团队中进行审计跟踪,并通过自动化工具定期检查和报告每个安全项的状态。


NTFS特权提升(NTFS Privilege Escalation)是指利用Windows操作系统中NTFS文件系统的漏洞或不安全配置,将用户权限提升到更高的权限级别,从而获得对系统的未经授权访问权限。

NTFS(New Technology File System)是Windows操作系统的默认文件系统,它控制着文件和文件夹的访问权限。当一个用户登录到系统时,操作系统会为其分配一定的权限,这些权限决定了用户可以执行的操作。然而,存在漏洞或不正确的配置可能会被恶意攻击者利用,以提升其权限,从而执行更高权限的操作。

导致NTFS特权提升的原因可能包括以下几个方面:

操作系统漏洞:存在未修补的操作系统漏洞可能导致攻击者利用NTFS的设计缺陷或错误实现来提升特权。

软件漏洞:应用程序或系统服务可能存在未修补的漏洞,攻击者可以通过利用这些漏洞来修改或绕过NTFS的权限。

错误的配置:管理员在系统配置过程中可能疏忽了某些重要的权限设置,导致攻击者能够利用这些配置错误来提升特权。

为了防止NTFS特权提升,可以采取以下措施:

及时更新操作系统和软件:确保操作系统和相关软件都是最新的版本,并及时应用补丁程序和安全更新,以修复已知的漏洞。

最小权限原则:将用户和服务账户分配到最低权限级别,只赋予其实际需要的权限,避免滥用管理员权限。

强化访问控制:正确配置NTFS权限,限制用户对敏感文件和目录的访问,并定期审计和检查权限设置。

应用程序安全:确保所有第三方应用程序都是最新版本,并关注它们的安全补丁和更新。

审查配置:定期审查与NTFS相关的配置,检查任何不正确的权限配置或漏洞。

安全意识培训:提供安全培训与意识教育,加强用户和管理员对NTFS特权提升攻击的防范意识。

请注意,上述建议是一般性的安全措施。针对具体的NTFS特权提升漏洞和攻击技术,可能需要参考厂商发布的安全公告和建议,及时采取相应的补救措施。同时,遵守法律法规,不要滥用漏洞或进行非法活动。

posted @ 2023-07-22 05:20  suv789  阅读(58)  评论(0)    收藏  举报