{"id":208369,"date":"2024-01-03T10:05:18","date_gmt":"2024-01-03T10:05:18","guid":{"rendered":"https:\/\/www.ninjaone.com\/script-hub\/comment-savoir-si-un-fichier-hosts-a-ete-modifie-powershell\/"},"modified":"2024-03-26T16:18:08","modified_gmt":"2024-03-26T16:18:08","slug":"comment-savoir-si-un-fichier-hosts-a-ete-modifie-powershell","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/fr\/script-hub\/comment-savoir-si-un-fichier-hosts-a-ete-modifie-powershell\/","title":{"rendered":"Comment savoir si un fichier Hosts a \u00e9t\u00e9 modifi\u00e9 \u00e0 l&rsquo;aide de PowerShell ?"},"content":{"rendered":"<p>Dans le vaste domaine de l&rsquo;informatique, le fichier hosts est une sentinelle silencieuse qui assure la fluidit\u00e9 des communications r\u00e9seau. Pour ceux qui ne le connaissent pas, le <a href=\"https:\/\/www.ninjaone.com\/blog\/what-is-a-hosts-file\/\">fichier hosts<\/a> est un fichier texte qui associe des noms d&rsquo;h\u00f4tes \u00e0 des adresses IP. Il est utilis\u00e9 par le syst\u00e8me d&rsquo;exploitation pour r\u00e9soudre les noms d&rsquo;h\u00f4tes en adresses IP lorsqu&rsquo;un ordinateur tente de se connecter \u00e0 une ressource du r\u00e9seau. Mais que se passe-t-il lorsque le <strong>fichier hosts est alt\u00e9r\u00e9 ou modifi\u00e9<\/strong>? Comment les professionnels de l&rsquo;informatique et les fournisseurs de services g\u00e9r\u00e9s (MSP) peuvent-ils garantir l&rsquo;int\u00e9grit\u00e9 de ce fichier crucial ? C&rsquo;est l\u00e0 qu&rsquo;intervient le sc\u00e9nario que nous nous appr\u00eatons \u00e0 examiner.<\/p>\n<h2>Comprendre le fichier Hosts<\/h2>\n<p>Le fichier hosts est, par essence, le carnet d&rsquo;adresses du syst\u00e8me informatique. Il joue un r\u00f4le essentiel dans l&rsquo;orientation du trafic sur le r\u00e9seau, en veillant \u00e0 ce que les utilisateurs acc\u00e8dent aux sites web et aux services appropri\u00e9s. Toutefois, son importance en fait \u00e9galement une cible privil\u00e9gi\u00e9e pour les personnes malveillantes.<\/p>\n<h2>Les risques potentiels de modifications non autoris\u00e9es<\/h2>\n<p>Un pirate, avec des intentions malveillantes, pourrait modifier le fichier hosts pour rediriger le trafic vers un site web ou un serveur malveillant. De telles alt\u00e9rations peuvent avoir des cons\u00e9quences d\u00e9sastreuses :<\/p>\n<ul>\n<li><strong>Vol d&rsquo;informations personnelles<\/strong>: En redirigeant les utilisateurs vers des sites contrefaits, les attaquants peuvent leur soutirer des informations personnelles, ce qui peut conduire \u00e0 un vol d&rsquo;identit\u00e9.<\/li>\n<li><strong>Installation de logiciels malveillants<\/strong>: Les utilisateurs peuvent \u00eatre amen\u00e9s \u00e0 t\u00e9l\u00e9charger des logiciels malveillants en pensant qu&rsquo;ils se trouvent sur un site l\u00e9gitime.<\/li>\n<li><strong>Perturbation des communications du r\u00e9seau<\/strong>: Des services essentiels peuvent \u00eatre bloqu\u00e9s, entra\u00eenant des perturbations op\u00e9rationnelles.<\/li>\n<\/ul>\n<p>Compte tenu de ces risques, il est primordial que les professionnels de l&rsquo;informatique et les MSP disposent d&rsquo;outils capables de d\u00e9tecter rapidement toute modification non autoris\u00e9e. C&rsquo;est l\u00e0 que notre script entre en jeu.<\/p>\n<h2>Le script<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">#Requires -Version 5.1\r\n\r\n&lt;#\r\n.SYNOPSIS\r\n    Checks if the hosts file was modified from last run.\r\n.DESCRIPTION\r\n    Checks if the hosts 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 of the hosts file\r\n    [string]\r\n    $HostsPath = \"C:WindowsSystem32driversetchosts\",\r\n    # Path and file where the cache file will be saved for comparison\r\n    [string]\r\n    $CachePath = \"C:ProgramDataNinjaRMMAgentscriptingTest-HostsFile.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    # Check if hosts file exists\r\n    if ($(Test-Path -Path $HostsPath)) {\r\n        # Get content and create hash of hosts file\r\n        $HostsContent = Get-Content -Path $HostsPath\r\n        $HostsHash = Get-FileHash -Path $HostsPath -Algorithm SHA256\r\n\r\n        $Current = [PSCustomObject]@{\r\n            Content = $HostsContent\r\n            Hash    = $HostsHash\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 \"Hosts 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    }\r\n    else {\r\n        Write-Error \"Hosts file is missing!\"\r\n        exit 1\r\n    }\r\n    exit 0\r\n}\r\nend {}<\/pre>\n<p>&nbsp;<\/p>\n\n<div class=\"in-context-cta\"><p>Acc\u00e9dez \u00e0 plus de 700\u00a0scripts dans le Dojo NinjaOne<\/p>\n<p><a href=\"https:\/\/www.ninjaone.com\/fr\/phase-de-test-gratuit\/\">Obtenir l&rsquo;acc\u00e8s<\/a><\/p>\n<\/div>\n<h2>Exploration approfondie du script<\/h2>\n<p>Le script PowerShell fourni est con\u00e7u pour v\u00e9rifier si le fichier hosts a \u00e9t\u00e9 modifi\u00e9 depuis sa derni\u00e8re ex\u00e9cution. Voici un aper\u00e7u de ses fonctionnalit\u00e9s :<\/p>\n<ol>\n<li><strong>V\u00e9rification de l&rsquo;\u00e9l\u00e9vation<\/strong>\u00a0: Le script v\u00e9rifie d&rsquo;abord s&rsquo;il est ex\u00e9cut\u00e9 avec des privil\u00e8ges d&rsquo;administrateur. Cette \u00e9tape est cruciale, car toute tentative de lecture ou de modification des fichiers syst\u00e8me n\u00e9cessite des autorisations \u00e9lev\u00e9es.<\/li>\n<li><strong>V\u00e9rification du fichier des h\u00f4tes<\/strong>: Il v\u00e9rifie ensuite l&rsquo;existence du fichier hosts. Si le fichier est manquant, le script signale une erreur.<\/li>\n<li><strong>Comparaison des hachages<\/strong>: Le script calcule un hachage (SHA256) du fichier hosts actuel et le compare \u00e0 une version mise en cache lors de la derni\u00e8re ex\u00e9cution. En cas de non-concordance, cela indique que le fichier a \u00e9t\u00e9 modifi\u00e9.<\/li>\n<li><strong>Comparaison des contenus<\/strong>: Au-del\u00e0 de la simple v\u00e9rification du hachage, le script compare \u00e9galement le contenu ligne par ligne, en mettant en \u00e9vidence tout ajout ou suppression.<\/li>\n<\/ol>\n<h2>Avantages pour les professionnels de l&rsquo;informatique et les entreprises MSP<\/h2>\n<ul>\n<li><strong>Surveillance proactive<\/strong>: Ce script offre une approche proactive de la surveillance du fichier hosts, garantissant son int\u00e9grit\u00e9 et alertant les administrateurs de toute modification non autoris\u00e9e.<\/li>\n<li><strong>Aper\u00e7u d\u00e9taill\u00e9<\/strong>: En comparant les diff\u00e9rences de contenu, les \u00e9quipes informatiques peuvent rapidement identifier ce qui a \u00e9t\u00e9 ajout\u00e9 ou supprim\u00e9, ce qui permet de rem\u00e9dier rapidement \u00e0 la situation.<\/li>\n<li><strong>Pr\u00eat pour l&rsquo;automatisation<\/strong>: De par sa conception, le script peut \u00eatre int\u00e9gr\u00e9 dans des flux de travail automatis\u00e9s, ce qui permet d&rsquo;effectuer des contr\u00f4les r\u00e9guliers sans intervention manuelle.<\/li>\n<\/ul>\n<h2>La puissance de NinjaOne<\/h2>\n<p>NinjaOne est plus qu&rsquo;une simple solution de gestion informatique. Il s&rsquo;agit d&rsquo;une plateforme compl\u00e8te qui permet aux professionnels de l&rsquo;informatique et aux fournisseurs de services g\u00e9r\u00e9s (MSP) d&rsquo;avoir une longueur d&rsquo;avance sur les menaces potentielles. En int\u00e9grant notre script de v\u00e9rification du fichier hosts dans NinjaOne :<\/p>\n<ul>\n<li><strong>Alertes centralis\u00e9es<\/strong>: Recevez des alertes directement sur le tableau de bord de NinjaOne chaque fois que le fichier hosts est modifi\u00e9. Cette notification imm\u00e9diate vous permet d&rsquo;agir rapidement et de prot\u00e9ger vos syst\u00e8mes contre les attaques potentielles.<\/li>\n<li><strong>Contr\u00f4les programm\u00e9s<\/strong>: Automatiser l&rsquo;ex\u00e9cution du script \u00e0 des intervalles d\u00e9termin\u00e9s, afin d&rsquo;assurer une surveillance continue.<\/li>\n<li><strong>Rapport d\u00e9taill\u00e9<\/strong>: Combinez les informations tir\u00e9es du script avec les capacit\u00e9s de reporting de NinjaOne pour obtenir une vue globale de votre environnement informatique.<\/li>\n<\/ul>\n<p>En conclusion, le fichier hosts, bien que souvent n\u00e9glig\u00e9, est un pilier des communications r\u00e9seau. Il est primordial d&rsquo;en garantir l&rsquo;int\u00e9grit\u00e9. Notre script, en particulier lorsqu&rsquo;il est combin\u00e9 \u00e0 la puissance de NinjaOne, fournit aux \u00e9quipes informatiques les outils dont elles ont besoin pour <a href=\"https:\/\/www.ninjaone.com\/fr\/plateforme-de-gestion-de-terminaux\/surveillance-a-distance-du-parc-informatique\">surveiller, d\u00e9tecter et agir contre les modifications non autoris\u00e9es, garantissant ainsi un environnement informatique s\u00fbr et fluide<\/a>.<\/p>\n","protected":false},"author":35,"featured_media":207019,"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":[4281],"class_list":["post-208369","script_hub","type-script_hub","status-publish","has-post-thumbnail","hentry","script_hub_category-windows","use_cases-configuration-generale"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/script_hub\/208369","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/script_hub"}],"about":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/types\/script_hub"}],"author":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/comments?post=208369"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/media\/207019"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/media?parent=208369"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/operating_system?post=208369"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/use_cases?post=208369"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}