AWS - Informations de base

Reading time: 24 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Hiérarchie de l'organisation

Comptes

Dans AWS, il y a un compte root, qui est le conteneur parent pour tous les comptes de votre organisation. Cependant, vous n'avez pas besoin d'utiliser ce compte pour déployer des ressources, vous pouvez créer d'autres comptes pour séparer différentes infrastructures AWS entre elles.

C'est trÚs intéressant d'un point de vue sécurité, car un compte ne pourra pas accéder aux ressources d'un autre compte (sauf si des ponts sont spécifiquement créés), de cette maniÚre vous pouvez créer des limites entre les déploiements.

Par conséquent, il y a deux types de comptes dans une organisation (nous parlons de comptes AWS et non de comptes utilisateurs) : un seul compte désigné comme compte de gestion, et un ou plusieurs comptes membres.

  • Le compte de gestion (le compte root) est le compte que vous utilisez pour crĂ©er l'organisation. À partir du compte de gestion de l'organisation, vous pouvez faire ce qui suit :

  • CrĂ©er des comptes dans l'organisation

  • Inviter d'autres comptes existants Ă  l'organisation

  • Supprimer des comptes de l'organisation

  • GĂ©rer les invitations

  • Appliquer des politiques aux entitĂ©s (roots, OUs ou comptes) au sein de l'organisation

  • Activer l'intĂ©gration avec les services AWS pris en charge pour fournir des fonctionnalitĂ©s de service Ă  tous les comptes de l'organisation.

  • Il est possible de se connecter en tant qu'utilisateur root en utilisant l'email et le mot de passe utilisĂ©s pour crĂ©er ce compte/organisation root.

Le compte de gestion a les responsabilités d'un compte payeur et est responsable du paiement de tous les frais accumulés par les comptes membres. Vous ne pouvez pas changer le compte de gestion d'une organisation.

  • Les comptes membres constituent tous les autres comptes d'une organisation. Un compte ne peut ĂȘtre membre que d'une seule organisation Ă  la fois. Vous pouvez attacher une politique Ă  un compte pour appliquer des contrĂŽles uniquement Ă  ce compte.
  • Les comptes membres doivent utiliser une adresse email valide et peuvent avoir un nom, en gĂ©nĂ©ral ils ne pourront pas gĂ©rer la facturation (mais ils pourraient y avoir accĂšs).
aws organizations create-account --account-name testingaccount --email testingaccount@lalala1233fr.com

Unités d'Organisation

Les comptes peuvent ĂȘtre regroupĂ©s en UnitĂ©s d'Organisation (OU). De cette maniĂšre, vous pouvez crĂ©er des politiques pour l'UnitĂ© d'Organisation qui vont ĂȘtre appliquĂ©es Ă  tous les comptes enfants. Notez qu'une OU peut avoir d'autres OUs comme enfants.

bash
# You can get the root id from aws organizations list-roots
aws organizations create-organizational-unit --parent-id r-lalala --name TestOU

Service Control Policy (SCP)

Une service control policy (SCP) est une politique qui spécifie les services et actions que les utilisateurs et rÎles peuvent utiliser dans les comptes que la SCP affecte. Les SCP sont similaires aux politiques de permissions IAM sauf qu'elles ne donnent aucune permission. Au lieu de cela, les SCP spécifient les permissions maximales pour une organisation, une unité organisationnelle (OU) ou un compte. Lorsque vous attachez une SCP à la racine de votre organisation ou à une OU, la SCP limite les permissions pour les entités dans les comptes membres.

C'est le SEUL moyen par lequel mĂȘme l'utilisateur root peut ĂȘtre arrĂȘtĂ© de faire quelque chose. Par exemple, cela pourrait ĂȘtre utilisĂ© pour empĂȘcher les utilisateurs de dĂ©sactiver CloudTrail ou de supprimer des sauvegardes.
Le seul moyen de contourner cela est de compromettre Ă©galement le compte maĂźtre qui configure les SCP (le compte maĂźtre ne peut pas ĂȘtre bloquĂ©).

