{"id":208620,"date":"2024-01-30T16:37:51","date_gmt":"2024-01-30T16:37:51","guid":{"rendered":"https:\/\/www.ninjaone.com\/script-hub\/monitorizar-cambios-en-archivo-bootconfig\/"},"modified":"2024-03-04T18:35:01","modified_gmt":"2024-03-04T18:35:01","slug":"monitorizar-cambios-en-archivo-bootconfig","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/es\/script-hub\/monitorizar-cambios-en-archivo-bootconfig\/","title":{"rendered":"C\u00f3mo monitorizar los cambios en el archivo BootConfig en Windows [PowerShell Script]"},"content":{"rendered":"<p>En el intrincado mundo de las TI, mantener la integridad del sistema es de suma importancia. Un componente fundamental del sistema operativo Windows es el archivo BootConfig. Monitorizar los cambios en este archivo es crucial para que los administradores de sistemas y los profesionales de TI garanticen la seguridad y estabilidad del sistema. Esta gu\u00eda profundiza en un <strong>script de PowerShell que comprueba si se han producido modificaciones en el archivo BootConfig<\/strong>, ofreciendo un enfoque proactivo para la gesti\u00f3n del sistema.<\/p>\n<h2>Antecedentes<\/h2>\n<p>El archivo BootConfig en Windows es un elemento fundacional que contiene datos de configuraci\u00f3n de arranque y dicta c\u00f3mo se inicia el sistema, qu\u00e9 versiones del SO cargar y otros par\u00e1metros de arranque. Dado su papel en el proceso de arranque, cualquier cambio no autorizado o inesperado puede provocar fallos o vulnerabilidades en el sistema, lo que lo convierte en un objetivo privilegiado para los actores maliciosos o el malware. Para los profesionales de TI y los proveedores de servicios gestionados (MSP), disponer de una herramienta capaz de detectar estos cambios tiene un valor incalculable, ayudando a la gesti\u00f3n proactiva del sistema y al an\u00e1lisis forense en caso de brechas de seguridad.<\/p>\n<h2>El script para monitorizar los cambios en el archivo BootConfig<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"powershell\">#Requires -Version 5.1\r\n\r\n&lt;#\r\n.SYNOPSIS\r\n    Checks if the BootConfig file was modified from last run.\r\n.DESCRIPTION\r\n    Checks if the BootConfig file was modified from last run.\r\n    On first run this will not produce an error, but will create a cache file for later comparison.\r\n.EXAMPLE\r\n    No parameters needed.\r\n.OUTPUTS\r\n    None\r\n.NOTES\r\n    Minimum OS Architecture Supported: Windows 10, Windows Server 2016\r\n    Release Notes:\r\n    Initial Release\r\nBy 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.\r\n    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. \r\n    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. \r\n    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. \r\n    Warranty Disclaimer: The script is provided \u201cas is\u201d and \u201cas available\u201d, 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. \r\n    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. \r\n    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. \r\n    EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).\r\n#&gt;\r\n\r\n[CmdletBinding()]\r\nparam (\r\n    # Path and file where the cache file will be saved for comparison\r\n    [string]\r\n    $CachePath = \"C:ProgramDataNinjaRMMAgentscriptingTest-BootConfig.clixml\"\r\n)\r\n\r\nbegin {\r\n    function Test-IsElevated {\r\n        $id = [System.Security.Principal.WindowsIdentity]::GetCurrent()\r\n        $p = New-Object System.Security.Principal.WindowsPrincipal($id)\r\n        $p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)\r\n    }\r\n}\r\nprocess {\r\n    if (-not (Test-IsElevated)) {\r\n        Write-Error -Message \"Access Denied. Please run with Administrator privileges.\"\r\n        exit 1\r\n    }\r\n\r\n    # Get content and create hash of BootConfig file\r\n    $BootConfigContent = bcdedit.exe \/enum\r\n    $Stream = [IO.MemoryStream]::new([byte[]][char[]]\"$BootConfigContent\")\r\n    $BootConfigHash = Get-FileHash -InputStream $Stream -Algorithm SHA256\r\n\r\n    $Current = [PSCustomObject]@{\r\n        Content = $BootConfigContent\r\n        Hash    = $BootConfigHash\r\n    }\r\n\r\n    # Check if this is first run or not\r\n    if ($(Test-Path -Path $CachePath)) {\r\n        # Compare last content and hash\r\n        $Cache = Import-Clixml -Path $CachePath\r\n        $ContentDifference = Compare-Object -ReferenceObject $Cache.Content -DifferenceObject $Current.Content -CaseSensitive\r\n        $HashDifference = $Cache.Hash -like $Current.Hash\r\n        $Current | Export-Clixml -Path $CachePath -Force -Confirm:$false\r\n        if (-not $HashDifference) {\r\n            Write-Host \"BootConfig file has changed since last run!\"\r\n            Write-Host \"\"\r\n            $ContentDifference | ForEach-Object {\r\n                if ($_.SideIndicator -like '=&gt;') {\r\n                    Write-Host \"Added: $($_.InputObject)\"\r\n                }\r\n                elseif ($_.SideIndicator -like '&lt;=') {\r\n                    Write-Host \"Removed: $($_.InputObject)\"\r\n                }\r\n            }\r\n            exit 1\r\n        }\r\n    }\r\n    else {\r\n        Write-Host \"First run, saving comparison cache file.\"\r\n        $Current | Export-Clixml -Path $CachePath -Force -Confirm:$false\r\n    }\r\n    exit 0\r\n}\r\nend {}<\/pre>\n<p>&nbsp;<\/p>\n\n<div class=\"in-context-cta\"><p>Accede a este script y a cientos m\u00e1s en el Dojo de NinjaOne<\/p>\n<p><a href=\"https:\/\/www.ninjaone.com\/es\/prueba-gratuita-formulario\/\">Obt\u00e9n acceso<\/a><\/p>\n<\/div>\n<h2>Desglose detallado<\/h2>\n<p>El script proporcionado es un script PowerShell meticulosamente dise\u00f1ado para supervisar las modificaciones en el archivo BootConfig desde su \u00faltima ejecuci\u00f3n. Aqu\u00ed tienes un desglose paso a paso m\u00e1s detallado:<\/p>\n<ol>\n<li><strong>Requisitos previos:<\/strong> el script requiere PowerShell versi\u00f3n 5.1.<\/li>\n<li><strong>Control de la elevaci\u00f3n de los permisos<\/strong>: antes de iniciar su funci\u00f3n principal, el script comprueba si se ejecuta con privilegios de administrador, esenciales para acceder a determinados archivos y comandos del sistema.<\/li>\n<li><strong>Hashing de BootConfig:<\/strong> usando el comando <a href=\"https:\/\/www.ninjaone.com\/blog\/what-bcdedit-does-and-how-to-use-it\/\">bcdedit<\/a>.exe \/enum, el script obtiene el contenido de BootConfig. Seguidamente, crea un hash SHA256 de este contenido, que sirve como identificador \u00fanico para ese contenido espec\u00edfico.<\/li>\n<li><strong>Comparaci\u00f3n de cach\u00e9s:<\/strong> a continuaci\u00f3n, el script busca un archivo de cach\u00e9 previamente guardado. Si existe, el script compara el contenido y hash actual de BootConfig con la versi\u00f3n en cach\u00e9.<\/li>\n<li><strong>Salida:<\/strong> si se detectan diferencias, el script proporciona una salida detallada de los cambios, especificando lo que se ha a\u00f1adido o eliminado. Si es la primera vez que se ejecuta el script, guarda los datos actuales de BootConfig para futuras comparaciones.<\/li>\n<\/ol>\n<h2>Posibles casos de uso<\/h2>\n<ul>\n<li><strong>Comprobaciones rutinarias del sistema:<\/strong> los profesionales de TI como Alex pueden desplegar este script en los servidores de la empresa para realizar comprobaciones rutinarias y asegurarse de que no se han producido cambios no autorizados.<\/li>\n<li><strong>Instalaci\u00f3n post-software:<\/strong> despu\u00e9s de instalar software nuevo o actualizaciones, se puede ejecutar el script para verificar que el archivo BootConfig permanece inalterado, lo que garantiza que el software no ha alterado los datos cr\u00edticos de arranque.<\/li>\n<li><strong>Cambios en la configuraci\u00f3n del sistema:<\/strong> antes y despu\u00e9s de realizar cambios significativos en la configuraci\u00f3n del sistema, el script puede utilizarse para garantizar que la integridad del archivo BootConfig permanece intacta.<\/li>\n<\/ul>\n<h2>Comparaciones<\/h2>\n<p>Aunque existen herramientas y software de terceros que ofrecen funciones de monitorizaci\u00f3n del sistema, la ventaja de este script reside en su sencillez y especificidad. Es ligero, f\u00e1cil de desplegar y se centra \u00fanicamente en el archivo BootConfig, lo que garantiza una comprobaci\u00f3n espec\u00edfica y eficaz.<\/p>\n<h2><strong>Preguntas frecuentes<\/strong><\/h2>\n<ul>\n<li><strong>P:<\/strong> \u00bfEste script puede ejecutarse en versiones anteriores de Windows?<br \/>\nR: El script es compatible con Windows 10, Windows Server 2016 y versiones m\u00e1s recientes.<\/li>\n<li><strong>P:<\/strong> \u00bfQu\u00e9 ocurre si el archivo BootConfig no se modifica?<br \/>\nR: El script simplemente sale sin ninguna alerta, indicando que no ha habido cambios desde la \u00faltima ejecuci\u00f3n.<\/li>\n<\/ul>\n<h2>Implicaciones para la seguridad<\/h2>\n<p>Detectar cambios en el archivo BootConfig no s\u00f3lo tiene que ver con la estabilidad del sistema, sino tambi\u00e9n con la seguridad. Los cambios no autorizados podr\u00edan indicar una posible infracci\u00f3n o actividad de malware. Al monitorizar este archivo, los profesionales de TI pueden adoptar una actitud proactiva frente a posibles amenazas.<\/p>\n<h2>Recomendaciones<\/h2>\n<ul>\n<li>Aseg\u00farate de ejecutar el script con privilegios de administrador para garantizar resultados precisos.<\/li>\n<li>Programa la ejecuci\u00f3n del script a intervalos regulares para una supervisi\u00f3n continua.<\/li>\n<li>Guarda copias de seguridad del archivo BootConfig para restaurarlo r\u00e1pidamente en caso de cambios no autorizados.<\/li>\n<\/ul>\n<h2>Reflexiones finales<\/h2>\n<p>En el \u00e1mbito de la seguridad inform\u00e1tica y la gesti\u00f3n de sistemas, herramientas como NinjaOne ofrecen soluciones completas para diversos retos. La supervisi\u00f3n de archivos cr\u00edticos del sistema, como el archivo BootConfig de Windows, es una prueba de la importancia de la gesti\u00f3n proactiva del sistema. Con scripts como el que acabamos de ver, los profesionales de TI pueden garantizar la integridad del sistema, reforzar la seguridad y mantener la eficacia operativa.<\/p>\n<p>He aqu\u00ed algunos recursos adicionales que pueden resultarte \u00fatiles:<\/p>\n<ul>\n<li>El archivo BootConfig en Windows: <a href=\"https:\/\/docs.microsoft.com\/en-us\/windows-server\/administration\/windows-commands\/bcdedit\" target=\"_blank\" rel=\"noopener\">https:\/\/learn.microsoft.com\/es-es\/windows-server\/administration\/windows-commands\/bcdedit<\/a><\/li>\n<li>Tutorial sobre los scripts de PowerShell: <a href=\"https:\/\/docs.microsoft.com\/en-us\/powershell\/scripting\/\" target=\"_blank\" rel=\"noopener\">https:\/\/learn.microsoft.com\/es-es\/powershell\/scripting\/overview?view=powershell-7.4<\/a><\/li>\n<\/ul>\n","protected":false},"author":35,"featured_media":207064,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_relevanssi_hide_post":"","_relevanssi_hide_content":"","_relevanssi_pin_for_all":"","_relevanssi_pin_keywords":"","_relevanssi_unpin_keywords":"","_relevanssi_related_keywords":"","_relevanssi_related_include_ids":"","_relevanssi_related_exclude_ids":"","_relevanssi_related_no_append":"","_relevanssi_related_not_related":"","_relevanssi_related_posts":"","_relevanssi_noindex_reason":"","_lmt_disableupdate":"no","_lmt_disable":""},"operating_system":[4212],"use_cases":[4259],"class_list":["post-208620","script_hub","type-script_hub","status-publish","has-post-thumbnail","hentry","script_hub_category-windows","use_cases-configuracion-general"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/script_hub\/208620","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/script_hub"}],"about":[{"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/types\/script_hub"}],"author":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/comments?post=208620"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/media\/207064"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/media?parent=208620"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/operating_system?post=208620"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/es\/wp-json\/wp\/v2\/use_cases?post=208620"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}