Come monitorare le modifiche al file BootConfig in Windows [PowerShell Script]

Nell’intricato mondo dell’IT, il mantenimento dell’integrità del sistema è di estrema importanza. Un componente vitale nel sistema operativo Windows è il file BootConfig. Monitorare le modifiche al file BootConfig è fondamentale per gli amministratori di sistema e i professionisti IT per garantire la sicurezza e la stabilità del sistema. Questa guida analizza uno script PowerShell che verifica la presenza di modifiche nel file BootConfig, offrendo un approccio proattivo alla gestione del sistema.

Background

Il file BootConfig di Windows è un elemento essenziale che contiene i dati di configurazione di avvio. Stabilisce come avviare il sistema, quali versioni del sistema operativo caricare e altri parametri di avvio. Considerando il suo ruolo nel processo di avvio, qualsiasi modifica non autorizzata o inaspettata può portare a malfunzionamenti o vulnerabilità del sistema. Questo lo rende un obiettivo primario per i malintenzionati o per malware. Per i professionisti IT e i Managed Service Provider (MSP), disporre di uno strumento in grado di rilevare questi cambiamenti è inestimabile. Aiuta nella gestione proattiva del sistema e nell’analisi forense in caso di violazioni della sicurezza.

Lo script per monitorare le modifiche al file BootConfig

#Requires -Version 5.1

<#
.SYNOPSIS
    Checks if the BootConfig file was modified from last run.
.DESCRIPTION
    Checks if the BootConfig file was modified from last run.
    On first run this will not produce an error, but will create a cache file for later comparison.
.EXAMPLE
    No parameters needed.
.OUTPUTS
    None
.NOTES
    Minimum OS Architecture Supported: Windows 10, Windows Server 2016
    Release Notes:
    Initial Release
By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use.
    Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. 
    Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. 
    Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. 
    Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. 
    Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. 
    Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. 
    EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).
#>

[CmdletBinding()]
param (
    # Path and file where the cache file will be saved for comparison
    [string]
    $CachePath = "C:ProgramDataNinjaRMMAgentscriptingTest-BootConfig.clixml"
)

begin {
    function Test-IsElevated {
        $id = [System.Security.Principal.WindowsIdentity]::GetCurrent()
        $p = New-Object System.Security.Principal.WindowsPrincipal($id)
        $p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)
    }
}
process {
    if (-not (Test-IsElevated)) {
        Write-Error -Message "Access Denied. Please run with Administrator privileges."
        exit 1
    }

    # Get content and create hash of BootConfig file
    $BootConfigContent = bcdedit.exe /enum
    $Stream = [IO.MemoryStream]::new([byte[]][char[]]"$BootConfigContent")
    $BootConfigHash = Get-FileHash -InputStream $Stream -Algorithm SHA256

    $Current = [PSCustomObject]@{
        Content = $BootConfigContent
        Hash    = $BootConfigHash
    }

    # Check if this is first run or not
    if ($(Test-Path -Path $CachePath)) {
        # Compare last content and hash
        $Cache = Import-Clixml -Path $CachePath
        $ContentDifference = Compare-Object -ReferenceObject $Cache.Content -DifferenceObject $Current.Content -CaseSensitive
        $HashDifference = $Cache.Hash -like $Current.Hash
        $Current | Export-Clixml -Path $CachePath -Force -Confirm:$false
        if (-not $HashDifference) {
            Write-Host "BootConfig file has changed since last run!"
            Write-Host ""
            $ContentDifference | ForEach-Object {
                if ($_.SideIndicator -like '=>') {
                    Write-Host "Added: $($_.InputObject)"
                }
                elseif ($_.SideIndicator -like '<=') {
                    Write-Host "Removed: $($_.InputObject)"
                }
            }
            exit 1
        }
    }
    else {
        Write-Host "First run, saving comparison cache file."
        $Current | Export-Clixml -Path $CachePath -Force -Confirm:$false
    }
    exit 0
}
end {}

 

Accedi a centinaia di script nel Dojo di NinjaOne

Ottieni l’accesso

Analisi dettagliata

Lo script fornito è uno script PowerShell meticolosamente realizzato per monitorare le modifiche apportate al file BootConfig dalla sua ultima esecuzione. Ecco una descrizione dettagliata passo dopo passo:

  1. Prerequisiti: Lo script per monitorare le modifiche al file BootConfig richiede la versione 5.1 di PowerShell. 
  2. Controllo dell’elevazione dei permessi: Prima di passare alla sua funzione principale, lo script per monitorare le modifiche al file BootConfig controlla se è stato eseguito con i privilegi di amministratore, essenziali per accedere ad alcuni file e comandi di sistema. 
  3. Hashing di BootConfig: Utilizzando il comando bcdedit.exe /enum, lo script recupera il contenuto di BootConfig. Quindi crea uno hash SHA256 di questo contenuto, che serve come identificatore unico per quel contenuto specifico. 
  4. Confronto tra cache: Lo script per monitorare le modifiche al file BootConfig cerca quindi un file di cache precedentemente salvato. Se esiste, lo script confronta il contenuto e l’hash di BootConfig corrente con la versione memorizzata nella cache. 
  5. Output: Se vengono rilevate differenze, lo script per monitorare le modifiche al file BootConfig fornisce un output dettagliato delle modifiche, specificando cosa è stato aggiunto o rimosso. Se è la prima esecuzione dello script, salva i dati di BootConfig correnti per i confronti futuri.