warning

Notez que les SCP ne restreignent que les principaux dans le compte, donc d'autres comptes ne sont pas affectĂ©s. Cela signifie qu'avoir une SCP qui refuse s3:GetObject n'arrĂȘtera pas les gens d'accĂ©der Ă  un bucket S3 public dans votre compte.

Exemples de SCP :

  • Refuser complĂštement le compte root
  • Autoriser uniquement des rĂ©gions spĂ©cifiques
  • Autoriser uniquement des services sur liste blanche
  • Refuser que GuardDuty, CloudTrail et S3 Public Block Access soient dĂ©sactivĂ©s
  • Refuser que les rĂŽles de sĂ©curitĂ©/rĂ©ponse aux incidents soient supprimĂ©s ou modifiĂ©s.
  • Refuser que les sauvegardes soient supprimĂ©es.
  • Refuser la crĂ©ation d'utilisateurs IAM et de clĂ©s d'accĂšs

Trouvez des exemples JSON dans https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html

Resource Control Policy (RCP)

Une resource control policy (RCP) est une politique qui dĂ©finit les permissions maximales pour les ressources au sein de votre organisation AWS. Les RCP sont similaires aux politiques IAM en syntaxe mais ne donnent pas de permissions—elles ne font que plafonner les permissions qui peuvent ĂȘtre appliquĂ©es aux ressources par d'autres politiques. Lorsque vous attachez une RCP Ă  la racine de votre organisation, Ă  une unitĂ© organisationnelle (OU) ou Ă  un compte, la RCP limite les permissions des ressources sur toutes les ressources dans le champ d'application affectĂ©.

C'est le SEUL moyen de s'assurer que les ressources ne peuvent pas dĂ©passer des niveaux d'accĂšs prĂ©dĂ©finis—mĂȘme si une politique basĂ©e sur l'identitĂ© ou sur la ressource est trop permissive. Le seul moyen de contourner ces limites est de modifier Ă©galement la RCP configurĂ©e par le compte de gestion de votre organisation.

warning

Les RCP ne restreignent que les permissions que les ressources peuvent avoir. Elles ne contrĂŽlent pas directement ce que les principaux peuvent faire. Par exemple, si une RCP refuse l'accĂšs externe Ă  un bucket S3, elle garantit que les permissions du bucket ne permettent jamais d'actions au-delĂ  de la limite fixĂ©e—mĂȘme si une politique basĂ©e sur la ressource est mal configurĂ©e.

Exemples de RCP :

  • Restreindre les buckets S3 afin qu'ils ne puissent ĂȘtre accessibles que par des principaux au sein de votre organisation
  • Limiter l'utilisation des clĂ©s KMS pour n'autoriser que les opĂ©rations des comptes organisationnels de confiance
  • Plafonner les permissions sur les files d'attente SQS pour empĂȘcher les modifications non autorisĂ©es
  • Faire respecter des limites d'accĂšs sur les secrets de Secrets Manager pour protĂ©ger les donnĂ©es sensibles

Trouvez des exemples dans AWS Organizations Resource Control Policies documentation

ARN

Amazon Resource Name est le nom unique que chaque ressource à l'intérieur d'AWS possÚde, il est composé comme ceci :

arn:partition:service:region:account-id:resource-type/resource-id
arn:aws:elasticbeanstalk:us-west-1:123456789098:environment/App/Env

Notez qu'il y a 4 partitions dans AWS mais seulement 3 façons de les appeler :

  • AWS Standard : aws
  • AWS China : aws-cn
  • AWS US public Internet (GovCloud) : aws-us-gov
  • AWS Secret (US Classified) : aws

IAM - Gestion des identités et des accÚs

