5

Я могу получить список модулей, используя lsmod или cat /proc/modules . Используют ли два подхода один и тот же механизм для извлечения модулей? Я хочу знать это, поскольку мы могли бы использовать это, чтобы найти некоторые скрытые вредоносные модули.

3 ответа3

4

Они оба читают один и тот же интерфейс ядра для создания списка. Тем не менее, руткит может изменить lsmod, чтобы скрыть модули, но существует множество способов чтения /proc /modules, которые для руткита было бы почти невозможно изменить все из них.

Если вы делаете что-то запрограммированное, на самом деле не имеет значения, какой вы используете, но lsmod гораздо более удобочитаем для человека.

Обновление: включить примеры.

cat /proc/modules
more /proc/modules
less /proc/modules
view /proc/modules
uniq /proc/moduels
uniq < /proc/modules
grep . /proc/modules
grep . < /proc/modules
awk '{print}' /proc/modules
awk '{print}' < /proc/modules
sed 's/(.)/$1/' < /proc/modules
echo "$(</proc/modules)"
perl -p -e ";" < /proc/modules
nc -l 11111 & nc localhost 11111 < /proc/modules

И т.д., и т.д., И т.д. Все, что может читать текст, может отображать содержимое. Это лишь немногие, о которых я подумал менее чем за минуту. Если бы я думал об этом, я мог бы придумать некоторые действительно эзотерические способы.

1

Если руткит работает на уровне ядра (например, в качестве модуля), вы не можете полагаться на информацию, предоставленную /proc/modules . Кроме того, вы не можете полагаться на lsmod так как он симпатично печатает /proc/modules .

1

Мы могли бы посмотреть исходный код, но если вы ленивы, как я:

sudo strace lsmod |& grep -E '(proc|sys)'

Показывает интересные хиты, такие как:

open("/proc/modules", O_RDONLY|O_CLOEXEC) = 3
open("/sys/module/ipt_MASQUERADE/refcnt", O_RDONLY|O_CLOEXEC) = 3

поэтому мы можем догадаться, что большая часть информации поступает из /proc/modules и /sys/module/* .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .