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

Wenn der Chef eines Tages die Frage stellt: „Warum haben manche Leute Fernzugriff auf einen Arbeitscomputer, ohne zusätzliche Nutzungsberechtigungen einzuholen?“,
Es besteht die Aufgabe, eine Lücke zu „verdecken“.

Analyse der Möglichkeit, eine Anwendung zur Fernsteuerung eines Computers über ein Netzwerk zu blockieren, am Beispiel von AnyDesk
Es gibt viele Anwendungen für die Fernsteuerung über das Netzwerk: Chrome Remote Desktop, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control usw. Wenn Chrome Remote Desktop über ein offizielles Handbuch zur Bekämpfung des Zugriffs auf den Dienst verfügt, gelten für TeamViewer Lizenzbeschränkungen hinsichtlich Zeit oder Anforderungen aus dem Netzwerk und Benutzer, die „die Zähne zusammenbeißen“, irgendwie mit den Admins „glänzen“, dann der Favorit vieler für den persönlichen Gebrauch – AnyDesk erfordert immer noch besondere Aufmerksamkeit, insbesondere wenn der Chef „Nein!“ sagte.

Analyse der Möglichkeit, eine Anwendung zur Fernsteuerung eines Computers über ein Netzwerk zu blockieren, am Beispiel von AnyDesk
Wenn Sie wissen, was das Blockieren eines Netzwerkpakets anhand seines Inhalts ist und es zu Ihnen passt, dann der Rest des Materials
nicht vorgesehen für euch.

Eigentlich versuche ich, vom Gegenteil auszugehen Webseite Dort steht, was erlaubt sein sollte, damit das Programm funktioniert bzw. der DNS-Eintrag blockiert wurde *.net.anydesk.com. Aber AnyDesk ist nicht einfach, es kümmert sich nicht um die Blockierung eines Domainnamens.

Einmal habe ich das Problem der Blockierung von „Anyplace Control“ gelöst, das mit einer dubiosen Software auf uns zukam, und es wurde durch die Blockierung nur einiger IPs gelöst (ich habe das Antivirenprogramm gesichert). Das Problem mit AnyDesk, nachdem ich mehr als ein Dutzend IP-Adressen manuell erfasst habe, provoziert Entfliehen Sie der routinemäßigen Handarbeit.

Es wurde außerdem festgestellt, dass in „C:ProgramDataAnyDesk“ eine Reihe von Dateien mit Einstellungen usw. vorhanden sind, und in der Datei ad_svc.trace Es werden Ereignisse zu Verbindungen und Ausfällen gesammelt.

1. Beobachtung

Wie bereits erwähnt, führte das Blockieren von *.anydesk.com im Programm zu keinen Ergebnissen, es wurde beschlossen, es zu analysieren Programmverhalten in Stresssituationen. TCPView von Sysinternals zur Hand und los!

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

1.1. Es ist ersichtlich, dass mehrere für uns interessante Prozesse „hängen“ und nur derjenige für uns von Interesse ist, der mit der Adresse von außen kommuniziert. Die Ports, zu denen die Verbindung hergestellt wird, sind, wie ich gesehen habe, ausgewählt: 80, 443, 6568. 🙂 Wir können 80 und 443 definitiv nicht blockieren.

1.2. Nach dem Blockieren der Adresse durch den Router wird stillschweigend eine andere Adresse ausgewählt.

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

1.3. Unsere Konsole ist ALLES! Wir ermitteln die PID und dann hatte ich etwas Glück, dass AnyDesk von dem Dienst installiert wurde bzw. die gesuchte PID die einzige ist.
1.4. Die IP-Adresse des Serviceservers ermitteln wir anhand der PID des Prozesses.

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

2. Vorbereitung

Da das Programm zum Ermitteln von IP-Adressen wohl nur auf meinem PC funktionieren wird, habe ich keine Einschränkungen hinsichtlich Komfort und Faulheit, also C#.

2.1. Alle Methoden zur Identifizierung der gewünschten IP-Adresse sind bereits bekannt, sie müssen noch implementiert werden.

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 gebe hier nur die Hauptleitung an

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

Das Ergebnis wird sein:

Analyse der Möglichkeit, eine Anwendung zur Fernsteuerung eines Computers über ein Netzwerk zu blockieren, am Beispiel von AnyDesk
Aus der Zeile extrahieren wir, ähnlich wie im vorherigen Schritt, die 3. Spalte und entfernen alles nach dem „:“. Dadurch haben wir unsere Wunsch-IP.

