Analyse de la possibilité de bloquer une application de contrôle à distance d'un ordinateur sur un réseau, en utilisant l'exemple d'AnyDesk

Lorsqu'un jour le patron pose la question : "Pourquoi certaines personnes ont accès à distance à un ordinateur de travail sans obtenir d'autorisations supplémentaires d'utilisation ?",
il y a une tâche pour "dissimuler" une échappatoire.

Analyse de la possibilité de bloquer une application de contrôle à distance d'un ordinateur sur un réseau, en utilisant l'exemple d'AnyDesk
Il existe de nombreuses applications de contrôle à distance sur le réseau : Bureau à distance Chrome, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control, etc. Si le bureau à distance Chrome dispose d'un manuel officiel pour lutter contre l'accès au service, TeamViewer a des restrictions de licence sur le temps ou les demandes du réseau et les utilisateurs "grincent des dents" en quelque sorte "brillent" avec les administrateurs, alors le favori de beaucoup pour un usage personnel - AnyDesk nécessite toujours une attention particulière, surtout si le patron a dit "Non!".

Analyse de la possibilité de bloquer une application de contrôle à distance d'un ordinateur sur un réseau, en utilisant l'exemple d'AnyDesk
Si vous savez ce qu'est le blocage d'un paquet réseau par son contenu et que cela vous convient, alors le reste du matériel
non voulu pour vous.

Essayer d'aller du contraire, en fait En ligne il dit ce qui devrait être autorisé pour que le programme fonctionne, respectivement, l'enregistrement DNS a été bloqué *.net.anydesk.com. Mais AnyDesk n'est pas simple, il ne se soucie pas de bloquer un nom de domaine.

Une fois, j'ai résolu le problème du blocage de "Anyplace Control" qui nous est venu avec un logiciel douteux, et il a été résolu en bloquant seulement quelques IP (j'ai sécurisé l'antivirus). Le problème avec AnyDesk, après avoir collecté manuellement plus d'une douzaine d'adresses IP, provoqué sortir du travail manuel routinier.

Il a également été constaté que dans "C: ProgramDataAnyDesk", il existe un certain nombre de fichiers avec des paramètres, etc., et dans le fichier ad_svc.trace les événements concernant les connexions et les échecs sont collectés.

1. Observation

Comme déjà mentionné, le blocage de *.anydesk.com n'a donné aucun résultat dans le programme, il a été décidé d'analyser comportement du programme dans des situations stressantes. TCPView de Sysinternals en main et c'est parti !

Analyse de la possibilité de bloquer une application de contrôle à distance d'un ordinateur sur un réseau, en utilisant l'exemple d'AnyDesk

1.1. On peut voir que plusieurs processus qui nous intéressent sont « suspendus », et seul celui qui communique avec l'adresse depuis l'extérieur nous intéresse. Les ports auxquels il se connecte sont déplacés, d'après ce que j'en ai vu : 80, 443, 6568. 🙂 80 et 443 nous ne pouvons définitivement pas les bloquer.

1.2. Après avoir bloqué l'adresse via le routeur, une autre adresse est sélectionnée discrètement.

Analyse de la possibilité de bloquer une application de contrôle à distance d'un ordinateur sur un réseau, en utilisant l'exemple d'AnyDesk

1.3. Notre console est TOUT ! Nous déterminons le PID et ensuite j'ai eu un peu de chance qu'AnyDesk soit installé par le service, respectivement, le PID que je cherchais est le seul.
1.4. Nous déterminons l'adresse IP du serveur de service par le PID du processus.

Analyse de la possibilité de bloquer une application de contrôle à distance d'un ordinateur sur un réseau, en utilisant l'exemple d'AnyDesk

2. Préparation

Étant donné que le programme de découverte des adresses IP ne fonctionnera probablement que sur mon PC, je n'ai aucune restriction sur la commodité et la paresse, donc C#.

2.1. Toutes les méthodes d'identification de l'adresse IP souhaitée sont déjà connues, il reste à les mettre en œuvre.

