Wenn eines schönen Tages der Chef die Frage aufwirft: „Warum haben einige ohne zusätzliche Erlaubnis Zugriff auf den Arbeitscomputer?“,
stellt sich die Aufgabe, eine „Hintertür“ zu schließen.

Es gibt zahlreiche Anwendungen zur Fernsteuerung im Netzwerk: Chrome Remote Desktop, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control und mehr. Während Chrome Remote Desktop ein offizielles Handbuch zur Bekämpfung des Zugriffs auf den Dienst hat, berichtet TeamViewer von Lizenzbeschränkungen bezüglich der Zeit oder Anfragen aus dem Netzwerk, und die Nutzer gehen, ob sie wollen oder nicht, „mit zusammengebissenem Zahn“ bei den Admins einher, scheint der Liebling vieler für den persönlichen Gebrauch – AnyDesk – besondere Aufmerksamkeit zu erfordern, insbesondere wenn der Chef „Verboten!“ gesagt hat.

Wenn Sie wissen, was die Blockierung von Netzwerkpaketen anhand ihres Inhalts bedeutet und damit einverstanden sind, dann ist der restliche Stoff
nicht für Sie. Wenn man versucht, vom Gegenteil auszugehen, wird auf jeden Fall
darauf hingewiesen, was für die Funktionsweise des Programms erlaubt sein sollte, entsprechend wurde der DNS-Eintrag *.net.anydesk.com blockiert. Aber AnyDesk ist nicht so einfach, die Blockierung des Domainnamens kümmert ihn nicht.Einst hatte ich die Aufgabe gelöst, „Anyplace Control“ zu blockieren, das uns mit einer fragwürdigen Software erreicht hat, und sie wurde durch die Blockierung von nur wenigen IP-Adressen gelöst (ich habe den Antivirus abgesichert). Die Aufgabe mit AnyDesk, nachdem ich manuell mehr als ein Dutzend IP-Adressen gesammelt hatte,
motivierte mich, vom routinemäßigen manuellen Arbeiten abzugehen. Es wurde außerdem festgestellt, dass sich in „C:ProgramDataAnyDesk“ eine Reihe von Dateien mit Einstellungen usw. befinden, und in der Datei
ad_svc.trace werden Ereignisse zu Verbindungen und Fehlschlägen gesammelt. 1. Beobachtung
Wie bereits erwähnt, hat die Blockierung von *.anydesk.com keine Ergebnisse in der Funktionsweise des Programms erbracht, also wurde beschlossen,
das Verhalten des Programms in stressigen Situationen zu analysieren. TCPView von Sysinternals in die Hände und los!1.1. Es ist zu sehen, dass mehrere für uns interessante Prozesse „hängen“, und nur derjenige, der sich mit einer externen Adresse verbindet, interessiert uns. Die Ports, zu denen sie sich verbinden, werden durchgegangen, und soweit ich gesehen habe, sind dies: 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.
1.2. Nach der Blockierung der Adresse über den Router kann problemlos eine andere Adresse ausgewählt werden.

1.3. Die Konsole ist unser Alles! Wir bestimmen die PID und ich hatte ein wenig Glück, dass AnyDesk vom Dienst installiert wurde, somit war die gesuchte PID die einzige.
1.4. Wir bestimmen die IP-Adresse des Serverdienstes anhand der PID des Prozesses.

