Analýza možnosti zablokování aplikace pro vzdálené ovládání počítače po síti na příkladu AnyDesk

Když jednoho dne šéf vznese otázku: „Proč mají někteří lidé vzdálený přístup k pracovnímu počítači, aniž by získali další oprávnění k použití?“,
existuje úkol „zakrýt“ mezeru.

Analýza možnosti zablokování aplikace pro vzdálené ovládání počítače po síti na příkladu AnyDesk
Existuje spousta aplikací pro vzdálené ovládání po síti: Vzdálená plocha Chrome, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control atd. Pokud má Vzdálená plocha Chrome oficiální příručku pro boj s přístupem ke službě, TeamViewer má licenční omezení na čas nebo požadavky ze sítě a uživatelé "skřípající zuby" nějak "zazářili" u adminů, pak oblíbenec mnoha pro osobní použití - AnyDesk stále vyžaduje zvláštní pozornost, zvláště pokud šéf řekl "Ne!".

Analýza možnosti zablokování aplikace pro vzdálené ovládání počítače po síti na příkladu AnyDesk
Pokud víte, co je blokování síťového paketu jeho obsahem a vyhovuje vám, pak zbytek materiálu
není zamýšleno Pro tebe.

Ve skutečnosti se snaží jít z opačného směru webové stránky píše, co má být povoleno, aby program fungoval, respektive byl zablokován DNS záznam *.net.anydesk.com. AnyDesk ale není jednoduchý, nestará se o blokování názvu domény.

Jednou jsem řešil problém s blokováním "Anyplace Control" který nám přišel s nějakým pochybným softwarem a vyřešilo se to zablokováním jen pár IP (zajistil jsem antivir). Problém s AnyDesk poté, co jsem ručně shromáždil více než tucet IP adres, vyprovokoval pryč od rutinní manuální práce.

Bylo také zjištěno, že v "C: ProgramDataAnyDesk" je řada souborů s nastavením atd. a v souboru ad_svc.trace shromažďují se události o připojení a selhání.

1. Pozorování

Jak již bylo zmíněno, blokování *.anydesk.com nepřineslo v programu žádné výsledky, bylo rozhodnuto analyzovat programové chování ve stresových situacích. TCPView od Sysinternals v ruce a jde se!

Analýza možnosti zablokování aplikace pro vzdálené ovládání počítače po síti na příkladu AnyDesk

1.1. Je vidět, že několik procesů, které nás zajímají, „visí“ a pouze ten, který komunikuje s adresou zvenčí, nás zajímá. Porty, ke kterým se připojuje, jsou přesunuty, z toho, co jsem to viděl: 80, 443, 6568. 🙂 80 a 443 blokovat rozhodně nemůžeme.

1.2. Po zablokování adresy přes router se tiše vybere jiná adresa.

Analýza možnosti zablokování aplikace pro vzdálené ovládání počítače po síti na příkladu AnyDesk

1.3. Naše konzole je VŠECHNO! Určujeme PID a pak jsem měl trochu štěstí, že služba AnyDesk nainstalovala, respektive PID, které jsem hledal, je jediné.
1.4. IP adresu servisního serveru určíme pomocí PID procesu.

Analýza možnosti zablokování aplikace pro vzdálené ovládání počítače po síti na příkladu AnyDesk

2. Příprava

Vzhledem k tomu, že program na zjišťování IP adres bude fungovat pravděpodobně jen na mém PC, nemám žádná omezení na pohodlnost a lenost, takže C#.

2.1. Všechny metody pro identifikaci požadované IP adresy jsou již známy, zbývá je implementovat.

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

Podobně najdeme službu, která navázala spojení, dám pouze hlavní linku

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

Výsledkem bude:

Analýza možnosti zablokování aplikace pro vzdálené ovládání počítače po síti na příkladu AnyDesk
Z řádku, podobně jako v předchozím kroku, vyjmeme 3. sloupec a odstraníme vše za ":". Výsledkem je, že máme požadovanou IP.

