No intrincado mundo da TI, manter a integridade do sistema é de extrema importância. Um componente essencial do sistema operacional Windows é o arquivo BootConfig. O monitoramento das alterações nesse arquivo é fundamental para que os administradores de sistema e os profissionais de TI garantam a segurança e a estabilidade do sistema. Este guia se aprofunda em um script do PowerShell que verifica se há modificações no arquivo BootConfig, oferecendo uma abordagem proativa para o gerenciamento do sistema.
Histórico
O arquivo BootConfig no Windows é um elemento fundamental que contém dados de configuração de inicialização. Ele determina como o sistema é iniciado, quais versões do sistema operacional devem ser carregadas e outros parâmetros de inicialização. Devido à sua função no processo de inicialização, qualquer alteração não autorizada ou inesperada pode resultar em mau funcionamento ou vulnerabilidades do sistema. Isso o torna um alvo principal para agentes mal-intencionados ou malware. Para os profissionais de TI e os provedores de serviços gerenciados (MSPs), ter uma ferramenta que possa detectar essas alterações é inestimável. Ele ajuda no gerenciamento proativo do sistema e na análise forense em caso de violações de segurança.
O roteiro
#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 {}
Acesse esse script e centenas de outros no NinjaOne Dojo
Detalhamento
O script fornecido é um script do PowerShell meticulosamente criado para monitorar as modificações no arquivo BootConfig desde sua última execução. Aqui está uma análise passo a passo mais detalhada:
- Pré-requisitos: O script requer a versão 5.1 do PowerShell.
- Verificação da elevação: Antes de mergulhar em sua função principal, o script verifica se foi executado com privilégios de administrador, essenciais para acessar determinados arquivos e comandos do sistema.
- Hashing de BootConfig: Usando o comando bcdedit. exe /enum, o script obtém o conteúdo do BootConfig. Em seguida, ele cria um hash SHA256 desse conteúdo, que serve como um identificador exclusivo para esse conteúdo específico.
- Comparação de cache: Em seguida, o script procura um arquivo de cache salvo anteriormente. Se existir, o script comparará o conteúdo e o hash do BootConfig atual com a versão em cache.
- Saída: Se forem detectadas diferenças, o script fornecerá uma saída detalhada das alterações, especificando o que foi adicionado ou removido. Se for a primeira execução do script, ele salvará os dados atuais do BootConfig para comparações futuras.
Casos de uso em potencial
- Verificações de rotina do sistema: Os profissionais de TI, como Alex, podem implementar esse script em servidores corporativos para verificações de rotina, garantindo que nenhuma alteração não autorizada tenha ocorrido.
- Instalação pós-software: Após a instalação de novos softwares ou atualizações, o script pode ser executado para verificar se o arquivo BootConfig permanece inalterado, garantindo que o software não tenha adulterado os dados críticos de inicialização.
- Alterações na configuração do sistema: Antes e depois de fazer alterações significativas na configuração do sistema, o script pode ser usado para garantir que a integridade do arquivo BootConfig permaneça intacta.
Comparações
Embora existam ferramentas e softwares de terceiros que oferecem recursos de monitoramento do sistema, a vantagem desse script está em sua simplicidade e especificidade. Ele é leve, fácil de implantar e se concentra apenas no arquivo BootConfig, garantindo uma verificação direcionada e eficiente.
Implicações de segurança
A detecção de alterações no arquivo BootConfig não se refere apenas à estabilidade do sistema, mas também à segurança. Alterações não autorizadas podem indicar uma possível violação ou atividade de malware. Ao monitorar esse arquivo, os profissionais de TI podem adotar uma postura proativa contra possíveis ameaças.
Recomendações
- Sempre execute o script com privilégios de administrador para garantir resultados precisos.
- Programe o script para ser executado em intervalos regulares para monitoramento contínuo.
- Mantenha backups do arquivo BootConfig para restaurá-lo rapidamente em caso de alterações não autorizadas.
Considerações finais
No âmbito da segurança de TI e do gerenciamento de sistemas, ferramentas como o NinjaOne oferecem soluções abrangentes para vários desafios. O monitoramento de arquivos críticos do sistema, como o arquivo BootConfig no Windows, é uma prova da importância do gerenciamento proativo do sistema. Com scripts como o discutido, os profissionais de TI podem garantir a integridade do sistema, reforçar a segurança e manter a eficiência operacional.
Aqui estão alguns recursos adicionais que podem lhe ser úteis:
- O arquivo BootConfig no Windows: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/bcdedit
- Tutorial de scripts do PowerShell: https://docs.microsoft.com/en-us/powershell/scripting/