Casi d’uso potenziali

  • Controlli di routine del sistema: I professionisti dell’IT come Alex possono distribuire lo scriptper monitorare le modifiche al file BootConfig sui server aziendali per i controlli di routine, assicurando che non siano state apportate modifiche non autorizzate.
  • Installazione post-software: Dopo l’installazione di un nuovo software o di aggiornamenti, lo script può essere eseguito per verificare che il file BootConfig rimanga invariato, assicurando che il software non abbia manomesso i dati di avvio importanti.
  • Modifiche alla configurazione del sistema: Prima e dopo aver apportato modifiche significative alla configurazione del sistema, lo script può essere utilizzato per garantire l’integrità del file BootConfig.

Confronti

Sebbene esistano strumenti e software di terze parti che offrono funzionalità di monitoraggio del sistema, il vantaggio dello script per monitorare le modifiche al file BootConfig risiede nella sua semplicità e specificità. È leggero, facile da distribuire e si concentra esclusivamente sul file BootConfig, garantendo un controllo mirato ed efficiente.

Domande frequenti 

  • D: Questo script può essere eseguito su versioni precedenti di Windows?
    R: Lo script supporta Windows 10 e Windows Server 2016 e versioni successive. 
  • D: Cosa succede se il file BootConfig è invariato?
    R: Lo script esce semplicemente senza avvisi, indicando che non ci sono state modifiche dall’ultima esecuzione.

Implicazioni per la sicurezza

Il rilevamento delle modifiche nel file BootConfig non riguarda solo la stabilità del sistema, ma anche la sicurezza. Le modifiche non autorizzate potrebbero indicare una potenziale violazione o un’attività di malware. Monitorando questo file, i professionisti IT possono adottare una posizione proattiva contro le potenziali minacce.

Raccomandazioni 

  • Esegui sempre lo script per monitorare le modifiche al file BootConfig con i privilegi di amministratore per garantire risultati accurati. 
  • Pianifica l’esecuzione dello script a intervalli regolari per un monitoraggio continuo. 
  • Mantieni backup del file BootConfig per ripristinarlo rapidamente in caso di modifiche non autorizzate.

Considerazioni finali

Nel campo della sicurezza IT e della gestione dei sistemi, strumenti come NinjaOne offrono soluzioni complete per diverse sfide. Il monitoraggio dei file di sistema critici, come il file BootConfig di Windows, è una prova dell’importanza della gestione proattiva del sistema. Con script come quello per monitorare le modifiche al file BootConfig, i professionisti IT possono garantire l’integrità del sistema, rafforzare la sicurezza e mantenere l’efficienza operativa.

Ecco alcune risorse aggiuntive che potrebbero esserti utili: 

Passi successivi

La creazione di un team IT efficiente ed efficace richiede una soluzione centralizzata che funga da principale strumento per la fornitura di servizi. NinjaOne consente ai team IT di monitorare, gestire, proteggere e supportare tutti i dispositivi, ovunque essi si trovino, senza la necessità di una complessa infrastruttura locale.

Per saperne di più su NinjaOne Endpoint Management, fai un tour dal vivo, o inizia la tua prova gratuita della piattaforma NinjaOne.

Ti potrebbe interessare anche

Guarda una demo×
×

Guarda NinjaOne in azione!

Inviando questo modulo, accetto La politica sulla privacy di NinjaOne.

Termini e condizioni NinjaOne

Cliccando sul pulsante “Accetto” qui sotto, dichiari di accettare i seguenti termini legali e le nostre condizioni d’uso:

  • Diritti di proprietà: NinjaOne possiede e continuerà a possedere tutti i diritti, i titoli e gli interessi relativi allo script (compreso il copyright). NinjaOne ti concede una licenza limitata per l’utilizzo dello script in conformità con i presenti termini legali.
  • Limitazione d’uso: Puoi utilizzare lo script solo per legittimi scopi personali o aziendali interni e non puoi condividere lo script con altri soggetti.
  • Divieto di ripubblicazione: In nessun caso ti è consentito ripubblicare lo script in una libreria di script appartenente o sotto il controllo di un altro fornitore di software.
  • Esclusione di garanzia: Lo script viene fornito “così com’è” e “come disponibile”, senza garanzie di alcun tipo. NinjaOne non promette né garantisce che lo script sia privo di difetti o che soddisfi le tue esigenze o aspettative specifiche.
  • Assunzione del rischio: L’uso che farai dello script è da intendersi a tuo rischio. Riconosci che l’utilizzo dello script comporta alcuni rischi intrinseci, che comprendi e sei pronto ad assumerti.
  • Rinuncia e liberatoria: Non riterrai NinjaOne responsabile di eventuali conseguenze negative o indesiderate derivanti dall’uso dello script e rinuncerai a qualsiasi diritto legale o di equità e a qualsiasi rivalsa nei confronti di NinjaOne in relazione all’uso dello script.
  • EULA: Se sei un cliente NinjaOne, l’uso dello script è soggetto al Contratto di licenza con l’utente finale (EULA) applicabile.