Attaque (local) d'un parefeu

Cette source est considérée comme dangereuse, elle a néamoins été gardée dans un but pédagogique :
Cette source est considérée comme dangereuse, elle a néamoins été gardée dans un but pédagogique.

Description

Objectif(s) : permettre à une application X de lancer un programme Y, sans autorisations préalable de l'utilisateur (une extension directe consisterait à bypasser l'autorisation nécessaire pour le remplacement d'applis ainsi que l'entrée/la sortie de connexions).

Hypothèse(s) :
- la machine cible est protégée par un parefeu demandant l'autorisation de l'utilisateur lorsqu'une opération sensible est exécutée;
- l'attaquant est capable de charger en mémoire un programme quelconque.

Pour illustrer mes propos, le projet joint est constitué de 2 applis. 'EWF' est le programme résident permettant à X='Project7' de charger Y='notepad'; le parefeu visé étant le célèbre Kerio.

Principe de l'attaque :

1. Enumération de toutes les fenêtres actives
2. Si une fenêtre d'alerte est trouvée :
3. Transmettre le focus à la fenêtre d'alerte
4. Forcer l'autorisation
5. Fin_SI

C'est 3 étapes sont répétés cycliquement par EWF à l'aide d'un timer. Détecter une fenêtre d'alerte Kerio se fait en comparant chaque nom de fenêtre avec la signature de Kerio (voir code source). La transmission du focus (étape 3) peut quant à elle se faire selon au moins 3 niveaux :
a) en utilisant l'API SetFocus() et le handle récupéré au cours de l'étape 2
b) en simulant un clic dans la fenêtre dont les coordonnées ont été obtenus grâce à l'API GetWindowPlacement() et son handle
Une fois le focus transmis, on peut forcer l'autorisation selon au moins 2 astuces :
a) en simulant l'envoi de touches grâce, en particulier, à l'API SendInput()

Pour des raisons de sécurité, je garde pour moi le 3e niveau ainsi que la 2e astuce ;-)
      • A TITRE EDUCATIFS UNIQUEMENT ***

Conclusion :


Limite(s) :

- La principale limite de l'attaque proposée ici provient de la 2e hypothèse. Toutefois, plusieurs failles de sécurité de Windows permettent de remplir cette condition; JE NE DEVELOPPERAIS PAS CE POINT, ni ici, ni par MP !

- Si la fenêtre d'alerte n'est pas détectée, les étapes 3 et 4 ne sont pas exécutées. Un moyen simple de se prévenir contre cette attaque serait donc de modifier la signature de la fenêtre d'alerte.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.