Analýza možnosti blokace aplikace pro vzdálenou správu počítače po síti na příkladu AnyDesk.

Když jednoho dne šéf zdvihne otázku: „Proč někteří mají vzdálený přístup k pracovnímu počítači, aniž by museli získávat další povolení?“,
vzniká úkol „zakrýt“ tuto mezeru.

Analýza možnosti blokace aplikace pro vzdálenou správu počítače po síti na příkladu AnyDesk.
Aplikací pro vzdálenou správu po síti je dostatek: Chrome Remote Desktop, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control a další. Zatímco Chrome Remote Desktop má oficiální manuál, jak bojovat proti přístupu k této službě, TeamViewer má licenční omezení podle časového nebo síťového omezení a uživatelé „zaťatými zuby“ se tak či onak ukazují administrátorům, pak oblíbenec mnoha pro osobní užití – AnyDesk, si zaslouží zvláštní pozornost, zvlášť když šéf řekl „Není dovoleno!“.

Analýza možnosti blokace aplikace pro vzdálenou správu počítače po síti na příkladu AnyDesk.
Pokud víte, co znamená blokování síťového paketu podle jeho obsahu a vyhovuje vám, zbytek materiálu
není určen pro vás.

Snažím se jít od opačného směru, na tom webu se hovoří o tom, co by mělo být povoleno pro správný chod programu, a tím pádem byla zablokována DNS záznam *.net.anydesk.com. Ale AnyDesk není jednoduchý, blokace doménového jména mu nic neudělá.

Kdysi jsem měl úkol blokovat „Anyplace Control“, který k nám přicházel s nějakým pochybným softwarem, a tento úkol byl vyřešen blokováním několika IP (chránil jsem se antivirem). Úkol s AnyDesk, poté co jsem ručně sesbíral více než deset IP adres, podnítil zbavit se rutinní manuální práce.

Také bylo zjištěno, že v „C:ProgramDataAnyDesk“ existuje řada souborů s nastavením atd., a do souboru ad_svc.trace se shromažďují informace o připojeních a neúspěšných pokusech.

1. Pozorování

Jak již bylo řečeno, blokování *.anydesk.com nedalo žádné výsledky v chodu programu, rozhodlo se analyzovat chování programu v stresových situacích.TCPView od Sysinternals do ruky a vpřed!

Analýza možnosti blokace aplikace pro vzdálenou správu počítače po síti na příkladu AnyDesk.

1.1. Je vidět, že se „visí“ několik zajímavých procesů, a jen ten, který se spojí s externí adresou, nás zajímá. Porty, ke kterým se připojuje, jsou různé, z toho, co jsem viděl, to jsou: 80, 443, 6568. 🙂 80 a 443 rozhodně nemůžeme blokovat.

1.2. Po blokaci adresy přes router, se bez problémů vybírá jiná adresa.

Analýza možnosti blokace aplikace pro vzdálenou správu počítače po síti na příkladu AnyDesk.

1.3. Konzole je naše VŠE! Určujeme PID a tu jsem měl trochu štěstí, že AnyDesk byl nainstalován jako služba, takže hledaný PID je jediný.
1.4. Určujeme podle PID procesu IP adresu serveru služeb.

Analýza možnosti blokace aplikace pro vzdálenou správu počítače po síti na příkladu AnyDesk.

2. Příprava

Program pro zjišťování IP adres pravděpodobně poběží pouze na mém PC, takže nemám žádná omezení v pohodlí a lenosti, proto C#.

2.1. Všechny metody pro zjištění požadované IP adresy jsou již známy, zbývá je pouze implementovat.

string pid1_; // zjistíme PID služby 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(','); // převádíme odpověď na pole
 pid1_ = pid1[1].Replace(""", ""); // vezmeme 2. prvek bez uvozovek
}

Podobně najdeme službu, která navázala spojení, uvedu pouze hlavní řádek.

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

Výsledkem bude:

Analýza možnosti blokace aplikace pro vzdálenou správu počítače po síti na příkladu AnyDesk.
Z řádku analogicky z předchozího kroku vyextractujeme 3. sloupec a odstraníme vše po ":". Výsledkem je naše požadovaná IP.

2.2. Blokování IP ve Windows. Zatímco v Linuxu máme Blackhole a iptables, metoda blokování IP adresy v jedné řádce, bez použití firewallu, se ve Windows ukázala jako nezvyklá.
ale jaké nástroje byly…

route add náš_nalezený_IP_adresa mask 255.255.255.255 10.113.113.113 if 1 -p

Klíčový parametr "if 1" posílá trasu na Loopback (Dostupné rozhraní lze zobrazit pomocí příkazu route print). A DŮLEŽITÉ! Nyní je nutné program spustit s administrátorskými právy, protože změna trasy vyžaduje zvýšení práv.

2.3. Zobrazování a ukládání zjištěných IP adres je triviální úkol a nevyžaduje další vysvětlení. Pokud se zamyslíme, můžeme zpracovávat i soubor ad_svc.trace sami AnyDesk, ale na to jsem hned nepomyslel + možná na ně existují omezení.

2.4. Podivné nerovnoměrné chování programu spočívá v tom, že při „taskkill“ procesu služby ve Windows 10 se automaticky restartuje, ve Windows 8 se ukončuje, přičemž zanechává pouze proces konzole a bez opětovného připojení, celkově nelogické a nepřesné.

Odstranění procesu připojeného k serveru umožňuje „forcovat“ opětovné připojení na další adresu. Implementuje se podobně jako předchozí příkazy, proto uvádím pouze:

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

Doplňkově spouštíme program AnyDesk.

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

2.5. Stav AnyDesk kontrolujeme 1krát za minutu (nebo častěji?), a pokud je připojení ESTABLISHED — tento IP zablokujeme a vše začneme znovu — čekáme, až se připojí, zablokujeme a čekáme.

3. Útok

Byl "navržen" kód pro vizualizaci procesu, rozhodnuto "+" uvádět nalezené a zablokované IP, a "." — opakovat kontrolu bez úspěšného připojení od AnyDesk.

Analýza možnosti blokace aplikace pro vzdálenou správu počítače po síti na příkladu AnyDesk.

→ Kód projektu

Jako výsledek…

Analýza možnosti blokace aplikace pro vzdálenou správu počítače po síti na příkladu AnyDesk.
Program fungoval na několika počítačích s různými verzemi Windows, s verzemi AnyDesk 5 a 6. Za 500 iterací bylo shromážděno přibližně 80 adres. Za 2500 — 87 a tak dále…

S postupem času počet blokovaných IP dosáhl 100+.

Odkaz na finální textový soubor s adresami: jedna a dva

Dílo je hotovo! Pool IP adresů byl skriptem přidán do pravidel hlavního routeru a AnyDesk prostě nemůže vytvořit externí spojení.

Je tu zvláštní moment, podle prvotních logů je vidět, že v přenosu informací se účastní adresa boot-01.net.anydesk.com. Samozřejmě jsme zablokovali všechny hosty *.net.anydesk.com společným pravidlem, ale to není ta zvláštnost. Při běžném pingu z různých počítačů toto doménové jméno dává vždy jiný IP. Kontrola v Linuxu:

host boot-01.net.anydesk.com

a DNSLookup dává pouze jednu IP adresu, ale tato adresa je proměnlivá. Při analýze spojení TCPView nám vracejí PTR záznamy IP adres typu relay-*.net.anydesk.com.

Teoreticky: pokud ping občas prochází na neznámý nezablokovaný host boot-01.net.anydesk.com můžeme tyto IP najít a zablokovat, tuto implementaci lze udělat běžným skriptem pro OS Linux, přičemž instalace AnyDesk zde není potřeba. Analýza ukázala, že tyto IP často "se překrývají" s nalezenými v našem seznamu. Možná je to právě tento host, ke kterému se program připojuje, než začne "procházet" známé IP. Pravděpodobně později článek doplním druhou částí hledání hostů, ačkoli v současnosti program uvnitř sítě vůbec nevytváří externí spojení.

Doufám, že jste v uvedeném nenalezli nic protiprávního, a že tvůrci AnyDesk přistoupí k mým činům sportovně.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster