Comment détecter un processus caché sous Linux?

10

Nous avons une boîte dont nous soupçonnons qu'elle est enracinée au travail. La question est de savoir comment le trouver? Je ne suis pas un administrateur système, mais j'ai été amené dans l'équipe pour résoudre la situation et je suis curieux de savoir où trouver de bons endroits comme un problème?

La raison pour laquelle nous soupçonnons cela est que nous avons remarqué une utilisation réseau supérieure à la normale sur la machine à partir de ports élevés (qui semblent être aléatoires).

Que pouvons-nous faire pour localiser l'enfant à problème? Que pouvons-nous faire pour nous en protéger à l'avenir? Y a-t-il une surveillance que nous pouvons exécuter pour nous en informer à l'avenir? (Mis à part la surveillance du réseau sur laquelle nous travaillons déjà de plus près.)

Merci à l'avance et je peux fournir plus de détails si nécessaire. Appréciez votre temps.

Chris
la source
2
Correctif garanti: supprimez-le de l'orbite et restaurez-le à partir de la sauvegarde.
Chris S
Cela semble reproduire cette question récente .
Steven lundi
1
"Je ne suis pas administrateur système, mais j'ai été amené dans l'équipe pour résoudre la situation" - cela n'a pas de prix. Pour clarifier les choses: votre question est parfaitement OK. Votre situation réelle ne l'est pas. Celui qui a décidé de vous impliquer a tort.
halp
@Chris S: Il s'agit d'une question d'apprentissage et non pas du moyen le plus rapide de résoudre le problème.
Chris
halp: Je ne suis pas responsable de la résolution de ce problème, mais je suis partie pour en tirer des leçons. Je suis un récent diplômé de la CSE qui se mouille les pieds au travail.
Chris

Réponses:

6

Vous ne pouvez pas faire confiance aux outils système que vous avez sur la machine. Les rootkits remplaceront ps, netstat, ls et plus pour cacher leur présence. Vous devez mettre la machine hors ligne, retirer son disque dur, faire une copie médico-légale (pensez dd) puis travailler à partir de cela sur une machine secondaire pour rechercher le rootkit.

Si vous insistez pour travailler sur la machine en direct (ce qui est généralement futile), vous pouvez essayer de télécharger une distribution de secours sur CD (il est très important que la copie soit en lecture seule) et utiliser ses copies de ps, lsmod, etc.

Même cela peut échouer car un rootkit peut installer des modules du noyau pour cacher les entrées dans / proc où des outils comme ps fonctionnent normalement.

Bonne chance!

bot403
la source
S'il a une distribution basée sur RPM, il peut exécuter rpm -V -f /bin/pspour vérifier si elle a été modifiée sinon. Bien sûr, cela ne fonctionnera que si l'attaquant n'a pas également modifié rpmou la base de données RPM. Bien qu'il puisse modifier certains rpmfichiers, exécutez-le rpm -V rpmet vérifiez s'il ment ou non.
Cristian Ciupitu du
5

Le problème avec un rootkit bien construit est qu'il modifie la commande de votre système; comme ps et top pour ne pas afficher les processus du rootkit et ls pour ne pas afficher les fichiers du rootkit.

