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.
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!".
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
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!
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.
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.
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:
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.
Jako výsledek…
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:
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