Анализ на възможността за блокиране на приложение за отдалечен контрол на компютри по мрежата, на примера на AnyDesk

Когато един прекрасен ден шефът повдига въпроса: „Защо някои имат отдалечен достъп до работния компютър, без да получават допълнителни разрешения за използване?“,
възниква задачата „да се запуши“ дупката.

Анализ на възможността за блокиране на приложение за отдалечен контрол на компютри по мрежата, на примера на AnyDesk
Приложенията за отдалечено управление по мрежата са в изобилие: Chrome Remote Desktop, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control и др. Докато Chrome Remote Desktop разполага с официално ръководство за борба с наличието на достъп до услугата, TeamViewer има лицензионни ограничения по време или заявки от мрежата и потребителите „с изпънати зъби“ с или без това „се издават“ пред администраторите, любимец на много за лична употреба — AnyDesk все още изисква специално внимание, особено ако шефът е казал „Не може!“.

Анализ на възможността за блокиране на приложение за отдалечен контрол на компютри по мрежата, на примера на AnyDesk
Ако знаете какво представлява блокировката на мрежов пакет по съдържанието му и сте с приемливо отношение към нея, то останалият материал
не е предназначен за вас.

Опитвайки се да подходя от противоположната страна, наистина сайта се говори за това, какво трябва да бъде разрешено за работата на програмата, поради което беше блокирана DNS записа *.net.anydesk.com. Но AnyDesk не е прост, блокировката на домейна не е проблем за него.

Някога имах задача по блокиране на „Anyplace Control“, който идваше при нас с някакъв съмнителен софтуер и беше решена чрез блокировка на само няколко IP адреса (аз подсигурявах антивируса). Задачата с AnyDesk, след като ръчно събрах повече от десет IP адреса, подсигури да се отдалеча от рутинната ръчна работа.

Също така беше установено, че в „C:ProgramDataAnyDesk“ има редица файлове с настройки и т.н., а в файла ad_svc.trace се събират събития за свързвания и неуспехи.

1. Наблюдение

Както вече беше казано, блокировката на *.anydesk.com не даде никакви резултати в работата на програмата, решихме да анализираме поведението на програмата в стресови ситуации.. TCPView от Sysinternals в ръка и напред!

Анализ на възможността за блокиране на приложение за отдалечен контрол на компютри по мрежата, на примера на AnyDesk

1.1. Видно е, че „виси“ няколко интересни за нас процеса, а само този, който се свързва с външен адрес, ни интересува. Портовете, с които се свързва, са 80, 443, 6568. 🙂 80 и 443 определено не можем да блокираме.

1.2. След блокировка на адреса през рутера, спокойно се избира друг адрес.

Анализ на възможността за блокиране на приложение за отдалечен контрол на компютри по мрежата, на примера на AnyDesk

1.3. Конзолата е всичко! Определяме PID и тук малко ми повери късмета, че AnyDesk е инсталиран като услуга, следователно търсеният PID е единствен.
1.4. Определяме по PID на процеса IP адреса на сървъра на услугите.

Анализ на възможността за блокиране на приложение за отдалечен контрол на компютри по мрежата, на примера на AnyDesk

2. Подготовка

Тъй като програмата за установяване на IP адреси вероятно ще работи само на моя компютър, нямам ограничения относно удобството и мързела, следователно C#.

2.1. Всички методи за откриване на искания IP адрес вече са известни, остава само да ги реализирам.

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

Аналогично намираме услугата, която е установила връзката, ще дам само основния ред.

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

Резултатът от който ще бъде:

Анализ на възможността за блокиране на приложение за отдалечен контрол на компютри по мрежата, на примера на AnyDesk
От реда аналогично на предишната стъпка извличаме 3-ти стълб и премахваме всичко след ":". В резултат имаме нашия искан IP.

2.2. Блокиране на IP в Windows. Ако в Linux има Blackhole и iptables, то методът за блокиране на IP адрес в един ред, без да се използва защитната стена, в Windows се оказа неочакван.
Но какви инструменти бяха…

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

Ключовият параметър "if 1" изпраща маршрута на Loopback (можете да видите наличните интерфейси, като изпълните route print). И ВАЖНО! Сега програмата трябва да се стартира с права на администратор, тъй като промяната на маршрута изисква повишаване на правата.

2.3. Отразяването и запазването на установените IP адреси е тривиална задача и не изисква обяснения. Ако помислите, можете да обработвате и файла ad_svc.trace на самия AnyDesk, но за това не се сетих веднага + може би за него има ограничение.

2.4. Странното различно поведение на програмата се състои в това, че при "taskkill" на процеса на услугата в Windows 10 тя се рестартира автоматично, а в Windows 8 се завършва, оставяйки само процеса на конзолата и без повторно свързване; общо взето е нелогично и неточно.

Премахването на процеса, свързан със сървъра, позволява "форсирането" на повторното свързване на следния адрес. Реализира се аналогично на предишните команди, затова давам само:

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

Допълнително стартираме програмата AnyDesk.

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

2.5. Ще проверяваме състоянието на AnyDesk 1 път в минутата (или по-често?), и ако е свързана, т.е. връзката ESTABLISHED — това IP да бъде блокирано, и отново всичко започва отначало — да чакаме да се свърже, да блокираме и да чакаме.

3. Нападение

Беше "написан" код, за визуализация на процеса решено е "+" да се указва намерения и блокиран IP, а "." — повторна проверка без успешно свързване от страна на AnyDesk.

Анализ на възможността за блокиране на приложение за отдалечен контрол на компютри по мрежата, на примера на AnyDesk

→ Код на проекта

В резултат…

Анализ на възможността за блокиране на приложение за отдалечен контрол на компютри по мрежата, на примера на AnyDesk
Програмата работеше на няколко компютъра с различни Windows ОС, с версии AnyDesk 5 и 6. За 500 итерации бяха събрани около 80 адреса. За 2500 — 87 и така нататък…

С времето броят на блокираните IP достигна 100+.

Връзка към финалния текстови файл с адресите: раз и два

Работата е свършена! Пулът от IP адреси беше добавен в правилата на основния рутер и AnyDesk просто не може да създаде външно свързване.

Има странен момент, по първоначалните логове е видно, че в предаването на информацията участва адрес boot-01.net.anydesk.com. Ние разбира се блокирахме всички хостове *.net.anydesk.com с общо правило, но странното не е в това. Всеки път при обикновен пинг от различни компютри това домейн име дава различен IP. Проверка в Linux:

host boot-01.net.anydesk.com

както и DNSLookup дава само един IP адрес, но този адрес е променлив. При анализа на връзките TCPView ни дават PTR записи на IP адреси от типа relay-*.net.anydesk.com.

Теоретично: тъй като пингът понякога минава на неизвестен незаблокиран хост boot-01.net.anydesk.com можем да намерим тези IP и да ги блокираме, а тази реализация да направим с обикновен скрипт под ОС Linux, тук именно не е нужно да инсталираме AnyDesk. Анализът показа, че тези IP често "пресичат" с намерените от нашия списък. Вероятно това е именно този хост, към който програмата се свързва преди да започне да "пробва" известни IP. Вероятно по-късно ще допълня статията с втора част на търсенето на хостове, макар че към този момент самата програма вътре в мрежата изобщо не установява външно свързване.

Надявам се нищо противозаконно да не видите в по-горе изложеното, а създателите на AnyDesk да се отнесат към действията ми с игрова нагласа.

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster