Сегодня покажу вам разбор несложной малвари под
Linux.Реверс-инжиниринг помогает разобраться в том, как работает ВПО(вредоносное программное обеспечение). Более подробно можно почитать туть.
При анализе малвары мне нравится извелкать интересные приемы, которые в ней используются. А далее воспроизводить их для дальнейшего детекта
Обычно проводится статический и динамический анализ для полного понимания алгоритма работы программы.
В этом посте я проведу статический анализ. Динамический анализ и небольшой интерактивчик будет на следующей неделе:3
▪︎ Первым делом
Обычно я смотрю файл через утилиту Detect It Easy. Вот ее вывод:
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() в корневую директорию /. (скриншот 1)Далее в бесконечном цикле вызывается функция
do_heartbeat().▪︎ do_heartbeat()
Из функции можно извлечь все директории, с которыми малвара взимодействует. (скриншот 2)
/u01, /u02, /u03, /u04 - это часто используемые точки монтирования в Linux при работе с базами данных Oracle.▪︎ find
Конечно же следом пойду смотреть фунцию
find. (скриншот 3)Алгоритм функции достаточно простой:
1. Открывает директорию и проходится по всем файлам в ней. Если это
. или .., то их пропускает;2. Вызвает функцию
CreatRadMe (да-да, это не опечатка). По названию понятно, что создается README файл (скриншот 4);3. Далее происходит вызов
EncrFile, если не находит подстроку C_I_0P в пути до файла. Если же это директория, то рекурсивно вызывается find;▪︎ CreatRadMe
Ничего особо интересного тут нет. Просто создается файл со следующим содержанием. (скриншот 4)
▪︎ EncrFile
Думаю, что ключевая функция во всем малваре -
EncrFile. (скриншот 5)По сути для файла изменяются права с помощью
chmod() на rw-------. Эти же права используются далее для работы с файлами. Файл шифрутеся с помощью алгоритма
rc4. Ключ генерируется для каждого файла отдельно, и, что интересно, записывается в файл рядом с раширением .C_I_0P с помощью функции CreateKey. Это означает, что получится эти файлы расшифровать) При этом шифруется максимум 100000000 байт файла.▪︎ Итог
Я провел статический анализ не сложного шифровальщика-демона(такие бываю не часто, но об этом напишу позже❤️). Так как ключ хранится рядом с зашифрованным файлом, то мы можем написать дешифровшик. Динамическим анализом и написанием дешифровшика мы займемся в следующий вторник. Так что ожидайте с нетерпением:3
#malware #linux
@coffee_cube




