Master logo ENSIMAG logo

Projet de fin d'étude


L'apport des graphes aux missions d'auditeur Cybersécurité

Calypt logo

Projet conduit par VINCENT Nicolas

Encadré par BAUMONT Valentin

Année universitaire 2021/2022

Sommaire

  • BloodHound, Audits internes
    • Active Directory
    • Amélioration des capacités de visualisation de BloodHound
  • AADInternals, Campagnes de phishing sur Azure Active Directory
    • Microsoft Azure Active Directory
    • Phishing with Device Code
    • Visualisation des données exfiltrées
  • Neo4j, Missions Red Team

BloodHound

Audits internes

Active Directory

  • Identification et authentification centralisée
  • Référencement des entités présentes sur le réseau
  • Administration des entités

Architecture de BloodHound

  • Une base de données Neo4J
  • Une application de bureau multi-plateformes

Utilisation de BloodHound

  • Collecte des données Active Directory
  • Importation dans BloodHound
  • Explorer les données et identifier les cibles à privilégier
Exemple de chemin d'attaque

BloodHound MemberOf relationships

Amélioration des capacités de visualisation de BloodHound

  • Réaliser un scan nmap
  • Convertir les données au format CSV
  • Importer les données dans Neo4j

Computers open network ports

AADInternals

Campagnes de phishing sur Azure Active Directory

Microsoft Azure Active Directory

  • Authentification unique
  • Politiques d'accès et MFA
  • Gestion centralisée et gouvernance des identités

Azure Active Directory (Azure AD) est un service d’identité d’entreprise qui fournit l’authentification unique, l’authentification multifacteur et l’accès conditionnel pour se protéger contre 99,9 % des attaques de cybersécurité. Microsoft

Quelques APIs

API URL
Azure AD Graph https://graph.windows.net
Microsoft Graph API https://graph.microsoft.com
Outlook https://outlook.office365.com

...

API URL
Azure AD Graph (deprecated) https://graph.windows.net
Microsoft Graph API https://graph.microsoft.com
Outlook https://outlook.office365.com

Azure Active Directory, OneDrive, OneNote, Outlook/Exchange, People (Outlook contacts), Planner, SharePoint, Teams, To Do, ...

Comment interagir avec les APIs Microsoft ?

  • Authentification aux APIs REST par un jeton d'accès OAuth
  • Access Token valide entre 60 et 90 minutes
  • Refresh Token valide par défaut pendant 90 jours

Phishing with Device Code

Ajouts de fonctionnalités à AADInternals


						
Skip

Récupération des fichiers et dossiers présent dans les groupes


						
Skip

Spécificités de cette technique

  • Exfiltration automatisée de l'ensemble des fichiers auxquels l'utilisateur a accès
  • Contournement des dispositifs de sécurité
  • La position et l'appareil de l'attaquant apparaissent dans les journaux d'authentification
  • Les Access Token récupérés à partir du Refresh Token n'apparaissent pas dans les journaux d'authentification

Prévenir et réduire les risques

  • Utiliser des politiques d'accès conditionnel (CA) plus restrictives
  • Détecter les permissions suspectes accordées par une demande d'Access Token

						clientId    : 8ab7851b-6672-4999-b2ee-d2caf46b4c8f # identifiant de l'application
						consentType : Principal
						principalId : 64d999db-fc15-459c-bccf-5fa5908557aa # identifiant utilisateur
						resourceId  : 3016ce40-baeb-49c1-9c19-6ffd111bbde5
						scope       : Mail.Read openid profile offline_access Team.ReadBasic.All 
									Channel.ReadBasic.All ChannelMessage.Read.All Chat.Read Chat.ReadBasic 
									Chat.ReadWrite Contacts.Read Contacts.ReadWrite People.Read.All 
									Calendars.ReadWrite ChannelSettings.Read.All 
									ChannelSettings.ReadWrite.All Directory.Read.All Directory.ReadWrite.All 
									Group.Read.All Group.ReadWrite.All DeviceManagementApps.ReadWrite.All 
									Files.Read Presence.Read ExternalItem.Read.All Files.Read.All Sites.Read.All 
									Files.ReadWrite Files.ReadWrite.All Sites.ReadWrite.All AuditLog.Read.All
					

Visualisation des données exfiltrées

Importation des données dans Neo4j

  • Nouveau module Export-AzureADToCSV intégré à AADInternals
  • 40 fichiers d'imports dans Neo4j
  • 18 entités et 27 relations

Sélection des données avec des requêtes Cypher


						// Return the files created after a specific date
						WITH datetime({year: 2022, month: 6, day: 1}) AS limitDate
						MATCH (f:File) WHERE f.createdDateTime >= limitDate 
						RETURN f
					

						// Return the users having shared a document
						MATCH p=(:File)-[:IS_SHARED]->(:Shared)
						MATCH q=(:User)-[:HAS_SHARED]->(:Shared) 
						RETURN p, q LIMIT 50
					

					// Return the documents last modified by an user
					MATCH p=()-[:LAST_MODIFIED_BY]->(:User {displayName: "Support"})
					RETURN p LIMIT 25
					

Neo4j

Missions Red Team

Noms de domaines

et

adresses IP

1000 entités

Graphe Neo4j des domaines, sous-domaines, IPs et serveurs web

THE END

Merci pour votre attention