Это первая часть из двух. Продолжение в следующем посте.
Привет^3🦠 Сегодня покажу вам разбор несложной малвари под Linux.
Реверс-инжиниринг помогает разобраться в том, как работает ВПО(вредоносное программное обеспечение). Более подробно можно почитать туть.
При анализе малвары мне нравится извелкать интересные приемы, которые в ней используются. А далее воспроизводить их для дальнейшего детекта и забавы ради.
Обычно проводится статический и динамический анализ для полного понимания алгоритма работы программы.
В этом посте я проведу статический анализ. Динамический анализ и небольшой интерактивчик будет на следующей неделе:3
Первым делом
Обычно я смотрю файл через утилиту Detect It Easy. Вот ее вывод:
Bash
Info:
Size: 1028096
File type: ELF32
String: ELF(386)
Extension: elf
Operation system: Red Hat Linux(ABI: 2.6.9)
Architecture: 386
Mode: 32-bit
Type: EXEC
Endianness: LE
Выглядит так, что таблица символов не удалена, поэтому можно сразу найти main. Закидываб бинарь в IDA Pro
main
В функции main происходит создание процесса-демона с вызовом chroot() в корневую директорию /.

Далее в бесконечном цикле вызывается функция do_heartbeat().
do_heartbeat()
Из функции можно извлечь все директории, с которыми малвара взимодействует.

/u01, /u02, /u03, /u04 - это часто используемые точки монтирования в Linux при работе с базами данных Oracle.
find
Конечно же следом пойду смотреть фунцию find.

Алгоритм функции достаточно простой:
- Открывает директорию и проходится по всем файлам в ней. Если это
.или.., то их пропускает; - Вызвает функцию
CreatRadMe(да-да, это не опечатка). По названию понятно, что создается README файл (скриншот 4); - Далее происходит вызов
EncrFile, если не находит подстрокуC_I_0Pв пути до файла. Если же это директория, то рекурсивно вызываетсяfind;
CreatRadMe
Ничего особо интересного тут нет. Просто создается файл со следующим содержанием.

EncrFile
Думаю, что ключевая функция во всем малваре - EncrFile.

По сути для файла изменяются права с помощью chmod() на rw-------. Эти же права используются далее для работы с файлами.
Файл шифрутеся с помощью алгоритма rc4. Ключ генерируется для каждого файла отдельно, и, что интересно, записывается в файл рядом с раширением .C_I_0P с помощью функции CreateKey. Это означает, что получится эти файлы расшифровать) При этом шифруется максимум 100’000’000 байт файла.
Итог
Я провел статический анализ не сложного шифровальщика-демона(такие бываю не часто, но об этом напишу позже❤️). Так как ключ хранится рядом с зашифрованным файлом, то мы можем написать дешифровшик. Динамическим анализом и написанием дешифровшика мы займемся в следующий вторник. Так что ожидайте с нетерпением:3