Saltar a contenido

Hoja de Referencia de Herramienta de Auditoría de Seguridad Azure Azucar

Descripción General

Azucar es una herramienta de auditoría de seguridad de código abierto para entornos Azure desarrollada por Juan Garrido. Recopila automáticamente una variedad de datos de configuración de Azure Active Directory, Azure SQL Databases, Storage Accounts, Key Vaults y otros servicios de Azure para ayudar a identificar posibles problemas de seguridad y configuraciones incorrectas.

⚠️ Advertencia: Esta herramienta está destinada únicamente a evaluaciones de seguridad autorizadas y auditorías. Asegúrese de tener la autorización adecuada antes de usar en cualquier entorno.

Instalación

# Install from PowerShell Gallery
Install-Module -Name Azucar

# Install for current user only
Install-Module -Name Azucar -Scope CurrentUser

# Update existing installation
Update-Module -Name Azucar

# Import module
Import-Module Azucar

Instalación Manual

# Download from GitHub
Invoke-WebRequest -Uri "https://github.com/nccgroup/azucar/archive/master.zip" -OutFile "Azucar.zip"
Expand-Archive -Path "Azucar.zip" -DestinationPath "C:\Tools\"

# Import module
Import-Module C:\Tools\Azucar-master\Azucar.psd1

# Install dependencies
Install-Module -Name Az
Install-Module -Name AzureAD

Instalación con Git

# Clone repository
git clone https://github.com/nccgroup/azucar.git
cd azucar

# Import in PowerShell
Import-Module .\Azucar.psd1

Uso Básico

Configuración del Módulo

# Import Azucar
Import-Module Azucar

# Get available commands
Get-Command -Module Azucar

# Get help for main function
Get-Help Invoke-Azucar -Full

# Check module version
Get-Module Azucar

Autenticación

# Interactive authentication
Connect-AzAccount

# Service principal authentication
$credential = Get-Credential
Connect-AzAccount -ServicePrincipal -Credential $credential -TenantId "tenant-id"

# Certificate authentication
Connect-AzAccount -ServicePrincipal -CertificateThumbprint "thumbprint" -ApplicationId "app-id" -TenantId "tenant-id"

Referencia de Comandos

Comandos Principales

Comando Descripción
Invoke-Azucar Función principal de auditoría
Get-AzucarReport Generar informe de auditoría
Export-AzucarData Exportar datos de auditoría
Set-AzucarConfig Configurar configuración de auditoría
### Opciones de Auditoría
Parámetro Descripción
----------- -------------
-TenantId ID de inquilino de Azure AD
-SubscriptionId ID de suscripción de Azure
-OutputPath Ruta del directorio de salida
-Format Formato de informe (HTML/JSON/CSV)
-Verbose Habilitar salida detallada
## Auditoría de Seguridad Completa

Auditoría Básica

# Run basic security audit
Invoke-Azucar

# Audit specific tenant
Invoke-Azucar -TenantId "tenant-id"

# Audit specific subscription
Invoke-Azucar -SubscriptionId "subscription-id"

# Audit with custom output path
Invoke-Azucar -OutputPath "C:\AzureAudit\"

Opciones de Auditoría Avanzada

# Comprehensive audit with all checks
Invoke-Azucar -All

# Audit specific services
Invoke-Azucar -Services @("AzureAD", "Storage", "KeyVault", "SQL")

# Audit with specific compliance framework
Invoke-Azucar -ComplianceFramework "CIS"

# Audit with custom configuration
Invoke-Azucar -ConfigFile "custom-config.json"

Auditoría Multi-Inquilino

# Audit multiple tenants
$tenants = @("tenant1-id", "tenant2-id", "tenant3-id")
foreach ($tenant in $tenants) \\\\{
    Invoke-Azucar -TenantId $tenant -OutputPath "C:\AzureAudit\$tenant\"
\\\\}

# Audit all accessible tenants
$allTenants = Get-AzTenant
foreach ($tenant in $allTenants) \\\\{
    Invoke-Azucar -TenantId $tenant.Id -OutputPath "C:\AzureAudit\$($tenant.Id)\"
\\\\}

Auditoría de Azure Active Directory

Análisis de Usuarios y Grupos

# Audit Azure AD users
Invoke-Azucar -Services @("AzureAD") -Focus "Users"

# Check for privileged users
Invoke-Azucar -Services @("AzureAD") -Focus "PrivilegedUsers"

# Audit group memberships
Invoke-Azucar -Services @("AzureAD") -Focus "Groups"

# Check guest user access
Invoke-Azucar -Services @("AzureAD") -Focus "GuestUsers"

Análisis de Aplicaciones y Entidades de Servicio

# Audit applications
Invoke-Azucar -Services @("AzureAD") -Focus "Applications"

# Check application permissions
Invoke-Azucar -Services @("AzureAD") -Focus "ApplicationPermissions"

# Audit service principals
Invoke-Azucar -Services @("AzureAD") -Focus "ServicePrincipals"

# Check for overprivileged applications
Invoke-Azucar -Services @("AzureAD") -Focus "HighPrivilegeApps"

Políticas de Acceso Condicional y Seguridad

# Audit Conditional Access policies
Invoke-Azucar -Services @("AzureAD") -Focus "ConditionalAccess"

# Check MFA configuration
Invoke-Azucar -Services @("AzureAD") -Focus "MFA"

# Audit password policies
Invoke-Azucar -Services @("AzureAD") -Focus "PasswordPolicies"

# Check security defaults
Invoke-Azucar -Services @("AzureAD") -Focus "SecurityDefaults"

Auditoría de Recursos de Azure

Seguridad de Storage Accounts

# Audit storage accounts
Invoke-Azucar -Services @("Storage")

# Check storage account access
Invoke-Azucar -Services @("Storage") -Focus "PublicAccess"

# Audit storage encryption
Invoke-Azucar -Services @("Storage") -Focus "Encryption"

# Check storage account keys
Invoke-Azucar -Services @("Storage") -Focus "AccessKeys"

Seguridad de Key Vault

# Audit Key Vaults
Invoke-Azucar -Services @("KeyVault")

# Check Key Vault access policies
Invoke-Azucar -Services @("KeyVault") -Focus "AccessPolicies"

# Audit Key Vault secrets
Invoke-Azucar -Services @("KeyVault") -Focus "Secrets"

# Check Key Vault network access
Invoke-Azucar -Services @("KeyVault") -Focus "NetworkAccess"

Seguridad de Bases de Datos SQL

# Audit SQL databases
Invoke-Azucar -Services @("SQL")

# Check SQL server firewall rules
Invoke-Azucar -Services @("SQL") -Focus "FirewallRules"

# Audit SQL database encryption
Invoke-Azucar -Services @("SQL") -Focus "Encryption"

# Check SQL auditing configuration
Invoke-Azucar -Services @("SQL") -Focus "Auditing"

Seguridad de Máquinas Virtuales

# Audit virtual machines
Invoke-Azucar -Services @("VirtualMachines")

# Check VM network security groups
Invoke-Azucar -Services @("VirtualMachines") -Focus "NetworkSecurity"

# Audit VM disk encryption
Invoke-Azucar -Services @("VirtualMachines") -Focus "DiskEncryption"

# Check VM backup configuration
Invoke-Azucar -Services @("VirtualMachines") -Focus "Backup"

Auditoría de Seguridad de Red

Grupos de Seguridad de Red

# Audit network security groups
Invoke-Azucar -Services @("Network") -Focus "SecurityGroups"

# Check for overly permissive rules
Invoke-Azucar -Services @("Network") -Focus "PermissiveRules"

# Audit inbound rules
Invoke-Azucar -Services @("Network") -Focus "InboundRules"

# Check for default rules
Invoke-Azucar -Services @("Network") -Focus "DefaultRules"

