# AWS - Enumeration du Firewall Manager

{{#include ../../../../banners/hacktricks-training.md}}

## Firewall Manager

**AWS Firewall Manager** simplifie la gestion et la maintenance de **AWS WAF, AWS Shield Advanced, groupes de sécurité Amazon VPC et listes de contrôle d'accès réseau (ACL), ainsi que AWS Network Firewall, AWS Route 53 Resolver DNS Firewall et pare-feu tiers** à travers plusieurs comptes et ressources. Il vous permet de configurer vos règles de pare-feu, protections Shield Advanced, groupes de sécurité VPC et paramètres de Network Firewall une seule fois, le service **appliquant automatiquement ces règles et protections à vos comptes et ressources**, y compris celles nouvellement ajoutées.

Le service offre la capacité de **grouper et protéger des ressources spécifiques ensemble**, comme celles partageant une étiquette commune ou toutes vos distributions CloudFront. Un avantage significatif de Firewall Manager est sa capacité à **étendre automatiquement la protection aux ressources nouvellement ajoutées** dans votre compte.

Un **groupe de règles** (une collection de règles WAF) peut être incorporé dans une politique AWS Firewall Manager, qui est ensuite liée à des ressources AWS spécifiques telles que des distributions CloudFront ou des équilibreurs de charge d'application.

AWS Firewall Manager fournit des **listes d'applications et de protocoles gérées** pour simplifier la configuration et la gestion des politiques de groupe de sécurité. Ces listes vous permettent de définir les protocoles et applications autorisés ou refusés par vos politiques. Il existe deux types de listes gérées :

- **Listes gérées par Firewall Manager** : Ces listes incluent **FMS-Default-Public-Access-Apps-Allowed**, **FMS-Default-Protocols-Allowed** et **FMS-Default-Protocols-Allowed**. Elles sont gérées par Firewall Manager et incluent des applications et protocoles couramment utilisés qui devraient être autorisés ou refusés au grand public. Il n'est pas possible de les modifier ou de les supprimer, cependant, vous pouvez choisir sa version.
- **Listes gérées personnalisées** : Vous gérez ces listes vous-même. Vous pouvez créer des listes d'applications et de protocoles personnalisées adaptées aux besoins de votre organisation. Contrairement aux listes gérées par Firewall Manager, ces listes n'ont pas de versions, mais vous avez un contrôle total sur les listes personnalisées, vous permettant de les créer, modifier et supprimer selon vos besoins.

Il est important de noter que **les politiques de Firewall Manager n'autorisent que les actions "Block" ou "Count"** pour un groupe de règles, sans option "Allow".

### Prérequis

Les étapes préalables suivantes doivent être complétées avant de procéder à la configuration de Firewall Manager pour commencer à protéger efficacement les ressources de votre organisation. Ces étapes fournissent la configuration de base requise pour que Firewall Manager applique des politiques de sécurité et assure la conformité dans votre environnement AWS :

1. **Rejoindre et configurer AWS Organizations :** Assurez-vous que votre compte AWS fait partie de l'organisation AWS Organizations où les politiques AWS Firewall Manager sont prévues pour être implantées. Cela permet une gestion centralisée des ressources et des politiques à travers plusieurs comptes AWS au sein de l'organisation.
2. **Créer un compte administrateur par défaut AWS Firewall Manager :** Établissez un compte administrateur par défaut spécifiquement pour gérer les politiques de sécurité de Firewall Manager. Ce compte sera responsable de la configuration et de l'application des politiques de sécurité à travers l'organisation. Seul le compte de gestion de l'organisation peut créer des comptes administrateurs par défaut pour Firewall Manager.
3. **Activer AWS Config :** Activez AWS Config pour fournir à Firewall Manager les données de configuration et les informations nécessaires pour appliquer efficacement les politiques de sécurité. AWS Config aide à analyser, auditer, surveiller et auditer les configurations et changements de ressources, facilitant une meilleure gestion de la sécurité.
4. **Pour les politiques tierces, abonnez-vous dans le AWS Marketplace et configurez les paramètres tiers :** Si vous prévoyez d'utiliser des politiques de pare-feu tierces, abonnez-vous à celles-ci dans le AWS Marketplace et configurez les paramètres nécessaires. Cette étape garantit que Firewall Manager peut intégrer et appliquer des politiques de fournisseurs tiers de confiance.
5. **Pour les politiques de Network Firewall et DNS Firewall, activez le partage de ressources :** Activez le partage de ressources spécifiquement pour les politiques de Network Firewall et DNS Firewall. Cela permet à Firewall Manager d'appliquer des protections de pare-feu à vos VPC et à la résolution DNS de votre organisation, renforçant la sécurité du réseau.
6. **Pour utiliser AWS Firewall Manager dans des régions qui sont désactivées par défaut :** Si vous avez l'intention d'utiliser Firewall Manager dans des régions AWS qui sont désactivées par défaut, assurez-vous de prendre les mesures nécessaires pour activer sa fonctionnalité dans ces régions. Cela garantit une application cohérente de la sécurité dans toutes les régions où votre organisation opère.

Pour plus d'informations, consultez : [Getting started with AWS Firewall Manager AWS WAF policies](https://docs.aws.amazon.com/waf/latest/developerguide/getting-started-fms.html).

### Types de politiques de protection

AWS Firewall Manager gère plusieurs types de politiques pour appliquer des contrôles de sécurité à différents aspects de l'infrastructure de votre organisation :

1. **Politique AWS WAF :** Ce type de politique prend en charge à la fois AWS WAF et AWS WAF Classic. Vous pouvez définir quelles ressources sont protégées par la politique. Pour les politiques AWS WAF, vous pouvez spécifier des ensembles de groupes de règles à exécuter en premier et en dernier dans le web ACL. De plus, les propriétaires de compte peuvent ajouter des règles et des groupes de règles à exécuter entre ces ensembles.
2. **Politique Shield Advanced :** Cette politique applique des protections Shield Advanced à travers votre organisation pour des types de ressources spécifiés. Elle aide à protéger contre les attaques DDoS et autres menaces.
3. **Politique de groupe de sécurité Amazon VPC :** Avec cette politique, vous pouvez gérer les groupes de sécurité utilisés dans toute votre organisation, appliquant un ensemble de règles de base à travers votre environnement AWS pour contrôler l'accès au réseau.
4. **Politique de liste de contrôle d'accès réseau (ACL) Amazon VPC :** Ce type de politique vous donne le contrôle sur les ACL réseau utilisés dans votre organisation, vous permettant d'appliquer un ensemble de base d'ACL réseau à travers votre environnement AWS.
5. **Politique de Network Firewall :** Cette politique applique la protection AWS Network Firewall à vos VPC, renforçant la sécurité du réseau en filtrant le trafic en fonction de règles prédéfinies.
6. **Politique de DNS Firewall Amazon Route 53 Resolver :** Cette politique applique des protections DNS Firewall à vos VPC, aidant à bloquer les tentatives de résolution de domaine malveillantes et à appliquer des politiques de sécurité pour le trafic DNS.
7. **Politique de pare-feu tiers :** Ce type de politique applique des protections provenant de pare-feu tiers, qui sont disponibles par abonnement via la console AWS Marketplace. Elle vous permet d'intégrer des mesures de sécurité supplémentaires de fournisseurs de confiance dans votre environnement AWS.
1. **Politique Palo Alto Networks Cloud NGFW :** Cette politique applique des protections et des ensembles de règles du pare-feu de nouvelle génération (NGFW) Palo Alto Networks Cloud à vos VPC, fournissant une prévention avancée des menaces et des contrôles de sécurité au niveau des applications.
2. **Politique Fortigate Cloud Native Firewall (CNF) as a Service :** Cette politique applique des protections Fortigate Cloud Native Firewall (CNF) as a Service, offrant une prévention des menaces de premier plan, un pare-feu d'application web (WAF) et une protection API adaptées aux infrastructures cloud.

### Comptes administrateurs

AWS Firewall Manager offre de la flexibilité dans la gestion des ressources de pare-feu au sein de votre organisation grâce à son champ d'application administratif et à deux types de comptes administrateurs.

**Le champ d'application administratif définit les ressources qu'un administrateur de Firewall Manager peut gérer**. Après qu'un compte de gestion AWS Organizations ait intégré une organisation à Firewall Manager, il peut créer des administrateurs supplémentaires avec différents champs d'application administratifs. Ces champs peuvent inclure :

- Comptes ou unités organisationnelles (OU) auxquels l'administrateur peut appliquer des politiques.
- Régions où l'administrateur peut effectuer des actions.
- Types de politiques de Firewall Manager que l'administrateur peut gérer.

Le champ d'application administratif peut être soit **complet soit restreint**. Le champ complet accorde à l'administrateur l'accès à **tous les types de ressources spécifiés, régions et types de politiques**. En revanche, **le champ restreint fournit une autorisation administrative uniquement à un sous-ensemble de ressources, régions ou types de politiques**. Il est conseillé d'accorder aux administrateurs uniquement les autorisations dont ils ont besoin pour remplir efficacement leurs rôles. Vous pouvez appliquer n'importe quelle combinaison de ces conditions de champ d'application administratif à un administrateur, garantissant le respect du principe du moindre privilège.

Il existe deux types distincts de comptes administrateurs, chacun ayant des rôles et responsabilités spécifiques :

- **Administrateur par défaut :**
- Le compte administrateur par défaut est créé par le compte de gestion de l'organisation AWS Organizations lors du processus d'intégration à Firewall Manager.
- Ce compte a la capacité de gérer des pare-feu tiers et possède un champ d'application administratif complet.
- Il sert de compte administrateur principal pour Firewall Manager, responsable de la configuration et de l'application des politiques de sécurité à travers l'organisation.
- Bien que l'administrateur par défaut ait un accès complet à tous les types de ressources et fonctionnalités administratives, il opère au même niveau de pair que d'autres administrateurs si plusieurs administrateurs sont utilisés au sein de l'organisation.
- **Administrateurs de Firewall Manager :**
- Ces administrateurs peuvent gérer des ressources dans le champ défini par le compte de gestion AWS Organizations, tel que défini par la configuration du champ d'application administratif.
- Les administrateurs de Firewall Manager sont créés pour remplir des rôles spécifiques au sein de l'organisation, permettant la délégation de responsabilités tout en maintenant des normes de sécurité et de conformité.
- Lors de leur création, Firewall Manager vérifie auprès d'AWS Organizations pour déterminer si le compte est déjà un administrateur délégué. Si ce n'est pas le cas, Firewall Manager appelle Organizations pour désigner le compte comme un administrateur délégué pour Firewall Manager.

La gestion de ces comptes administrateurs implique de les créer au sein de Firewall Manager et de définir leurs champs d'application administratifs selon les exigences de sécurité de l'organisation et le principe du moindre privilège. En assignant des rôles administratifs appropriés, les organisations peuvent garantir une gestion efficace de la sécurité tout en maintenant un contrôle granulaire sur l'accès aux ressources sensibles.

Il est important de souligner que **un seul compte au sein d'une organisation peut servir d'administrateur par défaut de Firewall Manager**, respectant le principe de "**premier arrivé, dernier sorti**". Pour désigner un nouvel administrateur par défaut, une série d'étapes doit être suivie :

- Tout d'abord, chaque compte administrateur de Firewall doit révoquer son propre compte.
- Ensuite, l'administrateur par défaut existant peut révoquer son propre compte, désengageant effectivement l'organisation de Firewall Manager. Ce processus entraîne la suppression de toutes les politiques de Firewall Manager créées par le compte révoqué.
- Pour conclure, le compte de gestion AWS Organizations doit désigner l'administrateur par défaut de Firewall Manager.

## Énumération
```
# Users/Administrators

## Get the AWS Organizations account that is associated with AWS Firewall Manager as the AWS Firewall Manager default administrator
aws fms get-admin-account

## List of Firewall Manager administrators within the organization
aws fms list-admin-accounts-for-organization # ReadOnlyAccess policy is not enough for this

## Return a list of the member accounts in the FM administrator's AWS organization
aws fms list-member-accounts # Only a Firewall Manager administrator or the Organization's management account can make this request

## List the accounts that are managing the specified AWS Organizations member account
aws fms list-admins-managing-account # ReadOnlyAccess policy is not enough for this

# Resources

## Get the resources that a Firewall Manager administrator can manage
aws fms get-admin-scope --admin-account <value> # ReadOnlyAccess policy is not enough for this

## Returns the summary of the resource sets used
aws fms list-resource-sets # ReadOnlyAccess policy is not enough for this

## Get information about a specific resource set
aws fms get-resource-set --identifier <value>  # ReadOnlyAccess policy is not enough for this

## Retrieve the list of tags for a given resource
aws fms list-tags-for-resource --resource-arn <value>

## List of the resources in the AWS Organization's accounts that are available to be associated with a FM resource set. Only one account is supported per request.
aws fms list-compliance-status --member-account-ids <value> --resource-type <value> # ReadOnlyAccess policy is not enough for this

## List the resources that are currently associated to a resource set
aws fms list-resource-set-resources --identifier <value> # ReadOnlyAccess policy is not enough for this

# Policies

## Returns the list of policies
aws fms list-policies

## Get information about the specified AWS Firewall Manager policy
aws fms get-policy --policy-id <value>

## List all of the third-party firewall policies that are associated with the third-party firewall administrator's account
aws fms list-third-party-firewall-firewall-policies --third-party-firewall <PALO_ALTO_NETWORKS_CLOUD_NGFW|FORTIGATE_CLOUD_NATIVE_FIREWALL> # ReadOnlyAccess policy is not enough for this

# AppsList

## Return a list of apps list
aws fms list-apps-lists --max-results [1-100]

## Get information about the specified AWS Firewall Manager applications list
aws fms get-apps-list --list-id <value>

# Protocols

## Get the details of the Firewall Manager protocols list.
aws fms list-protocols-lists

## Get information about the specified AWS Firewall Manager Protocols list
aws fms get-protocols-list --list-id <value>

# Compliance

## Return a summary of which member accounts are protected by the specified policy
aws fms list-compliance-status --policy-id <policy-id>

## Get detailed compliance information about the specified member account (resources that are in and out of compliance with the specified policy)
aws fms get-compliance-detail --policy-id <value> --member-account <value>

# Other useful info

## Get information about the SNS topic that is used to record AWS Firewall Manager SNS logs (if any)
aws fms get-notification-channel

## Get policy-level attack summary information in the event of a potential DDoS attack
aws fms get-protection-status --policy-id <value> # Just for Shield Advanced policy

## Get the onboarding status of a Firewall Manager admin account to third-party firewall vendor tenant.
aws fms get-third-party-firewall-association-status --third-party-firewall <PALO_ALTO_NETWORKS_CLOUD_NGFW|FORTIGATE_CLOUD_NATIVE_FIREWALL> # ReadOnlyAccess policy is not enough for this

## Get violations' details for a resource based on the specified AWS Firewall Manager policy and AWS account.
aws fms get-violation-details --policy-id <value> --member-account <value> --resource-id <value> --resource-type <value>
```
## Post Exploitation / Bypass Detection

### `organizations:DescribeOrganization` & (`fms:AssociateAdminAccount`, `fms:DisassociateAdminAccount`, `fms:PutAdminAccount`)

Un attaquant avec la permission **`fms:AssociateAdminAccount`** serait capable de définir le compte administrateur par défaut du Firewall Manager. Avec la permission **`fms:PutAdminAccount`**, un attaquant pourrait créer ou mettre à jour un compte administrateur du Firewall Manager et avec la permission **`fms:DisassociateAdminAccount`**, un attaquant potentiel pourrait supprimer l'association du compte administrateur actuel du Firewall Manager.

- La désassociation de **l'administrateur par défaut du Firewall Manager suit la politique du premier entré, dernier sorti**. Tous les administrateurs du Firewall Manager doivent se désassocier avant que l'administrateur par défaut du Firewall Manager puisse désassocier le compte.
- Afin de créer un administrateur du Firewall Manager par **PutAdminAccount**, le compte doit appartenir à l'organisation qui a été précédemment intégrée au Firewall Manager en utilisant **AssociateAdminAccount**.
- La création d'un compte administrateur du Firewall Manager ne peut être effectuée que par le compte de gestion de l'organisation.
```bash
aws fms associate-admin-account --admin-account <value>
aws fms disassociate-admin-account
aws fms put-admin-account --admin-account <value>
```
**Impact potentiel :** Perte de gestion centralisée, contournement des politiques, violations de conformité et perturbation des contrôles de sécurité au sein de l'environnement.

### `fms:PutPolicy`, `fms:DeletePolicy`

Un attaquant disposant des autorisations **`fms:PutPolicy`**, **`fms:DeletePolicy`** serait en mesure de créer, modifier ou supprimer définitivement une politique AWS Firewall Manager.
```bash
aws fms put-policy --policy <value> | --cli-input-json file://<policy.json> [--tag-list <value>]
aws fms delete-policy --policy-id <value> [--delete-all-policy-resources | --no-delete-all-policy-resources]
```
Un exemple de politique permissive à travers un groupe de sécurité permissif, afin de contourner la détection, pourrait être le suivant :
```json
{
"Policy": {
"PolicyName": "permisive_policy",
"SecurityServicePolicyData": {
"Type": "SECURITY_GROUPS_COMMON",
"ManagedServiceData": "{\"type\":\"SECURITY_GROUPS_COMMON\",\"securityGroups\":[{\"id\":\"<permisive_security_group_id>\"}], \"applyToAllEC2InstanceENIs\":\"true\",\"IncludeSharedVPC\":\"true\"}"
},
"ResourceTypeList": [
"AWS::EC2::Instance",
"AWS::EC2::NetworkInterface",
"AWS::EC2::SecurityGroup",
"AWS::ElasticLoadBalancingV2::LoadBalancer",
"AWS::ElasticLoadBalancing::LoadBalancer"
],
"ResourceType": "AWS::EC2::SecurityGroup",
"ExcludeResourceTags": false,
"ResourceTags": [],
"RemediationEnabled": true
},
"TagList": []
}
```
**Impact potentiel :** Démantèlement des contrôles de sécurité, évasion des politiques, violations de conformité, perturbations opérationnelles et violations potentielles de données au sein de l'environnement.

### `fms:BatchAssociateResource`, `fms:BatchDisassociateResource`, `fms:PutResourceSet`, `fms:DeleteResourceSet`

Un attaquant disposant des permissions **`fms:BatchAssociateResource`** et **`fms:BatchDisassociateResource`** serait en mesure d'associer ou de dissocier des ressources d'un ensemble de ressources de Firewall Manager respectivement. De plus, les permissions **`fms:PutResourceSet`** et **`fms:DeleteResourceSet`** permettraient à un attaquant de créer, modifier ou supprimer ces ensembles de ressources depuis AWS Firewall Manager.
```bash
# Associate/Disassociate resources from a resource set
aws fms batch-associate-resource --resource-set-identifier <value> --items <value>
aws fms batch-disassociate-resource --resource-set-identifier <value> --items <value>

# Create, modify or delete a resource set
aws fms put-resource-set --resource-set <value> [--tag-list <value>]
aws fms delete-resource-set --identifier <value>
```
**Impact potentiel :** L'ajout d'un nombre inutile d'éléments à un ensemble de ressources augmentera le niveau de bruit dans le Service, pouvant potentiellement causer un DoS. De plus, des modifications des ensembles de ressources pourraient entraîner une disruption des ressources, une évasion de politique, des violations de conformité et une disruption des contrôles de sécurité au sein de l'environnement.

### `fms:PutAppsList`, `fms:DeleteAppsList`

Un attaquant avec les permissions **`fms:PutAppsList`** et **`fms:DeleteAppsList`** serait capable de créer, modifier ou supprimer des listes d'applications depuis AWS Firewall Manager. Cela pourrait être critique, car des applications non autorisées pourraient se voir accorder l'accès au grand public, ou l'accès à des applications autorisées pourrait être refusé, causant un DoS.
```bash
aws fms put-apps-list --apps-list <value> [--tag-list <value>]
aws fms delete-apps-list --list-id <value>
```
**Impact potentiel :** Cela pourrait entraîner des erreurs de configuration, une évasion de politique, des violations de conformité et une perturbation des contrôles de sécurité au sein de l'environnement.

### `fms:PutProtocolsList`, `fms:DeleteProtocolsList`

Un attaquant disposant des autorisations **`fms:PutProtocolsList`** et **`fms:DeleteProtocolsList`** serait en mesure de créer, modifier ou supprimer des listes de protocoles depuis AWS Firewall Manager. De la même manière que pour les listes d'applications, cela pourrait être critique puisque des protocoles non autorisés pourraient être utilisés par le grand public, ou l'utilisation de protocoles autorisés pourrait être refusée, entraînant un DoS.
```bash
aws fms put-protocols-list --apps-list <value> [--tag-list <value>]
aws fms delete-protocols-list --list-id <value>
```
**Impact potentiel :** Cela pourrait entraîner des erreurs de configuration, une évasion de politique, des violations de conformité et une perturbation des contrôles de sécurité au sein de l'environnement.

### `fms:PutNotificationChannel`, `fms:DeleteNotificationChannel`

Un attaquant disposant des autorisations **`fms:PutNotificationChannel`** et **`fms:DeleteNotificationChannel`** serait en mesure de supprimer et de désigner le rôle IAM et le sujet Amazon Simple Notification Service (SNS) que Firewall Manager utilise pour enregistrer les journaux SNS.

Pour utiliser **`fms:PutNotificationChannel`** en dehors de la console, vous devez configurer la politique d'accès du sujet SNS, permettant au **SnsRoleName** spécifié de publier des journaux SNS. Si le **SnsRoleName** fourni est un rôle autre que le **`AWSServiceRoleForFMS`**, il nécessite une relation de confiance configurée pour permettre au principal de service Firewall Manager **fms.amazonaws.com** d'assumer ce rôle.

Pour des informations sur la configuration d'une politique d'accès SNS :

{{#ref}}
../aws-sns-enum.md
{{#endref}}
```bash
aws fms put-notification-channel --sns-topic-arn <value> --sns-role-name <value>
aws fms delete-notification-channel
```
**Impact potentiel :** Cela pourrait potentiellement entraîner des alertes de sécurité manquées, un retard dans la réponse aux incidents, des violations de données potentielles et des perturbations opérationnelles au sein de l'environnement.

### `fms:AssociateThirdPartyFirewall`, `fms:DisssociateThirdPartyFirewall`

Un attaquant avec les permissions **`fms:AssociateThirdPartyFirewall`**, **`fms:DisssociateThirdPartyFirewall`** serait capable d'associer ou de dissocier des pare-feu tiers pour être gérés de manière centralisée via AWS Firewall Manager.

> [!WARNING]
> Seul l'administrateur par défaut peut créer et gérer des pare-feu tiers.
```bash
aws fms associate-third-party-firewall --third-party-firewall [PALO_ALTO_NETWORKS_CLOUD_NGFW | FORTIGATE_CLOUD_NATIVE_FIREWALL]
aws fms disassociate-third-party-firewall --third-party-firewall [PALO_ALTO_NETWORKS_CLOUD_NGFW | FORTIGATE_CLOUD_NATIVE_FIREWALL]
```
**Impact potentiel :** La désassociation entraînerait une évasion de politique, des violations de conformité et une perturbation des contrôles de sécurité au sein de l'environnement. L'association, en revanche, entraînerait une perturbation de l'allocation des coûts et du budget.

### `fms:TagResource`, `fms:UntagResource`

Un attaquant pourrait ajouter, modifier ou supprimer des balises des ressources de Firewall Manager, perturbant l'allocation des coûts de votre organisation, le suivi des ressources et les politiques de contrôle d'accès basées sur les balises.
```bash
aws fms tag-resource --resource-arn <value> --tag-list <value>
aws fms untag-resource --resource-arn <value> --tag-keys <value>
```
**Impact potentiel** : Perturbation de l'allocation des coûts, du suivi des ressources et des politiques de contrôle d'accès basées sur des balises.

## Références

- [https://docs.aws.amazon.com/govcloud-us/latest/UserGuide/govcloud-fms.html](https://docs.aws.amazon.com/govcloud-us/latest/UserGuide/govcloud-fms.html)
- [https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsfirewallmanager.html](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsfirewallmanager.html)
- [https://docs.aws.amazon.com/waf/latest/developerguide/fms-chapter.html](https://docs.aws.amazon.com/waf/latest/developerguide/fms-chapter.html)

{{#include ../../../../banners/hacktricks-training.md}}
