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.
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!“
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
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!
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.
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.
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:
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.
Ako výsledok…
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:
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