Analyse van de mogelijkheid om een ​​applicatie te blokkeren voor computerbesturing op afstand via een netwerk, aan de hand van het voorbeeld van AnyDesk

Wanneer de baas op een dag de vraag stelt: "Waarom hebben sommige mensen externe toegang tot de werkcomputer, zonder aanvullende toestemming voor gebruik te verkrijgen?"
De taak ontstaat om de maas in de wet te ‘dichten’.

Analyse van de mogelijkheid om een ​​applicatie te blokkeren voor computerbesturing op afstand via een netwerk, aan de hand van het voorbeeld van AnyDesk
Er zijn tal van applicaties voor bediening op afstand over het netwerk: Chrome remote desktop, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control, etc. Als Chrome remote desktop een officiële handleiding heeft om de toegang tot de dienst tegen te gaan, heeft TeamViewer licentiebeperkingen op tijd of verzoeken van het netwerk en gebruikers "knarsen hun tanden" op de een of andere manier "schijnen" met de beheerders, dan is de favoriet van velen voor persoonlijk gebruik - AnyDesk vereist nog steeds speciale aandacht, vooral als de baas "Nee!"

Analyse van de mogelijkheid om een ​​applicatie te blokkeren voor computerbesturing op afstand via een netwerk, aan de hand van het voorbeeld van AnyDesk
Als je weet wat het blokkeren van een netwerkpakket op basis van de inhoud is en je bent er tevreden mee, dan volgt de rest van het materiaal
niet bedoeld Voor jou.

Ik probeer eigenlijk het tegenovergestelde te bereiken Online er staat wat moet worden toegestaan ​​om het programma te laten werken; dienovereenkomstig is het DNS-record geblokkeerd *.net.anydesk.com. Maar AnyDesk is niet eenvoudig; het maakt zich niet druk om het blokkeren van een domeinnaam.

Ooit heb ik het probleem opgelost van het blokkeren van “Anyplace Control”, dat met dubieuze software bij ons terechtkwam, en het werd opgelost door slechts een paar IP’s te blokkeren (ik maakte een back-up van de antivirus). Het probleem met AnyDesk, nadat ik handmatig meer dan een dozijn IP-adressen had verzameld, spoorde mij aan ontsnap aan routinematige handenarbeid.

Er werd ook ontdekt dat er in “C:ProgramDataAnyDesk” een aantal bestanden met instellingen, enz. zijn, en in het bestand ad_svc.trace Gebeurtenissen over verbindingen en storingen worden verzameld.

1. Observatie

Zoals reeds vermeld leverde het blokkeren van *.anydesk.com geen enkel resultaat op in de werking van het programma, er werd besloten om te analyseren programmagedrag in stressvolle situaties. TCPView van Sysinternals in uw handen en gaan!

Analyse van de mogelijkheid om een ​​applicatie te blokkeren voor computerbesturing op afstand via een netwerk, aan de hand van het voorbeeld van AnyDesk

1.1. Het is duidelijk dat verschillende processen die voor ons interessant zijn, "hangen", en alleen degene die van buitenaf met het adres communiceert, is voor ons interessant. De poorten waarmee het verbinding maakt, zijn geselecteerd op basis van wat ik zag: 80, 443, 6568. 🙂 We kunnen 80 en 443 absoluut niet blokkeren.

1.2. Nadat het adres via de router is geblokkeerd, wordt stilletjes een ander adres geselecteerd.

Analyse van de mogelijkheid om een ​​applicatie te blokkeren voor computerbesturing op afstand via een netwerk, aan de hand van het voorbeeld van AnyDesk

1.3. De console is ons ALLES! We bepalen de PID en toen had ik een beetje geluk dat AnyDesk door de dienst werd geïnstalleerd, dus de PID die we zochten was de enige.
1.4. Uit de proces-PID bepalen we het IP-adres van de serviceserver.

Analyse van de mogelijkheid om een ​​applicatie te blokkeren voor computerbesturing op afstand via een netwerk, aan de hand van het voorbeeld van AnyDesk

2. Afrekenen

Omdat het programma voor het identificeren van IP-adressen waarschijnlijk alleen op mijn pc zal werken, heb ik geen beperkingen op het gebied van gemak en luiheid, dus C#.

2.1. Alle methoden voor het identificeren van het vereiste IP-adres zijn al bekend, het moet nog worden geïmplementeerd.

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й элемент без кавычек
}

Op dezelfde manier vinden we de dienst die de verbinding tot stand heeft gebracht, ik zal alleen de hoofdlijn geven

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

Het resultaat hiervan zal zijn:

Analyse van de mogelijkheid om een ​​applicatie te blokkeren voor computerbesturing op afstand via een netwerk, aan de hand van het voorbeeld van AnyDesk
Haal uit de rij, net als in de vorige stap, de derde kolom eruit en verwijder alles na de “:”. Als gevolg hiervan hebben we ons gewenste IP-adres.