IAM est le service qui vous permettra de gérer l'authentification, l'autorisation et le contrÎle d'accÚs au sein de votre compte AWS.

  • Authentification - Processus de dĂ©finition d'une identitĂ© et de vĂ©rification de cette identitĂ©. Ce processus peut ĂȘtre subdivisĂ© en : Identification et vĂ©rification.
  • Autorisation - DĂ©termine ce qu'une identitĂ© peut accĂ©der au sein d'un systĂšme une fois qu'elle a Ă©tĂ© authentifiĂ©e.
  • ContrĂŽle d'accĂšs - La mĂ©thode et le processus par lesquels l'accĂšs est accordĂ© Ă  une ressource sĂ©curisĂ©e.

IAM peut ĂȘtre dĂ©fini par sa capacitĂ© Ă  gĂ©rer, contrĂŽler et gouverner les mĂ©canismes d'authentification, d'autorisation et de contrĂŽle d'accĂšs des identitĂ©s Ă  vos ressources au sein de votre compte AWS.

Utilisateur racine du compte AWS

Lorsque vous créez pour la premiÚre fois un compte Amazon Web Services (AWS), vous commencez avec une identité de connexion unique qui a un accÚs complet à tous les services et ressources AWS dans le compte. C'est l'utilisateur racine du compte AWS et il est accessible en se connectant avec l'adresse e-mail et le mot de passe que vous avez utilisés pour créer le compte.

Notez qu'un nouvel utilisateur admin aura moins de permissions que l'utilisateur racine.

D'un point de vue sécurité, il est recommandé de créer d'autres utilisateurs et d'éviter d'utiliser celui-ci.

Utilisateurs IAM

Un utilisateur IAM est une entité que vous créez dans AWS pour représenter la personne ou l'application qui l'utilise pour interagir avec AWS. Un utilisateur dans AWS se compose d'un nom et de références (mot de passe et jusqu'à deux clés d'accÚs).

Lorsque vous créez un utilisateur IAM, vous lui accordez des permissions en le rendant membre d'un groupe d'utilisateurs qui a des politiques de permission appropriées attachées (recommandé), ou en attachant directement des politiques à l'utilisateur.

Les utilisateurs peuvent avoir MFA activĂ© pour se connecter via la console. Les jetons API des utilisateurs avec MFA activĂ© ne sont pas protĂ©gĂ©s par MFA. Si vous souhaitez restreindre l'accĂšs des clĂ©s API d'un utilisateur en utilisant MFA, vous devez indiquer dans la politique qu'en vue d'effectuer certaines actions, MFA doit ĂȘtre prĂ©sent (exemple ici).

CLI

  • ID de clĂ© d'accĂšs : 20 caractĂšres alphanumĂ©riques majuscules alĂ©atoires comme AKHDNAPO86BSHKDIRYT
  • ID de clĂ© d'accĂšs secrĂšte : 40 caractĂšres alĂ©atoires en majuscules et minuscules : S836fh/J73yHSb64Ag3Rkdi/jaD6sPl6/antFtU (Il n'est pas possible de rĂ©cupĂ©rer les ID de clĂ© d'accĂšs secrĂšte perdus).

Chaque fois que vous devez changer la clé d'accÚs, voici le processus que vous devez suivre :
Créez une nouvelle clé d'accÚs -> Appliquez la nouvelle clé au systÚme/application -> marquez l'original comme inactif -> Testez et vérifiez que la nouvelle clé d'accÚs fonctionne -> Supprimez l'ancienne clé d'accÚs

MFA - Authentification Multi-Facteurs

Il est utilisé pour créer un facteur supplémentaire pour l'authentification en plus de vos méthodes existantes, telles que le mot de passe, créant ainsi un niveau d'authentification multi-facteurs.
Vous pouvez utiliser une application virtuelle gratuite ou un appareil physique. Vous pouvez utiliser des applications comme Google Authenticator gratuitement pour activer un MFA dans AWS.

Les politiques avec des conditions MFA peuvent ĂȘtre attachĂ©es aux Ă©lĂ©ments suivants :

  • Un utilisateur ou un groupe IAM
  • Une ressource telle qu'un bucket Amazon S3, une file d'attente Amazon SQS ou un sujet Amazon SNS
  • La politique de confiance d'un rĂŽle IAM qui peut ĂȘtre assumĂ© par un utilisateur

