--- title: Winsec - 1 tags: winsec, moemoea.fierin date: 04/09/2020 --- # Introduction Visual Studio langage de dev de Microsoft Grandes parties du cours: - réseau - authentification - ... # Visual Studio Version gratuite de visual studio S1Shell (?) Justification des choix de logiciels en entreprise. Application binairement compatible; System assure la perenité dans le temps. ## Commandes F12 ->declaration de la variable F10 debug pas a pas ## Call Stack **NTDLL** termine ce qu'a commencer le noyau. "Boot Thread" le thread qui démarre le programme. Permet aussi de récupérer les exception **Deuxieme bibliotheque (Kernel32):** - initialise l'env d'exec windows du programme - env d'execution pour des types de programme (avant on avait plusieurs types) **Ensuite demarrage du programme:** - alloue de la memoire - nc'est le noyau qui alloue - Le CRT Dans le format PE c'est le run time C -> CRT Kernel32 resout les import //// hors cours ASLR certaines addr sont absolue les modules ne sont jamais chargé a l'addr de base. /// Ref - Documentation Windows MSDN 2002 February: https://docs.microsoft.com/en-us/archive/msdn-magazine/2002/february/inside-windows-win32-portable-executable-file-format-in-detail ## L'API Windows L'os offrent des dixaine de DLL (API Windows). Exemple: - si j'alloue "malloc". Ces fonctions sont implem par le runtime C. C'est pas performant et on n'a pas la finesse de l'API Windows. On va preferer l'API Win 32. - inconvenient API Win 32: uniquement du C et il faudra être confrome a la methode de prpgrammation de cette API. **Specificité API Win32 :** au lieu d'utiliser les types c (int, bool, ..) on va utiliser d'autre type; 32 bits non signé = dword "Windows data type" Dans visual si je fais un dword ca marche pas , poir utoloser l'api de windows il faut ajouter le .h: "Windows.h" :::info On peut avoir accès a la definition dans visual studio C'est un unsigned long ::: ## Variante de fonctions rajout de certaines function ## Notation hongroise le but d'un programme c'est d'assurer sa perenite dans le temps il faut donc plusieurs personnes et il y'a des regles "Les conventions de ..." dans l'api windows on a la notation hongroise qui specifie un certain nombre de chose Notation hongroise: - type de variable en majuscule - type de variable prefie par leur type - function premiere lettre en maj - ... Documentation microsoft de la notation hongroise # Runtime 2 type de runtimes: - Soit runtime a l'interieur du programme (dynamique) - soit a l'exterieur sous forme d'une DLL (statique) --Runtime Inclue:-- **Avantage** (runtime inclue) Autonomie **Inconvenient:** un bug dans le runtime C le programme reste vulnerable Alors qu'en externe windows update va s'en occuper. --Sur Visual Studio-- Dans les options Runtime ->encapsulé a l'interieur du programme -- c runtime (CRT)-- fonction sécurisé: exemple: strcat-s permet d'avoir la taille contrairement a strcat normal # Symboles on les utilise sous windows pour le reverse essentiellement PDB-> table de symboles il y'a des information sensiibles dans la table de symbole des fois on a les symbole privée ce qui supprome les informations sur le code souce, les types de données, les données privées ## serveur de symboles qd on veut recup les symb sur le serv microsoft sys de cache Si on n'a pas les modules de symboles de base c'est qu'on n'a pas acces a internet # Appel bibliotèque :::info Shims Windows ::: API native: NTDLL APIWIN32: Kernel # process hacker Interet process hacker: outil tres utiliser en interne microsoft et il est en open source # analyse de code /analyse projet ->analyser -> Faut pas le faire a la fin par ce qe ca prendra du temps, il faut le faire au fil du projet pointeur near vs far: auj c'est la meme chose en plus de la verification de code on a la SAL en plus a LE SAL(Source Code Annotation Language) vient preciser comment on doit utiliser les arguments Principale notations notation de base param optionnel specification des taillles analyse de code rajouter un certain nb de fonction SAl qui vient preciser les val de ret # Code d'erreur helpmsg 2 (en console) # Traces Peut etre recuperer par des mechanismes de detections Certaines traces ne peuvent etre acceder que par Microsoft. # Exercice(s)/Site web http://aurelien26.free.fr/epita/ login:mdp = epita:srs2020 # Traces Fonctionnement: Ajout du header de traces: http://aurelien26.free.fr/epita/Exemples/wpp/ Init les traces au debut du code On clean les traces a la fin avant le return eviter les exits entre le debut et la fin des traces