string pid1_;//узнаем PID сервиса AnyDesk
using (var p = new Process()) 
{p.StartInfo.FileName = "cmd.exe";
 p.StartInfo.Arguments = " /c "tasklist.exe /fi "imagename eq AnyDesk.exe" /NH /FO CsV | findstr "Services""";
 p.StartInfo.UseShellExecute = false;
 p.StartInfo.RedirectStandardOutput = true;
 p.StartInfo.CreateNoWindow = true;
 p.StartInfo.StandardOutputEncoding = Encoding.GetEncoding("CP866");
 p.Start();
 string output = p.StandardOutput.ReadToEnd();
 string[] pid1 = output.Split(',');//переводим ответ в массив
 pid1_ = pid1[1].Replace(""", "");//берем 2й элемент без кавычек
}

De même, on retrouve le service qui a établi la connexion, je ne donnerai que la ligne principale

p.StartInfo.Arguments = "/c " netstat  -n -o | findstr /I " + pid1_ + " | findstr "ESTABLISHED""";

dont le résultat sera :

Analyse de la possibilité de bloquer une application de contrôle à distance d'un ordinateur sur un réseau, en utilisant l'exemple d'AnyDesk
De la ligne, de la même manière qu'à l'étape précédente, nous extrayons la 3ème colonne et supprimons tout après le ":". En conséquence, nous avons notre adresse IP souhaitée.

2.2. Blocage IP sous Windows. Si Linux a Blackhole et iptables, la méthode de blocage d'une adresse IP sur une ligne, sans utiliser de pare-feu, s'est avérée inhabituelle sous Windows,
Mais quels outils étaient...

route add наш_найденный_IP_адрес mask 255.255.255.255 10.113.113.113 if 1 -p

Paramètre clé "Si 1" envoyer la route à Loopback (vous pouvez afficher les interfaces disponibles en exécutant route print ). Et IMPORTANT ! Maintenant, le programme doit être exécuté avec les droits d'administrateurcar le changement d'itinéraire nécessite du dénivelé.

2.3. Afficher et enregistrer les adresses IP identifiées est une tâche triviale et ne nécessite aucune explication. Si vous y réfléchissez, vous pouvez traiter le dossier ad_svc.trace AnyDesk lui-même, mais je n'y ai pas immédiatement pensé + peut-être y a-t-il une restriction.

2.4. L'étrange comportement inégal du programme est que lorsque le processus de service est «taskkilled» dans Windows 10, il redémarre automatiquement, dans Windows 8, il se termine, ne laissant que le processus de la console et sans se reconnecter, en général, il est illogique et inexact.

Supprimer un processus qui s'est connecté au serveur permet de "forcer" une reconnexion à l'adresse suivante. Il est implémenté de la même manière que les commandes précédentes, je donne donc uniquement :

p.StartInfo.Arguments = "/c taskkill /PID " + pid1_ + " /F";

De plus, lancez le programme AnyDesk.

 //запускаем программу которая расположена по пути path_pro
if (File.Exists(path_pro)){ 
Process p1 = Process.Start(path_pro);}

2.5. Nous vérifierons l'état d'AnyDesk une fois par minute (ou plus souvent ?), et s'il est connecté, c'est-à-dire s'il est connecté. connexion ÉTABLIE - bloquez cette adresse IP, et encore une fois - attendez qu'elle se connecte, bloquez et attendez.

3. Agression

Le code a été "rédigé", il a été décidé de visualiser le processus"+" spécifier l'IP trouvée et bloquée, et "." - vérification répétée sans connexion réussie depuis AnyDesk.

Analyse de la possibilité de bloquer une application de contrôle à distance d'un ordinateur sur un réseau, en utilisant l'exemple d'AnyDesk

Code de projet

En conséquence ...

Analyse de la possibilité de bloquer une application de contrôle à distance d'un ordinateur sur un réseau, en utilisant l'exemple d'AnyDesk
Le programme a fonctionné sur plusieurs ordinateurs avec différents systèmes d'exploitation Windows, avec les versions 5 et 6 d'AnyDesk. Environ 500 adresses ont été collectées en 80 itérations. Pour 2500 - 87 et ainsi de suite ...

Au fil du temps, le nombre d'adresses IP bloquées a atteint plus de 100.

Lien vers la finale fichier texte avec adresses : temps и два

C'est fait! Un pool d'adresses IP est ajouté aux règles du routeur principal via un script, et AnyDesk ne peut tout simplement pas créer de connexion externe.

Il y a un moment étrange, selon les journaux initiaux, il est clair que l'adresse est impliquée dans le transfert d'informations boot-01.net.anydesk.com. Nous avons bien sûr bloqué tous les hôtes *.net.anydesk.com en règle générale, mais ce n'est pas bizarre. Chaque fois qu'un ping normal provenant de différents ordinateurs, ce nom de domaine donne une adresse IP différente. Vérification sous Linux :

host boot-01.net.anydesk.com

comme DNSLookup, ils ne donnent qu'une seule adresse IP, mais cette adresse est variable. Lors de l'analyse d'une connexion TCPView, nous récupérons les enregistrements PTR d'adresses IP comme relais-*.net.anydesk.com.

Théoriquement : puisque le ping va parfois vers un hôte non bloqué inconnu boot-01.net.anydesk.com nous pouvons trouver ces adresses IP et bloquer, faire de cette implémentation un script régulier sous Linux OS, ici vous n'avez pas besoin d'installer AnyDesk. L'analyse a montré que ces adresses IP sont souvent "couper" avec ceux trouvés dans notre liste. Peut-être s'agit-il simplement de cet hôte, auquel le programme se connecte avant de commencer à "trier" les adresses IP connues. Probablement plus tard, je compléterai l'article avec la 2ème partie des recherches d'hôtes, bien que pour le moment le programme lui-même n'installe pas la jointure externe en général.

J'espère que vous n'avez rien vu d'illégal dans ce qui précède, et les créateurs d'AnyDesk traiteront mes actions de manière sportive.

Source: habr.com

Ajouter un commentaire