Je peux obtenir une liste de modules en utilisant soit lsmod
ou cat /proc/modules
. Les deux approches utilisent-elles le même mécanisme pour récupérer les modules ? Je veux le savoir car nous pourrions l'utiliser pour trouver des modules malveillants cachés.
Réponses
Trop de publicités?Ils lisent tous deux la même interface du noyau pour produire la liste. Cependant, un rootkit peut modifier lsmod pour cacher des modules, mais il existe une myriade de façons de lire /proc/modules qu'il serait presque impossible pour un rootkit de modifier toutes.
Si vous faites quelque chose de programmatique, cela n'a pas vraiment d'importance de savoir lequel vous utilisez, mais lsmod est beaucoup plus lisible pour l'homme.
Mise à jour : Inclure des exemples.
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
Etc., etc., etc. Tout ce qui peut lire du texte peut en afficher le contenu. Ce ne sont que quelques exemples auxquels j'ai pensé en moins d'une minute. En y réfléchissant, je pourrais en trouver d'autres vraiment de manière ésotérique.
On pourrait chercher le code source, mais si vous êtes paresseux comme moi :
sudo strace lsmod |& grep -E '(proc|sys)'
Montre des succès intéressants tels que :
open("/proc/modules", O_RDONLY|O_CLOEXEC) = 3
open("/sys/module/ipt_MASQUERADE/refcnt", O_RDONLY|O_CLOEXEC) = 3
donc on peut supposer que la plupart des informations proviennent de /proc/modules
y /sys/module/*
.