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 :
CFF Explorer (Permet d'avoir des information général tels que le langage de programmation)D : https://ntcore.com/?page_id=388
Detect it Easy (Permet de récuperer le framework de programation): https://github.com/horsicq/Detect-It-Easy
Strings : de microsoft
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 :
Proxy système avec Windows qui redirige vers burp
Proxy invisible burp avec une resolution dns local changé sur l'hôte windows (https://adamc95.medium.com/setting-up-an-invisible-proxy-for-thick-clients-1f4a6f47a49,https://parsiya.net/blog/2020-05-09-thick-client-proxying-part-10-the-hosts-file/,https://portswigger.net/burp/documentation/desktop/tools/proxy/invisible,https://portswigger.net/burp/documentation/desktop/settings/network/connections#hostname-resolution-overrides)
Fiddler
Echo mirage
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 :
Winspy (https://www.catch22.net/projects/winspy/) pour les Windows Forms
Snoop (https://github.com/snoopwpf/snoopwpf) pour les Windows Presentation Foundation
4.Fichier locaux
4.B DLL Hijacking
5. Analyse de la mémoire
Last updated