2.2. IP-Blockierung in Windows. Wenn Linux über Blackhole und iptables verfügt, erwies sich die Methode, eine IP-Adresse in einer Zeile zu blockieren, ohne eine Firewall zu verwenden, unter Windows als ungewöhnlich.
Aber welche Werkzeuge waren...

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

Schlüsselparameter "wenn 1" Senden Sie die Route an Loopback (Sie können die verfügbaren Schnittstellen anzeigen, indem Sie route print ausführen). Und WICHTIG! Jetzt muss das Programm ausgeführt werden mit Administratorrechtenweil eine Änderung der Route Höhenunterschiede erfordert.

2.3. Das Anzeigen und Speichern der ermittelten IP-Adressen ist eine triviale Aufgabe und bedarf keiner Erklärung. Wenn Sie darüber nachdenken, können Sie die Datei verarbeiten ad_svc.trace AnyDesk selbst, aber ich habe nicht sofort darüber nachgedacht + vielleicht gibt es eine Einschränkung dafür.

2.4. Das seltsame ungleiche Verhalten des Programms besteht darin, dass der Dienstprozess beim „Taskkillen“ in Windows 10 automatisch neu gestartet wird. In Windows 8 wird er beendet, sodass nur der Konsolenprozess übrig bleibt und keine erneute Verbindung hergestellt wird. Dies ist im Allgemeinen unlogisch und ungenau.

Durch das Löschen eines Prozesses, der eine Verbindung zum Server hergestellt hat, können Sie eine erneute Verbindung zur nächsten Adresse „erzwingen“. Die Implementierung ähnelt den vorherigen Befehlen, daher gebe ich nur Folgendes:

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

Starten Sie außerdem das AnyDesk-Programm.

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

2.5. Wir überprüfen einmal pro Minute (oder öfter?) den Status von AnyDesk und ob es verbunden ist, d. h. Verbindung hergestellt – blockieren Sie diese IP und noch einmal – warten Sie, bis die Verbindung hergestellt wird, blockieren Sie und warten Sie.

3. Angriff

Der Code wurde „entworfen“, es wurde beschlossen, den Prozess zu visualisieren.+„ Geben Sie die gefundene und blockierte IP an und „." - wiederholte Überprüfung ohne erfolgreiche Verbindung von AnyDesk.

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

Projektnummer

Als Ergebnis ...

Analyse der Möglichkeit, eine Anwendung zur Fernsteuerung eines Computers über ein Netzwerk zu blockieren, am Beispiel von AnyDesk
Das Programm funktionierte auf mehreren Computern mit unterschiedlichen Windows-Betriebssystemen, mit den AnyDesk-Versionen 5 und 6. In 500 Iterationen wurden etwa 80 Adressen gesammelt. Für 2500 - 87 und so weiter ...

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

Link zum Finale Textdatei mit Adressen: Zeit и два

Es ist vollbracht! Über ein Skript wird den Regeln des Hauptrouters ein Pool von IP-Adressen hinzugefügt, und AnyDesk kann einfach keine externe Verbindung herstellen.

Es gibt einen seltsamen Moment: Den ersten Protokollen zufolge ist klar, dass die Adresse an der Übermittlung von Informationen beteiligt ist boot-01.net.anydesk.com. Natürlich haben wir grundsätzlich alle *.net.anydesk.com-Hosts blockiert, aber das ist nichts Ungewöhnliches. Bei jedem normalen Ping von verschiedenen Computern gibt dieser Domänenname eine andere IP aus. Einchecken unter Linux:

host boot-01.net.anydesk.com

Wie DNSLookup geben sie nur eine IP-Adresse an, diese Adresse ist jedoch variabel. Beim Parsen einer TCPView-Verbindung erhalten wir PTR-Datensätze von IP-Adressen zurück wie Relay-*.net.anydesk.com.

Theoretisch: Da der Ping manchmal an einen unbekannten, nicht blockierten Host geht boot-01.net.anydesk.com Wir können diese IP finden und blockieren. Machen Sie diese Implementierung zu einem regulären Skript unter dem Linux-Betriebssystem. Hier müssen Sie AnyDesk nicht installieren. Die Analyse ergab, dass es sich bei diesen IPs häufig um „schneiden" mit denen, die aus unserer Liste gefunden wurden. Vielleicht ist dies nur dieser Host, zu dem sich das Programm verbindet, bevor es beginnt, bekannte IPs zu „aussortieren“. Wahrscheinlich werde ich den Artikel später mit dem 2. Teil der Hostsuche ergänzen, allerdings im Moment Das Programm selbst installiert im Allgemeinen keinen Outer Join.

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

Source: habr.com

Kommentar hinzufügen