Пълен курс по етично хакерство от нула до експерт. Хакайте като хакери с „черни шапки“. Тестове за проникване, Kali Linux, хакване на WiFi и уеб сайтове, както и хакерският начин на мислене зад всичко това.

Двама изследователи поеха контрола над напълно обновен компютър с Windows 11 за пет минути чрез USB устройство, което никога не е съществувало физически. Компютърът е бил на екрана за вход. Windows сам е изтеглил уязвимия софтуер. 🧐

Plug and Play е онази част от Windows, която кара хардуера да работи, без да правите нищо. Свързвате принтер, уеб камера или телефон и след няколко секунди устройството работи. Това, което се случва в тези секунди, е, че устройството съобщава какво представлява, Windows приема това съобщение на доверие, търси съответния софтуерен пакет в Microsoft, изтегля го и го инсталира. Тази инсталация не се изпълнява от ваше име. Тя се изпълнява като NT AUTHORITY\SYSTEM – акаунтът с повече права на машината, отколкото има самият администратор, и никога не иска разрешение, тъй като в този процес няма никаква подкана за потвърждение.

Зад кулисите този процес се състои от четири стъпки. Устройството предава малка карта с информация за себе си (своите дескриптори), а Windows превръща това в идентификационен номер, който може да бъде проверен. Windows регистрира устройството в своя списък с хардуерни компоненти. Тази регистрация се предава на Мениджъра на конфигурацията (Configuration Manager) чрез едно вътрешно повикване – IOCTL 0x47084F. След това Мениджърът на конфигурацията активира Услугата за инсталиране на устройства (Device Installation Service, DSMSVC), която работи с права SYSTEM, търси в локалното хранилище за драйвери и стартира изтегляне от Windows Update, когато не открие нищо подходящо.

Алехандро Ернандо и Борха Мартинес, двама експерти от тип „red team“, разглобиха този процес и представиха резултата на конференцията DEF CON 34 под името „Plug and Pwn“. Техните разкрития не се отнасят до единична грешка в Windows. Проблемът е, че самата система за доставка предоставя на кода на външния доставчик най-високите права на машината, след което единственият оставащ въпрос е кой пакет на доставчик си струва да бъде доставен. Подписаният пакет с драйвери означава, че Microsoft е проверил подписа. Това обаче не означава, че услугата, съпътстващият инсталатор (co-installer), флагът за отстраняване на грешки (debug flag) или стойността в регистъра са били анализирани от гледна точка на потенциален атакуващ.

Първата верига от действия не изисква влязъл потребител или кликвания и се изпълнява за около пет минути.

Всичко започва с лаптоп с Linux, на който работи FaceDancer – Python рамка от Great Scott Gadgets, позволяваща софтуерно изграждане на USB устройство, заедно с платка Cynthion или GreatFET, която комуникира по физическия протокол. Заедно те се представят за модемен модул Sierra Wireless EM7340. Една подробност определя дали това изобщо ще проработи. Устройството съобщава, че не е единично устройство, а съвкупност от няколко функции в един порт (композитно устройство). Тогава Windows зарежда usbccgp.sys и обработва всяка част поотделно, което го кара да потърси пакета на доставчика, вместо стандартния драйвер, с който се доставя операционната система.

Windows прочита хардуерния идентификатор, свързва се с Windows Update и инсталира пакета с драйвери на Sierra. Този пакет включва SwiService – услуга на Windows, която се изпълнява като SYSTEM и отваря именуван канал (named pipe), за да могат други програми да комуникират с нея. Правата за достъп до този канал предоставят възможност за четене и запис на всеки (Everyone). Всеки акаунт на машината може да се свърже с него, както и акаунт на друга машина през SMB. Една от функциите, чакащи от другата страна на този канал, настройва DNS сървърите.

В този момент атакуващият контролира къде машината търси имена, като е постигнал това чрез устройство, което е съществувало единствено като описание по кабела.

След това същата платка се представя за четец на карти Sony FeliCa. Windows инсталира пакета на Sony, който се доставя със съпътстващ инсталатор (co-installer), наречен felica_coinst.dll. Съпътстващият инсталатор е малка DLL библиотека, която се изпълнява по време на инсталирането на устройството, за да завърши конфигурацията, и в този случай тя се опитва да изтегли своите настройки по чист HTTP протокол. DNS отговорът, който получава, е на атакуващия, така че изтегленият файл също е на атакуващия. Начинът на обработка на URL адреси в този компонент не филтрира точки или обратни наклонени черти, което превръща изтеглянето в уязвимост за преминаване през директории (path traversal) – запис на произволно място на диска, извършен от процес с права SYSTEM.

Те записват DLL библиотека в директорията System32. След това отново свързват устройството на Sierra, услугата му се стартира, зарежда DLL библиотеката, която сега се намира точно там, където се очаква да бъде открита, и съдържащият се в нея злонамерен код се изпълнява с права SYSTEM.

И двата пакета са легитимни. И двата са подписани. Нито един от доставчиците не е разпространил нищо, наподобяващо зловреден софтуер. Веригата от уязвимости съществува, защото Windows е съгласен да изтегли и двата пакета по заявка от устройство, което само измисля своята идентичност.

Втората верига от действия елиминира напълно хардуера. Изследователите я наричат „NoPlug and Pwn“.

Отдалечената връзка (Remote Desktop) може да пренасочва USB устройства от вашата машина към сървъра, с който се свързвате. Сървърът никога не вижда самия хардуер. Той изгражда представата си за устройството въз основа на дескрипторите, които клиентът изпраща по канал, наречен URBDRC, и се доверява на полученото. Изследователите са написали клиент за RDP на Python, който изпраща дескриптори за несъществуващо устройство – камера Intel RealSense. Сървърът създава възел на устройството и инсталира пакета за него. Оттам нататък...