Видео-версия

Все новые прохождения появляются сначала на канале t.me/kiberdruzhinnik. Подпишись, чтобы не пропускать новые!

Смотри на t.me/kiberdruzhinnik/167.

Пакер

Лениво с помощью Detect It Easy определяем, что файл упакован с помощью UPX.

alt text

Распаковка

Не менее лениво снимем упаковку с помощью утилиты upx:

$ upx -d C:\Users\WDAGUtilityAccount\Desktop\malware\update
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2024
UPX 4.2.2       Markus Oberhumer, Laszlo Molnar & John Reiser    Jan 3rd 2024

        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
     29499 <-      9540   32.34%   linux/amd64   update

Unpacked 1 file.

Реверс

Сразу же по строкам находим ссылку на текст вымогательства, из которого понимаем адрес биткоин кошелька и сумму выкупа: https://pastes.io/raw/foiawsmlsk

In shadows we dwell, unseen we act,
To claim what's ours, we've formed a pact.
With files concealed, and secrets locked,
We kindly ask, don't be too shocked.

A million pounds in Bitcoin bright,
Shall bring your data back to light.
To free your files from chains of gold,
Be swift, be brave, don't let them mold.

Send payment to our wallet deep,
BTC Address: 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2,
To verify and make us weep.

For questions, visit us, don't fail,
Onion Address: xyzf3jv6xq3d7w5e.onion,
Customer service, there to hail.

The clock is ticking, time's a thief,
Pay heed to us, or face the grief.
In cyberspace, the sum we claim,
Address we send, to end this game.

Should you resist, or just ignore,
Your precious data, you'll see no more.
The choice is yours, we leave it here,
Weigh your options, with trembling fear.

For every sunset that slips away,
The price we ask, it will not stay.
So heed our words, and make it quick,
A million pounds, a ransom's trick.

На наше счастье из бинарника не вырезаны дебажные символы, поэтому это не реверс - это сказка.

В ходе реверса понимаем, что используется симметричное шифрование AES CBC. Важно помнить, что помимо ключа нам нужен инициализационный вектор IV.

alt text

Мимолетом находим шифруемые расширения файлов:

alt text

Функция скачивания ключа шифрования и инициализационного вектора с помощью curl:

alt text

Функция кодирования ссылки, которая используется для получения ключа шифрования и инициализационного вектора:

alt text

Получаем ссылку, с помощью которой скачиваем ключ шифрования AES и инициализационный вектор IV:

encrypted = "\x0ACLIG\x0F\x1C\x1D\x01\x0C\x5D\x0A\x18\x45\x46\x1F\x1F\x45\x1B"
key = "b7894532snsmajuys6"

out = bytearray(len(encrypted))

for i in range(len(encrypted)):
    out[i] = ord(key[i % len(key)]) ^ ord(encrypted[i])

print(out)
$ python3 decode.py
bytearray(b'https://rb.gy/3flsy')
$ wget https://rb.gy/3flsy
$ md5sum 3flsy
950efb05238d9893366a816e6609500f  3flsy

Если скачать эту ссылку с помощью браузера, то получим имя файла updater.

Напишем декриптор для файлов (для этого просим какую-нибудь из доступных GPT, мне вывело примерно такой код):

import os
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad

def decrypt_file(filename, key, iv):
    """Decrypts a file using AES CBC mode with the given key and IV."""

    cipher = AES.new(key, AES.MODE_CBC, iv)

    with open(filename, "rb") as f:
        ciphertext = f.read()

    plaintext = unpad(cipher.decrypt(ciphertext), AES.block_size)

    with open(filename.replace(".24bes", ""), "wb") as f:
        f.write(plaintext)

def main():
    """Decrypts all files with the .24bes extension in the current directory."""

    with open("3flsy", "rb") as f:
        data = f.read()
        key = data[0:32]  # Extract first 32 bytes for key
        iv = data[32:]    # Extract next 16 bytes for IV

    for filename in os.listdir():
        if filename.endswith(".24bes"):
            decrypt_file(filename, key, iv)

if __name__ == "__main__":
    main()

Установим необходимую библиотеку pycryptodome и расшифруем файлы:

python3 -m venv env
source env/bin/activate
pip install pycryptodome
python3 decryptor.py

Смотрим на расшифрованный PDF:

alt text

И также заглянем в расшифрованный текстовый документ:

alt text