Si vous souhaitez accéder via CLI à une ressource qui vérifie MFA, vous devez appeler GetSessionToken. Cela vous donnera un jeton avec des informations sur MFA.
Notez que les informations d'identification AssumeRole ne contiennent pas cette information.

bash
aws sts get-session-token --serial-number <arn_device> --token-code <code>

Comme indiquĂ© ici, il existe de nombreux cas oĂč MFA ne peut pas ĂȘtre utilisĂ©.

Groupes d'utilisateurs IAM

Un groupe d'utilisateurs IAM est un moyen de joindre des politiques Ă  plusieurs utilisateurs en mĂȘme temps, ce qui peut faciliter la gestion des autorisations pour ces utilisateurs. Les rĂŽles et les groupes ne peuvent pas faire partie d'un groupe.

Vous pouvez attacher une politique basée sur l'identité à un groupe d'utilisateurs afin que tous les utilisateurs du groupe d'utilisateurs reçoivent les autorisations de la politique. Vous ne pouvez pas identifier un groupe d'utilisateurs comme un Principal dans une politique (comme une politique basée sur les ressources) car les groupes sont liés aux autorisations, pas à l'authentification, et les principaux sont des entités IAM authentifiées.

Voici quelques caractéristiques importantes des groupes d'utilisateurs :

  • Un groupe d'utilisateurs peut contenir plusieurs utilisateurs, et un utilisateur peut appartenir Ă  plusieurs groupes.
  • Les groupes d'utilisateurs ne peuvent pas ĂȘtre imbriquĂ©s ; ils ne peuvent contenir que des utilisateurs, pas d'autres groupes d'utilisateurs.
  • Il n'y a pas de groupe d'utilisateurs par dĂ©faut qui inclut automatiquement tous les utilisateurs du compte AWS. Si vous souhaitez avoir un groupe d'utilisateurs comme cela, vous devez le crĂ©er et assigner chaque nouvel utilisateur Ă  celui-ci.
  • Le nombre et la taille des ressources IAM dans un compte AWS, comme le nombre de groupes et le nombre de groupes dont un utilisateur peut ĂȘtre membre, sont limitĂ©s. Pour plus d'informations, voir les quotas IAM et AWS STS.

RĂŽles IAM