2.2. Blokování IP ve Windows. Pokud má Linux Blackhole a iptables, pak se metoda blokování IP adresy na jednom řádku bez použití firewallu ve Windows ukázala jako neobvyklá,
Ale jaké nástroje to byly...

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

Klíčový parametr "pokud 1" odeslat trasu do Loopback (Dostupná rozhraní můžete zobrazit spuštěním tisku trasy). A DŮLEŽITÉ! Nyní je třeba spustit program s právy správceprotože změna trasy vyžaduje převýšení.

2.3. Zobrazení a uložení identifikovaných IP adres je triviální úkol a nevyžaduje vysvětlení. Pokud o tom přemýšlíte, můžete soubor zpracovat ad_svc.trace AnyDesk sám o sobě, ale hned jsem o tom nepřemýšlel + možná je na to omezení.

2.4. Podivné nerovné chování programu spočívá v tom, že když je proces služby „taskkill“ ve Windows 10, automaticky se restartuje, ve Windows 8 skončí a zůstane pouze konzolový proces a bez opětovného připojení je obecně nelogické a nepřesné.

Smazání procesu, který se připojil k serveru, vám umožní „vynutit“ opětovné připojení k další adrese. Je implementován podobně jako předchozí příkazy, takže uvádím pouze:

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

Dále spusťte program AnyDesk.

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

2.5. Stav AnyDesku zkontrolujeme jednou za minutu (nebo častěji?), a pokud je připojen, tzn. připojení ESTABLISHED - zablokovat tuto IP, a znovu dokola - počkat, až se připojí, zablokovat a čekat.

3. Útok

Kód byl „navržen“, bylo rozhodnuto vizualizovat proces “+" specifikovat nalezenou a zablokovanou IP a "." - opakovaná kontrola bez úspěšného připojení z AnyDesk.

Analýza možnosti zablokování aplikace pro vzdálené ovládání počítače po síti na příkladu AnyDesk

Kód projektu

Jako výsledek…

Analýza možnosti zablokování aplikace pro vzdálené ovládání počítače po síti na příkladu AnyDesk
Program fungoval na několika počítačích s různými OS Windows, s AnyDesk verze 5 a 6. Bylo shromážděno asi 500 adres v 80 iteracích. Za 2500 - 87 a tak dále...

Postupem času počet blokovaných IP adres dosáhl 100+.

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

Hotovo! Skupina IP adres se k pravidlům hlavního routeru přidává pomocí skriptu a AnyDesk prostě nemůže vytvořit externí připojení.

Nastal zvláštní moment, podle prvotních logů je jasné, že adresa se podílí na přenosu informací boot-01.net.anydesk.com. Jako obecné pravidlo jsme samozřejmě zablokovali všechny hostitele *.net.anydesk.com, ale to není nic zvláštního. Pokaždé, když normální ping z různých počítačů, toto doménové jméno dává jinou IP. Kontrola v Linuxu:

host boot-01.net.anydesk.com

jako DNSLookup dávají pouze jednu IP adresu, ale tato adresa je proměnná. Při analýze připojení TCPView získáváme zpět PTR záznamy IP adres, jako je relé-*.net.anydesk.com.

Teoreticky: protože ping někdy jde na neznámého neblokovaného hostitele boot-01.net.anydesk.com můžeme najít tyto ip a blok, učinit z této implementace běžný skript pod OS Linux, zde nemusíte instalovat AnyDesk. Analýza ukázala, že tyto IP adresy jsou často „protínají se" s těmi nalezenými z našeho seznamu. Snad je to právě tento hostitel, ke kterému se program připojí, než začne "třídit" známé IP. Pravděpodobně později doplním článek o 2. část vyhledávání hostitelů, i když v tuto chvíli samotný program neinstaluje vnější spojení obecně.

Doufám, že jste ve výše uvedeném neviděli nic nezákonného a tvůrci AnyDesk se k mému jednání postaví sportovně.

Zdroj: www.habr.com

Přidat komentář