Аналіз серйозного вразливості системи Microsoft Windows: може призвести до значних загроз безпеці Web3
Минулого місяця у безпековому патчі Microsoft було виправлено вразливість підвищення привілеїв у системі Windows, яка використовується хакерами. Ця вразливість переважно існує у ранніх версіях Windows і не може бути активована на Windows 11. Незважаючи на те, що такі вразливості існують вже багато років, все ж заслуговує на детальний аналіз, як зловмисники продовжують їх використовувати у контексті постійного вдосконалення заходів безпеки.
Цей аналіз проведено на базі системи Windows Server 2016. Це не розкритий нульовий уразливість, яка дозволяє хакерам повністю контролювати систему Windows. Як тільки система буде контролюватися, наслідки можуть включати витоки особистої інформації, крах системи, втрату даних, фінансові втрати тощо. Для користувачів Web3 приватні ключі можуть бути вкрадені, цифрові активи можуть бути переведені. У більш широкому масштабі ця уразливість може навіть вплинути на всю екосистему Web3, що працює на основі інфраструктури Web2.
Аналізуючи патч, виявлено, що проблема полягає в обробці рахунку посилань на об'єкти. Ранні коментарі в коді показують, що попередній код лише блокував об'єкт вікна, але не блокував об'єкт меню у вікні, що призводило до можливого неправильного посилання на об'єкт меню.
Для відтворення цієї уразливості ми створили спеціальну багаторівневу вкладену структуру меню і задали для кожного меню специфічні властивості, щоб пройти відповідні перевірки системи. Ключовим моментом є видалення посилань між меню під час повернення до рівня користувача, що дозволяє успішно звільнити цільовий об'єкт меню. Таким чином, коли функція ядра знову звертається до цього меню, вона отримує доступ до недійсного об'єкта.
У процесі фактичного використання ми в основному розглянули два варіанти: виконання shellcode та використання операцій читання/запису для зміни адреси токена. З урахуванням механізмів безпеки високих версій Windows ми вибрали останній варіант. Увесь процес експлуатації можна розділити на два етапи: спочатку використати вразливість UAF для контролю значення cbwndextra, а потім на цій основі створити стабільні операції читання/запису.
Для досягнення стабільного розташування пам'яті ми спроектували структуру, що складається з трьох послідовних об'єктів HWND, звільняючи середній об'єкт і займаючи його об'єктом HWNDClass. Передні та задні об'єкти HWND використовуються для перевірки системи та як кінцевий засіб для читання та запису. Ми також точно визначаємо, чи відповідає розташування об'єктів очікуванням, використовуючи адреси витоків дескрипторів ядра.
У читанні та запису первісних даних ми використовуємо GetMenuBarInfo() для довільного читання, SetClassLongPtr() для довільного запису. Окрім операцій заміни TOKEN, усі інші операції запису виконуються з використанням об'єкта класу першого віконного об'єкта.
В цілому, хоча Microsoft переписує відповідний код ядра на Rust для підвищення безпеки, для існуючих систем такі вразливості все ще становлять серйозну загрозу. Процес експлуатації вразливостей відносно простий, в основному покладається на витік адреси десктопного стеку. У майбутньому виявлення аномальної пам'яті та операцій з вікнами може допомогти виявити подібні вразливості.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
10 лайків
Нагородити
10
5
Поділіться
Прокоментувати
0/400
GasFeeCry
· 08-02 20:43
Win програно
Переглянути оригіналвідповісти на0
MiningDisasterSurvivor
· 08-02 20:43
Ще одна хвиля невдах буде обдурена, як і в 18 році, коли вкрали закриті ключі.
Вразливості Windows загрожують безпеці Web3: хакери можуть контролювати систему для крадіжки закритих ключів
Аналіз серйозного вразливості системи Microsoft Windows: може призвести до значних загроз безпеці Web3
Минулого місяця у безпековому патчі Microsoft було виправлено вразливість підвищення привілеїв у системі Windows, яка використовується хакерами. Ця вразливість переважно існує у ранніх версіях Windows і не може бути активована на Windows 11. Незважаючи на те, що такі вразливості існують вже багато років, все ж заслуговує на детальний аналіз, як зловмисники продовжують їх використовувати у контексті постійного вдосконалення заходів безпеки.
Цей аналіз проведено на базі системи Windows Server 2016. Це не розкритий нульовий уразливість, яка дозволяє хакерам повністю контролювати систему Windows. Як тільки система буде контролюватися, наслідки можуть включати витоки особистої інформації, крах системи, втрату даних, фінансові втрати тощо. Для користувачів Web3 приватні ключі можуть бути вкрадені, цифрові активи можуть бути переведені. У більш широкому масштабі ця уразливість може навіть вплинути на всю екосистему Web3, що працює на основі інфраструктури Web2.
Аналізуючи патч, виявлено, що проблема полягає в обробці рахунку посилань на об'єкти. Ранні коментарі в коді показують, що попередній код лише блокував об'єкт вікна, але не блокував об'єкт меню у вікні, що призводило до можливого неправильного посилання на об'єкт меню.
Для відтворення цієї уразливості ми створили спеціальну багаторівневу вкладену структуру меню і задали для кожного меню специфічні властивості, щоб пройти відповідні перевірки системи. Ключовим моментом є видалення посилань між меню під час повернення до рівня користувача, що дозволяє успішно звільнити цільовий об'єкт меню. Таким чином, коли функція ядра знову звертається до цього меню, вона отримує доступ до недійсного об'єкта.
У процесі фактичного використання ми в основному розглянули два варіанти: виконання shellcode та використання операцій читання/запису для зміни адреси токена. З урахуванням механізмів безпеки високих версій Windows ми вибрали останній варіант. Увесь процес експлуатації можна розділити на два етапи: спочатку використати вразливість UAF для контролю значення cbwndextra, а потім на цій основі створити стабільні операції читання/запису.
Для досягнення стабільного розташування пам'яті ми спроектували структуру, що складається з трьох послідовних об'єктів HWND, звільняючи середній об'єкт і займаючи його об'єктом HWNDClass. Передні та задні об'єкти HWND використовуються для перевірки системи та як кінцевий засіб для читання та запису. Ми також точно визначаємо, чи відповідає розташування об'єктів очікуванням, використовуючи адреси витоків дескрипторів ядра.
У читанні та запису первісних даних ми використовуємо GetMenuBarInfo() для довільного читання, SetClassLongPtr() для довільного запису. Окрім операцій заміни TOKEN, усі інші операції запису виконуються з використанням об'єкта класу першого віконного об'єкта.
В цілому, хоча Microsoft переписує відповідний код ядра на Rust для підвищення безпеки, для існуючих систем такі вразливості все ще становлять серйозну загрозу. Процес експлуатації вразливостей відносно простий, в основному покладається на витік адреси десктопного стеку. У майбутньому виявлення аномальної пам'яті та операцій з вікнами може допомогти виявити подібні вразливості.