Вижу, что вы пошли по тем понятиям, которые я вам назвал.
Небезопасная загрузка dll. Это ситуация при которой приложение пытается загрузить одну dll, а загружает другую.
Чем это грозит: это самый простой способ внедрить свой код в адресное пространство другого процесса, а значит работать с тем уровнем прав и доступа, что и процесс.
Почему так случается: процесс может подгрузить dll двумя способами: по полному пути и по короткому имени. Если указан полный путь (например C:\directory\lib.dll), то загрузится именно та библиотека, которая указана. А если указать короткое имя (lib.dll), то сначала будет произведен поиск библиотеки. По-умолчанию поиск идет так - сначала библиотека ищется в папке с программой, потом в C:\windows\system32, затем еще в некоторых местах. Многие программисты кладут dll в system32 для того, чтобы в последствии вызывать эту библиотеку по короткому имени. Но мы знаем, что если положить "вредоносную" библиотеку с тем же именем рядом с программой, ты вызовется именно она.
Ну а теперь самое интересное, пример:
По пути C:\windows\system32\sysprep лежит программа sysprep.exe. У этого приложения есть две особенности:
1) Она всегда стартует от имени администратора (без спроса, даже без админских прав)
2) Она небезопасно подгружает две библиотеки.
Получается, что положив в папку C:\windows\system32\sysprep "вредоносную" библиотеку, то после запуска sysprep.exe автоматически будет исполнен код из библиотеки (причем с правами администратора). Вирусы аплодируют стоя.
Добавить комментарий