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.
Réponses:
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!
la source
rpm -V -f /bin/ps
pour vérifier si elle a été modifiée sinon. Bien sûr, cela ne fonctionnera que si l'attaquant n'a pas également modifiérpm
ou la base de données RPM. Bien qu'il puisse modifier certainsrpm
fichiers, exécutez-lerpm -V rpm
et vérifiez s'il ment ou non.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!
la source
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.
la source
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
la source
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 ^unix
peut 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:
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.
la source
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.
la source
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
nmap
qui ne semblent pas ouverts vianetstat
sur la machine, et les pids dans/proc
lesquels n'apparaissent pasps
. Et si vous avez activé le syslog distant, recherchez les connexions ssh qui n'ont pas d'enregistrements dans le dernier journal.la source
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.
la source