{"id":208394,"date":"2024-01-17T13:31:40","date_gmt":"2024-01-17T13:31:40","guid":{"rendered":"https:\/\/www.ninjaone.com\/script-hub\/detecter-les-logiciels-d-acces-a-distance-a-l-aide-de-powershell\/"},"modified":"2024-03-05T16:40:12","modified_gmt":"2024-03-05T16:40:12","slug":"detecter-les-logiciels-d-acces-a-distance-a-l-aide-de-powershell","status":"publish","type":"script_hub","link":"https:\/\/www.ninjaone.com\/fr\/script-hub\/detecter-les-logiciels-d-acces-a-distance-a-l-aide-de-powershell\/","title":{"rendered":"Comment d\u00e9tecter les logiciels d&rsquo;acc\u00e8s \u00e0 distance sur un syst\u00e8me \u00e0 l&rsquo;aide de PowerShell"},"content":{"rendered":"<p>Avec l&rsquo;essor du travail \u00e0 distance et l&rsquo;adoption g\u00e9n\u00e9ralis\u00e9e des technologies cloud, il est devenu primordial pour les professionnels de l&rsquo;informatique du monde entier de garantir la s\u00e9curit\u00e9 des terminaux. Pourvoir <strong>d\u00e9tecter les logiciels d&rsquo;acc\u00e8s \u00e0 distance<\/strong> est une pr\u00e9occupation majeure, car il constitue souvent le point d&rsquo;entr\u00e9e des personnes malveillantes.<\/p>\n<h2>Contexte<\/h2>\n<p>Les outils d&rsquo;acc\u00e8s \u00e0 distance existent depuis un certain temps. S&rsquo;ils peuvent \u00eatre extr\u00eamement utiles pour le d\u00e9pannage et les t\u00e2ches administratives \u00e0 distance, ils peuvent \u00e9galement \u00eatre exploit\u00e9s par des pirates informatiques pour obtenir un acc\u00e8s non autoris\u00e9 aux syst\u00e8mes. Il est essentiel pour les professionnels de l&rsquo;informatique et les <a href=\"https:\/\/www.ninjaone.com\/what-is-an-msp\/\">fournisseurs de services g\u00e9r\u00e9s (MSP)<\/a> de comprendre comment d\u00e9tecter les logiciels d&rsquo;acc\u00e8s \u00e0 distance. Ils constituent la premi\u00e8re ligne de d\u00e9fense contre les failles de s\u00e9curit\u00e9 potentielles et l&rsquo;acc\u00e8s non autoris\u00e9 aux donn\u00e9es.<\/p>\n<h2>Le script :<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"powershell\">#Requires -Version 5.1\r\n\r\n&lt;#\r\n.SYNOPSIS\r\n    This script will look for remote access tools installed on the system. It can be given a list of tools to ignore as well as grab the exclusion list from a designated custom field.\r\n    \r\n    DISCLAIMER: This script is provided as a best effort for detecting remote access software installed on an agent, but it is not guaranteed to be 100% accurate. \r\n    Some remote access software may not be detected, or false positives may be reported. Use this script at your own risk and verify its results with other methods where possible.\r\n.DESCRIPTION\r\n    This script will look for remote access tools installed on the system. Below is the full list of tools. Please note you can give it a list of tools to ignore and you can have\r\n    it grab the list from a custom field of your choosing.\r\n\r\n    DISCLAIMER: This script is provided as a best effort for detecting remote access software installed on an agent, but it is not guaranteed to be 100% accurate. \r\n    Some remote access software may not be detected, or false positives may be reported. Use this script at your own risk and verify its results with other methods where possible.\r\n\r\n    Remote Tools: AeroAdmin, Ammyy Admin, AnyDesk, BeyondTrust, Chrome Remote Desktop, Connectwise Control, DWService, GoToMyPC, LiteManager, LogMeIn, ManageEngine,\r\n    NoMachine, Parsec, Remote Utilities, RemotePC, Splashtop, Supremo, TeamViewer, TightVNC, UltraVNC, VNC Connect (RealVNC), Zoho Assist\r\n    RMM's: Atera, Automate, Datto RMM, Kaseya, N-Able N-Central, N-Able N-Sight, Syncro\r\n\r\n.EXAMPLE\r\n    (No Parameters)\r\n    Name                    CurrentlyRunning    HasRunningService   UninstallString\r\n    ----                    ----------------    -----------------   ---------------\r\n    Connectwise Control     Yes                 Yes                 MsiExec \/X{examplestring}\r\n    Chrome Remote Desktop   Yes                 Yes                 MsiExec \/X{examplestring}\r\n\r\nPARAMETER: -ExcludeTools \"Chrome Remote Desktop,Connectwise Control\"\r\n    A comma seperated list of tools you'd like to exclude from alerting on.\r\n.EXAMPLE\r\n    -ExcludeTools \"Chrome Remote Desktop,Connectwise Control\"\r\n    We couldn't find any active remote access tools!\r\n\r\nPARAMETER: -ExclusionsFromCustomField \"ReplaceMeWithAnyTextCustomField\"\r\n    The name of a custom field that contains a comma seperated list of tools to exclude from alerting. ex. \"ApprovedRemoteTools\"\r\n.EXAMPLE\r\n    -ExclusionsFromCustomField \"ReplaceMeWithAnyTextCustomField\"\r\n    We couldn't find any active remote access tools!\r\n\r\nPARAMETER: -ExportCSV \"ReplaceMeWithAnyMultiLineCustomField\"\r\n    The name of a multiline custom field to export to in csv format. ex. \"RemoteTools\"\r\n.EXAMPLE\r\n    -ExportCSV \"ReplaceMeWithAnyMultiLineCustomField\"\r\n    Name                    CurrentlyRunning    HasRunningService   UninstallString\r\n    ----                    ----------------    -----------------   ---------------\r\n    Connectwise Control     Yes                 Yes                 MsiExec \/X{examplestring}\r\n    Chrome Remote Desktop   Yes                 Yes                 MsiExec \/X{examplestring}\r\n\r\nPARAMETER: -ExportJSON \"ReplaceMeWithAnyMultiLineCustomField\"\r\n    The name of a multiline custom field to export to in JSON format. ex. \"RemoteTools\"\r\n.EXAMPLE\r\n    -ExportJSON \"ReplaceMeWithAnyMultiLineCustomField\"\r\n    Name                    CurrentlyRunning    HasRunningService   UninstallString\r\n    ----                    ----------------    -----------------   ---------------\r\n    Connectwise Control     Yes                 Yes                 MsiExec \/X{examplestring}\r\n    Chrome Remote Desktop   Yes                 Yes                 MsiExec \/X{examplestring}\r\n\r\nPARAMETER: -ShowNotFound\r\n    Show the tools the script did not find as well.\r\n.EXAMPLE\r\n    -ShowNotFound\r\n    Name                    CurrentlyRunning    HasRunningService   UninstallString\r\n    ----                    ----------------    -----------------   ---------------\r\n    AeroAdmin               No                  No\r\n    Ammyy Admin             No                  No\r\n    BeyondTrust             No                  No\r\n    Connectwise Control     Yes                 Yes                 MsiExec \/X{examplestring}\r\n    Chrome Remote Desktop   Yes                 Yes                 MsiExec \/X{examplestring}\r\n    \r\n.OUTPUTS\r\n    None\r\n.NOTES\r\n    General notes: CustomFields must be multiline for export. Regular text is fine for ExclusionsFromCustomField\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    [Parameter()]\r\n    [String]$ExcludeTools,\r\n    [Parameter()]\r\n    [String]$ExclusionsFromCustomField,\r\n    [Parameter()]\r\n    [String]$ExportCSV,\r\n    [Parameter()]\r\n    [String]$ExportJSON,\r\n    [Parameter()]\r\n    [Switch]$ShowNotFound\r\n    &lt;#\r\n        ## ParameterName Requirement DefaultValue Type Options Description ##\r\n        ExcludeTools Optional none TEXT Comma seperated list of tools you would not like to look for.\r\n        ExclusionsFromCustomField Optional none TEXT Name of custom field you would like to grab exclusions from.\r\n        ExportCSV Optional none TEXT Name of multi-line custom field you would like to export results to. It will export them in csv format.\r\n        ExportJSON Optional none TEXT Name of multi-line custom field you would like to export results to. It will export them in json format.\r\n        ShowNotFound Optional false CHECKBOX Show results even if it didn't find that specific tool.\r\n    #&gt;\r\n)\r\n\r\nbegin {\r\n    #DISCLAIMER: This script is provided as a best effort for detecting remote access software installed on an agent, but it is not guaranteed to be 100% accurate. \r\n    #Some remote access software may not be detected, or false positives may be reported. Use this script at your own risk and verify its results with other methods where possible.\r\n\r\n    # Check's the two Uninstall registry keys to see if the app is installed. Needs the name as it would appear in Control Panel.\r\n    function Find-UninstallKey {\r\n        [CmdletBinding()]\r\n        param (\r\n            [Parameter(ValueFromPipeline)]\r\n            [String]$DisplayName,\r\n            [Parameter()]\r\n            [Switch]$UninstallString\r\n        )\r\n        process {\r\n            $UninstallList = New-Object System.Collections.Generic.List[Object]\r\n\r\n            $Result = Get-ChildItem HKLM:SoftwareWow6432NodeMicrosoftWindowsCurrentVersionUninstall* | Get-ItemProperty | \r\n            Where-Object { $_.DisplayName -like \"*$DisplayName*\" }\r\n\r\n            if($Result){ $UninstallList.Add($Result) }\r\n\r\n            $Result = Get-ChildItem HKLM:SoftwareMicrosoftWindowsCurrentVersionUninstall* | Get-ItemProperty | \r\n            Where-Object { $_.DisplayName -like \"*$DisplayName*\" }\r\n\r\n            if($Result){ $UninstallList.Add($Result) }\r\n\r\n            # Programs don't always have an uninstall string listed here so to account for that I made this optional.\r\n            if ($UninstallString) {\r\n                # 64 Bit\r\n                $UninstallList | Select-Object -ExpandProperty UninstallString -ErrorAction Ignore\r\n            }\r\n            else {\r\n                $UninstallList\r\n            }\r\n        }\r\n    }\r\n\r\n    # This will see if the process is currently active. Some people may want to react sooner to these alerts if its currently running vs not.\r\n    function Find-Process {\r\n        [CmdletBinding()]\r\n        param(\r\n            [Parameter(ValueFromPipeline)]\r\n            [String]$Name\r\n        )\r\n        process {\r\n            Get-Process | Where-Object { $_.ProcessName -like \"*$Name*\" } | Select-Object -ExpandProperty Name\r\n        }\r\n    }\r\n\r\n    # This will search C:ProgramFiles and C:ProgramFiles(x86) for the executable these tools use to run.\r\n    function Find-Executable {\r\n        [CmdletBinding()]\r\n        param(\r\n            [Parameter(ValueFromPipeline)]\r\n            [String]$Path,\r\n            [Parameter()]\r\n            [Switch]$Special\r\n        )\r\n        process {\r\n            if(!$Special){\r\n                if (Test-Path \"$env:ProgramFiles$Path\") {\r\n                    \"$env:ProgramFiles$Path\"\r\n                }\r\n        \r\n                if (Test-Path \"${Env:ProgramFiles(x86)}$Path\") {\r\n                    \"${Env:ProgramFiles(x86)}$Path\"\r\n                }\r\n    \r\n                if (Test-Path \"$env:ProgramData$Path\") {\r\n                    \"$env:ProgramData$Path\"\r\n                }\r\n            }else{\r\n                if(Test-Path $Path){\r\n                    $Path\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    # Brought Get-CimInstance outside the function for better performance.\r\n\r\n    $ServiceList = Get-CimInstance win32_service\r\n    function Find-Service {\r\n        [CmdletBinding()]\r\n        param(\r\n            [Parameter(ValueFromPipeline)]\r\n            [String]$Name\r\n        )\r\n        process {\r\n            # Get-Service will display an error everytime it has an issue reading a service. Ignoring them as they're not relevant.\r\n            $ServiceList | Where-Object {$_.State -notlike \"Disabled\" -and $_.State -notlike \"Stopped\"} | \r\n            Where-Object {$_.PathName -Like \"*$Name.exe*\"}\r\n        }\r\n    }\r\n\r\n    function Export-CustomField {\r\n        [CmdletBinding()]\r\n        param(\r\n            [Parameter()]\r\n            [String]$Name,\r\n            [Parameter()]\r\n            [ValidateSet(\"csv\", \"json\")]\r\n            [String]$Format,\r\n            [Parameter()]\r\n            [PSCustomObject]$Object\r\n        )\r\n        if ($Format -eq \"csv\") {\r\n            $csv = $Object | ConvertTo-Csv -NoTypeInformation | Out-String\r\n            Ninja-Property-Set $Name $csv\r\n        }\r\n        else {\r\n            $json = $Object | ConvertTo-Json | Out-String\r\n            Ninja-Property-Set $Name $json\r\n        }\r\n    }\r\n\r\n    # This define's what tools we're looking for and how the script can find them. Some don't actually install anywhere (portable app) others do. \r\n    # Some change their installation path everytime so not particularly worth it to find it that way.\r\n    # Others store themselves in a super weird directory. Many don't list exactly where there .exe file is stored and suggest you exclude the whole folder from the av.\r\n    $RemoteToolList = @(\r\n        [PSCustomObject]@{Name = \"AeroAdmin\"; ProcessName = \"AeroAdmin\" }\r\n        [PSCustomObject]@{Name = \"Ammyy Admin\"; ProcessName = \"AA_v3\" }\r\n        [PSCustomObject]@{Name = \"AnyDesk\"; DisplayName = \"AnyDesk\"; ProcessName = \"AnyDesk\"; ExecutablePath = \"AnyDeskAnyDesk.exe\" }\r\n        [PSCustomObject]@{Name = \"BeyondTrust\"; DisplayName = \"Remote Support Jump Client\", \"Jumpoint\"; ProcessName = \"bomgar-jpt\" }\r\n        [PSCustomObject]@{Name = \"Chrome Remote Desktop\"; DisplayName = \"Chrome Remote Desktop Host\"; ProcessName = \"remoting_host\"; ExecutablePath = \"GoogleChrome Remote Desktop112.0.5615.26remoting_host.exe\" }\r\n        [PSCustomObject]@{Name = \"Connectwise Control\"; DisplayName = \"ScreenConnect Client\"; ProcessName = \"ScreenConnect.ClientService\" }\r\n        [PSCustomObject]@{Name = \"DWService\"; DisplayName = \"DWAgent\"; ProcessName = \"dwagent\",\"dwagsvc\"; ExecutablePath = \"DWAgentruntimedwagent.exe\" }\r\n        [PSCustomObject]@{Name = \"GoToMyPC\"; DisplayName = \"GoToMyPC\"; ProcessName = \"g2comm\", \"g2pre\", \"g2svc\", \"g2tray\"; ExecutablePath = \"GoToMyPCg2comm.exe\", \"GoToMyPCg2pre.exe\", \"GoToMyPCg2svc.exe\", \"GoToMyPCg2tray.exe\" }\r\n        [PSCustomObject]@{Name = \"LiteManager\"; DisplayName = \"LiteManager Pro - Server\"; ProcessName = \"ROMServer\", \"ROMFUSClient\"; ExecutablePath = \"LiteManager Pro - ServerROMFUSClient.exe\", \"LiteManager Pro - ServerROMServer.exe\" }\r\n        [PSCustomObject]@{Name = \"LogMeIn\"; DisplayName = \"LogMeIn\"; ProcessName = \"LogMeIn\"; ExecutablePath = \"LogMeInx64LogMeIn.exe\", \"LogMeInx64LogMeInSystray.exe\" }\r\n        [PSCustomObject]@{Name = \"ManageEngine\"; DisplayName = \"ManageEngine Remote Access Plus - Server\", \"ManageEngine UEMS - Agent\"; ProcessName = \"dcagenttrayicon\", \"UEMS\", \"dcagentservice\"; ExecutablePath = \"UEMS_Agentbindcagenttrayicon.exe\", \"UEMS_CentralServerbinUEMS.exe\", \"UEMS_Agentbindcagentservice.exe\" }\r\n        [PSCustomObject]@{Name = \"NoMachine\"; DisplayName = \"NoMachine\"; ProcessName = \"nxd\", \"nxnode.bin\", \"nxserver.bin\", \"nxservice64\"; ExecutablePath = \"NoMachinebinnxd.exe\", \"NoMachinebinnxnode.bin\", \"NoMachinebinnxserver.bin\", \"NoMachinebinnxservice64.exe\" }\r\n        [PSCustomObject]@{Name = \"Parsec\"; DisplayName = \"Parsec\"; ProcessName = \"parsecd\", \"pservice\"; ExecutablePath = \"Parsecparsecd.exe\", \"Parsecpservice.exe\" }\r\n        [PSCustomObject]@{Name = \"Remote Utilities\"; DisplayName = \"Remote Utilities - Host\"; ProcessName = \"rutserv\", \"rfusclient\"; ExecutablePath = \"Remote Utilities - Hostrfusclient.exe\" }\r\n        [PSCustomObject]@{Name = \"RemotePC\"; DisplayName = \"RemotePC\"; ProcessName = \"RemotePCHostUI\",\"RPCPerformanceService\"; ExecutablePath = \"RemotePC HostRemotePCHostUI.exe\", \"RemotePC HostRemotePCPerformanceRPCPerformanceService.exe\" }\r\n        [PSCustomObject]@{Name = \"Splashtop\"; DisplayName = \"Splashtop Streamer\"; ProcessName = \"SRAgent\", \"SRAppPB\", \"SRFeature\", \"SRManager\", \"SRService\"; ExecutablePath = \"SplashtopSplashtop RemoteServerSRService.exe\" }\r\n        [PSCustomObject]@{Name = \"Supremo\"; ProcessName = \"Supremo\", \"SupremoHelper\", \"SupremoService\"; ExecutablePath = \"SupremoSupremoService.exe\" }\r\n        [PSCustomObject]@{Name = \"TeamViewer\"; DisplayName = \"TeamViewer\"; ProcessName = \"TeamViewer\", \"TeamViewer_Service\", \"tv_w32\", \"tv_x64\"; ExecutablePath = \"TeamViewerTeamViewer.exe\", \"TeamViewerTeamViewer_Service.exe\", \"TeamViewertv_w32.exe\", \"TeamViewertv_x64.exe\" }\r\n        [PSCustomObject]@{Name = \"TightVNC\"; DisplayName = \"TightVNC\"; ProcessName = \"tvnserver\"; ExecutablePath = \"TightVNCtvnserver.exe\" }\r\n        [PSCustomObject]@{Name = \"UltraVNC\"; DisplayName = \"UltraVNC\"; ProcessName = \"winvnc\"; ExecutablePath = \"uvnc bvbaUltraVNCWinVNC.exe\" }\r\n        [PSCustomObject]@{Name = \"VNC Connect (RealVNC)\"; DisplayName = \"VNC Server\"; ProcessName = \"vncserver\"; ExecutablePath = \"RealVNCVNC Servervncserver.exe\" }\r\n        [PSCustomObject]@{Name = \"Zoho Assist\"; DisplayName = \"Zoho Assist Unattended Agent\"; ProcessName = \"ZohoURS\", \"ZohoURSService\"; ExecutablePath = \"ZohoMeetingUnAttendedZohoMeetingZohoURS.exe\", \"ZohoMeetingUnAttendedZohoMeetingZohoURSService.exe\" }\r\n        [PSCustomObject]@{Name = \"Atera\"; DisplayName = \"AteraAgent\"; ProcessName = \"AteraAgent\"; ExecutablePath = \"ATERA NetworksAteraAgentAteraAgent.exe\"}\r\n        [PSCustomObject]@{Name = \"Automate\"; DisplayName = \"Connectwise Automate\"; ProcessName = \"LTService\", \"LabTechService\"; SpecialExecutablePath = \"C:WindowsLTSvcLTSvc.exe\"}\r\n        [PSCustomObject]@{Name = \"Datto RMM\"; DisplayName = \"Datto RMM\"; ProcessName = \"AEMAgent\"; ExecutablePath = \"CentraStageAEMAgentAEMAgent.exe\", \"CentraStagegui.exe\"}\r\n        [PSCustomObject]@{Name = \"Kaseya\"; DisplayName = \"Kaseya Agent\"; ProcessName = \"AgentMon\", \"KaseyaRemoteControlHost\", \"Kasaya.AgentEndpoint\"; ExecutablePath = \"KaseyaAgentMonAgentMon.exe\"}\r\n        [PSCustomObject]@{Name = \"N-Able N-Central\"; DisplayName = \"Windows Agent\"; ProcessName = \"winagent\"; ExecutablePath = \"N-able TechnologiesWindows Agentwinagent.exe\"}\r\n        [PSCustomObject]@{Name = \"N-Able N-Sight\"; DisplayName = \"Advanced Monitoring Agent\"; ProcessName = \"winagent\"; ExecutablePath = \"Advanced Monitoring Agentwinagent.exe\", \"Advanced Monitoring Agent GPwinagent.exe\"}\r\n        [PSCustomObject]@{Name = \"Syncro\"; DisplayName = \"Syncro\",\"Kabuto\"; ProcessName = \"Syncro.App.Runner\", \"Kabuto.App.Runner\", \"Syncro.Service.Runner\", \"Kabuto.Service.Runner\", \"SyncroLive.Agent.Runner\", \"Kabuto.Agent.Runner\", \"SyncroLive.Agent.Service\", \"Syncro.Access.Service\", \"Syncro.Access.App\"; ExecutablePath = \"RepairTechSyncroSyncro.Service.Runner.exe\", \"RepairTechSyncroSyncro.App.Runner.exe\"}\r\n    )\r\n}\r\nprocess {\r\n\r\n    # Lets see what tools we don't want to alert on.\r\n    $ExcludedTools = New-Object System.Collections.Generic.List[String]\r\n\r\n    if ($ExcludeTools) {\r\n        $ExcludedTools.Add(($ExcludeTools.split(',')).Trim())\r\n    }\r\n\r\n    # Grabs the info we need from a textbox.\r\n    if ($env:ExcludeTools) {\r\n        $ExcludedTools.Add($env:ExcludeTools.split(','))\r\n    }\r\n\r\n    # For this kind of alert it might be worth it to create a whole custom field of ignorables.\r\n    if ($ExclusionsFromCustomField) {\r\n        $ExcludedTools.Add((Ninja-Property-Get $ExclusionsFromCustomField -split(',')).trim())\r\n    }\r\n\r\n    if ($env:ExclusionsFromCustomField) {\r\n        $ExcludedTools.Add((Ninja-Property-Get $env:ExclusionsFromCustomField -split(',')).trim())\r\n    }\r\n\r\n    if ($ExportCSV -or $Env:ExportCSV) {\r\n        $Format = \"csv\"\r\n\r\n        if ($ExportCSV) {\r\n            $ExportResults = $ExportCSV\r\n        }\r\n\r\n        if ($env:ExportCSV) {\r\n            $ExportResults = $env:ExportCSV\r\n        }\r\n    }elseif ($ExportJSON -or $env:ExportJSON) {\r\n        $Format = \"json\"\r\n\r\n        if ($ExportJSON) {\r\n            $ExportResults = $ExportJSON\r\n        }\r\n\r\n        if ($env:ExportJSON) {\r\n            $ExportResults = $env:ExportJSON\r\n        }\r\n    }\r\n\r\n    # This take's our list and begins searching by the 4 method's in the begin block. \r\n    $RemoteAccessTools = $RemoteToolList | ForEach-Object {\r\n\r\n        $UninstallKey = if ($_.DisplayName) {\r\n            $_.DisplayName | Find-UninstallKey\r\n        }\r\n        \r\n        $UninstallInfo = if ($_.DisplayName) {\r\n            $_.DisplayName | Find-UninstallKey -UninstallString\r\n        }\r\n        \r\n        $RunningStatus = if ($_.ProcessName) {\r\n            $_.ProcessName | Find-Process\r\n        }\r\n\r\n        $ServiceStatus = if($_.ProcessName) {\r\n            $_.ProcessName | Find-Service\r\n        }\r\n        \r\n        $InstallPath = if ($_.ExecutablePath) {\r\n            $_.ExecutablePath | Find-Executable\r\n        }elseif($_.SpecialExecutablePath){\r\n            $_.SpecialExecutablePath | Find-Executable -Special\r\n        }\r\n\r\n        if ($UninstallKey -or $RunningStatus -or $InstallPath -or $ServiceStatus) {\r\n            $Installed = \"Yes\"\r\n        }\r\n        else {\r\n            $Installed = \"No\"\r\n        }\r\n\r\n        [PSCustomObject]@{\r\n            Name              = $_.Name\r\n            Installed         = $Installed\r\n            CurrentlyRunning  = if ($RunningStatus) { \"Yes\" }else { \"No\" }\r\n            HasRunningService = if ($ServiceStatus) { \"Yes\" }else { \"No\" }\r\n            UninstallString   = $UninstallInfo\r\n            ExePath           = $InstallPath\r\n        } | Where-Object { $ExcludedTools -notcontains $_.Name }\r\n    }\r\n\r\n    $ActiveRemoteAccessTools = $RemoteAccessTools | Where-Object {$_.Installed -eq \"Yes\"}\r\n\r\n    # If we found anything in the three check's we're gonna indicate it's installed but we may also want to save our results to a custom field.\r\n    # We also may want to output more than \"We couldn't find any active remote access tools!\" in the event we find nothing.\r\n    if ($ShowNotFound -or $env:ShowNotFound) {\r\n\r\n        $RemoteAccessTools | Format-Table -Property Name, Installed, CurrentlyRunning, HasRunningService, UninstallString -AutoSize -Wrap | Out-String | Write-Host\r\n\r\n        if($ExportResults){\r\n            Export-CustomField -Name $ExportResults -Format $Format -Object ($RemoteAccessTools | Select-Object Name, Installed, CurrentlyRunning, HasRunningService)\r\n        }\r\n\r\n    }else{\r\n        if($ActiveRemoteAccessTools){\r\n\r\n            $ActiveRemoteAccessTools | Format-Table -Property Name, CurrentlyRunning, HasRunningService, UninstallString -AutoSize -Wrap | Out-String | Write-Host\r\n\r\n            if($ExportResults){\r\n                Export-CustomField -Name $ExportResults -Format $Format -Object ($ActiveRemoteAccessTools | Select-Object Name, CurrentlyRunning, HasRunningService)\r\n            }\r\n\r\n        }else{\r\n            Write-Host \"We couldn't find any active remote access tools!\"\r\n        }\r\n    }\r\n\r\n    if($ActiveRemoteAccessTools){\r\n        # We're going to set a failure status code in the event that we find something.\r\n        exit 1\r\n    }\r\n    else {\r\n        exit 0\r\n    }\r\n}<\/pre>\n<p>&nbsp;<\/p>\n\n<div class=\"in-context-cta\"><p style=\"text-align: center;\">Acc\u00e9dez \u00e0 plus de 700 scripts dans le Dojo NinjaOne<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/www.ninjaone.com\/fr\/phase-de-test-gratuit\/\">Obtenez l&rsquo;acc\u00e8s<\/a><\/p>\n<\/div>\n<h2>Description d\u00e9taill\u00e9e<\/h2>\n<p>La d\u00e9tection d&rsquo;un logiciel d&rsquo;acc\u00e8s \u00e0 distance comporte quelques \u00e9tapes essentielles :<\/p>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><strong>Surveillance du trafic sur le r\u00e9seau<\/strong>: Commencez par surveiller le trafic sur le r\u00e9seau. Des sch\u00e9mas inhabituels ou des adresses IP inconnues peuvent \u00eatre des indicateurs.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><strong>Processus et t\u00e2ches du syst\u00e8me<\/strong>: La v\u00e9rification r\u00e9guli\u00e8re des processus actifs du syst\u00e8me peut aider \u00e0 identifier les outils non autoris\u00e9s. Tout processus non familier doit faire l&rsquo;objet d&rsquo;une enqu\u00eate plus approfondie.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\"><strong>Audit logiciel<\/strong>: En utilisant des outils syst\u00e8me int\u00e9gr\u00e9s tels que le \u00ab\u00a0Gestionnaire de t\u00e2ches\u00a0\u00bb pour Windows ou le \u00ab\u00a0Moniteur d&rsquo;activit\u00e9\u00a0\u00bb pour macOS, vous pouvez obtenir une liste de toutes les applications install\u00e9es. La recherche de logiciels inconnus peut parfois r\u00e9v\u00e9ler la pr\u00e9sence d&rsquo;outils d&rsquo;acc\u00e8s \u00e0 distance.<\/li>\n<\/ul>\n<h2>Cas d&rsquo;utilisation potentiels<\/h2>\n<p>Prenons l&rsquo;exemple d&rsquo;Alex, informaticien dans une entreprise de taille moyenne. Il remarque que la bande passante du r\u00e9seau augmente en dehors des heures de travail. Apr\u00e8s enqu\u00eate, il identifie une adresse IP inconnue qui acc\u00e8de r\u00e9guli\u00e8rement \u00e0 leur r\u00e9seau. \u00c0 l&rsquo;aide d&rsquo;outils d&rsquo;audit du syst\u00e8me, il d\u00e9couvre un logiciel d&rsquo;acc\u00e8s \u00e0 distance install\u00e9 sur plusieurs syst\u00e8mes bureautiques et dont personne ne se souvient de l&rsquo;avoir install\u00e9. En identifiant et en supprimant ce logiciel, Alex a d\u00e9jou\u00e9 une violation potentielle des donn\u00e9es.<\/p>\n<h2>Comparaisons<\/h2>\n<p>Les m\u00e9thodes traditionnelles de d\u00e9tection des outils d&rsquo;acc\u00e8s \u00e0 distance comprennent les audits manuels, la v\u00e9rification des journaux de pare-feu ou l&rsquo;utilisation de logiciels antivirus. Bien que ces m\u00e9thodes peuvent \u00eatre efficaces, elles ne sont pas infaillibles. L&rsquo;approche du script automatise le processus de d\u00e9tection, ce qui le rend \u00e0 la fois complet et rapide. Cette m\u00e9thode proactive permet souvent de d\u00e9tecter les logiciels d&rsquo;acc\u00e8s \u00e0 distance plus r\u00e9cents et plus sophistiqu\u00e9s qui pourraient contourner les m\u00e9thodes conventionnelles.<\/p>\n<h2>FAQ<\/h2>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"1\" data-aria-level=\"1\"><strong>\u00c0 quelle fr\u00e9quence dois-je v\u00e9rifier les outils d&rsquo;acc\u00e8s \u00e0 distance ?<\/strong><br \/>\nR\u00e9guli\u00e8rement, surtout si vous travaillez dans un environnement qui installe et teste fr\u00e9quemment de nouveaux logiciels.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><strong>Cette m\u00e9thode de d\u00e9tection permet-elle d&rsquo;identifier tous les logiciels d&rsquo;acc\u00e8s \u00e0 distance ?<\/strong><br \/>\nBien qu&rsquo;elle soit compl\u00e8te, aucune m\u00e9thode n&rsquo;est infaillible. Il est essentiel de combiner plusieurs approches pour garantir une s\u00e9curit\u00e9 solide.<\/li>\n<\/ul>\n<div class=\"in-context-cta\"><h2>Le point de vue de Gavin<\/h2>\n<p style=\"text-align: left;\">Il est essentiel de pouvoir d\u00e9tecter l&rsquo;installation d&rsquo;un logiciel \u00e0 distance non approuv\u00e9 sur une machine pour assurer la s\u00e9curit\u00e9 des appareils, du r\u00e9seau et des donn\u00e9es de l&rsquo;entreprise.<\/p>\n<p style=\"text-align: left;\"><a href=\"https:\/\/www.ninjaone.com\/blog\/what-is-shadow-it\/\">L&rsquo;informatique fant\u00f4me (shadow IT)<\/a> fait r\u00e9f\u00e9rence aux syst\u00e8mes, appareils, logiciels ou applications qui sont utilis\u00e9s et g\u00e9r\u00e9s en dehors du champ d&rsquo;action officiel du service informatique de votre entreprise. Cela se produit g\u00e9n\u00e9ralement lorsque les employ\u00e9s utilisent leurs propres solutions ou technologies sans approbation ou supervision explicite. Dans ce cas, tout logiciel \u00e0 distance install\u00e9 \u00e0 l&rsquo;insu de l&rsquo;entreprise est un exemple de Shadow IT. Lorsque cela se produit, plusieurs d\u00e9fis majeurs se pr\u00e9sentent :<\/p>\n<ul>\n<li><strong>Manque de supervision de la part du d\u00e9partement informatique : <\/strong>Lorsqu&rsquo;un logiciel d&rsquo;acc\u00e8s \u00e0 distance est install\u00e9 \u00e0 l&rsquo;insu de l&rsquo;utilisateur sur un ou plusieurs appareils, il contourne souvent les protocoles standard de s\u00e9curit\u00e9, de gouvernance des donn\u00e9es et de conformit\u00e9 qui peuvent \u00eatre mis en place dans l&rsquo;entreprise.<\/li>\n<li><strong>Risques li\u00e9s \u00e0 la s\u00e9curit\u00e9 : <\/strong>\u00c9tant donn\u00e9 que le logiciel d&rsquo;acc\u00e8s \u00e0 distance n&rsquo;a pas \u00e9t\u00e9 soumis aux m\u00eames mesures de s\u00e9curit\u00e9 que les ressources informatiques autoris\u00e9es, il peut introduire des vuln\u00e9rabilit\u00e9s (le d\u00e9partement informatique ne peut pas corriger un logiciel dont il n&rsquo;a pas connaissance) qui peuvent potentiellement entra\u00eener des violations de donn\u00e9es ou des incidents de s\u00e9curit\u00e9<\/li>\n<li><strong>Risque li\u00e9 au fournisseur : <\/strong>Certains fournisseurs disposent de meilleures couches de s\u00e9curit\u00e9 que d&rsquo;autres. L&rsquo;introduction de logiciels, en particulier de logiciels d&rsquo;acc\u00e8s \u00e0 distance dont les fournisseurs n&rsquo;ont pas fait l&rsquo;objet d&rsquo;un contr\u00f4le appropri\u00e9, peut pr\u00e9senter des risques suppl\u00e9mentaires pour l&rsquo;organisation, voire lui faire courir le risque d&rsquo;\u00e9chouer aux \u00e9valuations de conformit\u00e9 ou de s\u00e9curit\u00e9<\/li>\n<\/ul>\n<p style=\"text-align: left;\">Ce script peut aider en d\u00e9tectant une liste connue de <a href=\"https:\/\/www.ninjaone.com\/fr\/acces-a-distance\/\">logiciels d&rsquo;acc\u00e8s \u00e0 distance<\/a> et en se d\u00e9clenchant lorsqu&rsquo;il d\u00e9tecte un logiciel qui ne figure pas dans la liste de ceux autoris\u00e9s. Au-del\u00e0 des questions de s\u00e9curit\u00e9, ce type de d\u00e9tection pr\u00e9sente d&rsquo;autres avantages :<\/p>\n<div class=\"elementToProof\">\n<ul>\n<li>Pour les entreprises MSP, il peut s&rsquo;agir d&rsquo;une bonne indication que votre client est en train de s&rsquo;engager avec une autre MSP ou une entreprise informatique<\/li>\n<li>Il peut aider \u00e0 identifier les restes d&rsquo;anciens logiciels d&rsquo;acc\u00e8s \u00e0 distance install\u00e9s sur le r\u00e9seau<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<h2>Conclusions<\/h2>\n<p>Un <a href=\"https:\/\/www.ninjaone.com\/fr\/acces-a-distance\/\">logiciel d&rsquo;acc\u00e8s \u00e0 distance<\/a> non d\u00e9tect\u00e9 peut entra\u00eener des failles importantes, des vols de donn\u00e9es, voire des <a href=\"https:\/\/www.ninjaone.com\/fr\/blog\/comment-detecter-un-ransomware\/\">attaques par ransomware<\/a>. \u00c9tant donn\u00e9 que de plus en plus d&rsquo;entreprises migrent en ligne, assurer la s\u00e9curit\u00e9 de chaque point d&rsquo;acc\u00e8s devient une t\u00e2che fondamentale. Ne pas prendre cela au s\u00e9rieux pourrait avoir des r\u00e9percussions financi\u00e8res, op\u00e9rationnelles et de r\u00e9putation.<\/p>\n","protected":false},"author":35,"featured_media":143982,"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":[],"use_cases":[4287],"class_list":["post-208394","script_hub","type-script_hub","status-publish","has-post-thumbnail","hentry","use_cases-configuration-de-systeme"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/script_hub\/208394","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=208394"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/media\/143982"}],"wp:attachment":[{"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/media?parent=208394"}],"wp:term":[{"taxonomy":"script_hub_category","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/operating_system?post=208394"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.ninjaone.com\/fr\/wp-json\/wp\/v2\/use_cases?post=208394"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}