Donc, ce que vous devrez faire est d'obtenir ces commandes éventuellement à partir de la source ou sous forme de binairies. (Assurez-vous d'être bien signé). Mais l'astuce d'un root kit (je l'ai vu) est qu'il peut aussi corrompre votre compilateur. Ainsi, lorsque le compilateur sait qu'il compile ls ou ps ou toute commande, il les infecte également.

Quand j'ai vu ce problème, j'ai dit que bien permet de recompiler gcc, mais pas ce dont j'ai besoin pour compiler gcc ... l'infecte gcc .... donc quand il sait qu'il se compile, il l'infecte afin qu'il puisse infecter la commande.

Vous direz que cela est gros et difficile à détecter, oui mais rares sont les rootkits qui sont si à l'épreuve des balles que je viens de vous donner le pire des cas.

Sérieusement, si vous êtes sûr qu'il y a un kit racine sur votre serveur, réinstallez-le!

Gopoi
la source
Appréciez la réponse, et oui, la réinstaller est la solution pour l'instant. La chose est cependant, je veux en savoir plus, donc sur la route, je pourrai le détecter et le récupérer sans avoir à reconstruire le serveur entier. Nos exécutants n'aiment pas plus les temps d'arrêt que le prochain exécutable.
Chris
@Chris, la prévention est votre seul remède .. Découvrez comment cela s'est produit afin que nous puissions aider à répondre .. "comment" pour éviter que cela ne se reproduise
Arenstar
Allez-vous choisir un bon répondeur à la question?
Gopoi
5

La meilleure façon de savoir si votre serveur a été "rooté" est d'exécuter un système de détection d'intrusion (HIDS) basé sur l'hôte. Malheureusement, si vous n'exécutez pas un HIDS maintenant, il est trop tard pour en installer un. Le moment approprié pour installer un HIDS est lorsque le serveur est installé pour la première fois et avant de le mettre sur un réseau.

En bref, la plupart des HIDS fonctionnent en calculant des hachages cryptographiques de tous les binaires du système et en stockant ces hachages (ainsi que de nombreuses autres statistiques de fichiers) dans une base de données, appelée base de données de base. Ensuite, périodiquement, le HIDS analyse à nouveau votre système, en comparant tous les fichiers de sa base de données de base aux fichiers système réels.

Oui, bien sûr, il est possible pour un rootkit de modifier votre base de données de base, c'est pourquoi vous devez prendre une copie de cette base de données et la stocker séparément du serveur avant de mettre le serveur en ligne. Ensuite, si vous pensez que vous êtes "enraciné" (et que vous pensez que votre base de données de base a également été falsifiée), vous pouvez démarrer votre système à partir du support d'installation, restaurer la base de données connue à partir de votre sauvegarde, puis exécuter une analyse par rapport à la bien connu. Il est cependant beaucoup plus probable qu'un rootkit n'anticipe pas d'avoir à vaincre votre HIDS particulier, et vous recevrez donc une notification du HIDS indiquant que les fichiers système ont changé, indiquant une intrusion probable du système.

Étant donné que vous n'exécutiez pas un HIDS, vous n'avez aucun moyen rapide de déterminer avec certitude si vous avez été rooté ou quels fichiers système ont été modifiés. Vous pouvez passer beaucoup de temps à comparer vos fichiers système à des fichiers connus connus extraits de supports d'installation connus, mais il est préférable de passer ce temps à réinstaller votre système à partir de ce support. Si vous souhaitez rechercher comment vous avez été enraciné après coup, la meilleure solution consiste à prendre une image de votre système avant de l'effacer et de le réinstaller.

Steven Monday
la source
Samhain est un HIDS.
pefu
4

Veuillez vous référer à un article antérieur fait

Douleur supprimant un rootkit Perl

C'est vraiment important que vous lisiez ceci ..

Quant à répondre à vos questions ..

Je lance généralement un IDS / IPS (système de détection / protection contre les intrusions) comme snort .. il fait un excellent travail contre le jeu déloyal, et je l'ai vu faire un excellent travail en action ..

J'utilise également les serveurs Syslog pour garder les messages de journalisation hors des serveurs de production, afin que vous puissiez retracer les problèmes et les modifications / être rootkit

J'utilise également souvent des outils de gestion tels que les cactus, qui représentent graphiquement le processeur, la mémoire, le disque, l'utilisation du réseau et signalent si quelque chose sort de l'ordinaire.

Être rootkit est un problème sérieux, essayez certainement d'en trouver la cause.

J'espère que cela aide ..: D

Arenstar
la source
3

Les ports hauts aléatoires sont les ports éphémères, ce qui indique que vous avez probablement un ou plusieurs programmes connectés à l'extérieur de ce système.

S'il n'est pas enraciné, cela netstat -np | grep -v ^unixpeut vous donner un indice sur le ou les programmes générant le trafic.

Vous pouvez également analyser le trafic d'un système proche à l'aide de tcpdump pour vider les paquets provenant du système que vous pensez être enraciné. Si le programme problématique ne s'exécute pas en tant que root, vous pouvez le faire à partir du système infecté.

Il y a plusieurs choses que vous pouvez faire pour éviter de vous enraciner:

  • Gardez votre système corrigé, en particulier le noyau. Surveillez les raisons de la sortie du noyau pour déterminer les vecteurs d'attaque.
  • Installez et utilisez uniquement les programmes requis. Faites une installation aussi minimale que possible.
  • Exécutez le moins possible en tant que root. De nombreux programmes changeront en ID utilisateur non privilégiés une fois qu'ils auront terminé la configuration nécessitant le privilège root.

EDIT: Si vous êtes enraciné, l'utilisation de programmes ps et ls liés statiquement peut indiquer une différence entre les programmes en cours d'exécution que les deux outils trouvent. Des différences dans la liste peuvent également survenir lorsque les programmes de courte durée disparaissent.

BillThor
la source
1

Le vrai correctif pour un système qui peut être enraciné est de le réinstaller à partir de sources sécurisées. Comme les CD d'installation. Restaurez ensuite vos données uniquement à partir d'une sauvegarde. Tous les fichiers binaires ou scripts de votre sauvegarde peuvent avoir été compromis et enregistrés dans votre sauvegarde.

Pour trouver le kit racine sur un système en cours d'exécution, une façon de le faire est de compiler un module de noyau conçu pour détecter les rootkits. Compilez-le sur une autre machine qui exécute la même version de système d'exploitation. Ensuite, copiez-le et insmodez-le.

Un détecteur de rootkit aura des outils intégrés dans le module du noyau pour vider la table de processus en cours, vérifier la table syscall (pour rechercher les interceptions syscall) et d'autres fonctionnalités. Il peut contenir des scripts qui prendront la sortie du module et la compareront à la sortie de ps, netstat, ls, etc.

Zan Lynx
la source
1

C'est comme des souris: si vous en voyez une, il y en a une centaine. Si vous voyez des signes de compromis, vous devez supposer que l'ensemble du système est compromis. C'est pourquoi tout le monde suggère de réinstaller le système plutôt que de passer beaucoup de temps à chercher. J'ai rencontré plusieurs situations où une machine était compromise et les administrateurs système pensaient avoir nettoyé le gâchis, pour le regretter plus tard.

Il est très courant que les rootkits remplacent les binaires système tels que ps, top, netstat. Et il est également commun à trojan ssh. Ainsi, la recherche de bizarreries de somme de contrôle dans ces fichiers est une approche de choix. Si vous êtes sur un système basé sur rpm, rpm -V est généralement un bon outil, ou dpkg-verify sur Debian / Ubuntu. Ou vous pouvez vérifier les sommes de contrôle directement (mais faites attention à la pré-liaison, qui change les binaires à la volée pour des raisons de vitesse). Ce n'est pas fiable, mais de nombreuses attaques script-kiddie ne couvrent pas ces traces. (En d'autres termes, si vous trouvez quelque chose, tant mieux. Si vous ne trouvez pas quelque chose, cela ne prouve pas que vous êtes propre.)

Autres choses à rechercher: les ports affichés ouverts depuis un externe nmapqui ne semblent pas ouverts via netstatsur la machine, et les pids dans /proclesquels n'apparaissent pas ps. Et si vous avez activé le syslog distant, recherchez les connexions ssh qui n'ont pas d'enregistrements dans le dernier journal.

mattdm
la source
0

Prenez-vous une copie de RKhunter et chkrootkit. Ils sont généralement assez décents pour aider à trouver des choses qui ne devraient pas être là.

Il est toujours bon d'exécuter également mod_security sur votre couche Apache avec un pare-feu. Habituellement, ils trouveront une webapp ou un script obsolète et amélioreront l'accès à partir de là avec des scripts shell Perl et d'autres choses amusantes.

ps auxfww est généralement idéal pour trouver des processus qui n'appartiennent pas.

Aussi: netstat -anp pour voir ce qui écoute sur certains ports.

Encore une fois, c'est bon si vous n'êtes pas enraciné, juste compromis.

Steven Leggett
la source