PsExec и какво може да направи
Повечето от инструментите, които използваме за администриране на мрежи, представляват две страни на една и съща монета. Тези инструменти осигуряват значителна степен на гъвкавост и опростяват управлението на устройства, услуги и програми. Ако тези инструменти са в правилните ръце, тогава няма от какво да се притесняваме, но ако инструментите за отдалечено управление на мрежата попаднат в грешните ръце, те се превръщат в мощни оръжия, които могат да се използват за извършване на широк обхват. В тази статия ще разгледаме инструмент, който попада в това описание. Това е инструментът на Microsoft Sysinternals PsExec. В тази статия ще дам преглед на това какво е PsExec и какво може да направи от административна гледна точка. Тогава ще застана на страната на нападателя и ще демонстрирам някои от ужасните неща, които могат да се направят с този инструмент в мрежата.
Какво е PsExec?
Помощната програма PsExec е разработена като част от пакета PsTools, първоначално разработен от Марк Русинович от Sysinternals, сега собственост на Microsoft. Инструментът е проектиран като инструмент за управление, базиран на команден ред и ви позволява отдалечено да изпълнявате процеси в друга система. Този инструмент е много гъвкав, тъй като ви позволява да използвате различни идентификационни данни, а не тези, използвани от потребителя, изпълняващ програмата, което означава, че можете да управлявате устройства, които са разделени от граници на домейн и сайт. PsExec не само изпълнява програми на отдалечена система, той може да пренасочва входни и изходни данни между системите, така че да можете да използвате интерактивни инструменти от разстояние.
За разлика от повечето софтуерни продукти, свързани с Microsoft, вътрешната работа на PsExec не е тайна и по-скоро проста. PsExec ви позволява да пренасочвате входа и изхода на дистанционно изпълняваща се програма с помощта на SMB и $ ADMIN скрития дял в отдалечената система. С този ресурс PsExec използва приложния програмен интерфейс (API) на Windows Service control Manager, за да стартира услугата PsExecsvc на отдалечената система, която създава поименен канал, над който работи PsExec. Именно тази именувана тръба позволява I/O пренасочване обратно към системата, на която работи PsExec.
Положителната страна на PsExec
Както се очаква при първоначалното създаване на програмата PsExec, тя може да се използва за изпълнение на много полезни задачи, които могат да помогнат на системен администратор. Една от тези ситуации, в която трябваше да попадна, беше ситуация, когато знаех DNS името на компютър, но не знаех точните параметри на IP конфигурацията (DNS сървър, шлюз по подразбиране и т.н.). При нормални обстоятелства бих използвал ipconfig в локалната система, за да определя тази информация. В повечето случаи обаче това означава, че ще трябва да пътувам другаде и да взема назаем компютъра на потребителя, като по този начин ще намаля производителността им за този ден. Тъй като командата ipconfig не може да бъде изпълнена на отдалечени машини, мога да използвам PsExec, за да я изпълня успешно, както е показано на фигура 1.

Фигура 1: Използване на PsExec за изпълнение на ipconfig на отдалечена система
След извикване на PsExec, отдалеченият компютър се въвежда след двете коси (\\), последвани от командата ipconfig. Когато изпълнявате PsExec, той по подразбиране е в директорията% SYSTEM% на отдалечената система, на която се опитвате да я изпълните, и поради тази причина не ми се наложи да посоча пълния път. И накрая, ключът/all за командата ipconfig е посочен за показване на цялата налична информация за ipconfig.
Друг често използван случай за PsExec е да инсталирате актуализации, кръпки и поправки. Въпреки че предпочитаният начин за изпълнение на тази задача е чрез използване на групови правила, може да има ситуации, при които този метод е твърде бавен. Сблъсках се с много ситуации, при които трябваше да инсталирам високоприоритетна корекция за сигурност, която не можеше да изчака стандартното време за актуализация на груповите правила, затова използвах PsExec, за да инсталирам файла по-бързо. Този пример е показан на фигура 2.

Фигура 2: Изпълнение на изпълним пластир от разстояние
И друго, последната ситуация на законно използване на PsExec е ситуацията на отдалечено администриране на системи с високо ниво на привилегии, когато системата се използва от името на акаунт с по-ниско ниво на привилегии. Не мога да си спомня точния брой пъти, когато ми се е налагало да работя с компютрите на потребителите и да получавам обаждания, които са изисквали от мен да изпълнявам административни задачи като промяна на парола. Разбира се, в среда на Active Directory можех просто да използвам RDP, за да вляза в контролер на домейн и да изпълня тази задача, но имах няколко клиента, които не използваха активна директория или RDP по редица причини. В тази ситуация е много удобно просто да поставите USB устройство и да използвате инсталираната на него помощна програма PsExec. В случая, показан на Фигура 3, използвах PsExec за нулиране на потребителската парола в системата чрез издигане на привилегиите на мрежовия инструмент, работещ под PsExec.