Дигиталният подпис върху Windows драйвер доказва кой го е създал. Той никога не е бил доказателство, че драйверът е безопасен. Нападателите изградиха техника върху тази пролука, наречена Bring Your Own Vulnerable Driver (BYOVD - Донеси свой собствен уязвим драйвер), която им предава контрола над Windows на най-дълбоко ниво. Част от зловредния софтуер, който използват, е подписан чрез собствената програма на Microsoft.
Драйверът е софтуерът, който позволява на Windows и дадено устройство да работят заедно – вашата клавиатура, принтер или графична карта. Той работи в ядрото (kernel), центъра на операционната система, на ниво, наречено ring 0, където кодът има директен достъп до паметта и хардуера. Софтуерът за сигурност в по-голямата си част наблюдава от една стъпка по-долу. Част от него също работи в ядрото, но дори той не може да се защити, след като нападателят контролира това ниво. Достигането на ядрото поставя нападателя най-отгоре.
Windows няма да зареди ядрен драйвер, освен ако той няма валиден дигитален подпис. Този подпис е печат от известна компания, проверен от система, наречена Driver Signature Enforcement. Идеята зад това е доверието. Когато признат доставчик подпише драйвера, Windows го третира като разрешен за стартиране. Слабостта се крие в това какво обещава този подпис. Той доказва кой е подписал драйвера, но не казва нищо за това дали кодът вътре е безопасен. Подписан драйвер може да съдържа уязвимост, която никога не е била планирана да бъде там, или може да бъде злонамерен от самото начало и все пак да притежава валиден подпис. Windows проверява печата, а не поведението.
Тук се намесва BYOVD. Нападателят вече има администраторски права на машината. Тези права са мощни, но все пак се изпълняват в потребителски режим (user mode), на една крачка от ядрото. За да пресече тази линия, нападателят се нуждае от драйвер. И така, те донасят такъв – записват подписан драйвер на диска, регистрират го като услуга на Windows и го стартират. Тъй като драйверът е подписан, Windows го зарежда в ядрото без възражения.
След това започват комуникация с него. Драйверите имат интерфейс, чрез който обикновена програма може да им възложи задача. Този интерфейс се нарича IOCTL (input output control). Добре написаният драйвер проверява всяка задача и прави само това, за което е създаден. Счупеният драйвер прави всичко, което му се подаде:
- Някои ще четат и променят защитената памет на ядрото за всеки, който поиска.
- Други ще спрат всяка програма в системата, без да задават въпроси.
Първата възможност – четене и писане в паметта на ядрото – е изключително мощна. С нея нападателят може да намери единична настройка, заровена дълбоко в Windows, и да я промени, да изтрие записите, които софтуерът за сигурност пази за себе си, или да замени списък с указатели, които Windows следва, така че следващата стъпка да изпълни собствения код на нападателя.
Убиването на инструмента за сигурност е шумният начин. Когато вашата антивирусна програма спре внезапно, Windows може да изскочи с предупреждение. Затова по-умният ход е тя да бъде оставена да работи, но тихомълком да бъде ослепена. EDR системите работят, като изискват от ядрото да ги уведомява при всяко събитие – стартиране на програма, зареждане на файл или промяна в системния регистър. Тези известия се наричат callbacks. Драйвер в ядрото може да намери списъка с callbacks и да изтрие тези, които EDR е настроил. Той може също да изключи ETW (Event Tracing for Windows) – друг канал, който инструментите за сигурност слушат. Антивирусната програма продължава да работи, иконата остава зелена, но тя не вижда нищо, защото нищо вече не достига до нея.