混淆 cmd 中的运算符和引用优先级
Operators and quote precedence in obfuscated cmd
我无法理解这将如何评估,它来自我正在剖析的一个恶意软件,所以要小心。
我已经删除了 foor 循环中可能包含恶意指令的 ascii 乱码和整数。所以应该可以,有需要我可以提供
如果我在我的基本理解允许的范围内剥离代码,它试图通过这个:
cmd.exe /c CmD /V/C"set foo=ASCIIgibberish bazz=moreASCIIgibberish&&for %f in (BunchOfIntegers)do set bar=!bar!!foo:~%f,1!&&if %f == 88 powershell.exe "!bar:~6!""
收件人:
Interaction.Shell(`here`,0)
因此,我不确定 cmd 和 powershell 如何解析引号或变量名,因为我并不真正熟悉 powershell 和 cmd 优先级。
我想知道的是
cmd 会将 !
解释为逻辑非吗?
如果是这样,cmd 或 powershell 如何评估文字值的否定?,我想假设它看到 ascii 值并在逻辑上否定它,(0001 变成 1110)但不确定。
我是否正确地假设这只是 powershell.exe barSubstringStartingAt6
的一种混淆方式,因为在我看来 bar
只是从 foo
中分配了字符 88,即 79字符很长,所以不可能知道 bar
[6] 会是什么。
他们只是想将溢出的地址发送到 powershell 吗?
正如@MC ND 和@lit 所解释的那样,!var!
不是逻辑运算符,而是延迟扩展语法的 shorthand。因此,该语句只是通过使用 for 循环中的 int 作为索引重新排列变量中的字符
我无法理解这将如何评估,它来自我正在剖析的一个恶意软件,所以要小心。
我已经删除了 foor 循环中可能包含恶意指令的 ascii 乱码和整数。所以应该可以,有需要我可以提供
如果我在我的基本理解允许的范围内剥离代码,它试图通过这个:
cmd.exe /c CmD /V/C"set foo=ASCIIgibberish bazz=moreASCIIgibberish&&for %f in (BunchOfIntegers)do set bar=!bar!!foo:~%f,1!&&if %f == 88 powershell.exe "!bar:~6!""
收件人:
Interaction.Shell(`here`,0)
因此,我不确定 cmd 和 powershell 如何解析引号或变量名,因为我并不真正熟悉 powershell 和 cmd 优先级。
我想知道的是
cmd 会将 !
解释为逻辑非吗?
如果是这样,cmd 或 powershell 如何评估文字值的否定?,我想假设它看到 ascii 值并在逻辑上否定它,(0001 变成 1110)但不确定。
我是否正确地假设这只是 powershell.exe barSubstringStartingAt6
的一种混淆方式,因为在我看来 bar
只是从 foo
中分配了字符 88,即 79字符很长,所以不可能知道 bar
[6] 会是什么。
他们只是想将溢出的地址发送到 powershell 吗?
正如@MC ND 和@lit 所解释的那样,!var!
不是逻辑运算符,而是延迟扩展语法的 shorthand。因此,该语句只是通过使用 for 循环中的 int 作为索引重新排列变量中的字符