mRemoteNG est un outil extrêmement pratique pour administrer vos serveurs via RDP, SSH, VNC, etc. Cela vous permet de centraliser, à un seul et unique endroit, l’ensemble de vos ressources dont les applications Web :
A ce titre, on pourrait presque le voir comme une alternative à keypass (en moins sécurisé).
Table of Contents
Import à partir d’AD ou via balayage de ports
Il suffit dans Connexions, de cliquer sur Importer / Exporter :
Création de scripts externes
D’autre part, mRemoteNG embarque la possibilité, outre de se connecter à un AD pour récupérer votre annuaire, de créer des scripts personnalisé (Onglet Outils – Outils externes) :
J’ai donc créé tout un tas de scripts bien pratiques pour administrer, au quotidien, vos serveurs :
Voici la version XML (extapps.xml) directement importable dans mRemoteNG version portable en la copiant à la racine du dossier où se trouve mRemoteNG.exe :
<?xml version="1.0" encoding="utf-8"?> <Apps> <App DisplayName="[SYSTEME][Windows] Compmgmt" FileName="compmgmt.msc" Arguments="/computer:%hostname%" WaitForExit="False" TryToIntegrate="False" /> <App DisplayName="[SYSTEME][Windows] Services" FileName="services.msc" Arguments="/computer:%hostname%" WaitForExit="False" TryToIntegrate="False" /> <App DisplayName="[SYSTEME][Windows] Gestion des connexions distantes" FileName="scripts\check_remote.bat" Arguments="%hostname%" WaitForExit="False" TryToIntegrate="False" /> <App DisplayName="[SYSTEME][Windows] cmd distant" FileName="cmd" Arguments="/k scripts\sysinternals\psexec \\%hostname% cmd.exe" WaitForExit="False" TryToIntegrate="False" /> <App DisplayName="[SYSTEME][Windows] Lister les fichiers ouverts" FileName="cmd" Arguments="/k scripts\sysinternals\psfile \\%hostname%" WaitForExit="False" TryToIntegrate="False" /> <App DisplayName="[SYSTEME][Windows] Afficher SID" FileName="cmd" Arguments="/k scripts\sysinternals\psgetsid \\%hostname%" WaitForExit="False" TryToIntegrate="False" /> <App DisplayName="[AUDIT-Windows] Rapport complet avec SYDI" FileName="cmd" Arguments="/k cscript scripts\sydi\sydi-server.vbs -wabefghipPqrsu -racdklp -ew -f10 -d -t%hostname%" WaitForExit="False" TryToIntegrate="False" /> <App DisplayName="[SYSTEME][Windows] Liste des utilisateurs connectés" FileName="cmd" Arguments="/k scripts\sysinternals\psloggedon \\%hostname%" WaitForExit="False" TryToIntegrate="False" /> <App DisplayName="[INTERNE] Afficher les informations / mots de passe mRemoteNG" FileName="cmd" Arguments="/c echo Host: %hostname% & echo Domain: %domain% & echo User: %username% & echo Password: %password% & echo. & pause" WaitForExit="False" TryToIntegrate="False" /> <App DisplayName="[PM] Deployer et démarrer serveur VNC" FileName="scripts\remote.bat" Arguments="%hostname%" WaitForExit="True" TryToIntegrate="False" /> <App DisplayName="[APP] FileZilla FTP" FileName=""C:\Program Files\FileZilla FTP Client\filezilla.exe"" Arguments="sftp://%Username%:%Password%@%Hostname%" WaitForExit="False" TryToIntegrate="False" /> <App DisplayName="[PM] Démarrer serveur VNC" FileName="cmd" Arguments="/k scripts\sysinternals\psservice \\%Hostname% start tvncserver" WaitForExit="False" TryToIntegrate="False" /> <App DisplayName="[RESEAU] NetStat (ports ouverts)" FileName="cmd" Arguments="/k scripts\sysinternals\psexec.exe \\%hostname% netstat -anb" WaitForExit="False" TryToIntegrate="False" /> <App DisplayName="[RESEAU] nslookup (résolution DNS)" FileName="cmd" Arguments="/k nslookup %hostname%" WaitForExit="False" TryToIntegrate="False" /> <App DisplayName="[RESEAU] Ping" FileName="cmd" Arguments="/k ping -t %hostname%" WaitForExit="False" TryToIntegrate="False" /> <App DisplayName="[SYSTEME][Windows] Liste des processus (script powershell)" FileName="powershell" Arguments="-noexit Get-wmiobject win32_process -computername %hostname% | Select-Object __server,name,processid,sessionid,vm,ws,description,executablepath,osname,windowsversion,__path | Out-GridView" WaitForExit="False" TryToIntegrate="False" /> <App DisplayName="[CONNEXION] RDP /admin" FileName="cmd" Arguments="/c mstsc /v:%hostname%:3389 /admin" WaitForExit="False" TryToIntegrate="False" /> <App DisplayName="[SYSTEME][Windows] Liste des partages (script powershell)" FileName="powershell" Arguments="-noexit Get-WmiObject win32_share -computer %hostname%|sort name|fl" WaitForExit="False" TryToIntegrate="False" /> <App DisplayName="[PM] Stop serveur VNC" FileName="cmd" Arguments="/k scripts\sysinternals\psservice \\%hostname% stop tvncserver" WaitForExit="False" TryToIntegrate="False" /> <App DisplayName="[CONNEXION] TightVNC" FileName="scripts\tightvnc\tvnviewer.exe" Arguments="%Hostname%::%Port% -scale=auto -password=%Password% -viewonly=%UserField%" WaitForExit="False" TryToIntegrate="False" /> <App DisplayName="[RESEAU] Traceroute" FileName="cmd" Arguments="/c set /P = | tracert %HostName%" WaitForExit="False" TryToIntegrate="False" /> <App DisplayName="[APP] Lancer VMware Vsphere" FileName="C:\Program Files (x86)\VMware\Infrastructure\Virtual Infrastructure Client\Launcher\VpxClient.exe" Arguments="" WaitForExit="False" TryToIntegrate="False" /> <App DisplayName="[APP] WinSCP" FileName="scp://%Username%:%Password%@%Hostname%/" Arguments="" WaitForExit="False" TryToIntegrate="False" /> <App DisplayName="[RESAU][Linux] Wireshark" FileName="cmd" Arguments="/K ""scripts\putty\plink.exe" -ssh -pw %Password% %Username%@%Hostname% ""tcpdump -ni eth0 -s 0 -w - not port 22"" | "C:\Program Files\Wireshark\Wireshark.exe" -k -i -"" WaitForExit="False" TryToIntegrate="False" /> <App DisplayName="[RESEAU] ZenMap (scan approfondi des ports)" FileName="C:\Program Files (x86)\Nmap\zenmap.exe" Arguments="-p "Quick scan plus" -t %Hostname%" WaitForExit="False" TryToIntegrate="False" /> </Apps>
Pour que tous les outils fonctionnent, il va falloir créer un répertoire « scripts » à la racine du programme mRemoteNG et y injecter les différentes applications (DLL, fichier EXE, etc.) :
Les liens pour récupérer les exécutables vous permettant d’embarquer les fameux scripts :
Outil de prise en main à distance des postes utilisateurs
Concernant le dossier « remote » :
Ce sont des scripts qui vous permettent, via psexec de pouvoir déployer un serveur TightVNC à la volée pour prendre le contrôle à distance des postes utilisateurs. Il vous faudra les droits administrateur pour écrire dans le dossier spécial admin$ de Windows du poste en question. Le script installe le service tightvnc, l’active puis le désactive une fois la prise en main à distance terminée.
Il consiste en un fichier bat intitulé « remote.bat » qui va permettre de déployer le service :
@echo off & setlocal IF "%1"=="" ( GOTO MANUAL ) ELSE ( GOTO AUTO ) :AUTO set IP=%1 GOTO DEPLOY :MANUAL set /p IP=IP ou nom DNS : GOTO DEPLOY :DEPLOY robocopy scripts\remote\Remote \\%IP%\admin$\Remote /MIR scripts\sysinternals\psexec \\%IP% reg import C:\Windows\Remote\remote.reg scripts\sysinternals\psexec \\%IP% sc create tvncserver binPath= "\"C:\Windows\Remote\VNC\tvnserver.exe\" -service" scripts\sysinternals\psservice \\%IP% start tvncserver timeout 2
Dans « remote.reg », on indique les options utiles à TightVNC server, dont le mot de passe (champ « Password »), vous pouvez adapter les options à vos besoins :
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\TightVNC]
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\TightVNC\Components]
"TightVNC Server"="1"
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\TightVNC\Server]
"AcceptHttpConnections"=dword:00000000
"AcceptRfbConnections"=dword:00000001
"AllowLoopback"=dword:00000001
"AlwaysShared"=dword:00000000
"BeepConnect"=dword:00000000
"BeepDisconnect"=dword:00000000
"BlankScreen"=dword:00000000
"BlockLocalInput"=dword:00000000
"BlockRemoteInput"=dword:00000000
"DisconnectAction"=dword:00000000
"DisconnectActionService"=dword:00000001
"DisconnectClients"=dword:00000001
"EnableFileTransfers"=dword:00000001
"EnableUrlParams"=dword:00000001
"GrabTransparentWindows"=dword:00000001
"IpAccessControl"=""
"LocalInputPriority"=dword:00000000
"LocalInputPriorityTimeout"=dword:00000003
"LogLevel"=dword:00000000
"LoopbackOnly"=dword:00000000
"NeverShared"=dword:00000000
"Password"=hex:d7,a5,14,d8,c5,56,aa,de
"PollingInterval"=dword:0000012c
"QueryAcceptOnTimeout"=dword:00000000
"QueryTimeout"=dword:0000003c
"RemoveAero"=dword:00000000
"RemoveWallpaper"=dword:00000001
"RfbPort"=dword:0000170c
"RunControlInterface"=dword:00000000
"SaveLogToAllUsersPath"=dword:00000000
"UseControlAuthentication"=dword:00000000
"UseVncAuthentication"=dword:00000001
"VideoRecognitionInterval"=dword:00000bb8
"DisplayClientIpAddress"=dword:00000000
"AuthClientMessage"=""
Le mot de passe par défaut, chiffré pour TightVNC dans notre exemple sera : Secure!
Vous pouvez en définir un en lançant tightvncserver sur votre poste, le définir via la console d’administration puis copier/coller la valeur en question via regedit dans le remote.reg.
A noter, on peut déchiffrer les mots de passe VNC avec cette commande :
echo -n d7a514d8c556aade | xxd -r -p | openssl enc -des-cbc --nopad --nosalt -K e84ad660c4721ae0 -iv 0000000000000000 -d | hexdump -Cv
Ensuite, il vous faut déployer le logiciel tightVNC server dans le sous-répertoire VNC soit tvnserver.exe avec les DLL requises :
On peut récupérer facilement les DLL et les exécutables via le MSI (outil lessmsi pour extraire les fichiers) disponible sur le site de tightvnc.
Usage de l’outil
Pour utiliser ce script de façon intégré dans mRemoteNG, il vous suffit de créer une nouvelle connexion de type VNC sur le port 5900 et de bien paramétrer les champs « Outil externe avant » et « Outil externe après » :
Pour le lancer, il vous suffira alors de double-cliquer sur la connexion en question pour prendre le contrôle à distance :
Vous pouvez utiliser l’ensemble des « outils externes » associés à ce script (dont le lancement de tightvncviewer externe plus pratique pour l’affichage lorsque le poste utilisateur a plusieurs écrans) :
Liste de mes outils externes
Vous pouvez retrouver des ressources utiles pour les outils externes :
https://mremoteng.readthedocs.io/en/latest/external_tools_cheat_sheet.html
https://iceburn.medium.com/external-tool-configurations-for-mremoteng-d84b1f644ce3
http://forum.mremoteng.org/viewtopic.php?f=3&t=82
Concernant les outils externes indiqués dans cet article, voici le détail :
[SYSTEME][Windows] Compmgmt : lance la gestion de l’ordinateur à distance
- Nom du fichier : compmgmt.msc
- Arguments: /computer:%hostname%
[SYSTEME][Windows] Services : permet de voir l’ensemble des services présents sur l’ordinateur distant et de les contrôler
- Nom du fichier : services.msc
- Arguments: /computer:%hostname%
[SYSTEME][Windows] Gestion des connexions distantes : permet le contrôle des connexions distantes exécutées sur l’ordinateur distant et de les arrêter
- Nom du fichier : scripts\check_remote.bat
- Arguments: %hostname%
Le script en question :
@echo off & setlocal IF "%1"=="" ( GOTO MANUAL ) ELSE ( GOTO AUTO ) :AUTO set IP=%1 set username=%2 set password=%3 scripts\sysinternals\Psexec \\%IP% qwinsta /server:%IP% GOTO CHOICE :MANUAL set /p IP=IP ou nom DNS : scripts\sysinternals\Psexec \\%IP% qwinsta /server:%IP% GOTO CHOICE :CHOICE echo Selection : echo [1] deconnecter echo [2] sortir du programme SET /P selection=[1,2]? for %%? in (1) do if /I "%selection%"=="%%?" goto DISCONNECT for %%? in (2) do if /I "%selection%"=="%%?" goto ENDE goto CHOICE :DISCONNECT set /p ID=ID session: scripts\sysinternals\Psexec \\%IP% rwinsta /server:%IP% %ID% :ENDE PAUSE
[SYSTEME][Windows] cmd distant : lance une console cmd à distance sur l’ordinateur en question
- Nom du fichier : cmd
- Arguments: /k scripts\sysinternals\psexec \\%hostname% cmd.exe
[SYSTEME][Windows] Lister les fichiers ouverts : pour voir les fichiers ouverts sur l’ordinateur distant
- Nom du fichier : cmd
- Arguments: /k scripts\sysinternals\psfile \\%hostname%
[SYSTEME][Windows] Afficher SID : affiche le SID de l’ordinateur distant
- Nom du fichier : cmd
- Arguments: /k scripts\sysinternals\psgetsid \\%hostname%
[AUDIT][Windows] Rapport complet avec Sydi : génère un rapport exhaustif concernant l’ordinateur distant au format Word
- Nom du fichier : cmd
- Arguments: /k cscript scripts\sydi\sydi-server.vbs -wabefghipPqrsu -racdklp -ew -f10 -d -t%hostname%
Très pratique lorsqu’on vous demande si vous avez documenté votre installation, cela permet de générer, à la volée, un rapport extrêmement complet :
[SYSTEME][Windows] Liste des utilisateurs connectés
- Nom du fichier : cmd
- Arguments: /k scripts\sysinternals\psloggedon \\%hostname%
[INTERNE] Afficher les informations / mots de passe mRemoteNG
- Nom du fichier : cmd
- Arguments: /c echo Host: %hostname% & echo Domain: %domain% & echo User: %username% & echo Password: %password% & echo. & pause
[PM] Deployer et démarrer serveur VNC : permet d’installer tightvnc serveur en tant que service à distance et de le démarrer pour prendre le contrôle du poste utilisateur (port 5900)
- Nom du fichier : scripts\remote.bat
- Arguments: %hostname%
Pour rappel, voici le script « remote.bat » en question :
@echo off & setlocal IF "%1"=="" ( GOTO MANUAL ) ELSE ( GOTO AUTO ) :AUTO set IP=%1 GOTO DEPLOY :MANUAL set /p IP=IP ou nom DNS : GOTO DEPLOY :DEPLOY robocopy scripts\remote\Remote \\%IP%\admin$\Remote /MIR scripts\sysinternals\psexec \\%IP% reg import C:\Windows\Remote\remote.reg scripts\sysinternals\psexec \\%IP% sc create tvncserver binPath= "\"C:\Windows\Remote\VNC\tvnserver.exe\" -service" scripts\sysinternals\psservice \\%IP% start tvncserver timeout 2
Et le « remote.reg » (à adapter à vos besoins, le mot de passe est Secure!) :
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\TightVNC] [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\TightVNC\Components] "TightVNC Server"="1" [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\TightVNC\Server] "AcceptHttpConnections"=dword:00000000 "AcceptRfbConnections"=dword:00000001 "AllowLoopback"=dword:00000001 "AlwaysShared"=dword:00000000 "BeepConnect"=dword:00000000 "BeepDisconnect"=dword:00000000 "BlankScreen"=dword:00000000 "BlockLocalInput"=dword:00000000 "BlockRemoteInput"=dword:00000000 "DisconnectAction"=dword:00000000 "DisconnectActionService"=dword:00000001 "DisconnectClients"=dword:00000001 "EnableFileTransfers"=dword:00000001 "EnableUrlParams"=dword:00000001 "GrabTransparentWindows"=dword:00000001 "IpAccessControl"="" "LocalInputPriority"=dword:00000000 "LocalInputPriorityTimeout"=dword:00000003 "LogLevel"=dword:00000000 "LoopbackOnly"=dword:00000000 "NeverShared"=dword:00000000 "Password"=hex:d7,a5,14,d8,c5,56,aa,de "PollingInterval"=dword:0000012c "QueryAcceptOnTimeout"=dword:00000000 "QueryTimeout"=dword:0000003c "RemoveAero"=dword:00000000 "RemoveWallpaper"=dword:00000001 "RfbPort"=dword:0000170c "RunControlInterface"=dword:00000000 "SaveLogToAllUsersPath"=dword:00000000 "UseControlAuthentication"=dword:00000000 "UseVncAuthentication"=dword:00000001 "VideoRecognitionInterval"=dword:00000bb8 "DisplayClientIpAddress"=dword:00000000 "AuthClientMessage"=""
[APP] FileZilla FTP : pour se connecter en FTP en utilisant filezilla
- Nom du fichier : « C:\Program Files\FileZilla FTP Client\filezilla.exe »
- Arguments: sftp://%Username%:%Password%@%Hostname%
[PM] Démarrer serveur VNC : pour démarrer tightVNC serveur sur l’ordinateur distant
- Nom du fichier : cmd
- Arguments: /k scripts\sysinternals\psservice \\%hostname% start tvncserver
[RESEAU] NetStat (ports ouverts) : afficher la liste des ports ouverts de l’ordinateur distant
- Nom du fichier : cmd
- Arguments: /k scripts\sysinternals\psexec.exe \\%hostname% netstat -anb
[RESEAU] nslookup (résolution DNS)
- Nom du fichier : cmd
- Arguments: /k nslookup %hostname%
[RESEAU] Ping
- Nom du fichier : cmd
- Arguments: /k ping -t %hostname%
[SYSTEME][Windows] Liste des processus (script powershell)
- Nom du fichier : powershell
- Arguments: -noexit Get-wmiobject win32_process -computername %hostname% | Select-Object __server,name,processid,sessionid,vm,ws,description,executablepath,osname,windowsversion,__path | Out-GridView
[CONNEXION] RDP /admin
- Nom du fichier : cmd
- Arguments: /c mstsc /v:%hostname%:3389 /admin
[SYSTEME][Windows] Liste des partages (script powershell)
- Nom du fichier : powershell
- Arguments: -noexit Get-WmiObject win32_share -computer %hostname%|sort name|fl
[PM] Stop serveur VNC : arrête le serveur VNC sur le poste distant
- Nom du fichier : cmd
- Arguments: /k scripts\sysinternals\psservice \\%hostname% stop tvncserver
[CONNEXION] TightVNC : lance le client tightvnc pour se connecter en VNC sur l’ordinateur distant
- Nom du fichier : scripts\tightvnc\tvnviewer.exe
- Arguments: %Hostname%::%Port% -scale=auto -password=%Password% -viewonly=%UserField%
[RESEAU] Traceroute
- Nom du fichier : cmd
- Arguments: /c set /P = | tracert %HostName%
[APP] Lancer VMware Vsphere
- Nom du fichier : C:\Program Files (x86)\VMware\Infrastructure\Virtual Infrastructure Client\Launcher\VpxClient.exe
[APP] WinSCP : se connecte en SCP sur le serveur distant
- Nom du fichier : scp://%Username%:%Password%@%Hostname%/
[RESAU][Linux] Wireshark : lance un tcpdump sur l’ordinateur distant et récupère les trames sur l’application Wireshark locale du poste pour analyse
- Nom du fichier : cmd
- Arguments: /K « »scripts\putty\plink.exe » -ssh -pw %Password% %Username%@%Hostname% « »tcpdump -ni eth0 -s 0 -w – not port 22″ » | « C:\Program Files\Wireshark\Wireshark.exe » -k -i -«
[RESEAU] ZenMap (scan approfondi des ports)
- Nom du fichier : C:\Program Files (x86)\Nmap\zenmap.exe
- Arguments: -p « Quick scan plus » -t %Hostname%
[PM] Suppression serveur VNC : supprime le service tvncserver sur l’ordinateur distant
- Nom du fichier : cmd
- Arguments: /k scripts\sysinternals\psexec \\%hostname% sc delete tvncserver