Comment savoir quel processus a un port spécifique ouvert sur Linux?


32

J'ai couru nmap sur mon serveur et trouvé un port étrange ouvert. J'essaie de voir s'il existe un moyen de mapper ce port sur un processus spécifique sans avoir la moindre idée de l'existence d'un tel outil.

Aucune suggestion?


Upvote pour être la première réponse dans Gogle en juin 2018.
SDsolar le

Réponses:


57

En plus de Netstat, mentionné dans d'autres publications, la commande lsof devrait pouvoir le faire parfaitement. Il suffit d'utiliser ceci:

lsof -i :<port number>

et tous les processus devraient arriver. Je l'utilise assez souvent sous OS X.

Article sur l'administration Debian pour lsof


intéressant. Je ne savais pas. Cependant, je suis en train d’examiner cela à la suite d’une tentative de piratage. la machine est un ami. vous pouvez établir une connexion telnet avec le port incriminé MAIS lsof ET netstat ne révèlent pas le port ouvert.
Jnman

le port est 5631, ce qui, selon / etc / services, est si suspect que pcanywheredata.
Jnman

Maintenant, c'est bien, je ne le savais pas! Toujours utilisé netstat. Merci
buster

4
Si ni netstat ni lsof ne montrent que le port est utilisé, mais que la machine y répond, il est probable qu'un kit racine ait été installé. Je recommande de déplacer les données de la machine ailleurs et de les supprimer.
Kamil Kisiel

6
C'est en effet un rootkit. J'ai déjà vu ce comportement auparavant, et il s'agit toujours d' un rootkit. Votre système est compromis et les outils que vous utilisez ne peuvent pas être approuvés. Démarrez dans un Live CD (qui contient des fichiers binaires approuvés en lecture seule) et utilisez-le pour extraire vos données, paramètres, etc. Tous les programmes que vous avez, tous les scripts que vous avez, les abandonnent. Ne les amène pas. Traitez le système comme s'il était atteint de la lèpre, car il / fait /. Une fois que vous avez terminé, mettez-le en orbite. Faîtes-le aussitôt que possible. Oh, et débranchez votre connexion réseau - refusez l'accès à votre attaquant.
Avery Payne

23

Avertissement: votre système est compromis.

L'outil dont vous avez besoin est la lsofliste des fichiers (et des sockets et des ports). Il est très probablement installé et correspond probablement à la version de l'attaquant, ce qui signifie qu'elle vous mentira .

C'est en effet un rootkit. J'ai déjà vu ce comportement auparavant, et il s'agit toujours d' un rootkit. Votre système est compromis et les outils que vous utilisez et qui proviennent de la même machine ne peuvent pas être approuvés. Démarrez dans un Live CD (qui contient des fichiers binaires approuvés en lecture seule) et utilisez-le pour extraire vos données, paramètres, etc. Tous les programmes que vous avez, tous les scripts que vous avez, les abandonnent . Ne les amène pas . Traitez-les, et le système, comme s'ils avaient la lèpre, parce qu'ils le font .

Une fois que vous avez terminé, mettez-le en orbite .

Jeu fini homme, jeu terminé.

Faîtes-le aussitôt que possible. Oh, et débranchez votre connexion réseau - refusez l'accès à votre attaquant.


1
Cela dit tout vraiment. Déterminez ce qui ne va pas, aplatissez le serveur, restaurez-le à partir de la dernière sauvegarde valide connue. La vie est trop courte pour jouer à des jeux.
Rob Moir

2
Ajoutez simplement: assurez-vous de connaître la date de l’introduction, car vous êtes en train de restaurer le même rootkit que vous venez de supprimer. Sinon, oui, restaurer à partir de / avant / cette date.
Avery Payne

1
C'est un graphique amusant. Je sais que le système est compromis (heureusement que ce n'est pas le mien). La question qui m'intéressait le plus était de savoir comment il était entré en premier. Je soupçonne via php / joomla mais je voulais comprendre comment / pourquoi ce port restait ouvert alors qu'aucun des outils de détection de root kit ne montrait ce port.
Jnman

