Attaque (local) d'un parefeu

Soyez le premier à donner votre avis sur cette source.

Vue 12 429 fois - Téléchargée 1 472 fois

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

Ajouter un commentaire Commentaires
Messages postés
22
Date d'inscription
jeudi 13 janvier 2011
Statut
Membre
Dernière intervention
20 juillet 2011

alors aussi les truc a dire :

EGYDE
Adess00>Tu savais qu'un programme peut n'agir qu'en l'absence de l'utilisateur??
Faux archis faux donne moi tes sources de cet info parsque la ...

adess00
il faudrai également qu'il ne réagisse pas.

Toi ta rien compris ...
le but est que un processus X 100% fud non detecter (le resident) puisse lancé un vilain processus Y (lui detecté ou non le virus ou autre)

de plus un firewall n intercepte aucunement un message ! un firewall sert a bloqué un flus de paquet entrant ou/et sortant et par port !

donc le message d alerte du firewall contrairement a un antivirus n apparai que apres une tentative de connection ... et pas au lancement d un thread ou autre ... c est pour sa qu on a inventer les antivirus eu chargé de détecté au lancement de l appli si elle est dangereuse ou pas ...
Messages postés
22
Date d'inscription
jeudi 13 janvier 2011
Statut
Membre
Dernière intervention
20 juillet 2011

Sa serai pas plus simple d obtenir tout simplement les droit d utilisation au plus haut lvl ?
genre au lancement Disabled UAC netsh disble firewall ... detection de lemplacement ou windows dit parfeu desactive car utilisé par X firewall et la on obtien le chemin du X par defauts et on lui ferme tt les PID rataché + service et on lance notre fichier en mode lecture seul puis caché et system de la on ouvre une instance critic puis on s inscri dans le registre et on se connect simple nan ?
Messages postés
261
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
27 septembre 2008

Je sais bien mais ce que je veux dire c'est qu'il ne peut pas s'executer tout seul. Et une fois executé ya la fenetre qui clignote donc a moins d avoir une plein confiance en le programme qu on vient de lancer on se doute de quelque chose donc je ne vois pas ce que ce programme a de louche.
Sinon c'est vrai que l idée est astucieuse pour bypasser un firewall simplement
Messages postés
158
Date d'inscription
lundi 17 mai 2004
Statut
Membre
Dernière intervention
16 juillet 2007

Adess00>Tu savais qu'un programme peut n'agir qu'en l'absence de l'utilisateur?? Enfin bref, pour arriver à quelque chose, je fais confiance à ton imagination...
Messages postés
261
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
27 septembre 2008

lol avertir les sociétés de développement de firewall ???
Et ils sont payer a faire quoi si on leur donne les solutions ?
De toute facon, il faudrai que l'utilisateur télécharge les deux programmes et en lance un et voyant une fenetre clignoter, il faudrai également qu'il ne réagisse pas.
Autant demandé à l'utilisateur de cliquer sur "Accepter la connexion" en lui disant que c est un jeu en réseau.
Donc je vois pas comment ces deux personnes pourraitent arrivé a quelquechose.

Pour bypasser un firewall la facon que j'utiliserai serait d'intercepter le message que le programme envoie au systeme pour se connecter,lui meme intercepter par le firewall, et de modifier ce message.
Afficher les 24 commentaires

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.