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

Wenn der Chef eines Tages die Frage aufwirft: "Warum haben einige Leute Fernzugriff auf den Arbeitscomputer, ohne zusätzliche Berechtigungen für die Verwendung zu erhalten?",

Entsteht die Aufgabe, die Lücke zu "schließen".





Es gibt zahlreiche Anwendungen für die Fernsteuerung über das Netzwerk: Chrome-Remotedesktop, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control usw. Wenn der Chrome-Remotedesktop über ein offizielles Handbuch zur Bekämpfung der Verfügbarkeit des Zugriffs auf den Dienst verfügt, gelten für TeamViewer zeitliche oder zeitliche Lizenzbeschränkungen Vom Netzwerk und den Benutzern, die auf die eine oder andere Weise "die Zähne zusammenbeißen", "glänzen" die Admins, dann der Favorit von vielen für den persönlichen Gebrauch - AnyDesk erfordert bisher besondere Aufmerksamkeit, insbesondere wenn der Chef "Nein!" sagte.

Wenn Sie wissen, was das Blockieren eines Netzwerkpakets durch seinen Inhalt bedeutet und Sie damit zufrieden sind, ist der Rest des Materials

nicht für Sie bestimmt.


Auf der Website selbst wird angegeben , was für das Programm zulässig sein soll. Der DNS- Eintrag * .net.anydesk.com wurde blockiert . Aber AnyDesk ist nicht einfach, es ist nicht wichtig, einen Domainnamen zu blockieren.



Update 15.08.
Die richtige Lösung zum Blockieren von AnyDesk vorgeschlagen prymalbeets123::
relays.net.anydesk.com



[bash#]host relays.net.anydesk.com



391 . , .





Einmal löste ich das Problem des Blockierens von "Anyplace Control", das mit einer zweifelhaften Software zu uns kam, und es wurde gelöst, indem nur wenige IPs blockiert wurden (ich versicherte das Antivirenprogramm). Die Aufgabe mit AnyDesk, nachdem ich mehr als ein Dutzend IP-Adressen manuell gesammelt hatte, ermutigte mich , mich von routinemäßiger Handarbeit zu lösen.



Es wurde auch festgestellt, dass in "C: \ ProgramData \ AnyDesk" eine Reihe von Dateien mit Einstellungen usw. vorhanden sind und Ereignisse zu Verbindungen und Fehlern in der Datei ad_svc.trace erfasst werden .



1. Beobachtung



Wie bereits erwähnt, führte das Blockieren von * .anydesk.com zu keinen Ergebnissen bei der Arbeit des Programms. Es wurde beschlossen, das Verhalten des Programms in Stresssituationen zu analysieren . TCPView von Sysinternals in der Hand und los!







1.1. Es ist ersichtlich, dass mehrere für uns interessante Prozesse "hängen" und nur derjenige, der von außen mit der Adresse verbunden ist, für uns von Interesse ist. Die Ports, an die es angeschlossen ist, werden nach dem, was ich gesehen habe, aussortiert: 80, 443, 6568. :) 80 und 443 können wir definitiv nicht blockiert werden.



1.2. Nach dem Blockieren der Adresse über den Router wird leise eine andere Adresse ausgewählt.





1.3. Die Konsole ist unser ALLES! Wir bestimmen die PID und hier hatte ich ein wenig Glück, dass AnyDesk vom Dienst installiert wurde. Die erforderliche PID ist die einzige. 1.4. Die IP-Adresse des Service-Servers ermitteln wir anhand der Prozess-PID.


2. Vorbereitung



Da das Programm zum Erkennen von IP-Adressen wahrscheinlich nur auf meinem PC funktioniert, habe ich keine Einschränkungen hinsichtlich Bequemlichkeit und Faulheit, daher C #.



2.1. Es ist bereits bekannt, dass alle Methoden zur Identifizierung der gewünschten IP-Adresse implementiert sind.



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   
}


Ebenso finden wir den Dienst, der die Verbindung hergestellt hat, ich werde nur die Hauptleitung geben



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


Das Ergebnis davon wird sein:





Extrahieren Sie aus der Zeile ähnlich wie im vorherigen Schritt die dritte Spalte und entfernen Sie alles nach dem ":". Als Ergebnis haben wir unsere gewünschte IP.



2.2. IP-Blockierung in Windows. Wenn Linux über Blackhole und iptables verfügt, erwies sich die Methode zum Blockieren einer IP-Adresse in einer Zeile ohne Verwendung einer Firewall unter Windows als ungewöhnlich,

aber welche Tools waren ...



route add __IP_ mask 255.255.255.255 10.113.113.113 if 1 -p


