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.
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 ...
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 ?
Sinon c'est vrai que l idée est astucieuse pour bypasser un firewall simplement
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.
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.