web-dev-qa-db-fra.com

Comment les pirates profitent-ils des ports ouverts comme vecteur d'attaque?

C'est une connaissance répandue, et donc une pratique courante, de fermer les ports ouverts sur toutes les machines connectées à Internet.

Si, par exemple, un programme typique utilise le port xyz comme canal de communication et qu'il existe une vulnérabilité dans ce programme, qui pourrait être exploitée via ce port, pourquoi la même attaque ne réussira-t-elle pas, disons, le port 80?

Étant donné que notre pseudo-programme utilise le port 888 TCP et qu'il présente une vulnérabilité qui pourrait être exploitée, pourquoi cette vulnérabilité ne peut-elle pas être exploitée via le port 80 TCP (qui est HTTP et est ouvert sur presque n'importe quelle machine)?

Le port 80 du serveur Web écoute-t-il uniquement un type UNIQUE de paquets TCP? Accepte-t-il uniquement un certain type de paquet?

Pourquoi un pirate ne peut-il pas essayer de créer un paquet TCP avec une chaîne malveillante, l'encapsuler dans le paquet HTTP et donc attaquer le serveur Web?

16
Franko

Les services écoutent les ports. Les serveurs Web (un service) écoutent le port 80, mais ce n'est qu'une norme, pas une règle stricte. Vous pouvez configurer n'importe quel service pour écouter sur n'importe quel port. Il ne s'agit pas de "paquets spéciaux", il s'agit de "composer le bon numéro de port" pour obtenir le service que vous souhaitez.

Si votre pseudo programme a une vulnérabilité, alors il peut être attaqué sur le port auquel il est affecté. Vous ne pouvez pas attaquer un programme sur des ports qu'il n'écoute pas. Si vous essayez de l'attaquer sur un autre port (comme le port 80 dans votre exemple), votre programme ne sera pas atteint.

Votre dernière question est donc un peu étrange: "Pourquoi un pirate ne peut-il pas essayer de créer un paquet TCP avec une chaîne malveillante, l'encapsuler dans le paquet HTTP et donc attaquer le serveur Web ? "C'est IS ce que font les pirates. Mais ils ciblent le port du service qu'ils veulent toucher. Mais peut-être pouvez-vous affiner cette question sur la base des informations que j'ai fournies.

Alors, pourquoi fermer des ports? Parce que vous souhaitez réduire le nombre de services potentiellement vulnérables que vous exposez à Internet.

11
schroeder

"Bloquer les ports" est juste une façon approximative de dire ce que nous voulons vraiment faire, qui bloque l'accès à certains services.

Un système d'exploitation fraîchement installé a souvent un certain nombre de choses qui s'exécutent automatiquement, dont certaines sont des services qui ont une partie réseau. Toute vulnérabilité exploitable par le réseau dans un tel service est une porte d'accès potentielle pour un attaquant. Cependant, il est rarement pertinent que tous ces services soient accessibles à tous sur le large Internet. Par exemple, pour une machine qui est censée être un serveur Web, il est normal que quiconque sur Terre essaie d'accéder au service "Web" spécifique (c'est sa fonctionnalité), et il est habituel que le service SSH soit également ouvert ( afin que l'administrateur du serveur puisse administrer le serveur); il n'est cependant pas utile que les services de partage de fichiers pour ce serveur soient également largement ouverts.

Le blocage de l'accès à un port donné peut se faire sur le pare-feu et est considéré comme plus efficace en temps que d'essayer de convaincre le système d'exploitation de ne pas exécuter un service donné, et de s'abstenir de le relancer ou d'inventer de nouveaux services, à l'occasion d'un logiciel mise à jour. Il est donc habituel de bloquer tous les ports sauf ceux qui sont connus pour correspondre à des services qui devraient être accessibles dans le monde entier (par exemple 80 et 22, pour le Web et SSH, respectivement).

5
Tom Leek