Der Schlüsselparameter " if 1 " ist das Senden der Route an Loopback (Sie können die verfügbaren Schnittstellen anzeigen, indem Sie den Routendruck ausführen). UND WICHTIG! Jetzt muss das Programm mit Administratorrechten ausgeführt werden , da das Ändern der Route eine Erhöhung erfordert.



2.3. Das Anzeigen und Speichern der erkannten IP-Adressen ist eine triviale Aufgabe und bedarf keiner Erläuterung. Wenn Sie darüber nachdenken, können Sie auch die Datei ad_svc.trace von AnyDesk selbst verarbeiten, aber ich habe nicht sofort darüber nachgedacht + möglicherweise gibt es eine Einschränkung.



2.4. Das seltsame ungleichmäßige Verhalten des Programms besteht darin, dass der Taskkill-Prozess des Dienstes in Windows 10 automatisch neu gestartet wird. In Windows 8 wird er beendet, wobei nur der Konsolenprozess übrig bleibt und ohne erneute Verbindung im Allgemeinen unlogisch und ungenau ist.



Durch Entfernen des Prozesses, der eine Verbindung zum Server hergestellt hat, können Sie die erneute Verbindung zur nächsten Adresse "erzwingen". Es ist ähnlich wie die vorherigen Befehle implementiert, daher zitiere ich nur:



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


Zusätzlich starten wir das AnyDesk-Programm.



 //      path_pro
if (File.Exists(path_pro)){ 
Process p1 = Process.Start(path_pro);}


2.5. Wir werden den Status von AnyDesk einmal pro Minute (oder öfter?) Überprüfen. Und wenn es verbunden ist, d.h. EINGESETZTE Verbindung - blockieren Sie diese IP und noch einmal von vorne - warten Sie, bis die Verbindung hergestellt ist, blockieren Sie und warten Sie.



3. Angriff Der



Code wurde "skizziert", um den Prozess zu visualisieren. Es wurde beschlossen, " + " die gefundene und blockierte IP anzugeben und " . " - um die Prüfung ohne erfolgreiche Verbindung von AnyDesk zu wiederholen.







Projektcode



Als Ergebnis ...





Das Programm funktionierte auf mehreren Computern mit unterschiedlichen Windows-Betriebssystemen mit AnyDesk-Versionen 5 und 6. In 500 Iterationen wurden etwa 80 Adressen gesammelt. Über 2500 - 87 und so weiter ...



Im Laufe der Zeit erreichte die Anzahl der blockierten IPs 100+.



Link zur endgültigen Textdatei (Blacklist) mit Adressen: >> eins << und >> zwei <<



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



Es gibt einen seltsamen Moment, laut den ersten Protokollen ist klar, dass die Adresse boot-01.net.anydesk.com an der Übertragung von Informationen beteiligt ist... Natürlich haben wir in der Regel alle * .net.anydesk.com-Hosts blockiert, aber das ist nicht sonderbar. Bei jedem normalen Ping von verschiedenen Computern gibt dieser Domänenname eine andere IP an. Check in Linux:



host boot-01.net.anydesk.com



Wie DNSLookup gibt nur eine IP-Adresse, aber diese Adresse ist variabel. Bei der Analyse einer TCPView-Verbindung geben wir PTR-Datensätze von IP-Adressen vom Typ Relay zurück - *. Net.anydesk.com .



Theoretisch: Da ein Ping manchmal an einen unbekannten nicht blockierten Host boot-01.net.anydesk.com geht, können wir diese IP finden und blockieren. Machen Sie diese Implementierung zu einem regulären Skript unter Linux, Sie müssen AnyDesk hier nicht installieren. Die Analyse ergab, dass sich diese IPs häufig " überlappen ""mit denen, die aus unserer Liste gefunden wurden. Vielleicht ist dies nur dieser Host, mit dem sich das Programm verbindet, bevor es nach bekannten IPs sucht. Wahrscheinlich werde ich den Artikel später mit dem zweiten Teil der Suche nach Hosts ergänzen, obwohl das Programm selbst im Moment nicht installiert wird externe Verbindung im Allgemeinen.



Update 15.08.2020 : Habr user @ prymalbeets123 machte mich darauf aufmerksam, dass es einen Host relays.net.anydesk.com gibtDies entspricht 391 IP-Adressen. Die Datei mit ihrer Liste finden Sie unter den obigen Links als korrekt. Es wird bemerkt, dass ich weniger Adressen durch Überwachen des AnyDesk-Programms gesammelt habe, aber es gibt solche, die nicht in der allgemeinen 391 enthalten sind und die durch "linke" Domainnamen aufgelöst werden. Es stellt sich heraus, dass ich auch die Adressen derjenigen "gesammelt" habe, die die Verbindung zu meinem Computer initiiert haben :).



Ich hoffe, Sie haben oben nichts Illegales gesehen, und die Entwickler von AnyDesk werden meine Handlungen sportlich behandeln.



All Articles