ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

LOLBAS 实战剖析:利用 IBM Lotus Notes 的 notes.exe 与 nlnotes.exe 执行 PowerShell 的 Living Off The Land 技术

LOLBAS 实战剖析:利用 IBM Lotus Notes 的 notes.exe 与 nlnotes.exe 执行 PowerShell 的 Living Off The Land 技术
  • 应用安全
  • 渗透测试
  • 红蓝对抗

【免费下载链接】LOLBAS

Living Off The Land Binaries And Scripts - (LOLBins and LOLScripts)

项目地址:https://gitcode.com/gh_mirrors/lo/LOLBAS
点击查看免费下载

导读

本文以 LOLBAS 仓库旧版存档(Archive-Old-Version)中记录的 Notes.exe.md 条目为核心,系统讲解如何将 IBM Lotus Notes 客户端自带的notes.exe(及其姊妹程序nlnotes.exe)滥用于"Living Off The Land"(LOL)攻击场景——在不落盘任何自定义工具的情况下,仅凭微软/厂商签名二进制自身的能力拉起 PowerShell 并执行任意命令。读完本文,你将掌握该 LOLBin 的完整命令形态、参数含义、可观测的检测特征,以及它在 LOLBAS 项目 YML 数据结构中的记录方式,可用于红队武器库建设与蓝队检测规则开发。

一、LOLBAS 项目背景:什么是 LOLBin

LOLBAS(Living Off The Land Binaries And Scripts)项目的目标(见 README.md)是系统化记录每一个可被用于"Living Off The Land"技术的二进制文件、脚本与库。所谓"Land",指的是目标主机上已经存在的、由微软签名的可信文件(原生系统自带或来自微软官方下载),它们具有超出设计用途的"意外功能",例如:

  • 执行任意代码或透传执行其他未签名程序/脚本;
  • 编译代码、文件下载/上传/复制;
  • 持久化、UAC 绕过、凭据窃取、进程内存转储、日志规避与篡改等。

项目收录条目遵循明确标准:必须是微软签名文件,且具备对 APT 或红队有用的额外功能(详见 README.md 的 Criteria 一节)。notes.exe正是这样的典型——它是 IBM 官方签名的客户端程序,却可以被用来启动 PowerShell,因而被收录进项目,功能分类(Functions)为Execute(执行)。

二、Notes.exe 是什么:IBM Lotus Notes 客户端的可执行文件

notes.exe是 IBM Lotus Notes(即 IBM Notes)桌面客户端的主可执行文件,默认安装路径为:

C:\Program Files (x86)\IBM\Lotus\Notes\notes.exe

Lotus Notes 是企业环境中非常常见的邮件与协作客户端,因此该程序在大量内网主机上天然存在、由厂商签名、常被放行,这使它成为"Living Off The Land"的优质载体:攻击者无需上传工具,即可借助一款合法的办公软件完成代码执行。

仓库中该条目的核心记录如下(源自 Notes.exe.md):

  • Functions(功能):Execute(执行)
  • 完整命令:
    Notes.exe "=N:\Lotus\Notes\Data\notes.ini" -Command if((Get-ExecutionPolicy) -ne AllSigned) { Set-ExecutionPolicy -Scope Process Bypass }
  • 功能描述:Run PowerShell via LotusNotes(通过 Lotus Notes 运行 PowerShell)
  • 致谢:Daniel Bohannon(@danielhbohannon)

三、命令逐段解析:notes.exe 如何拉起 PowerShell

将上述命令拆解为四个组成部分,可以清楚看出它的运行逻辑:

Notes.exe "=N:\Lotus\Notes\Data\notes.ini" -Command if((Get-ExecutionPolicy) -ne AllSigned) { Set-ExecutionPolicy -Scope Process Bypass }
片段含义
Notes.exeIBM Lotus Notes 客户端主程序,作为合法载体进程
"=N:\Lotus\Notes\Data\notes.ini"以=前缀指定启动时使用的 notes.ini 配置文件路径,即N:\Lotus\Notes\Data\notes.ini(Notes 支持以=路径形式显式指定 ini 文件)
-CommandPowerShell 的命令行参数,其后内容被作为 PowerShell 命令执行
if((Get-ExecutionPolicy) -ne AllSigned) { Set-ExecutionPolicy -Scope Process Bypass }内联 PowerShell 逻辑:若当前执行策略不是AllSigned,则将当前进程作用域的 ExecutionPolicy 临时设为Bypass

从命令形态可以推断其底层机制:notes.exe在启动过程中会解析并透传-Command之后的参数给 PowerShell,从而"借壳"执行任意 PowerShell 命令。命令中的 PowerShell 片段本身就是一个经典的策略自解除(Policy Bypass)手法——Get-ExecutionPolicy检查当前执行策略,若非AllSigned则通过Set-ExecutionPolicy -Scope Process Bypass将仅对当前进程生效的执行策略切换为Bypass,从而允许后续加载未签名脚本或执行受限操作,且无需管理员权限、不留全局配置改动。

这一"先解除策略、再执行载荷"的组合在实际攻击中通常被进一步扩展,例如将-Command替换为下载执行(IEX)一段远程 PowerShell 载荷。需要强调的是:原文档给出的是最小可复现示例,其核心价值在于证明了 notes.exe 具备将参数透传给 PowerShell 的能力,攻击者只需替换-Command后面的载荷即可实现任意代码执行。

四、姊妹程序:NLNOTES.EXE 的变体用法

在 Nlnotes.exe.md 中,仓库还记录了同族的第二个 LOLBin——NLNOTES.EXE。它是 Lotus Notes 的另一个可执行文件(常见于 Notes 相关组件),命令形态几乎一致,仅在参数上多了一个/authenticate:

