Mon serveur LAMP a été touché par une sorte de malware de crypto mining. Crontab est clair et inutilisé, Clam ne semble rien détecter.
Il semble créer automatiquement ces fichiers dans mon dossier/tmp à des moments aléatoires de la journée.
À l'intérieur de ce phpIij8W8_fkk2qr2rqjikiewz:
threads = 1
mine = stratum+tcp://44XNuUyCFUgjG23yPfCHp(cut for content...etc):[email protected]:3333/xmr
Ils commencent tous par "php" donc je suppose qu'une sorte de script PHP est sur le serveur qui crée automatiquement ces fichiers dans le dossier tmp et les exécute.
J'ai essayé d'utiliser iNotify pour déterminer ce que/comment ceux-ci ont été créés et tout ce que j'ai pu déterminer est le suivant:
Le fichier phpvlnebP_fkk2qr2rqjikiewz vient d'être créé par MOVED_TO
Quelqu'un peut-il me donner quelques conseils pour affiner le script qui crée ces fichiers aléatoires? Ou s'il existe un moyen d'obtenir iNotify pour me donner plus d'informations lorsque le fichier est créé/accédé. Ou diable, s'il y a un meilleur outil pour diagnostiquer ce problème.
Ubuntu 16.04.3
J'ai eu le même problème, et je me suis rétréci, les pirates ont pu s'introduire dans certains wordpress anciens et non mis à niveau.
Probablement le meilleur et le plus rapide moyen de voir qui consomme combien de temps sur votre serveur Ubuntu 16.04.3 est d'installer htop
Sudo apt install htop
puis tapez Sudo htop
Il vous montrera sous quel nom d'utilisateur mange la quantité de CPU
Et si vous identifiez un processus qui consomme beaucoup de CPU, vous pouvez le vérifier par lsof -p <pid>
lsof signifie list open files, pour voir son ensemble complet de commandes, tapez man lsof
Cependant, tout dépend de la façon dont votre PHP est exécuté, et de ce que les pirates ont réellement fait à votre système.
Une autre bonne façon de voir ce que fait exactement Apache est d'activer mod_status
Habituellement, sur les ubuntu plus récents, c'est:
Sudo a2enmod status
Et après cela, ajoutez ceci à votre site Web 000-default.conf:
<Location /server-status>
SetHandler server-status
Require ip 127.0.0.1
Require ip ::1
Require ip X.X.X.X
</Location>
Remplacez X par votre adresse IP réelle ...
Ou vous pouvez y accéder avec lync par exemple depuis la console de votre serveur comme
lynx 127.0.0.1/server-status
Et la sortie devrait ressembler à:
Sur mon autre article https://security.stackexchange.com/questions/172396/some-bot-keeps-posting-this-to-my-server/172571 vous pouvez voir comment améliorer la sécurité de votre serveur et empêcher de telles attaques.
Pour être clair, votre meilleur pari ici est de nuke de l'orbite . Vous avez probablement une copie de votre demande quelque part, ainsi qu'une copie de votre base de données. Si vous voulez vraiment essayer de le comprendre, alors vous devriez probablement partir du point de vue que vous avez un ou deux vecteurs d'intrusion:
Bien que je devine énormément, il semble que ce soit un pari sûr que le fichier PHP que vous continuez à supprimer n'est pas le malware réel, mais plutôt un sous-produit du malware. Je sais vous le savez, mais pour être clair: vous n'avez rien fait pour supprimer le malware, juste ses symptômes. La découverte et la suppression du malware lui-même varient énormément selon qu'il se trouve ou non dans votre application Web ou dans votre système. . Qui est le propriétaire du fichier que vous supprimez toujours? S'il s'agit de l'utilisateur sur lequel votre serveur Web s'exécute, l'infection est probablement due à votre application Web. Si tel est le cas, voici quelques détails qui pourraient vous aider:
Intrusion d'application Web
Intrusion système
Celui-ci est probablement moins probable, mais il est possible que votre système lui-même ait été compromis (service non sécurisé, mots de passe SSH craquables, etc.). À défaut de fouiller dans les journaux, il peut être difficile de déterminer avec certitude si c'est votre système lui-même qui était le point faible. Il sera probablement beaucoup plus facile de déterminer que votre application Web est le problème (d'après ma propre expérience, c'est probablement votre application Web qui est le coupable de toute façon). Quoi qu'il en soit, si vous ne pouvez pas déterminer avec certitude qu'il s'agissait de votre application Web, votre système est le seul autre coupable.
La réponse
Quoi qu'il en soit, le problème est qu'il sera très difficile de déterminer avec certitude où le problème a commencé, et encore plus difficile de dire si vous les avez sortis ou non. Même si vous parvenez à empêcher le cryptominer de se mettre en place, quelles garanties avez-vous qu'il n'y a pas de processus plus silencieux et plus malveillant qui se cache ailleurs? Processus en arrière-plan qui efface votre base de données et l'envoie à un serveur C&C distant une fois par semaine? C'est un excellent moyen de divulguer les informations personnelles de toute personne qui se connecte à votre système. Sans parler de la menace pesant sur vos propres mots de passe et informations d'identification de compte. C'est pourquoi, peu importe où l'intrusion a commencé, il n'y a qu'une seule réponse:
Un de mes serveurs a réussi à l'attraper dans un centre de données, mais 2 de mes autres serveurs exécutant le même logiciel, chacun hébergé chez un fournisseur différent, n'ont pas contracté l'infection - un vilain à cela, provoquant le CPU (quad core) au maximum.
Après avoir cherché une réponse, je suis tombé sur ce tableau et bien que j'aime l'approche NUKE IT OUT OF ORBIT, j'ai peut-être trouvé une solution après avoir essayé de nombreuses approches pendant des heures.
Voici les synopsis:
J'ai pensé que si je voulais arrêter le démarrage des processus existants, je devais évidemment supprimer les exécutables - pas exactement. Puisque nous avons affaire à une infection, les processus reviennent sans cesse après quelques millisecondes. Après avoir supprimé les exécutables, ils sont revenus - j'ai réussi à attraper une connexion SSH sortant vers le serveur C&C, je la posterai plus tard une fois que je l'aurai connectée sur ma machine expérimentale. L'étape suivante que j'ai faite pour l'empêcher de se lancer, a été de trouver tous les exécutables et au lieu de les supprimer, j'ai défini leur autorisation sur personne: personne et 444 (je voulais toujours examiner le contenu, vous pouvez le réduire). Cela a occupé le nom du fichier utilisé par le programme malveillant afin que la connexion SSH ne puisse pas remplacer le contenu du fichier et l'empêche également de s'exécuter, le rendant inutile. Cela semble fonctionner pour arrêter le démarrage automatique des processus et permettre l'exécution de code à distance et la mise en quarantaine efficace des exécutables.
Veuillez noter qu'il ne s'agit que d'une solution de correctif et non d'un remède pour résoudre le problème. Je vais revoir le code commit by commit (en git) et les fichiers journaux globaux pendant un certain temps jusqu'à ce que je comprenne comment la charge utile y est entrée en premier lieu.
CentOS7
Pas:
install htop:
#: Sudo yum install htop
#: htop
Trier par% CPU et noter le nom du processus consommant 99% ou 100%
trouver l'exécutable:
#: Sudo find / -type f -iname "[FILENAME]"
remplacez [FILENAME] par le nom que vous avez saisi sur htop
#: Sudo chown nobody:nobody /path/to/[FILENAME]
#: Sudo chmod 0444 /path/to/[FILENAME]
Arrêtez les exécutables en cours d'exécution
#: Sudo htop
trouver le processus, sélectionnez et appuyez sur la touche "K" pour tuer le processus. À ce stade, il ne devrait pas revenir. Si un nouveau processus est revenu, répétez les étapes ci-dessus.
Peut-être que quelqu'un aura le temps d'écrire un script sh pour le faire automatiquement.
[MISE À JOUR:] Attention également aux travaux CRON pour l'utilisateur Apache - s'exécute toutes les 15 minutes pour télécharger la charge utile.