16 января 2023 г. Разработка
pic Дмитрий Найдолинский
Linux разработчик.

Хакинг. Скрываем функции из списка .symtab


Сейчас я покажу один способ как можно скрыть функции из .symtab секции. В целом, я не смогу объяснить некоторые назначения регистров и может быть толком не разобрался в теме. Но это работает и я хочу показать. Может быть кто-нибудь захочет капнуть глубже и будет супер хакер. 


Итак, начнём. Я покажу пример на своей библиотеке, но можно умудриться и это запустить на libc например. Что нужно делать?

Взглянем на этот код.

Для начала нам нужно узнать что находится в регистре r9. От него мы будем отталкиваться каждый раз.

При каждом новом запуске, значение в регистре меняются - это служит защитой от хакерских атак, чтобы невозможно было сделать эксплоит,

который с первого раза может сработать. Смотрим адрес, который помещается в addr.

Потом ищем функцию, которая находится в dlsym, она вернет адрес функции.

Далее вычитаем из addr нашу функцию - addr - (uint64_t) fn. Результат будет всегда один и тот же. Что делаем теперь?

В моём случае результат 0xa945;

Теперь меняем функцию так.

И собираем программу как обычно, чтобы библиотека подключалась динамически.

Теперь выполняем программу и всё работает. Если посмотреть с помощью radare2 по команду >is, то мы не увидим, что эта функция из библиотеки используется.