﻿Un agent de diagnostic à distance a été déployé sur tous les postes de votre
entretprise. Son développement a été confié à un prestataire qui a "mis en place
toutes les mesures à l'état de l'art de développement sécurisé". D'ailleurs,
ce même prestataire a fourni un scan nmap pour prouver qu'il n'y a pas à s'en
faire ! Votre hiérarchie est perplexe et vous demande d'y jeter un oeil pour vous
en assurer. C'est votre mission du jour.

1. Ce programme écoute sur le réseau. Sur quel protocole et sur quel port ?
Note : il existe de nombreuses manières d'obtenir cette information: en
regardant le code du programme ou encore les informations fournies par l'OS
par exemple.
2. Localiser la fonction responsable de réception des requêtes et de l'envoi
des réponses.
3. Quelle protection (droits) est appliquée par le programme sur ses
buffers d'envoi et de réception. Qu'est ce que cela vous inspire ?
4. Lister les commandes supportées par le programme. Que font-elles ?
5. L'une d'elle présente une vulnerabilité. Trouvez et expliquez quelle est cette
vulnerabilité.
6. Développez un premier POC permettant de déclencher cette vulnérabilité.
Libre à vous d'utiliser le langage de votre choix, cependant nous vous conseillons
python (voir liens). 
7. Quelles sont les contre mesures anti-exploitation, présentées ce matin,
mises en place par le programme ?
8. La protection de la chaine d'exception (SafeSEH) est-elle en place ?
9. Modifiez votre POC pour écraser suffisamment de données afin de réécrire la
structure EXCEPTION_REGISTRATION_RECORD et déclencher une exception.
10. Grâce à ce même POC, faites en sorte que l'EXCEPTION_REGISTRATION_RECORD
ré-écrit soit considéré comme un handler final (default) dont l'adresse du handler
(fonction) se trouve dans  du code exécutable. Que se passe-t-il alors ?
11. Vous pouvez désormais prendre le contrôle du flot d'exécution (EIP). Où
pouvez-vous placer votre code arbitraire pour qu'il soit exécuté ? Trouvez un
moyen de déterminer l'adresse de ce buffer à distance.
12. Développez un exploit complet avec un shellcode qui fait un bind shell sur
le port 31337. 


liens:
https://www.securitysift.com/windows-exploit-development-part-6-seh-exploits/

Python
-------

https://docs.python.org/3/howto/sockets.html
https://docs.python.org/3/library/struct.html

PowerShell
----------

Start Windows PowerShell with the "Run as Administrator";
set-executionpolicy remotesigned

https://blog.netspi.com/verifying-aslr-dep-and-safeseh-with-powershell/

Autre option:
https://github.com/Wenzel/checksec.py/releases/download/v0.5.1/checksec.exe