Un rĂŽle IAM est trĂšs similaire Ă  un utilisateur, en ce sens qu'il s'agit d'une identitĂ© avec des politiques d'autorisation qui dĂ©terminent ce qu'elle peut et ne peut pas faire dans AWS. Cependant, un rĂŽle n'a pas de credentials (mot de passe ou clĂ©s d'accĂšs) qui lui sont associĂ©s. Au lieu d'ĂȘtre associĂ© de maniĂšre unique Ă  une personne, un rĂŽle est destinĂ© Ă  ĂȘtre assumĂ© par quiconque en a besoin (et a suffisamment de permissions). Un utilisateur IAM peut assumer un rĂŽle pour temporairement prendre des autorisations diffĂ©rentes pour une tĂąche spĂ©cifique. Un rĂŽle peut ĂȘtre assignĂ© Ă  un utilisateur fĂ©dĂ©rĂ© qui se connecte en utilisant un fournisseur d'identitĂ© externe au lieu d'IAM.

Un rĂŽle IAM se compose de deux types de politiques : une politique de confiance, qui ne peut pas ĂȘtre vide, dĂ©finissant qui peut assumer le rĂŽle, et une politique d'autorisation, qui ne peut pas ĂȘtre vide, dĂ©finissant ce qu'il peut accĂ©der.

Service de jetons de sécurité AWS (STS)

Le Service de jetons de sécurité AWS (STS) est un service web qui facilite l'émission de credentials temporaires à privilÚges limités. Il est spécifiquement conçu pour :

Credentials temporaires dans IAM

Les credentials temporaires sont principalement utilisĂ©s avec des rĂŽles IAM, mais il existe Ă©galement d'autres utilisations. Vous pouvez demander des credentials temporaires qui ont un ensemble de permissions plus restreint que votre utilisateur IAM standard. Cela empĂȘche que vous effectuiez accidentellement des tĂąches qui ne sont pas autorisĂ©es par les credentials plus restreints. Un avantage des credentials temporaires est qu'ils expirent automatiquement aprĂšs une pĂ©riode dĂ©terminĂ©e. Vous avez le contrĂŽle sur la durĂ©e pendant laquelle les credentials sont valides.

Politiques

Permissions de politique

Sont utilisées pour attribuer des permissions. Il existe 2 types :

  • Politiques gĂ©rĂ©es par AWS (prĂ©configurĂ©es par AWS)
  • Politiques gĂ©rĂ©es par le client : configurĂ©es par vous. Vous pouvez crĂ©er des politiques basĂ©es sur des politiques gĂ©rĂ©es par AWS (en modifiant l'une d'elles et en crĂ©ant la vĂŽtre), en utilisant le gĂ©nĂ©rateur de politiques (une vue GUI qui vous aide Ă  accorder et refuser des permissions) ou en Ă©crivant la vĂŽtre.

Par défaut, l'accÚs est refusé, l'accÚs sera accordé si un rÎle explicite a été spécifié.
Si un "Deny" unique existe, il remplacera le "Allow", sauf pour les demandes qui utilisent les credentials de sécurité root du compte AWS (qui sont autorisées par défaut).

javascript
{
"Version": "2012-10-17",  //Version of the policy
"Statement": [  //Main element, there can be more than 1 entry in this array
{
"Sid": "Stmt32894y234276923" //Unique identifier (optional)
"Effect": "Allow", //Allow or deny
"Action": [  //Actions that will be allowed or denied
"ec2:AttachVolume",
"ec2:DetachVolume"
],
"Resource": [ //Resource the action and effect will be applied to
"arn:aws:ec2:*:*:volume/*",
"arn:aws:ec2:*:*:instance/*"
],
"Condition": { //Optional element that allow to control when the permission will be effective
"ArnEquals": {"ec2:SourceInstanceARN": "arn:aws:ec2:*:*:instance/instance-id"}
}
}
]
}

Les champs globaux qui peuvent ĂȘtre utilisĂ©s pour des conditions dans n'importe quel service sont documentĂ©s ici.
Les champs spĂ©cifiques qui peuvent ĂȘtre utilisĂ©s pour des conditions par service sont documentĂ©s ici.

Politiques Inline

Ce type de politiques est directement assigné à un utilisateur, un groupe ou un rÎle. Ainsi, elles n'apparaissent pas dans la liste des Politiques car d'autres peuvent les utiliser.
Les politiques inline sont utiles si vous souhaitez maintenir une relation stricte un Ă  un entre une politique et l'identitĂ© Ă  laquelle elle est appliquĂ©e. Par exemple, vous voulez vous assurer que les autorisations dans une politique ne sont pas attribuĂ©es par inadvertance Ă  une identitĂ© autre que celle pour laquelle elles sont destinĂ©es. Lorsque vous utilisez une politique inline, les autorisations dans la politique ne peuvent pas ĂȘtre attachĂ©es par inadvertance Ă  la mauvaise identitĂ©. De plus, lorsque vous utilisez la console de gestion AWS pour supprimer cette identitĂ©, les politiques intĂ©grĂ©es Ă  l'identitĂ© sont Ă©galement supprimĂ©es. C'est parce qu'elles font partie de l'entitĂ© principale.

Politiques de Bucket de Ressources

Ce sont des politiques qui peuvent ĂȘtre dĂ©finies dans des ressources. Toutes les ressources d'AWS ne les prennent pas en charge.

Si un principal n'a pas de refus explicite à leur sujet, et qu'une politique de ressource leur accorde l'accÚs, alors ils sont autorisés.

Limites IAM

Les limites IAM peuvent ĂȘtre utilisĂ©es pour limiter les autorisations auxquelles un utilisateur ou un rĂŽle devrait avoir accĂšs. De cette façon, mĂȘme si un ensemble diffĂ©rent d'autorisations est accordĂ© Ă  l'utilisateur par une politique diffĂ©rente, l'opĂ©ration Ă©chouera s'il essaie de les utiliser.

Une limite est simplement une politique attachĂ©e Ă  un utilisateur qui indique le niveau maximum d'autorisations que l'utilisateur ou le rĂŽle peut avoir. Donc, mĂȘme si l'utilisateur a un accĂšs Administrateur, si la limite indique qu'il ne peut lire que des buckets S·, c'est le maximum qu'il peut faire.

Cela, les SCPs et le respect du principe du moindre privilĂšge sont les moyens de contrĂŽler que les utilisateurs n'ont pas plus d'autorisations que celles dont ils ont besoin.

Politiques de Session

Une politique de session est une politique définie lorsqu'un rÎle est assumé d'une maniÚre ou d'une autre. Cela sera comme une limite IAM pour cette session : Cela signifie que la politique de session ne donne pas d'autorisations mais les restreint à celles indiquées dans la politique (les autorisations maximales étant celles que le rÎle a).

Ceci est utile pour des mesures de sĂ©curitĂ© : Lorsqu'un administrateur va assumer un rĂŽle trĂšs privilĂ©giĂ©, il pourrait restreindre l'autorisation uniquement Ă  celles indiquĂ©es dans la politique de session au cas oĂč la session serait compromise.

bash
aws sts assume-role \
--role-arn <value> \
--role-session-name <value> \
[--policy-arns <arn_custom_policy1> <arn_custom_policy2>]
[--policy <file://policy.json>]

Notez qu'en dĂ©faut, AWS peut ajouter des politiques de session aux sessions qui vont ĂȘtre gĂ©nĂ©rĂ©es pour d'autres raisons. Par exemple, dans les rĂŽles supposĂ©s cognito non authentifiĂ©s, par dĂ©faut (en utilisant l'authentification amĂ©liorĂ©e), AWS gĂ©nĂ©rera des identifiants de session avec une politique de session qui limite les services auxquels cette session peut accĂ©der Ă  la liste suivante.

Par consĂ©quent, si Ă  un moment donnĂ© vous rencontrez l'erreur "... parce qu'aucune politique de session ne permet le ...", et que le rĂŽle a accĂšs pour effectuer l'action, c'est parce que il y a une politique de session qui l'en empĂȘche.

Fédération d'identité

La fédération d'identité permet aux utilisateurs des fournisseurs d'identité qui sont externes à AWS d'accéder aux ressources AWS de maniÚre sécurisée sans avoir à fournir les identifiants d'utilisateur AWS d'un compte IAM valide.
Un exemple de fournisseur d'identitĂ© peut ĂȘtre votre propre Microsoft Active Directory (via SAML) ou des services OpenID (comme Google). L'accĂšs fĂ©dĂ©rĂ© permettra alors aux utilisateurs de celui-ci d'accĂ©der Ă  AWS.

Pour configurer cette confiance, un fournisseur d'identité IAM est généré (SAML ou OAuth) qui fera confiance à la autre plateforme. Ensuite, au moins un rÎle IAM est attribué (faisant confiance) au fournisseur d'identité. Si un utilisateur de la plateforme de confiance accÚde à AWS, il le fera en accédant au rÎle mentionné.

Cependant, vous voudrez généralement donner un rÎle différent en fonction du groupe de l'utilisateur sur la plateforme tierce. Ensuite, plusieurs rÎles IAM peuvent faire confiance au fournisseur d'identité tiers et la plateforme tierce sera celle qui permettra aux utilisateurs d'assumer un rÎle ou un autre.

Centre d'identité IAM

AWS IAM Identity Center (successeur d'AWS Single Sign-On) étend les capacités de la gestion des identités et des accÚs AWS (IAM) pour fournir un endroit central qui regroupe l'administration des utilisateurs et leur accÚs aux comptes AWS et aux applications cloud.

Le domaine de connexion sera quelque chose comme <user_input>.awsapps.com.

Pour connecter des utilisateurs, il y a 3 sources d'identitĂ© qui peuvent ĂȘtre utilisĂ©es :

  • RĂ©pertoire Identity Center : Utilisateurs AWS rĂ©guliers
  • Active Directory : Prend en charge diffĂ©rents connecteurs
  • Fournisseur d'identitĂ© externe : Tous les utilisateurs et groupes proviennent d'un fournisseur d'identitĂ© externe (IdP)

Dans le cas le plus simple du répertoire Identity Center, le Centre d'identité aura une liste d'utilisateurs et de groupes et sera capable d'attribuer des politiques à ceux-ci pour n'importe lequel des comptes de l'organisation.

Pour donner accÚs à un utilisateur/groupe du Centre d'identité à un compte, un fournisseur d'identité SAML faisant confiance au Centre d'identité sera créé, et un rÎle faisant confiance au fournisseur d'identité avec les politiques indiquées sera créé dans le compte de destination.

AwsSSOInlinePolicy

Il est possible de donner des permissions via des politiques en ligne aux rÎles créés via IAM Identity Center. Les rÎles créés dans les comptes étant donnés politiques en ligne dans AWS Identity Center auront ces permissions dans une politique en ligne appelée AwsSSOInlinePolicy.

Par consĂ©quent, mĂȘme si vous voyez 2 rĂŽles avec une politique en ligne appelĂ©e AwsSSOInlinePolicy, cela ne signifie pas qu'ils ont les mĂȘmes permissions.

Confiances et rĂŽles inter-comptes

Un utilisateur (faisant confiance) peut créer un rÎle inter-comptes avec certaines politiques et ensuite, permettre à un autre utilisateur (de confiance) d'accéder à son compte mais seulement avec l'accÚs indiqué dans les nouvelles politiques de rÎle. Pour créer cela, il suffit de créer un nouveau rÎle et de sélectionner le rÎle inter-comptes. Les rÎles pour l'accÚs inter-comptes offrent deux options. Fournir un accÚs entre les comptes AWS que vous possédez, et fournir un accÚs entre un compte que vous possédez et un compte AWS tiers.
Il est recommandé de spécifier l'utilisateur qui est de confiance et de ne pas mettre quelque chose de générique car sinon, d'autres utilisateurs authentifiés comme les utilisateurs fédérés pourront également abuser de cette confiance.

AWS Simple AD

Non pris en charge :

  • Relations de confiance
  • Centre d'administration AD
  • Prise en charge complĂšte de l'API PS
  • Corbeille AD
  • Comptes de service gĂ©rĂ©s par groupe
  • Extensions de schĂ©ma
  • Pas d'accĂšs direct au systĂšme d'exploitation ou aux instances

Fédération Web ou authentification OpenID

L'application utilise AssumeRoleWithWebIdentity pour créer des identifiants temporaires. Cependant, cela n'accorde pas l'accÚs à la console AWS, seulement l'accÚs aux ressources au sein d'AWS.

Autres options IAM

  • Vous pouvez dĂ©finir un paramĂštre de politique de mot de passe avec des options comme la longueur minimale et les exigences de mot de passe.
  • Vous pouvez tĂ©lĂ©charger un "Rapport d'identifiants" avec des informations sur les identifiants actuels (comme le temps de crĂ©ation de l'utilisateur, si le mot de passe est activĂ©...). Vous pouvez gĂ©nĂ©rer un rapport d'identifiants aussi souvent qu'une fois toutes les quatre heures.

AWS Identity and Access Management (IAM) fournit un contrĂŽle d'accĂšs granulaire sur l'ensemble d'AWS. Avec IAM, vous pouvez spĂ©cifier qui peut accĂ©der Ă  quels services et ressources, et sous quelles conditions. Avec les politiques IAM, vous gĂ©rez les permissions de votre main-d'Ɠuvre et de vos systĂšmes pour assurer des permissions de moindre privilĂšge.

Préfixes d'ID IAM

Dans cette page, vous pouvez trouver les préfixes d'ID IAM des clés en fonction de leur nature :

Code d'identifiantDescription
ABIAJeton porteur de service AWS STS

| ACCA | Identifiant spécifique au contexte | | AGPA | Groupe d'utilisateurs | | AIDA | Utilisateur IAM | | AIPA | Profil d'instance Amazon EC2 | | AKIA | Clé d'accÚs | | ANPA | Politique gérée | | ANVA | Version dans une politique gérée | | APKA | Clé publique | | AROA | RÎle | | ASCA | Certificat | | ASIA | Identifiants de clé d'accÚs temporaires (AWS STS) utilisent ce préfixe, mais sont uniques uniquement en combinaison avec la clé d'accÚs secrÚte et le jeton de session. |

Permissions recommandées pour auditer les comptes

Les privilÚges suivants accordent divers accÚs en lecture des métadonnées :

  • arn:aws:iam::aws:policy/SecurityAudit
  • arn:aws:iam::aws:policy/job-function/ViewOnlyAccess
  • codebuild:ListProjects
  • config:Describe*
  • cloudformation:ListStacks
  • logs:DescribeMetricFilters
  • directconnect:DescribeConnections
  • dynamodb:ListTables

Divers

Authentification CLI

Pour qu'un utilisateur régulier s'authentifie à AWS via CLI, vous devez avoir des identifiants locaux. Par défaut, vous pouvez les configurer manuellement dans ~/.aws/credentials ou en exécutant aws configure.
Dans ce fichier, vous pouvez avoir plus d'un profil, si aucun profil n'est spécifié en utilisant le cli aws, celui appelé [default] dans ce fichier sera utilisé.
Exemple de fichier d'identifiants avec plus d'un profil :

[default]
aws_access_key_id = AKIA5ZDCUJHF83HDTYUT
aws_secret_access_key = uOcdhof683fbOUGFYEQug8fUGIf68greoihef

[Admin]
aws_access_key_id = AKIA8YDCu7TGTR356SHYT
aws_secret_access_key = uOcdhof683fbOUGFYEQuR2EIHG34UY987g6ff7
region = eu-west-2

Si vous devez accéder à différents comptes AWS et que votre profil a été autorisé à assumer un rÎle dans ces comptes, vous n'avez pas besoin d'appeler manuellement STS à chaque fois (aws sts assume-role --role-arn <role-arn> --role-session-name sessname) et de configurer les identifiants.

Vous pouvez utiliser le fichier ~/.aws/config pour indiquer quels rÎles assumer, puis utiliser le paramÚtre --profile comme d'habitude (l'assume-role sera effectué de maniÚre transparente pour l'utilisateur).
Un exemple de fichier de configuration :

[profile acc2]
region=eu-west-2
role_arn=arn:aws:iam::<account-id>:role/<role-path>
role_session_name = <session_name>
source_profile = <profile_with_assume_role>
sts_regional_endpoints = regional

Avec ce fichier de configuration, vous pouvez ensuite utiliser aws cli comme :

aws --profile acc2 ...

Si vous recherchez quelque chose de similaire Ă  cela mais pour le navigateur, vous pouvez consulter l'extension AWS Extend Switch Roles.

Automatisation des identifiants temporaires

Si vous exploitez une application qui gĂ©nĂšre des identifiants temporaires, il peut ĂȘtre fastidieux de les mettre Ă  jour dans votre terminal toutes les quelques minutes lorsqu'ils expirent. Cela peut ĂȘtre rĂ©solu en utilisant une directive credential_process dans le fichier de configuration. Par exemple, si vous avez une application web vulnĂ©rable, vous pourriez faire :

toml
[victim]
credential_process = curl -d 'PAYLOAD' https://some-site.com

Notez que les identifiants doivent ĂȘtre renvoyĂ©s Ă  STDOUT dans le format suivant :

json
{
"Version": 1,
"AccessKeyId": "an AWS access key",
"SecretAccessKey": "your AWS secret access key",
"SessionToken": "the AWS session token for temporary credentials",
"Expiration": "ISO8601 timestamp when the credentials expire"
}

Références

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks