Méthodologie

1. Phase de reconnaissance :

On doit réussir à determiner le langage de programmation, le framework utilisé sa version afin d'avoir une première vision sur le logiciel. De plus ceci nous permettra d'identifier quels decompilateur utilisé.

Les outils pour cette première phase de reconnaissance sont :

1.1 Bis :

Un point de contrôle qui peut faire l'objet d'un carré de vulnérabilité est le suivant :

Libraries and executables can be compiled with some additional security measures to protect against code exploitation:

  • Address Space Layout Randomization (ASLR) – An application’s locations in memory are randomized at load time, preventing attacks such as return-to-libc that lead to code execution by overwriting specific addresses.

  • SafeSEH – A list of safe exception handlers is stored within a binary, preventing an attacker from forcing the application to execute code during a call to a malicious exception.

  • Data Execution Prevention (DEP) – Areas of memory can be marked as non-executable, preventing an attacker from storing code for a buffer overflow attack in these regions.

  • Authenticode/Strong Naming – Assemblies can be protected by signing. If left unsigned, an attacker is able to modify and replace them with malicious content.

  • Controlflowguard – An extension of ASLR and DEP that limits the addresses where code can execute from.

  • HighentropyVA – A 64 bit application uses ASLR.

PESecurity to check if a binary has been compiled with the above code execution preventions.

1.2 Decompilateur / Reverse Engineering

Une fois qu'on connait le langage de programmation ou le framework on peut se diriger vers deux décompilateur pour commencer un processus de Reverse Engineering ci besoin :

C# ou .NET :

  • DNSpy : A .NET debugger and assembly editor

  • ILSpy : Decompilateur

Delphi :

IDA :

Utilisez IDA si ce n'est pas du C# ou .NET

1.3 API :

[TODO]

2. Network Communication

La première chose à faire avant de commencer son pentest, c'est d'ouvrir wireshark et analyser les trame réseau, voir ce qu'il se passe naviguer à travers l'application pour identifier :

  • Les protocoles utilisés

  • Le trafic est-il en clair ? Si oui puis je récupérer des informations sensibles.

Le type de protocoles qu'on verra lors de l'analyse nous permettra d'avoir une idée sur l'architecture, les trames réseaux à analyser, ce qu'on doit regarder dans le proxy. De plus on pourrait identifier des protocoles réseau propriétaire si le client lourd utilise

Sur des applications deux tiers :

  • On peut utilisez Echomirage pour intercepter les Traffics TCP : App -- SQL service

Sur des applications trois tiers:

  • On utilise burp avec le proxy systeme de windows

2.A Proxy

Plusieurs méthode de proxy existe :

Lien intéressant sur le pinning : https://www.qseap.com/blogs/ssl-certificate-pinning-bypass-the-manual-approach

3. GUI

ll est possible d'intéragir avec le gui d'un client lourd en utilisant les outils :

4.Fichier locaux

4.B DLL Hijacking

5. Analyse de la mémoire

Last updated