Аналіз магчымасці блакавання прыкладання для выдаленага кіравання кампутарам па сетцы, на прыкладзе AnyDesk

Калі ў адзін цудоўны дзень начальнік паднімае пытанне: "Чаму ў некаторых ёсць выдалены доступ да раб.кампутару, без атрымання дадатковых дазволаў на выкарыстанне?",
узнікае задача «прыкрыць» шчыліну.

Аналіз магчымасці блакавання прыкладання для выдаленага кіравання кампутарам па сетцы, на прыкладзе AnyDesk
Прыкладанняў па выдаленым кіраванні па сетцы звышдастаткова: Сhrome remote desktop, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control і інш. Калі ў "Сhrome 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

Ключавы параметр "калі 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. Верагодна я пазней дапоўню артыкул 2й часткай пошукаў хастоў, хоць на дадзены момант сама праграма ўсярэдзіне сетак не ўсталёўвае знешняе злучэнне наогул.

Спадзяюся нічога супрацьпраўнага Вы не ўбачылі ў вышэйпададзеным, а стваральнікі AnyDesk паставяцца да маіх дзеянняў па-спартыўнаму.

Крыніца: habr.com

Дадаць каментар