NLNOTES.EXE /authenticate "=N:\Lotus\Notes\Data\notes.ini" -Command if((Get-ExecutionPolicy ) -ne AllSigned) { Set-ExecutionPolicy -Scope Process Bypass }

记录路径为:

C:\Program Files (x86)\IBM\Lotus\Notes\Notes.exe

两者的对比可以总结为:

维度Notes.exeNLNOTES.EXE
命令前缀Notes.exeNLNOTES.EXE /authenticate
ini 指定方式"=N:\Lotus\Notes\Data\notes.ini""=N:\Lotus\Notes\Data\notes.ini"
PowerShell 透传-Command ...-Command ...
功能分类ExecuteExecute
致谢Daniel BohannonDaniel Bohannon

对于红队而言,这意味着同一个滥用手法拥有两个可互换的合法载体:当环境中只有其中之一(或监控规则只覆盖其一)时,攻击者可以切换变体规避针对单一进程名的检测。

五、仓库中的结构化记录:Notes.yml 与 YML 规范

在旧版存档中,该条目的结构化数据保存在 YML 文件中(Notes.yml 与 Nlnotes.yml),字段与 Markdown 文档一一对应:

--- Name: Notes.exe Description: Execute Author: '' Created: 2018-05-25 Commands: - Command: Notes.exe "=N:\Lotus\Notes\Data\notes.ini" -Command if((Get-ExecutionPolicy) -ne AllSigned) { Set-ExecutionPolicy -Scope Process Bypass } Description: Run PowerShell via LotusNotes. Full_Path: - C:\Program Files (x86)\IBM\Lotus\Notes\notes.exe Code_Sample: [] Detection: [] Resources: - https://gist.github.com/danielbohannon/50ec800e92a888b7d45486e5733c359f - https://twitter.com/HanseSecure/status/995578436059127808 Acknowledgement: - Person: Daniel Bohannon Handle: '@danielhbohannon'

关于 YML 格式,需要注意两点:

  1. 该项目主分支(YML-Template.yml)的标准条目包含更丰富的字段:Commands下的每条命令可附带Usecase(用例)、Category(功能类别,取值见 CategoryList.md,如 Execute、Download、UAC bypass 等)、Privileges、MitreID(如 T1055)、OperatingSystem(适用系统版本)以及可选的Tags;此外还有Code_Sample、Detection(含 IOC、Sigma、Elastic、Splunk 等检测规则字段)和Acknowledgement。旧版存档中的 Notes.yml 是精简形态,仅保留了Command与Description两个核心字段,Detection与Code_Sample留空。
  2. 按 CONTRIBUTING.md 的说明,LOLBAS 项目以yml/目录下的 YML 文件为唯一数据源,其余一切(含前端展示)均由 YML 生成;分类字段必须取自 CategoryList.md 以保证 Web 门户的正常工作。

六、检测与防御:如何发现 notes.exe 的异常行为

结合命令形态与进程行为,蓝队可以从以下几个可观测层面建立检测规则(以下 IOC 均基于该命令的可观察特征推断,可作为检测规则设计的起点):

  1. 进程父子关系异常:notes.exe/nlnotes.exe启动后派生出powershell.exe子进程。正常情况下 Lotus Notes 客户端不会主动拉起 PowerShell,这是最直接的强信号。
  2. 命令行特征组合:notes.exe 的命令行中同时出现notes.ini路径与-Command参数——正常启动 Notes 客户端不需要传递-Command,二者的组合几乎可以断定是滥用行为。
  3. 策略解除关键字:命令行内包含Get-ExecutionPolicy、Set-ExecutionPolicy、Bypass、AllSigned等 PowerShell 策略操纵关键字,与 YML-Template.yml 中Detection字段建议的 IOC 记录方式对应。
  4. 配置文件路径异常:命令中指定的是网络共享路径(N:\...),表明 ini 文件可能由攻击者远程控制,而非本地默认配置。

建议的工程化检测手段包括:EDR/SIEM 中采集进程创建事件(如 Sysmon Event ID 1)并关联父子进程链;对notes.exe、nlnotes.exe的进程树与命令行做白名单化放行(仅允许无-Command的常规启动);在 PowerShell 侧启用 Script Block Logging 与 Constrained Language Mode 作为纵深防御。上述思路与该 LOLBin 条目本身在Detection字段留空形成呼应——该项目鼓励社区补充 IOC、Sigma 与 Splunk 规则(见 YML-Template.yml),本文的检测清单可作为补充方向。

七、总结

notes.exe与nlnotes.exe是"Living Off The Land"思想的一个典型注脚:一款企业常见的办公客户端,因为其对-Command参数的透传行为,成了攻击者手中无需落地、难以察觉的 PowerShell 执行跳板。通过 LOLBAS 仓库 Archive-Old-Version/OtherBinaries/Notes.exe.md 与 Archive-Old-Version/OtherBinaries/Nlnotes.exe.md 的精简记录,配合 YML 结构化数据与项目模板,红队可以快速将此类已知 LOLBin 纳入武器库,蓝队则可以据此建立"进程-命令行-策略操作"三重维度的检测规则。研究此类条目时,建议始终回到 YML-Template.yml 与 CategoryList.md 理解数据规范,并以 README.md 的收录标准衡量每个条目的攻击价值,从而构建自己的 LOLBin 分析框架。

  • 应用安全
  • 渗透测试
  • 红蓝对抗

【免费下载链接】LOLBAS

Living Off The Land Binaries And Scripts - (LOLBins and LOLScripts)

项目地址:https://gitcode.com/gh_mirrors/lo/LOLBAS
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进