Når chefen en dag rejser spørgsmålet: «Hvorfor har nogle fjernadgang til arbejdskomputeren uden at få ekstra tilladelser til brug?»,
opstår der en opgave at «dække» hullet.

Der findes mange applikationer til fjernstyring over nettet: Chrome Remote Desktop, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control m.fl. Hvis Chrome Remote Desktop har en officiel manual til bekæmpelse af adgang til tjenesten, så har TeamViewer licensbegrænsninger på tid eller forespørgsler fra netværket, og brugerne «gnider tænder» og bliver på en eller anden måde «opdaget» af administratorerne, så kræver favorit blandt mange til privat brug — AnyDesk stadig særlig opmærksomhed, især når chefen har sagt «Det er ikke tilladt!».

Hvis du ved, hvad det betyder at blokere et netværkspakke baseret på sit indhold, og det passer dig, så er det resterende materiale
ikke beregnet til dig.
Ved at prøve at gå den modsatte vej, fortælles der faktisk om, hvad der skal være tilladt for programmets drift, og derfor blev DNS-optegnelsen *.net.anydesk.com blokeret. Men AnyDesk er ikke simpel, og blokering af domænenavnet påvirker det ikke.Engang havde jeg en opgave med at blokere «Anyplace Control», som kom til os med noget mistænkelig software, og det blev løst ved at blokere nogle få IP'er (jeg havde sikret mig med antivirus). Opgaven med AnyDesk, efter at jeg manuelt indsamlede mere end et dusin IP-adresser,
inspirerede til at slippe for det rutineprægede håndarbejde. Det blev også opdaget, at der i «C:ProgramDataAnyDesk» er en række filer med indstillinger osv., og i filen
ad_svc.trace samles der begivenheder om forbindelser og fejl. 1. Observation
Som allerede nævnt gav blokeringen af *.anydesk.com ingen resultater for programmets funktion, og der blev besluttet at analysere
programmets adfærd i stressede situationer. TCPView fra Sysinternals i hænderne og fremad!1.1. Det kan ses, at der «hænger» flere interessante processer, og kun den, der forbinder til adresser udefra, interesserer os. De porte, som der forbindes til, sorteres, og fra det, jeg har set, er det: 80, 443, 6568. 🙂 80 og 443 kan vi helt sikkert ikke blokere.

1.2. Efter blokeringen af adressen gennem routeren vælges der let en anden adresse.
1.3. Konsollen er vores ALT! Vi identificerer PID'en, og her havde jeg lidt held, da AnyDesk var installeret som en service, derfor var den ønskede PID den eneste.

1.4. Vi identificerer serverens IP-adresse baseret på processens PID.
1.4. Bestemmer IP-adressen for serveren af tjenesterne ud fra processens PID.

