Analyse der Möglichkeit, eine Anwendung zur Fernsteuerung von Computern über das Netzwerk zu blockieren, am Beispiel von AnyDesk

Wenn eines Tages der Chef die Frage aufwirft: „Warum haben einige ohne zusätzliche Berechtigungen Zugriff auf den Arbeitscomputer?“,
entsteht die Aufgabe, ein „Loch“ zu schließen.

Analyse der Möglichkeit, eine Anwendung zur Fernsteuerung von Computern über das Netzwerk zu blockieren, am Beispiel von AnyDesk
Es gibt zahlreiche Anwendungen zur Fernsteuerung: Chrome Remote Desktop, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control usw. Während Chrome Remote Desktop ein offizielles Handbuch zur Bekämpfung des Zugriffs auf den Dienst hat, hat TeamViewer Lizenzbeschränkungen hinsichtlich der Zeit oder Anfragen aus dem Netzwerk, und die Nutzer scheinen unweigerlich bei den Admins „aufzufallen“. Der beliebte Favorit für den persönlichen Gebrauch – AnyDesk – erfordert besondere Aufmerksamkeit, vor allem wenn der Chef gesagt hat „Das darf nicht sein!“.

Analyse der Möglichkeit, eine Anwendung zur Fernsteuerung von Computern über das Netzwerk zu blockieren, am Beispiel von AnyDesk
Wenn Sie wissen, was eine Paketblockierung basierend auf dem Inhalt bedeutet und Sie damit einverstanden sind, dann ist das restliche Material
nicht für Sie. Versuchend, vom Gegenteil auszugehen, wird

darauf hingewiesen, was für das Funktionieren des Programms erlaubt sein sollte, entsprechend wurde der DNS-Eintrag Webseite *.net.anydesk.com blockiert. *.net.anydesk.com. Aber AnyDesk ist nicht einfach, die Blockierung des Domänennamens hat ihm nichts ausgemacht.

Früher hatte ich die Aufgabe, 'Anyplace Control' zu blockieren, das mit fragwürdiger Software zu uns kam. Das Problem wurde gelöst, indem ich nur einige IP-Adressen blockiert habe (ich habe die Antiviren-Software zur Sicherheit hinzugezogen). Das Problem mit AnyDesk, nachdem ich manuell mehr als ein Dutzend IP-Adressen gesammelt hatte, motivierte mich, mich von der routinemäßigen manuellen Arbeit zu entfernen.

Es wurde auch festgestellt, dass sich unter 'C:ProgramDataAnyDesk' eine Reihe von Dateien mit Einstellungen usw. befindet, und in die Datei ad_svc.trace werden Ereignisse über Verbindungen und Fehler gesammelt.

1. Beobachtung

Wie bereits erwähnt, hat die Blockierung von *.anydesk.com keine Ergebnisse in der Programmarbeit gebracht, es wurde beschlossen, das Verhalten des Programms in Stresssituationen zu analysieren.TCPView von Sysinternals in die Hände und los!

Analyse der Möglichkeit, eine Anwendung zur Fernsteuerung von Computern über das Netzwerk zu blockieren, am Beispiel von AnyDesk

1.1. Es ist zu sehen, dass mehrere interessante Prozesse 'hängen', und nur derjenige, der sich mit einer externen Adresse verbindet, interessiert uns. Die Ports, zu denen die Verbindungen hergestellt werden, sind: 80, 443, 6568. 🙂 80 und 443 dürfen wir auf keinen Fall blockieren.

1.2. Nach der Blockierung der Adresse über den Router wird einfach eine andere Adresse ausgewählt.

Analyse der Möglichkeit, eine Anwendung zur Fernsteuerung von Computern über das Netzwerk zu blockieren, am Beispiel von AnyDesk

1.3. Die Konsole ist unser Alles! Wir bestimmen die PID und ich hatte etwas Glück, dass AnyDesk als Dienst installiert war, damit die gesuchte PID die einzige ist.
1.4. Bestimmung der IP-Adresse des Dienstes anhand der PID.

Analyse der Möglichkeit, eine Anwendung zur Fernsteuerung von Computern über das Netzwerk zu blockieren, am Beispiel von AnyDesk

2. Vorbereitung

Da das Programm zur Ermittlung von IP-Adressen wahrscheinlich nur auf meinem PC funktioniert, habe ich keine Einschränkungen in Bezug auf Komfort und Faulheit, deshalb C#.

2.1. Alle Methoden zur Ermittlung der gesuchten IP-Adresse sind bereits bekannt, es bleibt nur die Implementierung.

string pid1_; // Bestimmung der PID des AnyDesk-Dienstes
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(','); //Antwort in Array umwandeln
 pid1_ = pid1[1].Replace(""" , ""); // Zweites Element ohne Anführungszeichen nehmen
}

Analog dazu ermitteln wir den Dienst, der die Verbindung hergestellt hat, ich gebe nur die Hauptzeile an.

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

Das Ergebnis ist:

Analyse der Möglichkeit, eine Anwendung zur Fernsteuerung von Computern über das Netzwerk zu blockieren, am Beispiel von AnyDesk
Aus der Zeile extrahieren wir ähnlich wie im vorherigen Schritt die dritte Spalte und entfernen alles nach ":". Als Ergebnis haben wir die gesuchte IP.

2.2. IP-Blockierung unter Windows. Während es in Linux Blackhole und iptables gibt, ist die Methode zur IP-Blockierung in einer Zeile ohne Firewall in Windows ungewohnt.
Aber die verfügbaren Tools waren...

route add unser_gefundenes_IP_Adresse mask 255.255.255.255 10.113.113.113 if 1 -p

Der Schlüsselparameter "if 1" sendet die Route an das Loopback (Die verfügbaren Schnittstellen können durch Ausführen von route print angezeigt werden). Und WICHTIG! Jetzt muss das Programm mit Administratorrechten, da die Änderung der Route erhöhte Privilegien erfordert.

2.3. Die Anzeige und Speicherung der ermittelten IP-Adressen ist trivial und benötigt keine weiteren Erklärungen. Man könnte auch die Datei ad_svc.trace von AnyDesk selbst verarbeiten, aber daran habe ich nicht sofort gedacht + möglicherweise gibt es Einschränkungen dafür.

2.4. Das seltsame, inkonsistente Verhalten des Programms besteht darin, dass der Prozessdienst unter Windows 10 bei „taskkill“ automatisch neu startet, während er in Windows 8 beendet wird und nur den Konsolenprozess übrig lässt, ohne eine erneute Verbindung herzustellen; alles in allem unlogisch und ungenau.

Das Entfernen des mit dem Server verbundenen Prozesses ermöglicht es, die Verbindung zum nächsten Standort zu „erzwingen“. Dies wird analog zu den vorherigen Befehlen realisiert, daher führe ich nur Folgendes an:

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

Zusätzlich starten wir das Programm AnyDesk.

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

2.5. Wir überprüfen den Status von AnyDesk einmal pro Minute (oder häufiger?), und wenn es verbunden ist, d.h. die Verbindung ESTABLISHED ist — diese IP blockieren, und alles von vorne — warten, bis es sich verbindet, blockieren und warten.

3. Angriff

Es wurde Code „geworfen“, um den Prozess zu visualisieren. Es wurde entschieden, "+" die gefundene und blockierte IP anzugeben, und "." — die Wiederholung der Überprüfung ohne erfolgreiche Verbindung von AnyDesk.

Analyse der Möglichkeit, eine Anwendung zur Fernsteuerung von Computern über das Netzwerk zu blockieren, am Beispiel von AnyDesk

Projektcode

Als Ergebnis…

Analyse der Möglichkeit, eine Anwendung zur Fernsteuerung von Computern über das Netzwerk zu blockieren, am Beispiel von AnyDesk
Das Programm lief auf mehreren Computern mit verschiedenen Windows-Betriebssystemen, mit den Versionen AnyDesk 5 und 6. Bei 500 Iterationen wurden etwa 80 Adressen gesammelt. Bei 2500 — 87 usw.…

Im Laufe der Zeit erreichte die Anzahl der blockierten IPs über 100.

Link zur finalen Textdatei mit den Adressen: eins und zwei

Die Aufgabe ist erledigt! Der Pool von IP-Adressen wurde über das Skript zu den Regeln des Hauptrouters hinzugefügt, und AnyDesk kann einfach keine externe Verbindung herstellen.

Es gibt eine merkwürdige Situation, laut den ursprünglichen Logs ist die Adresse an der Informationsübertragung beteiligt. boot-01.net.anydesk.com. Natürlich haben wir alle Hosts *.net.anydesk.com pauschal blockiert, aber das Merkwürdige ist etwas anderes. Bei jedem normalen Ping von verschiedenen Computern gibt dieser Domainname eine unterschiedliche IP-Adresse zurück. Überprüfung in Linux:

host boot-01.net.anydesk.com

und auch DNSLookup liefert nur eine IP-Adresse, aber diese Adresse ist variabel. Bei der Analyse der Verbindungen zeigt TCPView uns PTR-Einträge von IP-Adressen wie relay-*.net.anydesk.com.

Theoretisch: wenn der Ping manchmal zu einem unbekannten, nicht blockierten Host durchgeht, boot-01.net.anydesk.com könnten wir diese IPs finden und blockieren; dies könnte mit einem einfachen Skript unter Linux realisiert werden, hier muss AnyDesk nicht installiert werden. Die Analyse zeigte, dass diese IPs häufig "überlappen" mit denen aus unserer Liste. Möglicherweise ist dies genau der Host, zu dem das Programm verbindet, bevor es beginnt, bekannte IPs zu "durchforsten". Wahrscheinlich werde ich den Artikel später mit einem zweiten Teil über die Suche nach Hosts ergänzen, obwohl das Programm momentan innerhalb des Netzwerks überhaupt keine externe Verbindung herstellt.

Ich hoffe, Sie haben im oben Gesagten nichts Unrechtmäßiges gesehen und die Entwickler von AnyDesk nehmen mein Verhalten sportlich.

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster