1. Introduction▲
Ce tutoriel a pour objectif de montrer comment réaliser et mettre en place une application sous Windows qui permettra à l'utilisateur d'un PC de l'isoler rapidement du réseau s'il le perçoit comme compromis par une éventuelle cyberattaque.
Lors d’une cyberattaque, on recommande généralement d’isoler l’ordinateur du réseau (coupure du Wi-Fi, du câble Ethernet, etc.) plutôt que de l’éteindre immédiatement, pour plusieurs raisons cruciales liées à la cyberinvestigation, à la préservation des preuves et à la compréhension de l’attaque.
Donc en résumé, l’isolation permet de stopper l’attaque tout en préservant l’environnement d’analyse. Éteindre l’ordinateur risque de faire perdre des preuves essentielles, nuisant à l’enquête et à la compréhension de l’incident.
Le principe de fonctionnement de la solution d'isolation proposée dans ce tutoriel s'appuie sur la création de tâches planifiées qui seront lancées depuis l'application. Ces mêmes tâches sont mises en œuvre grâce à des scripts.
2. Les scripts▲
Les tâches planifiées fonctionnent sur la base de scripts sous la forme de fichiers de commande qui agissent sur l’Ethernet, le Wi-Fi et le réseau local.
Il est intéressant de créer deux tâches.
- Une pour couper le réseau :
@echo off
netsh interface set interface "Ethernet" admin=disable
netsh interface set interface "Wi-Fi" admin=disable
netsh interface set interface "Connexion au réseau local" admin=disablePour le tutoriel, ce premier fichier est nommé : coupe_reseau.bat.
- Une autre pour éventuellement reconnecter au réseau :
@echo off
netsh interface set interface "Ethernet" admin=enable
netsh interface set interface "Wi-Fi" admin=enable
netsh interface set interface "Connexion au réseau local" admin=enableCe deuxième fichier est nommé : active_reseau.bat.
Ces fichiers sont à stocker dans un dossier sur le disque de chacun des ordinateurs à équiper.
Les cartes réseau ne doivent pas avoir été renommées, sinon il faudra adapter les commandes netsh.
3. Les tâches planifiées▲
Les tâches doivent être paramétrées sur le PC par un administrateur.
Sous Windows 10, se rendre dans le Planificateur de tâches.
Ensuite :
- Cliquez dans les actions sur Créer une tâche…
Dans l'onglet Général :
- Nommez la tâche ;
- Décrivez sommairement la tâche ;
- Cochez : Exécuter avec les autorisations maximales.
Dans l'onglet Actions :
- Cliquez sur Nouveau… pour ouvrir le formulaire Nouvelle action ;
- Sélectionnez l'Action : Démarrer un programme ;
- Renseignez dans Programme/script le chemin du fichier de commande de la tâche ;
- Cliquez sur OK.
Pour finir :
- Validez la tâche en cliquant sur OK du formulaire de création de tâches.
4. L'application▲
Tout d'abord, il faut deux icônes qui viendront se loger dans la zone de notification pendant le fonctionnement de l'application.
|
|
|
Mettez ces deux icônes dans le dossier de l'application.
Il faut aussi un fichier texte dans lequel sera simplement saisi le mot de passe qui permettra à un administrateur soit de reconnecter l'ordinateur au réseau, soit d'arrêter l'application. Ce fichier ne doit pas être stocké dans le dossier de l'application, mais dissimulé autant que possible sur le disque dur de la machine. Dans le tutoriel, ce fichier se nomme : mdpstop.txt.
4-1. Les composants et leurs propriétés▲
|
Composants |
Propriétés |
|
TForm |
BorderIcons : [] |
|
TBitBtn (QUITTER) |
Caption : QUITTER |
|
TBitBtn (CONNEXION) |
Caption : CONNEXION |
|
TLabel |
Caption : Mot de passe |
|
TEdit |
EchoMode : emPassword |
|
TEdit |
Name : EdMdps |
|
TRichMemo |
Alignment : taCenter |
|
TTrayIcon |
Hint : Double-clic sur cette icône pour isoler l'ordinateur en cas de cyberattaque. |
4-2. Le code▲
4-2-1. Les clauses uses▲
Dans Lazarus, en passant par Paquet → Online Package Manager, installez le paquet RichMemo.
Voici les clauses uses :
uses
Classes, SysUtils, process, Forms, Controls, Graphics,
Dialogs, Buttons, ExtCtrls, StdCtrls, RichMemo;4-2-2. Déclaration des variables et des procédures privées▲
Voici les déclarations à réaliser :
private
F: TextFile;
Stg: String;
AProcess: TProcess;
procedure TCoupeReseau;
procedure TConnexReseau;
procedure TMdpass;4-2-3. Les procédures de déconnexion et de reconnexion au réseau▲
Ces procédures lancent les tâches planifiées vues auparavant.
- Procédure de déconnexion TCoupeReseau :
procedure TF_StopRes.TCoupeReseau; // Procédure de déconnexion du réseau
begin
AProcess := TProcess.Create(nil);
try
AProcess.Executable := 'schtasks';
AProcess.Parameters.Add('/run');
AProcess.Parameters.Add('/tn');
AProcess.Parameters.Add('CoupeReseau'); // Nom de la tâche planifiée
AProcess.Options := [poNoConsole, poWaitOnExit];
AProcess.Execute;
F_StopRes.Color:= clRed; // La forme passe au rouge
TIconSt.Icon.LoadFromFile('IcoResNOK.ico'); // Affichage icône PC déconnecté du réseau
ShowMessage('La coupure réseau a été déclenchée. Votre ordinateur est isolé du réseau.');
F_StopRes.Show; // Montre la forme de l'application
finally
AProcess.Free;
end;
end;- Procédure de connexion TActiveReseau :
procedure TF_StopRes.TConnexReseau; // procédure de connexion au réseau
begin
If EdMdp.Text <> EdMdps.Text Then
begin
ShowMessage('Vous devez posséder le mot de passe pour vous reconnecter, sinon veuillez contacter votre administrateur.');
EdMdp.Text:= '';
end
Else
begin
AProcess := TProcess.Create(nil);
try
AProcess.Executable := 'schtasks';
AProcess.Parameters.Add('/run');
AProcess.Parameters.Add('/tn');
AProcess.Parameters.Add('ConnexReseau'); // Nom de la tâche planifiée
AProcess.Options := [poNoConsole, poWaitOnExit];
AProcess.Execute;
F_StopRes.Color:= clGreen; // La forme passe au vert
TIconSt.Icon.LoadFromFile('IcoResOK.ico'); // Affichage icône PC connecté au réseau
ShowMessage('La connexion réseau a été enclenchée. Votre ordinateur est connecté au réseau.');
F_StopRes.Hide; // Cache la forme de l'application
finally
EdMdp.Text:= ''; // Le mot de passe saisi est effacé
AProcess.Free;
end;
end;
end;Pour reconnecter le PC au réseau ou stopper l'application, il est nécessaire d'avoir un mot de passe. Celui-ci sera inscrit dans un fichier texte qui sera caché sur le disque de la machine.
Dans ce tutoriel, le fichier est nommé : mdpstop.txt.
La procédure nécessaire à créer est la suivante :
procedure TF_StopRes.TMdpass; //Procédure d'association du mot de passe du fichier prévu à cet effet.
begin
AssignFile(F,'C:\Chemin du fichier\mdpstop.txt'); // Associe la variable F au fichier texte
Reset(F); // Ouvre le fichier sans le modifier
Readln(F,Stg); // Lit le mot de passe dans le fichier texte
EdMdps.Text:= Stg; // Affiche dans EdMdps le contenu de la variable Stg
CloseFile(F); // Ferme l'association entre la variable F et le fichier texte
end;4-2-4. Les commandes d'utilisation de l'application▲
Au démarrage de l'application sur la création de la forme, le mot de passe de reconnexion au réseau est associé et l'icône
apparaît dans la zone de notification.
procedure TF_StopRes.FormCreate(Sender: TObject);
begin
Tmdpass; // Association au fichier du mot de passe
TIconSt.Icon.LoadFromFile('IcoResOK.ico'); // Chargement de l'icône PC connecté au réseau
TIconSt.Visible:= True;
end;Pour isoler son PC du réseau, l'utilisateur doit double-cliquer sur l'icône
dans la zone de notification.
|
|
Procédure associée au double-clic :
procedure TF_StopRes.TIconStDblClick(Sender: TObject); // Isoler le PC du réseau
begin
if F_StopRes.Color = clGreen then
TCoupeReseau
else
Exit;
end;Le double-clic sur l'icône a un effet seulement si la forme de l'application est verte.
Quand l'utilisateur a double-cliqué, il est informé de l'isolement de son PC du réseau par un message.
|
|
La forme de l'application passe au rouge et elle donne à l'utilisateur les consignes à suivre.
L'icône dans la zone notification est alors celle-ci :
. Elle indique la déconnexion du réseau.
|
|
La personne qui souhaite reconnecter la machine au réseau doit posséder le mot de passe.
Lors du clic sur le bouton CONNEXION, la procédure TActiveReseau est lancée.
procedure TF_StopRes.BBtnConnClick(Sender: TObject); // Connecter le PC au réseau
begin
TConnexReseau;
end;Si le clic est réalisé avant ou après avoir saisi un mot de passe erroné, un message d'information apparaît :
|
|
Si au contraire le mot de passe saisi est valide, alors que la forme de l’application repasse au vert, le message suivant apparaît :
|
|
Pour arrêter l'application, il faut saisir le mot de passe et cliquer sur le bouton QUITTER.
procedure TF_StopRes.BBtnQuitClick(Sender: TObject);
begin
if EdMdp.Text <> EdMdps.Text then
begin
ShowMessage('Vous devez posséder le mot de passe pour arrêter l''application, sinon veuillez contacter votre administrateur.');
EdMdp.Text:= '';
end
else
Application.Terminate;
end;Quand on veut stopper l'application en utilisant le bouton QUITTER sans avoir le mot de passe valide, on voit le message suivant :
|
|
Quand on arrête l'application avec le bouton QUITTER, l'icône
dans la zone de notification disparaît et l'ordinateur reste déconnecté du réseau.
4-2-5. Masquer la forme au démarrage de l'application▲
Au démarrage, il est nécessaire que la forme de l'application reste invisible pour l'utilisateur de l'ordinateur. Il faut alors l'inscrire au niveau du code source :
begin
RequireDerivedFormResource:=True;
Application.Scaled:=True;
{$PUSH}{$WARN 5044 OFF}
Application.MainFormOnTaskbar:=True;
{$POP}
Application.Initialize;
Application.CreateForm(TF_StopRes, F_StopRes);
Application.ShowMainForm := False; // Ne montre pas le formulaire principal
Application.Run;
end.5. Pour le déploiement▲
Comme vu précédemment, c'est un administrateur qui paramètre les tâches planifiées.
Ensuite, pour un utilisateur spécifique, celui-ci doit installer le raccourci de l'application dans le dossier :
C:\Users\Nom de session de l'utilisateur\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Ainsi, l'application est lancée au démarrage et de manière transparente pour l'utilisateur.
Pour un déploiement pour tous les utilisateurs du PC, l'administrateur doit installer le raccourci de l'application dans le dossier :
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
Faites apparaître l'icône dans la zone de notification.
Pour aller plus loin : il serait intéressant d'automatiser la mise en place des tâches planifiées lors de la mise en service de l'application.
6. Conclusion▲
Voici le terme de ce tutoriel qui vous a amené à créer et mettre en place une application qui permet à un utilisateur d'isoler son ordinateur en cas notamment de cyberattaque.
Pensez à bien dissimuler les fichiers de commande des tâches planifiées ainsi que celui du mot de passe.
Vous pouvez apporter à cette application des modifications que je vous invite d'ailleurs à partager.
7. Remerciements▲
Ici, je tiens à remercier Alcatîz pour l’intérêt qu’il a porté au tutoriel proposé ainsi que pour sa relecture technique.
Je remercie ici aussi laurent_ott et Christophe pour leurs remarques constructives.
Je remercie également f-leb pour la relecture orthographique sans quoi un tutoriel peut s'avérer difficile à lire et par la même perdre de sa qualité.