2. Forberedelse
Da programmet til at identificere IP-adresser sandsynligvis kun vil køre på min pc, har jeg ingen begrænsninger med hensyn til bekvemmelighed og dovenskab, så C#.
2.1. Alle metoder til at identificere den ønskede IP-adresse er allerede kendte, det er nu kun implementering, der mangler.
string pid1_; // finder PID for AnyDesk-tjenesten
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(','); // konverterer svaret til et array
pid1_ = pid1[1].Replace(""", ""); // henter det 2. element uden citationstegn
}Tilsvarende finder vi tjenesten, som oprettede forbindelsen, her er kun den vigtigste linje.
p.StartInfo.Arguments = " /c " netstat -n -o | findstr /I " + pid1_ + " | findstr "ESTABLISHED"";Resultatet af dette bliver:
![]()
Fra linjen udtrækker vi ligesom i det tidligere trin den 3. kolonne og fjerner alt efter ":". Som resultat har vi vores ønskede IP.
2.2. Blokering af IP i Windows. Hvis der i Linux er Blackhole og iptables, så er metoden til at blokere en IP-adresse i én linje, uden brug af firewall, i Windows uventet.
men de værktøjer jeg havde…
route add vores_findte_IP_adresse mask 255.255.255.255 10.113.113.113 if 1 -pDen nøgleparameter "if 1" sender ruten til Loopback (tilgængelige interfaces kan vises ved at udføre route print). Og VIGTIGT! Nu skal programmet køres med administratorrettigheder, da ændring af ruten kræver forhøjede rettigheder.
2.3. Visning og gemning af identificerede IP-adresser er en triviel opgave og kræver ingen yderligere forklaring. Hvis man tænker over det, kan man også bearbejde filen samles der begivenheder om forbindelser og fejl. af selve AnyDesk, men det tænkte jeg ikke på med det samme + muligvis er der begrænsninger på det.
2.4. Den mærkelige uensartede adfærd ved programmet er, at ved "taskkill" af tjenesteprocessen i Windows 10 genstarter den automatisk, mens den i Windows 8 afsluttes, kun efterlader konsolprocessen og uden genforbindelse, hvilket generelt er illogisk og unøjagtigt.
At fjerne processen, der har forbindelse til serveren, gør det muligt at "tvinge" genforbindelsen til den næste adresse. Dette implementeres på samme måde som de tidligere kommandoer, så jeg angiver kun:
p.StartInfo.Arguments = " /c taskkill /PID " + pid1_ + " /F";Desuden starter vi programmet AnyDesk.
//запускаем программу которая расположена по пути path_pro
if (File.Exists(path_pro)){
Process p1 = Process.Start(path_pro);}2.5. Vi vil kontrollere tilstanden af AnyDesk én gang i minuttet (eller oftere?), og hvis den er tilsluttet, dvs. forbindelsen er ETABLERT - vil denne IP blive blokeret, og så starter vi forfra - venter på tilslutning, blokerer og venter.
3. Angreb
Kode blev "smidt" på plads, for at visualisere processen blev det besluttet at "+" angive den fundne og blokerede IP, og "." - gentage kontrol uden en vellykket forbindelse fra AnyDesk.

→
Som resultat…

Programmet kørte på flere computere med forskellige Windows OS, med versioner af AnyDesk 5 og 6. Efter 500 iterationer blev der indsamlet omkring 80 adresser. Efter 2500 - 87 osv.…
Over tid nåede antallet af blokerede IP'er op på over 100.
Link til den endelige tekstfil med adresser: og
Opgaven er fuldført! IP-adressepuljen blev tilføjet til reglerne for den primære router gennem scriptet, og AnyDesk kan simpelthen ikke oprette en ekstern forbindelse.
Der er et mærkeligt punkt, ifølge de oprindelige loger kan man se, at i informationsudvekslingen deltager adressen boot-01.net.anydesk.com. Vi har naturligvis blokeret alle værter *.net.anydesk.com med en generel regel, men det mærkelige er ikke dette. Hver gang ved almindelig ping fra forskellige computere giver dette domænenavn en forskellig IP. Kontrol i Linux:
host boot-01.net.anydesk.com
som DNSLookup giver kun én IP-adresse, men denne adresse er variabel. Ved analyse af forbindelserne med TCPView får vi PTR-poster for IP-adresser af typen relay-*.net.anydesk.com.
Teoretisk: da ping nogle gange går til en ukendt, ikke blokeret vært boot-01.net.anydesk.com kan vi finde disse IP'er og blokere dem, denne implementering kan gøres med et almindeligt script til Linux OS, her er det lige netop unødvendigt at installere AnyDesk. Analysen viste, at disse IP ofte "overlapper" med dem, der er fundet fra vores liste. Måske er det netop denne vært, som programmet opretter forbindelse til, før det begynder at "prøve" kendte IP'er. Jeg vil sandsynligvis senere supplere artiklen med en del 2 af host-søgningen, selvom programmet i øjeblikket slet ikke opretter en ekstern forbindelse i netværket.
Jeg håber, De ikke har set noget ulovligt i ovenstående, og at skaberne af AnyDesk vil tage mine handlinger sportligt.
Kilde: habr.com
