Analýza možnosti blokovania aplikácie pre vzdialené ovládanie počítača cez sieť na príklade AnyDesk

Keď jedného dňa šéf položí otázku: „Prečo majú niektorí ľudia vzdialený prístup k pracovnému počítaču bez toho, aby získali ďalšie povolenia na použitie?
Vzniká úloha „uzatvoriť“ medzeru.

Analýza možnosti blokovania aplikácie pre vzdialené ovládanie počítača cez sieť na príklade AnyDesk
Existuje množstvo aplikácií na vzdialené ovládanie cez sieť: Vzdialená plocha Chrome, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control atď. Ak má vzdialená plocha Chrome oficiálnu príručku na boj proti prístupu k službe, TeamViewer má licenčné obmedzenia na čas alebo požiadavky zo siete a používatelia si tak či onak „brúsia zuby“ na adminov, ktorí sú potom obľúbenci mnohých na osobné použitie – AnyDesk si stále vyžaduje osobitnú pozornosť, najmä ak šéf povedal „Nie!“

Analýza možnosti blokovania aplikácie pre vzdialené ovládanie počítača cez sieť na príklade AnyDesk
Ak viete, čo je blokovanie sieťového paketu jeho obsahom a ste s ním spokojní, potom zvyšok materiálu
nie je určený pre teba.

V skutočnosti sa snažíme ísť z opačného konca Online hovorí, čo musí byť povolené, aby program fungoval, a preto bol DNS záznam zablokovaný *.net.anydesk.com. AnyDesk však nie je jednoduchý; nestará sa o blokovanie názvu domény.

Kedysi dávno som riešil problém s blokovaním “Anyplace Control”, ktorý sa k nám dostal s nejakým pochybným softvérom a vyriešil som to blokovaním len niekoľkých IP (zálohoval som antivírus). Problém s AnyDesk, keď som ručne zhromaždil viac ako tucet IP adries, priviedol ma preč od bežnej manuálnej práce.

Tiež sa zistilo, že v „C:ProgramDataAnyDesk“ je množstvo súborov s nastaveniami atď., a v súbore ad_svc.trace Zhromažďujú sa udalosti o pripojeniach a zlyhaniach.

1. Pozorovanie

Ako už bolo spomenuté, blokovanie *.anydesk.com neprinieslo žiadne výsledky v prevádzke programu, bolo rozhodnuté analyzovať programové správanie v stresových situáciách. TCPView od Sysinternals vo vašich rukách a ide sa!

Analýza možnosti blokovania aplikácie pre vzdialené ovládanie počítača cez sieť na príklade AnyDesk

1.1. Je vidieť, že niekoľko procesov, ktoré nás zaujímajú, „visí“ a nás zaujíma iba ten, ktorý komunikuje s adresou zvonku. Porty, na ktoré sa to pripája, sú vybrané, podľa toho, čo som videl: 80, 443, 6568. 🙂 80 a 443 určite nemôžeme blokovať.

1.2. Po zablokovaní adresy cez router sa potichu vyberie iná adresa.

Analýza možnosti blokovania aplikácie pre vzdialené ovládanie počítača cez sieť na príklade AnyDesk

1.3. Konzola je naše VŠETKO! Určujeme PID a potom som mal trochu šťastie, že služba AnyDesk nainštalovala, takže PID, ktoré sme hľadali, bolo jediné.
1.4. Z procesného PID určíme IP adresu servisného servera.

Analýza možnosti blokovania aplikácie pre vzdialené ovládanie počítača cez sieť na príklade AnyDesk

2. Príprava

Keďže program na identifikáciu IP adries mi bude fungovať asi len na PC, nemám žiadne obmedzenia na pohodlnosť a lenivosť, takže C#.

2.1. Všetky spôsoby identifikácie požadovanej IP adresy sú už známe, zostáva ich implementácia.

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

Podobne nájdeme službu, ktorá nadviazala spojenie, dám len hlavnú linku

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

Výsledkom čoho bude:

Analýza možnosti blokovania aplikácie pre vzdialené ovládanie počítača cez sieť na príklade AnyDesk
Z riadku, podobne ako v predchádzajúcom kroku, vytiahnite 3. stĺpec a odstráňte všetko za „:“. Výsledkom je, že máme požadovanú IP adresu.

2.2. Blokovanie IP v systéme Windows. Ak má Linux Blackhole a iptables, potom sa metóda blokovania IP adresy v jednom riadku bez použitia brány firewall v systéme Windows ukázala ako nezvyčajná,
ale aké nástroje tam boli...

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

Kľúčový parameter "ak 1" poslať trasu do Loopback (Dostupné rozhrania môžete zobraziť spustením tlače trasy). A DÔLEŽITÉ! Teraz je potrebné spustiť program s právami správcu, keďže zmena trasy si vyžaduje prevýšenie.

2.3. Zobrazenie a ukladanie identifikovaných IP adries je triviálna úloha a nevyžaduje si vysvetlenie. Ak o tom premýšľate, môžete súbor spracovať ad_svc.trace AnyDesk sám o sebe, ale nenapadlo ma to hneď + možno je na to obmedzenie.

2.4. Zvláštne nerovnomerné správanie programu spočíva v tom, že pri „úlohovaní“ servisného procesu v systéme Windows 10 sa automaticky reštartuje, v systéme Windows 8 sa skončí, pričom zostane iba proces konzoly a bez opätovného pripojenia, vo všeobecnosti je to nelogické a nepresné.

Odstránenie procesu, ktorý sa pripojil k serveru, vám umožní „vynútiť“ opätovné pripojenie na ďalšiu adresu. Je implementovaný rovnakým spôsobom ako predchádzajúce príkazy, takže to dám:

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

Okrem toho spustite program AnyDesk.

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

2.5. Stav AnyDesk skontrolujeme raz za minútu (alebo častejšie?), a ak je pripojený, t.j. pripojenie ESTABLISHED - zablokujte túto IP, a znova dookola - počkajte, kým sa pripojí, zablokujte a počkajte.

3. Útok

Kód bol "načrtnutý" a bolo rozhodnuté vizualizovať proces "+" označte nájdenú a zablokovanú IP a "."—zopakujte kontrolu bez úspešného pripojenia suseda z AnyDesk.

Analýza možnosti blokovania aplikácie pre vzdialené ovládanie počítača cez sieť na príklade AnyDesk

Kód projektu

Ako výsledok…

Analýza možnosti blokovania aplikácie pre vzdialené ovládanie počítača cez sieť na príklade AnyDesk
Program fungoval na niekoľkých počítačoch s rôznymi OS Windows, s verziami AnyDesk 5 a 6. Viac ako 500 iterácií bolo zhromaždených približne 80 adries. Za 2500 - 87 a tak ďalej...

Postupom času počet blokovaných IP adries dosiahol 100+.

Odkaz na finále textový súbor s adresami: čas и два

Je to hotové! Súbor IP adries bol pridaný do pravidiel hlavného smerovača prostredníctvom skriptu a AnyDesk jednoducho nemôže vytvoriť externé pripojenie.

Je tu zvláštny bod, z počiatočných protokolov je zrejmé, že adresa sa podieľa na prenose informácií boot-01.net.anydesk.com. Samozrejme, ako všeobecné pravidlo sme zablokovali všetkých hostiteľov *.net.anydesk.com, ale na tom nie je nič zvláštne. Zakaždým s normálnym pingom z rôznych počítačov dáva tento názov domény inú IP. Kontrola v systéme Linux:

host boot-01.net.anydesk.com

ako DNSLookup dávajú iba jednu IP adresu, ale táto adresa je variabilná. Pri analýze pripojenia TCPView sa nám vrátia záznamy PTR IP adries typu relé-*.net.anydesk.com.

Teoreticky: keďže ping niekedy ide na neznámeho neblokovaného hostiteľa boot-01.net.anydesk.com môžeme nájsť tieto ips a zablokovať ich, urobiť z tejto implementácie bežný skript pod OS Linux, tu nie je potrebné inštalovať AnyDesk. Analýza ukázala, že tieto adresy IP často „pretínajú"s tými nájdenými z nášho zoznamu. Možno je to práve tento hostiteľ, ku ktorému sa program pripojí skôr, ako začne „triediť“ známe IP. Pravdepodobne neskôr doplním článok o 2. časť vyhľadávania hostiteľov, aj keď momentálne samotný program sa vo všeobecnosti neinštaluje do vonkajšieho spojenia siete.

Dúfam, že ste vo vyššie uvedenom nevideli nič nezákonné a tvorcovia AnyDesk budú s mojimi činmi zaobchádzať športovo.

Zdroj: hab.com

Pridať komentár