2. Vorbereitung
Da das Programm zur Ermittlung von IP-Adressen wahrscheinlich nur auf meinem PC arbeiten wird, habe ich keine Einschränkungen bezüglich Komfort und Faulheit, daher C#.
2.1. Alle Methoden zur Ermittlung der gesuchten IP-Adresse sind bereits bekannt, es bleibt nur die Umsetzung.
string pid1_; //wir erfahren die 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(','); //wir konvertieren die Antwort in ein Array
pid1_ = pid1[1].Replace(""", ""); //wir nehmen das 2. Element ohne Anführungszeichen
}Ähnlich finden wir den Dienst, der die Verbindung hergestellt hat, ich werde nur die Hauptzeile angeben.
p.StartInfo.Arguments = " /c " netstat -n -o | findstr /I " + pid1_ + " | findstr "ESTABLISHED""";Das Ergebnis wird sein:
![]()
Wir extrahieren aus der Zeile, ähnlich wie im vorhergehenden Schritt, die 3. Spalte und entfernen alles, was nach ":" kommt. Das Ergebnis ist unsere gesuchte IP.
2.2. IP-Blockierung in Windows. Während es in Linux Blackhole und iptables gibt, stellte sich die Methode zur Blockierung einer IP-Adresse in einer Zeile ohne Verwendung einer Firewall in Windows als ungewohnt heraus,
aber welche Werkzeuge waren verfügbar…
route add unser_gefunden_IP_Adresse mask 255.255.255.255 10.113.113.113 if 1 -pDer Schlüsselparameter "if 1" sendet die Route an die Loopback (Die verfügbaren Schnittstellen können durch Ausführen von route print angezeigt werden). Und WICHTIG! Das Programm muss jetzt mit Administratorrechten ausgeführt werden, da die Änderung der Route erhöhte Rechte erfordert.
2.3. Die Anzeige und Speicherung der ermittelten IP-Adressen ist trivial und benötigt keine weiteren Erklärungen. Wenn man darüber nachdenkt, könnte man auch die Datei werden Ereignisse zu Verbindungen und Fehlschlägen gesammelt. von AnyDesk selbst verarbeiten, aber daran habe ich nicht sofort gedacht + es könnte darauf Einschränkungen geben.
2.4. Das seltsame unterschiedliche Verhalten des Programms besteht darin, dass beim „taskkill“ des Dienstprozesses in Windows 10 dieser automatisch neu gestartet wird, in Windows 8 wird er beendet, wobei nur der Konsolenprozess bleibt und keine Wiederverbindung erfolgt, insgesamt unlogisch und ungenau.
Das Entfernen des mit dem Server verbundenen Prozesses ermöglicht es, eine "zwangsweise" Wiederverbindung zur nächsten Adresse herzustellen. Es wird analog zu den vorherigen Befehlen realisiert, daher führe ich nur Folgendes auf:
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 werden den Status von AnyDesk einmal pro Minute (oder öfter?) überprüfen, und wenn es verbunden ist, d.h. die Verbindung ESTABLISHED — diese IP blockieren und alles wieder von vorne — warten, bis es sich erneut verbindet, blockieren und warten.
3. Angriff
Es wurde "Code" skizziert, um den Prozess zu visualisieren, deshalb beschlossen wir "+" die gefundene und blockierte IP anzugeben, und "." — die erneute Überprüfung ohne erfolgreiche Verbindung von Seiten von AnyDesk.

→
Als Ergebnis…

Das Programm lief auf mehreren Computern mit verschiedenen Windows-Betriebssystemen und den Versionen AnyDesk 5 und 6. Bei 500 Iterationen wurden etwa 80 Adressen gesammelt. Bei 2500 — 87 und so weiter…
Im Laufe der Zeit stieg die Anzahl der blockierten IPs auf über 100.
Link zur endgültigen Textdatei mit den Adressen: und
Die Sache ist erledigt! Der Pool der IP-Adressen wurde über das Skript zu den Regeln des Haupt-Routers hinzugefügt, und AnyDesk kann einfach keine externe Verbindung herstellen.
Es gibt einen seltsamen Punkt, aus den ursprünglichen Logs ist ersichtlich, dass bei der Informationsübertragung die Adresse boot-01.net.anydesk.com. Wir haben natürlich alle Hosts *.net.anydesk.com mit einer allgemeinen Regel blockiert, aber die Seltsamkeit liegt nicht darin. Bei einem gewöhnlichen Ping von verschiedenen Computern gibt dieser Domainname eine unterschiedliche IP zurück. Überprüfung in Linux:
host boot-01.net.anydesk.com
wie auch DNSLookup geben nur eine IP-Adresse zurück, aber diese Adresse ist variabel. Bei der Analyse der Verbindungen gibt uns TCPView PTR-Einträge von IP-Adressen des Typs relay-*.net.anydesk.com.
Theoretisch: da der Ping manchmal auf einen unbekannten, nicht blockierten Host geht, boot-01.net.anydesk.com können wir diese IPs finden und blockieren; diese Implementierung kann mit einem gewöhnlichen Skript unter Linux gemacht werden, hier braucht man AnyDesk nicht zu installieren. Die Analyse zeigte, dass diese IPs oft "übereinstimmen" mit denen in unserer Liste. Möglicherweise ist es genau dieser Host, zu dem sich das Programm verbindet, bevor es beginnt, bekannte IPs "durchzuprobieren". Wahrscheinlich werde ich den Artikel später um einen zweiten Teil über die Suche nach Hosts erweitern, obwohl das Programm momentan im Netzwerk keine externe Verbindung überhaupt herstellt.
Ich hoffe, Sie haben nichts Illegales in dem oben Gesagten gesehen, und die Entwickler von AnyDesk werden meine Handlungen sportlich betrachten.
Quelle: habr.com
