Lien mindmap: https://www.edrawmind.com/online/map.html?sharecode=D65e1e5f363fa68a12807794
La phase de reconnaissance est importante afin de collecter autant d'informations que possible sur la cible. Elle est divisée en reconnaissance passive et active.
La reconnaissance passive consiste à collecter des informations sur la cible sans interaction directe, utilisant des sources publiques pour obtenir des données telles que des sous-domaine, adresses IP, liens..
La reconnaissance active implique une interaction directe avec la cible pour obtenir des données comme les services exposés et les configurations de sécurité, en utilisant par exemple des balayages de ports, du bruteforce, etc..
shodan init <api key>
pip install -U --user shodan
Amass
amass enum -d example.com
-d
spécifie le domaine cible. Amass fait de la reconnaissance passive car l'outil se base sur des données publiques et accessibles sur internet. (Enregistrement DNS, WHOIS..)amass enum -config config.ini -d exemple.com
config.ini
en fichier .yaml
. https://github.com/owasp-amass/oam-toolsgo install
, ou déjà build: https://github.com/owasp-amass/amass/releasesWaymore
waymore.py -i exemple.com -mode U
git clone https://github.com/xnl-h4ck3r/waymore.git
, cd waymore
, sudo python setup.py install
, https://github.com/xnl-h4ck3r/waymoreBurp Suite
Scrapy
Nuclei
nuclei -u http://exemple.com
, nuclei -l list.txt
, nuclei -t template_custom.yaml -u http://exemple.com
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
, ou déjà build https://github.com/projectdiscovery/nuclei/releases/tag/v3.1.10Wappalyzer
Nmap
nmap -sV -sC -oA output example.com
-p-
apt install nmap
ou https://nmap.org/book/inst-linux.htmlGobuster
gobuster dns -d example.com -w wordlist.txt
-w
.gobuster dir -u example.com -w wordlist.txt
go install github.com/OJ/gobuster/v3@latest
, ou déjà build https://github.com/OJ/gobuster/releases/tag/v3.6.0Ffuf
ffuf -w wordlist.txt -u example.com/FUZZ.zip
FUZZ
représente l'endroit ou la wordlist sera placée. Il est possible de fuzz en spéficiant des extensions, comme dans cet exemple .zip
, il n'est pas rare de trouver des fichiers exposés sur des serveurs.go install github.com/ffuf/ffuf/v2@latest
, ou déjà build https://github.com/ffuf/ffuf/releases/tag/v2.1.0HTTPX
httpx -l /list.txt --status-code | grep '200'
go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest
, ou déjà build https://github.com/projectdiscovery/httpx/releases/tag/v1.4.0Gowitness
gowitness file -f list.txt
, gowitness server :7171
go install github.com/sensepost/gowitness@latest
, ou déjà build avec https://github.com/sensepost/gowitness/releases/tag/2.5.1
Il n'est pas neccessaire d'utiliser des outils afin d'exploiter une vulnérabilité, généralement cela se fait à la main à l'aide de Burp Suite pour rajouter les requêtes.. Mais il est pratique dans certains cas d'avoir des outils automatisants la tâche.
SQLMap
*
dans le paramètre, Save item
, puis sqlmap -r $PWD/item_saved --random-agent --banner
sqlmap -u "http://example.com/vuln.php?id=1*" --random-agent --banner
--risk
et --level
augmentent l'agressivité du scan.apt install sqlmap
, git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
Hydra
hydra -l username -P wordlist.txt ssh://example.com
pip install hydra-core --upgrade
Metasploit
msfconsole
, search exemple
, use exploit/exploit..
. Configuration: set RHOSTS IP DE LA CIBLE
, set LHOST IP D'ÉCOUTE
, puis exploit
pour lancer l'attaque. Il est possible d'utiliser un reverse shell préçis (reverse TCP, reverse HTTP/HTTPS, reverse DNS..), set payload linux/x64/meterpreter/reverse_tcp
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && chmod 755 msfinstall && ./msfinstall
Docker permet d'avoir directement dans un conteneur ces outils sans avoir a les télécharger un par un.. Le voici
Un pentest en "Black Box" est un test de pénétration où le testeur a très peu, voire aucune information sur les systèmes internes ou le réseau de l'organisation cible avant de commencer le test. Il ne possède pas de credentials sur la cible.
L'approche simule un attaquant externe qui essaie de pénétrer dans le système sans connaissances préalables.
Objectif : Collecter autant d'informations que possible sans accès préalable ou autorisations internes.
Voici une liste utile de google dork:
Trouver des fichiers sensibles :
site:example.com filetype:pdf confidential
site:example.com ext:docx | ext:pdf | ext:xls "internal use only"
Identifier des pages d'administration :
site:example.com inurl:admin
site:example.com inurl:login | inurl:admin | inurl:account
Découvrir des serveurs, des versions, des technologies.. :
site:example.com "Apache/2.4.41" -inurl:https
site:example.com inurl:"phpinfo.php"
Rechercher des traceback, logs.. :
site:example.com "SQL syntax near"
site:example.com intext:"database error"
Trouver des documents contenant des mots-clés sensibles :
site:example.com intitle:"index of" password
site:example.com filetype:xls | filetype:xlsx intext:password | intext:username
Détecter des configurations et des fichiers exposés :
site:example.com filetype:xml | filetype:conf | filetype:cnf | filetype:reg | filetype:inf | filetype:rdp | filetype:cfg
site:example.com ext:sql | ext:dbf | ext:mdb
Trouver des répertoires non sécurisés et des fichiers de sauvegarde :
site:example.com intitle:"index of" /backup
site:example.com intitle:"index of" backup.zip
Localiser des webcams accessibles publiquement :
inurl:/view.shtml
intitle:"Live View / - AXIS"
Rechercher des portails et des services en ligne :
site:example.com inurl:wp-login | inurl:wp-admin
site:example.com inurl:joomla | inurl:drupal
Trouver des listes d'emails et des contacts :
site:example.com filetype:xls | filetype:xlsx intext:email | intext:contact
Analyse des domaines et sous-domaines : Utiliser des outils comme Shodan, Amass, etc pour identifier les domaines et sous-domaines associés, ainsi que les services exposés sur internet (nmap, etc..)
Analyse passive : Observer le trafic autour des ressources sans interagir directement avec les systèmes (waybackmachine, etc..
Exploitation des vulnérabilités : Utiliser des outils comme SQLMap.. pour exploiter les vulnérabilités potentielles
Phishing : Il est possible dans certains cas de mener une campagne de phishing ciblée (si cela est inclus dans le scope du pentest) pour tenter d'obtenir des identifiants d'accès via des emails trompeurs..
Il est possible dans certain cas de réaliser une campagne de phishing, visant à tromper les cibles pour qu'ils divulgent des informations sensibles, cliquent sur des liens dangereux, ouvrent des pièces jointes infectées..
Envoie d'emails qui semblant provenir d'organisations légitimes (banques, services en ligne..) afin d'inciter les cibles à divulguer des informations personnelles ou des données d'identification
Technique de spoofing utilisant des messages SMS pour inciter les cibles à cliquer sur un lien malveillant ou à fournir des informations personnelles
Implique des appels téléphoniques où l'attaquant se fait passer pour une autorité ou un service légitime pour extraire des informations personnelle
Le pentest en white box fait référence à une approche de test où l'on dispose d'une connaissance complète des mécanismes internes du système, de l'application ou du code à tester. Cela signifie que le testeur a accès au code source, à la documentation détaillée, aux schémas de l'architecture réseau et à d'autres informations internes..
En possédant le code source, il est possible de comprendre comment marche en profondeur l'application. Il faut adapter ses tests en fonction, par exemple faire attention aux champs contrôlés par les utilisateurs, permettant dans certains cas des SQLi..
L'analyse de code statique examine le code source d'une application sans l'exécuter.
Elle est réalisée à l'aide d'outils qui peuvent identifier automatiquement certaines vulnérabilités potentielles, ou bien manuellement.
En premier plan, il faut identifier les langages utilisés ainsi que les versions des paquets par exemple, dans le but de trouver des CVE.
Il est aussi possible de rechercher des confusions de dépendance dans les requirements du projet (utilisé par exemple avec nodejs, python, golang, rust..) Cela se passe lorsque les gestionnaire de paquets d'une application installe par erreur un paquet malveillant depuis un dépôt public au lieu d'un paquet interne privé de même nom.
Il est tout simplement possible d'utiliser grep pour rechercher des fonctions dangereuses utilisées par le langage, par exemple shel_exec..
https://github.com/xtiankisutsa/MARA_Framework
Permet de décompiler et analyser automatiquement les APK. Permet de trouver des secrets et des paths hardcodés..
https://github.com/SonarSource/sonarqube
Détecte les bugs, vulnérabilités, "code smells" et fournit des suggestions de remédiation. Supporte une grande variété de langages de programmation
https://chat.openai.com
Très utile lorsque le code n'est pas sensible, permet de détécter un grand nombre de vulnérabilités/missconfigurations
Permet d'exécuter une application web un programme ou bien même une application android afin d'observer comment il se comporte en direct, pour identifier les problèmes ou les vulnérabilités.
Il peut être nécessaire de faire tourner localement un webserver afin de tester directement la plateforme
Pour android, il est nécessaire d'émuler une device. IL est possible de le faire avec Genymotion, QUEMU..
https://www.genymotion.com/
Il est aussi possible d'utiliser scrcpy
, un package utilisant adb
afin de connecter une device android physique à son ordinateur
Faire du hookig est utile dans certains cas, par exemple pour bypass des fonctionnalités. Cela peut se faire avec frida. Il est aussi possible de faire du bypass de noroot (nécessaire lors d'émulation) https://frida.re/docs/android/
Afin d'intercepter les requêtes web partants de l'application, il est nécessaire d'ajouter son propre certificat/proxy, et par la suite intercepter les requêtes avec BurpSuite.
reFlutter permet de décompiler automatiquement une application flutter, ajouter son IP locale et intercepter par la suite les requêtes. https://github.com/ptswarm/reFlutter
Pour les apk plus classique, apk-mitm et un outils permettant de décompiler l'apk, ajouter un certificat, et la signer. https://github.com/shroudedcode/apk-mitm
Après chaque modification, il est nécessaire de resigner l'application. https://github.com/patrickfav/uber-apk-signer
Il est nécessaire d'analyser celle-ci et d'en prendre connaissance. Il peut être utile parfois de catographier les informations, afin d'avoir un visuel complet.
Analyse et exploitation similaire aux tests en black box