web-dev-qa-db-fra.com

Comment puis-je protéger les pipes nommées dans Windows?

J'ai des malentendus sur la manière de sécuriser la communication des tuyaux nommés dans Windows

Par exemple, j'ai un service Windows qui parle avec d'autres processus via des tuyaux, comment puis-je vous assurer que je parle au bon processus? Existe-t-il des moyens d'authentifier les connexions? Je sais Chrome a mis en œuvre des mesures de sécurité dans leur code, mais j'avais du mal à suivre la mise en œuvre.

J'ai également lu sur les attaques d'impersonisation des tuyaux pouvant être utilisées contre des tuyaux et avoir eu quelques difficultés à comprendre comment ces attaques fonctionnent ou comment la bloquer.

6
FigureItOut

Du chapeau gris piratage du manuel de la pirate d'éthique, 4ème édition:

Énumérer des tuyaux nommés

Les tuyaux nommés sont similaires aux sections partagées de ce que les développeurs utilisés pour que les tuyaux nommés acceptent uniquement des données de confiance, bien formées d'utilisateurs ou de programmes fonctionnant au même niveau de privilège que le programme qui a créé le tuyau nommé. Il y a (au moins) trois menaces d'altitude de privilèges avec des tuyaux nommés. Tout d'abord, les tuyaux nommés faiblement annulés peuvent être écrits par des attaquants à faible caractère privilégié, ce qui entraîne potentiellement des défauts d'analyse ou de logique dans un programme à un niveau de privilège plus élevé. Deuxièmement, si les attaquants peuvent tromper des utilisateurs ou des processus privilégiés plus élevés à se connecter à leur tuyau nommé, les attaquants peuvent être capables de IMPERSONATE l'appelant. Cette fonctionnalité d'impersonnation est intégrée à l'infrastructure de tuyau nommée. Enfin, les attaquants peuvent également trouver des informations divulguées du tuyau qu'ils ne seraient pas autrement en mesure d'accéder. Accesschk n'apparaît pas de supporter des tuyaux nommés de manière nommée, mais Mark Russinovich de Sysinternals a créé un outil spécifiquement pour énumérer des tuyaux nommés. Voici la sortie de pipelist.exe :

PipeList v1.1
by Mark Russinovich
http://www.sysinternals.com
Pipe Name                      Instances      Max Instances
---------                      ---------      -------------
TerminalServer\AutoReconnect        1             1
InitShutdown                        2            -1
lsass                               3            -1
protected_storage                   2            -1
SfApi                               2            -1
ntsvcs                              6            -1
scerpc                              2            -1
net\NtControlPipe1                  1             1
net\NtControlPipe2                  1             1
net\NtControlPipe3                  1             1

L'interface graphique du processus explorateur affiche le descripteur de sécurité pour les tuyaux nommés. L'attaque "- squatting " ou "attentat" de la "menace" de l'élévation de privilège mentionnée précédemment mentionnée précédemment) nécessite un attaquant ayant l'appréciation de Seimpersonateprivilege pour influencer le comportement d'un processus à un niveau de privilège plus élevé. L'un de ces exemples découverts par Cesar Cerrudo impliquait un attaquant pouvant définir le chemin de fichier dans le registre pour un chemin de fichier de journal d'un service sur une valeur arbitraire. L'attaque impliquée dans le cadre du chemin du fichier journal sur\???\tuyau\attaquerpipe, créant ce tuyau nommé, entraînant l'enregistrement d'un événement et d'imiter l'appelant localysystem se connectant à\??\pipe\attaquerpipe.

2
atdre