2.2. IP-blokkering in Windows. Als Linux Blackhole en iptables heeft, dan bleek de methode om een ​​IP-adres op één regel te blokkeren, zonder gebruik te maken van een firewall, in Windows ongebruikelijk,
maar wat voor gereedschap was er...

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

Sleutelparameter "als 1" stuur de route naar Loopback (u kunt beschikbare interfaces weergeven door route print uit te voeren). EN BELANGRIJK! Nu moet het programma worden gestart met beheerdersrechten, omdat het wijzigen van de route hoogteverschillen vereist.

2.3. Het weergeven en opslaan van geïdentificeerde IP-adressen is een triviale taak en vereist geen uitleg. Als u erover nadenkt, kunt u het bestand verwerken ad_svc.trace AnyDesk zelf, maar ik heb er niet meteen over nagedacht + misschien zit er een beperking aan.

2.4. Het vreemde, ongelijke gedrag van het programma is dat het bij het "taskkillen" van het serviceproces in Windows 10 automatisch opnieuw opstart, in Windows 8 eindigt het, waardoor alleen het consoleproces overblijft en zonder opnieuw verbinding te maken, is het over het algemeen onlogisch en dit is onnauwkeurig.

Door een proces te verwijderen dat verbinding heeft gemaakt met de server, kunt u een nieuwe verbinding met het volgende adres ‘forceren’. Het is op dezelfde manier geïmplementeerd als de vorige opdrachten, dus ik geef het gewoon:

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

Start bovendien het AnyDesk-programma.

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

2.5. Eén keer per minuut (of vaker?) controleren wij de status van AnyDesk en of deze verbonden is, d.w.z. verbinding tot stand gebracht - blokkeer dit IP-adres, en opnieuw helemaal opnieuw - wacht tot er verbinding wordt gemaakt, blokkeer en wacht.

3. Aanval

De code werd "geschetst" en er werd besloten het proces te visualiseren "+" geeft het gevonden en geblokkeerde IP-adres aan, en "."—Herhaal de controle zonder succesvolle burenverbinding vanuit AnyDesk.

Analyse van de mogelijkheid om een ​​applicatie te blokkeren voor computerbesturing op afstand via een netwerk, aan de hand van het voorbeeld van AnyDesk

Projectcode

Als resultaat…

Analyse van de mogelijkheid om een ​​applicatie te blokkeren voor computerbesturing op afstand via een netwerk, aan de hand van het voorbeeld van AnyDesk
Het programma werkte op verschillende computers met verschillende Windows-besturingssystemen, met versies van AnyDesk 5 en 6. Meer dan 500 iteraties, ongeveer 80 adressen werden verzameld. Voor 2500 - 87 enzovoort...

Na verloop van tijd bereikte het aantal geblokkeerde IP’s de 100+.

Link naar finale tekstbestand met adressen: tijd и два

Het is gebeurd! De pool van IP-adressen is via het script toegevoegd aan de regels van de hoofdrouter en AnyDesk kan eenvoudigweg geen externe verbinding tot stand brengen.

Er is een vreemd punt: uit de eerste logs is duidelijk dat het adres betrokken is bij de overdracht van informatie boot-01.net.anydesk.com. Natuurlijk hebben we in de regel alle *.net.anydesk.com-hosts geblokkeerd, maar dat is niet zo vreemd. Elke keer bij een normale ping van verschillende computers geeft deze domeinnaam een ​​ander IP-adres. Controleren op Linux:

host boot-01.net.anydesk.com

net als DNSLookup geven ze slechts één IP-adres, maar dit adres is variabel. Bij het analyseren van een TCPView-verbinding krijgen we PTR-records van IP-adressen van het type terug relay-*.net.anydesk.com.

Theoretisch: aangezien ping soms naar een onbekende, niet-geblokkeerde host gaat boot-01.net.anydesk.com we kunnen deze ips vinden en blokkeren, van deze implementatie een regulier script maken onder Linux OS, hier is het niet nodig om AnyDesk te installeren. Uit de analyse bleek dat deze IP’s vaak “snijden"met die gevonden in onze lijst. Misschien is het gewoon deze host waarmee het programma verbinding maakt voordat het bekende IP's begint te 'uitzoeken'. Ik zal het artikel waarschijnlijk later aanvullen met het tweede deel van de hostzoekopdrachten, hoewel op dit moment de het programma zelf wordt in het algemeen niet binnen de buitenste join van het netwerk geïnstalleerd.

Ik hoop dat je in het bovenstaande niets illegaals hebt gezien, en dat de makers van AnyDesk mijn acties op een sportieve manier zullen behandelen.

Bron: www.habr.com

Voeg een reactie