Configuración de Red Virtual```powershell

Audit virtual networks

Invoke-Azucar -Services @("Network") -Focus "VirtualNetworks"

Check subnet configuration

Invoke-Azucar -Services @("Network") -Focus "Subnets"

Audit network peering

Invoke-Azucar -Services @("Network") -Focus "Peering"

Check DNS configuration

Invoke-Azucar -Services @("Network") -Focus "DNS" ## Cumplimiento y Gobernanzapowershell

Run CIS Azure benchmark

Invoke-Azucar -ComplianceFramework "CIS"

Generate CIS compliance report

Invoke-Azucar -ComplianceFramework "CIS" -Format "HTML" -OutputPath "C:\CIS_Report\"

Check specific CIS controls

Invoke-Azucar -ComplianceFramework "CIS" -Controls @("1.1", "1.2", "2.1") ### Integración de Azure Security Centerpowershell

Audit Security Center configuration

Invoke-Azucar -Services @("SecurityCenter")

Check security policies

Invoke-Azucar -Services @("SecurityCenter") -Focus "Policies"

Audit security recommendations

Invoke-Azucar -Services @("SecurityCenter") -Focus "Recommendations"

Check security alerts

Invoke-Azucar -Services @("SecurityCenter") -Focus "Alerts" ### Gobernanza de Recursospowershell

Audit resource groups

Invoke-Azucar -Services @("ResourceManagement") -Focus "ResourceGroups"

Check resource tags

Invoke-Azucar -Services @("ResourceManagement") -Focus "Tags"

Audit resource locks

Invoke-Azucar -Services @("ResourceManagement") -Focus "Locks"

Check resource policies

Invoke-Azucar -Services @("ResourceManagement") -Focus "Policies" ## Generación y Análisis de Informespowershell

Generate HTML report

Invoke-Azucar -Format "HTML" -OutputPath "C:\AzureAudit\"

Generate detailed HTML report

Invoke-Azucar -Format "HTML" -Detailed -OutputPath "C:\AzureAudit\"

Generate executive summary

Invoke-Azucar -Format "HTML" -Summary -OutputPath "C:\AzureAudit\" ### Informes HTMLpowershell

Export to JSON

Invoke-Azucar -Format "JSON" -OutputPath "C:\AzureAudit\"

Export to CSV

Invoke-Azucar -Format "CSV" -OutputPath "C:\AzureAudit\"

Export raw data

Invoke-Azucar -Format "Raw" -OutputPath "C:\AzureAudit\" ### Exportación a JSON y CSVpowershell

Use custom report template

Invoke-Azucar -Template "custom-template.html" -OutputPath "C:\AzureAudit\"

Generate report with custom branding

Invoke-Azucar -Template "branded-template.html" -CompanyName "Your Company" -OutputPath "C:\AzureAudit\" ### Plantillas de Informes Personalizadosjson \\{ "AuditSettings": \\{ "IncludeServices": ["AzureAD", "Storage", "KeyVault", "SQL"], "ExcludeChecks": ["LowPriority"], "OutputFormat": "HTML", "DetailLevel": "High" \\}, "ComplianceFrameworks": \\{ "CIS": \\{ "Version": "1.3.0", "IncludeControls": ["1.", "2.", "3.*"] \\} \\}, "ReportSettings": \\{ "IncludeRecommendations": true, "IncludeEvidence": true, "GroupByService": true \\} \\} ## Configuración Avanzadapowershell

Set custom configuration

$config = @\\{ Services = @("AzureAD", "Storage", "KeyVault") OutputFormat = "HTML" DetailLevel = "High" IncludeRecommendations = $true \\}

Set-AzucarConfig -Configuration $config

Run audit with custom configuration

Invoke-Azucar -UseCustomConfig ### Archivo de Configuración Personalizadopowershell

Exclude specific resource groups

Invoke-Azucar -ExcludeResourceGroups @("test-rg", "dev-rg")

Include only specific subscriptions

Invoke-Azucar -IncludeSubscriptions @("sub1-id", "sub2-id")

Exclude low-priority findings

Invoke-Azucar -ExcludeSeverity @("Low", "Informational")

Filter by resource tags

Invoke-Azucar -FilterByTags @\\{Environment="Production"; Owner="Security"\\} ### Configuración de PowerShellpowershell

Automated Azure security audit script

param( [string]\(TenantId, [string]\)OutputPath = "C:\AzureAudit", [string]$EmailRecipients = "security@company.com" )

Create output directory with timestamp

$timestamp = Get-Date -Format "yyyyMMdd_HHmmss" $auditPath = Join-Path \(OutputPath "Audit_\)timestamp" New-Item -ItemType Directory -Path $auditPath -Force

Authenticate to Azure

Connect-AzAccount -TenantId $TenantId

Run comprehensive audit

Write-Host "Starting Azure security audit..." Invoke-Azucar -All -Format "HTML" -OutputPath $auditPath

Generate summary report

$reportPath = Join-Path $auditPath "AzureSecurityAudit.html" if (Test-Path $reportPath) \\{ Write-Host "Audit completed successfully"

# Send email notification
$subject = "Azure Security Audit Completed - $timestamp"
$body = "Azure security audit has been completed. Report available at: $reportPath"

Send-MailMessage -To $EmailRecipients -Subject $subject -Body $body -Attachments $reportPath

\\} else \\{ Write-Error "Audit failed - report not generated" \\} ### Filtrado y Exclusionespowershell

Create scheduled task for regular audits

$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File C:\Scripts\AzureAudit.ps1" $trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Monday -At 6AM $settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries

Register-ScheduledTask -TaskName "Azure Security Audit" -Action $action -Trigger $trigger -Settings $settings ## Automatización y Programaciónpowershell

Continuous monitoring script

param( [int]\(IntervalHours = 24, [string]\)LogPath = "C:\AzureAudit\monitoring.log" )

while ($true) \\{ \(timestamp = Get-Date Write-Output "[\)timestamp] Starting Azure security monitoring"|Tee-Object -FilePath $LogPath -Append

try \\\\{
    # Run quick security check
    $findings = Invoke-Azucar -Quick -Format "JSON"

    # Check for critical findings
    $criticalFindings = $findings|Where-Object \\\\{$_.Severity -eq "Critical"\\\\}

    if ($criticalFindings) \\\\{
        Write-Output "[$timestamp] Critical findings detected: $($criticalFindings.Count)"|Tee-Object -FilePath $LogPath -Append

        # Send alert
        $alertSubject = "ALERT: Critical Azure Security Findings"
        $alertBody = "Critical security findings detected in Azure environment. Immediate attention required."
        Send-MailMessage -To "security@company.com" -Subject $alertSubject -Body $alertBody
    \\\\}
\\\\}
catch \\\\{
    Write-Output "[$timestamp] Error during monitoring: $($_.Exception.Message)"|Tee-Object -FilePath $LogPath -Append
\\\\}

Start-Sleep -Seconds ($IntervalHours * 3600)

\\} ### Script de Auditoría Automatizadopowershell

Clear cached credentials

Clear-AzContext -Force

Test authentication

$context = Get-AzContext if (-not $context) \\{ Write-Error "Not authenticated to Azure" Connect-AzAccount \\}

Verify permissions

$currentUser = Get-AzADUser -UserPrincipalName (Get-AzContext).Account.Id Write-Output "Current user: \((\)currentUser.DisplayName)" ### Creación de Tareas Programadaspowershell

Check Azucar installation

Get-Module Azucar -ListAvailable

Update Azucar

Update-Module Azucar -Force

Reinstall if necessary

Uninstall-Module Azucar Install-Module Azucar -Force

Check dependencies

Get-Module Az -ListAvailable Get-Module AzureAD -ListAvailable ### Monitoreo Continuopowershell

Check required permissions

$requiredPermissions = @( "Directory.Read.All", "User.Read.All", "Application.Read.All", "Policy.Read.All" )

foreach ($permission in $requiredPermissions) \\{ try \\{ # Test permission by attempting to read data Write-Output "Testing permission: $permission" \\} catch \\{ Write-Warning "Missing permission: $permission" \\} \\} ## Resolución de Problemaspowershell

Run audit with reduced scope

Invoke-Azucar -Services @("AzureAD") -Quick

Use parallel processing

Invoke-Azucar -Parallel -MaxThreads 5

Exclude large datasets

Invoke-Azucar -ExcludeServices @("Logs", "Metrics") ### Problemas de Autenticaciónpowershell

Export findings to SIEM format

$findings = Invoke-Azucar -Format "JSON" $siemEvents = $findings|ForEach-Object \\{ @\\{ timestamp = Get-Date -Format "yyyy-MM-ddTHH🇲🇲ssZ" source = "Azucar" severity = $.Severity finding = $.Description resource = $_.ResourceId \\} \\}

Send to SIEM

$siemEvents|ConvertTo-Json|Out-File "siem_events.json" ### Problemas de Módulospowershell

Export data for PowerBI

$auditData = Invoke-Azucar -Format "CSV"

Create PowerBI dataset

$powerBIData = @\\{ findings = $auditData.Findings resources = $auditData.Resources compliance = $auditData.Compliance \\}

$powerBIData|ConvertTo-Json|Out-File "powerbi_data.json" ### Problemas de Permisosyaml

Azure DevOps pipeline for security auditing

trigger: schedules: - cron: "0 6 * * 1" displayName: Weekly security audit branches: include: - main

pool: vmImage: 'windows-latest'

steps: - task: AzurePowerShell@5 inputs: azureSubscription: 'Azure-Subscription' ScriptType: 'InlineScript' Inline:| Install-Module -Name Azucar -Force Import-Module Azucar Invoke-Azucar -All -Format "HTML" -OutputPath "$(Build.ArtifactStagingDirectory)" azurePowerShellVersion: 'LatestVersion'

Esta hoja de referencia proporciona una referencia completa para usar Azucar. Siempre asegúrese de tener la autorización adecuada antes de realizar evaluaciones de seguridad de Azure.