2017-10-18 269 views
0

网络搜索$s=New-Object IO.MemoryStream(,[Convert]::FromBase64String())显示了许多类似的事件Pastebin的,但我不知道如何解码它自己。原来的base64我PowerShell打开gzip流

param( 
[Parameter(Mandatory=$True)] 
[string]$b64 
) 
[System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String("$b64")) 

解码,给了我这样的:

$s=New-Object IO.MemoryStream(,[Convert]::FromBase64String("Encrypted-String")) 
IEX (New-Object IO.StreamReader(New-Object IO.Compression.GzipStream($s,[IO.Compression.CompressionMode]::Decompress))).ReadToEnd(); 

我一直无法弄清楚如何使用PowerShell来解压“加密字符串”这样我就可以分析发生了什么。

我见过类似的帖子,但没有回答我自己如何解码它的问题。任何帮助是极大的赞赏。

+0

什么是你想才达到? – ArcSet

+0

您是否试图问如何使用PowerShell解压缩gzip压缩字符串? gzip仅在标题中提及,而您在问题的正文中说base64。 – Clijsters

回答

0

我对格式化表示歉意,我仍然在这里学习发布问题的细微差别。如果我的问题不清楚,但是在今天的研究中运气不错(我一直试图在过去的一年中找出这个问题),我也很抱歉。

我找到了一个链接(https://blog.kenaro.com/2010/10/19/how-to-embedd-compressed-scripts-in-other-powershell-scripts/),它给了我足够的信息来构建这个脚本。感谢Ingo Karstein为您的博客和所有查看并要求澄清的人员。

gzip流是需要进一步分析的结果的一部分,我无法弄清楚。

我在我的Temp中创建一个文件夹,其中包含我从中获取可疑批处理文件的计算机的名称,该文件调用编码的powershell命令;删除除base64代码以外的所有代码,并将其重命名为.txt文件。然后我使用计算机名和文件名运行下面的代码来查看攻击者正在做什么。这对我的作品的答案:

( 
[Parameter(Mandatory=$True)] 
[string]$HostIP, 
[Parameter(Mandatory=$True)] 
[string]$file 
) 

New-Item C:\Temp\$HostIP\Results -ItemType Directory 

$b64 = Get-Content C:\Temp\$HostIP\$file.txt -Raw 
Write-Host 
$results = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String("$b64")) 
$results | Out-File C:\Temp\$HostIP\Results\unicode_$file.txt 

$ec64 = Get-Content C:\Temp\$HostIP\Results\unicode_$file.txt 
$eb64 = $ec64|%{$_.split('"')[1]} 

$data = [System.Convert]::FromBase64String("$eb64") 
$ms = New-Object IO.MemoryStream 
$ms.Write($data, 0, $data.Length) 
$ms.Seek(0,0) | Out-Null 

$cs = New-Object IO.Compression.GZipStream($ms, [IO.Compression.CompressionMode]::Decompress) 
$sr = New-Object IO.StreamReader($cs) 
$t = $sr.readtoend() 
$t | Out-File C:\Temp\$HostIP\Results\decompressed_$file.txt 

$dcb64 = Get-Content C:\Temp\$HostIP\Results\decompressed_$file.txt 
$dc64 = $dcb64|%{$_.split('"')[1]} 

$utf = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("$dc64")) 
$utf | Out-File C:\Temp\$HostIP\Results\utf8_$file.txt 

$asc = [System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String("$dc64")) 
$asc | Out-File C:\Temp\$HostIP\Results\ascii_$file.txt 

$utf8 = "C:\Temp\$HostIP\Results\utf8_$file.txt" 
$ascii = "C:\Temp\$HostIP\Results\ascii_$file.txt" 

(Get-Content "$utf8") -replace "`0", "" | Set-Content "C:\Temp\$HostIP\Results\utf8_no-null_$file.txt" 
(Get-Content "$ascii") -replace "`0", "" | Set-Content "C:\Temp\$HostIP\Results\ascii_no-null_$file.txt" 

'