Dans le vaste domaine de l’informatique, le fichier hosts est une sentinelle silencieuse qui assure la fluidité des communications réseau. Pour ceux qui ne le connaissent pas, le fichier hosts est un fichier texte qui associe des noms d’hôtes à des adresses IP. Il est utilisé par le système d’exploitation pour résoudre les noms d’hôtes en adresses IP lorsqu’un ordinateur tente de se connecter à une ressource du réseau. Mais que se passe-t-il lorsque le fichier hosts est altéré ou modifié? Comment les professionnels de l’informatique et les fournisseurs de services gérés (MSP) peuvent-ils garantir l’intégrité de ce fichier crucial ? C’est là qu’intervient le scénario que nous nous apprêtons à examiner.
Comprendre le fichier Hosts
Le fichier hosts est, par essence, le carnet d’adresses du système informatique. Il joue un rôle essentiel dans l’orientation du trafic sur le réseau, en veillant à ce que les utilisateurs accèdent aux sites web et aux services appropriés. Toutefois, son importance en fait également une cible privilégiée pour les personnes malveillantes.
Les risques potentiels de modifications non autorisées
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érations peuvent avoir des conséquences désastreuses :
- Vol d’informations personnelles: En redirigeant les utilisateurs vers des sites contrefaits, les attaquants peuvent leur soutirer des informations personnelles, ce qui peut conduire à un vol d’identité.
- Installation de logiciels malveillants: Les utilisateurs peuvent être amenés à télécharger des logiciels malveillants en pensant qu’ils se trouvent sur un site légitime.
- Perturbation des communications du réseau: Des services essentiels peuvent être bloqués, entraînant des perturbations opérationnelles.
Compte tenu de ces risques, il est primordial que les professionnels de l’informatique et les MSP disposent d’outils capables de détecter rapidement toute modification non autorisée. C’est là que notre script entre en jeu.
Le script
#Requires -Version 5.1 <# .SYNOPSIS Checks if the hosts file was modified from last run. .DESCRIPTION Checks if the hosts 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 of the hosts file [string] $HostsPath = "C:WindowsSystem32driversetchosts", # Path and file where the cache file will be saved for comparison [string] $CachePath = "C:ProgramDataNinjaRMMAgentscriptingTest-HostsFile.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 } # Check if hosts file exists if ($(Test-Path -Path $HostsPath)) { # Get content and create hash of hosts file $HostsContent = Get-Content -Path $HostsPath $HostsHash = Get-FileHash -Path $HostsPath -Algorithm SHA256 $Current = [PSCustomObject]@{ Content = $HostsContent Hash = $HostsHash } # 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 "Hosts 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 } } else { Write-Error "Hosts file is missing!" exit 1 } exit 0 } end {}
Accédez à plus de 700 scripts dans le Dojo NinjaOne
Exploration approfondie du script
Le script PowerShell fourni est conçu pour vérifier si le fichier hosts a été modifié depuis sa dernière exécution. Voici un aperçu de ses fonctionnalités :
- Vérification de l’élévation : Le script vérifie d’abord s’il est exécuté avec des privilèges d’administrateur. Cette étape est cruciale, car toute tentative de lecture ou de modification des fichiers système nécessite des autorisations élevées.
- Vérification du fichier des hôtes: Il vérifie ensuite l’existence du fichier hosts. Si le fichier est manquant, le script signale une erreur.
- Comparaison des hachages: Le script calcule un hachage (SHA256) du fichier hosts actuel et le compare à une version mise en cache lors de la dernière exécution. En cas de non-concordance, cela indique que le fichier a été modifié.
- Comparaison des contenus: Au-delà de la simple vérification du hachage, le script compare également le contenu ligne par ligne, en mettant en évidence tout ajout ou suppression.
Avantages pour les professionnels de l’informatique et les entreprises MSP
- Surveillance proactive: Ce script offre une approche proactive de la surveillance du fichier hosts, garantissant son intégrité et alertant les administrateurs de toute modification non autorisée.
- Aperçu détaillé: En comparant les différences de contenu, les équipes informatiques peuvent rapidement identifier ce qui a été ajouté ou supprimé, ce qui permet de remédier rapidement à la situation.
- Prêt pour l’automatisation: De par sa conception, le script peut être intégré dans des flux de travail automatisés, ce qui permet d’effectuer des contrôles réguliers sans intervention manuelle.
La puissance de NinjaOne
NinjaOne est plus qu’une simple solution de gestion informatique. Il s’agit d’une plateforme complète qui permet aux professionnels de l’informatique et aux fournisseurs de services gérés (MSP) d’avoir une longueur d’avance sur les menaces potentielles. En intégrant notre script de vérification du fichier hosts dans NinjaOne :
- Alertes centralisées: Recevez des alertes directement sur le tableau de bord de NinjaOne chaque fois que le fichier hosts est modifié. Cette notification immédiate vous permet d’agir rapidement et de protéger vos systèmes contre les attaques potentielles.
- Contrôles programmés: Automatiser l’exécution du script à des intervalles déterminés, afin d’assurer une surveillance continue.
- Rapport détaillé: Combinez les informations tirées du script avec les capacités de reporting de NinjaOne pour obtenir une vue globale de votre environnement informatique.
En conclusion, le fichier hosts, bien que souvent négligé, est un pilier des communications réseau. Il est primordial d’en garantir l’intégrité. Notre script, en particulier lorsqu’il est combiné à la puissance de NinjaOne, fournit aux équipes informatiques les outils dont elles ont besoin pour surveiller, détecter et agir contre les modifications non autorisées, garantissant ainsi un environnement informatique sûr et fluide.