1
lol @ "Oh, et débranchez votre connexion réseau"
theman_on_osx

6
Avant d’en venir à cette conclusion , il existe d’autres explications possibles à l’ouverture de ports inattendus; comme un paquet que vous avez installé mais que vous avez oublié.
David J.

14
sudo netstat -lnp  

Répertorie les ports à l'écoute des connexions entrantes et le processus associé dont le port est ouvert.


4

netstat -anp

Le "-p" lui dit de lister l'ID de processus avec le port ouvert. Le -an lui dit de lister les ports d'écoute et de ne pas résoudre les noms. Sur les systèmes occupés, cela peut considérablement accélérer la vitesse de retour.

netstat -anp | grep "LISTE"

Cela ne vous donnera que les ports ouverts.


4

Si vous ne pouvez pas voir le port ouvert avec les outils du système d'exploitation et que vous suspectez une intrusion, il est possible qu'un rootkit ait été installé.

Le rootkit pourrait avoir modifié les outils système pour éviter certains processus et certains ports ou modifié les modules du noyau.

Vous pouvez vérifier le rootkit avec plusieurs outils automatisés. 'apt-cache search rootkit' montre ce qui suit dans Ubuntu:

chkrootkit - rootkit detector
rkhunter - rootkit, backdoor, sniffer and exploit scanner
unhide - Forensic tool to find hidden processes and ports

Si vous avez un rootkit, vous pouvez rétablir les modifications sur votre système, mais je vous recommande de découvrir comment l'intrusion a été créée et de renforcer le système pour qu'il ne se reproduise plus.


Ils ne sont pas exclusifs à Ubuntu, vous pouvez également les utiliser dans CentOS. Il suffit de chercher le package ou de le télécharger à partir de leur page.


À la sortie de ce port, il semble que vous utilisiez pcanywhere: " Ы <Entrée>" est très similaire à "Veuillez appuyer sur <Entrée>" ce qui est un message de bienvenue de pcanywhere. Je ne sais pas pourquoi le processus ne figure pas dans la liste des processus. Êtes-vous root?

Vous pouvez essayer de redémarrer pour voir si le processus est unique.


des suggestions pour centos?
jnman

étrangement, unhide-tcp ne montre aucun port suspect. chkrootkit / rkhunter rapporté clair du tout (mais surtout parce que je supprimé les dirs suspects avant de poser cette question)
jnman

FWIW, le rootkit s’était installé comme apache dans / var / tmp / ... et /var/tmp/.ICE-Unix/* Le second était sournois car je ne l’avais pas remarqué la première fois et je me demandais comment diable un processus bash a continué à se reproduire après avoir été tué.
Jnman

Il s'avère que le cracker a installé un travail cron.
Jnman

0

Pour expliquer la réponse de @bjtitus, vous pouvez obtenir des informations très détaillées, par exemple:

$ lsof -i :8000
COMMAND  PID  USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
squid3  1289 proxy   15u  IPv6 14810490      0t0  TCP *:8000 (LISTEN)

$ ps -fp 1289
UID        PID  PPID  C STIME TTY          TIME CMD
proxy     1289     1  0 09:48 ?        00:00:00 /usr/sbin/squid3 -N -f /etc/squid-deb-proxy/squid-deb-proxy.conf

Je peux voir ici que le calmar est le processus, mais c’est en fait le mien squid-deb-proxyqui prend le port.

Un autre bon exemple d'application java:

$ lsof -i :4242
COMMAND  PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
java    3075 root   86u  IPv4    12019      0t0  TCP *:4242 (LISTEN)

$ ps -fp 3075
UID        PID  PPID  C STIME TTY          TIME CMD
root      3075     1 15 May24 ?        3-16:07:25 /usr/local/crashplan/jre/bin/java -Dfile.encoding=UTF-8 -Dapp=CrashPlanService -DappBaseName=CrashPl

Vous pouvez voir dans lsof(LiSt Open Files) qu'il s'agit de Java, ce qui est moins qu'utile. En exécutant la pscommande avec le PID, nous pouvons voir immédiatement qu’il s’agit de CrashPlan.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.