Перейти к содержанию
АВаТар

Современные буткит-технологии и детальный анализ Win32/Gapz

Recommended Posts

АВаТар

Статья под таким названием "Современные буткит-технологии и детальный анализ Win32/Gapz" появилась недавно на "Хабре". Хотел бы обсудить некоторые вопросы по этой теме со знающими людьми. На "Хабре" я это сделать не могу, т.к. нахожусь в режиме "read only".

Что конкретно я бы хотел обсудить - так это создание универсальной anti-bootkit технологии. Я такую систему делал ещё 20 лет тому назад для DOSа. И она работала!

Теперь время и ОСи - другие совсем, но принцип, по идее, должен сработать и сейчас...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Alex_Goodwin

Для Windows 8 такая система создана MS. UEFI Secure Boot.

А по поводу статьи Eset - смешно. Описали относительно не новый буткит, а сами не лечат.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
АВаТар

Если кого-то интересует идея создание "непотопляемого" анти-буткит продукта, то я могу здесь (или в другом месте) поделиться соображениями о том, как это красиво делается. Причём UEFI никакой роли не играет. Работать будет на любом BIOSе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
priv8v

АВаТар, мне было бы интересно вас послушать как человеку интересующимуся хехнологиями :)

Но на всякий случай напишу что об этом думают ав-компании: перехваты на открытие диска при котором возможна запись в первые байты стоят у всех уважающих себя антивирусов, выдать алерт или тупо заблочить вообще не проблема. Не заблочили лишь потому что тогда не будет работать много легального софта, а на алерт юзер все равно нажмет "да".

Потому решается на данный момент это костылем вида: создается вайтлист на приложения из которого алерта не будет, а на левую прогу будет устрашающего вида алерт с надеждой на то, что юзер нажмет "нет" тем самым запретив такую деятельность...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
priv8v

...прошу прощения за опечатку в слове "технологиями". честное слово не специально.

  • Upvote 5

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
АВаТар

priv8v, идея очень проста. Для этого давайте посмотрим на буткит-заразу с другой точки зрения.

Как легко заметить, зловред внедрился не абы куда, а именно в уязвимые участки процесса загрузки ОС. И это совершенно логично.

Далее идёт важное замечание: зловред не препятствует загрузке ОС.

По той простой причине, что ему ещё с ней - жить и жить (работать и работать)... Либо, если зловред не загружает ОС, то, значит, он не вирус-троян, а просто уничтожитель чужого имущества.

Теперь снова посмотрим на зловреда. Помимо функции "прилипания" к процессу загрузки, у него остаются не обязательные, в принципе, функции "маскировки" и самого "вреда".

Что предлагается сделать - вырезать из зловреда все вредные и не нужные функции. А на место "прилепления" поставить только одну полезную функцию - "сбрасывание чужака с хвоста". Всё это похоже на иммунизацию системы. На систему ставятся "заплатки" именно в те места, куда внедряется обычный зловред. А сами "заплатки" реализуют только одну функцию - "сбрасывание чужака с хвоста". Конкретно это означает, что они не позволяют "приклеиться" в это место кому бы то ни было ещё. А это всего лишь дело техники...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
_Stout
priv8v, идея очень проста. Для этого давайте посмотрим на буткит-заразу с другой точки зрения.

Как легко заметить, зловред внедрился не абы куда, а именно в уязвимые участки процесса загрузки ОС. И это совершенно логично.

Далее идёт важное замечание: зловред не препятствует загрузке ОС.

По той простой причине, что ему ещё с ней - жить и жить (работать и работать)... Либо, если зловред не загружает ОС, то, значит, он не вирус-троян, а просто уничтожитель чужого имущества.

Теперь снова посмотрим на зловреда. Помимо функции "прилипания" к процессу загрузки, у него остаются не обязательные, в принципе, функции "маскировки" и самого "вреда".

Что предлагается сделать - вырезать из зловреда все вредные и не нужные функции. А на место "прилепления" поставить только одну полезную функцию - "сбрасывание чужака с хвоста". Всё это похоже на иммунизацию системы. На систему ставятся "заплатки" именно в те места, куда внедряется обычный зловред. А сами "заплатки" реализуют только одну функцию - "сбрасывание чужака с хвоста". Конкретно это означает, что они не позволяют "приклеиться" в это место кому бы то ни было ещё. А это всего лишь дело техники...

Поздравляю, ты переоткрыл идею начала 90-х по иммунизации HDD от бут и МБР вирусов :-) С точностью до обоснования идеи

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
АВаТар

_Stout, Да, я открыл эту идею 20 лет назад, воплотил в DOSе. Об этом я написал в 1-м сообщении.

Моё предложение - реализовать эту защиту для современных реалий. Там ничего технически сложного нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Alex_Goodwin
Что предлагается сделать - вырезать из зловреда все вредные и не нужные функции. А на место "прилепления" поставить только одну полезную функцию - "сбрасывание чужака с хвоста". Всё это похоже на иммунизацию системы. На систему ставятся "заплатки" именно в те места, куда внедряется обычный зловред. А сами "заплатки" реализуют только одну функцию - "сбрасывание чужака с хвоста". Конкретно это означает, что они не позволяют "приклеиться" в это место кому бы то ни было ещё. А это всего лишь дело техники...

полезная функция, говоря нормальным языком - это самозащита, без нее вашу прививку будут перезаписывать.

Что получится в итоге - руткит-прививка будет конфликтовать в ядре с антивирусом, нет никаких гарантий, что ее не перезапишут, так как в ядре все равны. Соответственно, ваша идея скорее вредная, чем полезная.

Будут только лишние конфликты и синьки. Проще запретить вносить изменения в МБР/ВБР силами антивируса, что вроде как реализовано у Докторов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
АВаТар

Хорошо, самозащита - это слово лучше.

Далее, процитирую:

"руткит-прививка будет конфликтовать в ядре с антивирусом, нет никаких гарантий, что ее не перезапишут, так как в ядре все равны. Соответственно, ваша идея скорее вредная, чем полезная.

Будут только лишние конфликты и синьки. Проще запретить вносить изменения в МБР/ВБР силами антивируса, что вроде как реализовано у Докторов."

Давайте разберём эту идею на составляющие, и соберём по-новому. Cнова взглянем на Рис. 12 из исходной статьи. Напомню, там указан порядок загрузки ОС:

MBR -> VBR/IPL -> Bootmgr Winload.exe -> OS Kernel -> ELAM -> Kernel-mode drivers -> ...

Рассмотрим MBR. Цитата из статьи: "Код буткита перехватывает обработчик прерывания 0x13, int 13h".

(!) Самозащита сбрасывает адрес прерывания на BIOS (может, даже, делает это безусловно). Пользуясь настоящим адресом IRQ, самозащита считывает MBR с диска и сравнивает прочитанное с "самим собой" (т.е. выполняемым кодом) - то, что должно быть в MBR. Если обнаруживается разница, MBR перезаписывается, компьютер перезагружается.

Теперь цепочка VBR/IPL -> ... -> Вплоть до загрузки защищённого режима. Все компоненты загрузки ядра ОС (ntldr, bootmgr, winload.exe, ntoskrnl.exe, и т.д. и т.п.) в своих Точках Входа выполняют практически те же самые действия самозащиты, что и в MBR, но с учётом локального места действия.

Если Руткит-прививка будет являться частью ОС, то она не будет конфликтовать ни с чем, иначе ОС не загрузится. Зловред пытается запустить (ха, громко сказано!) ОС, он даёт ей загружаться и работать. Тем самым, он даёт работать самозащите, внедрённой во все Точки Входа. Таким образом, самозащита является частью ОС. Ну, или должна быть такой в идеале... Никаких конфликтов ни с чем...

Осталось только согласовать всё это с M$, а там - все такие мелкие и мягкие... Но можно и без них разрулить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Alex_Goodwin

Я промолчу про акронисы, аверов и шифрование и т.д., но загрузилась ОС, а дальше хитрый дров обходит вашего резидента и затирает его в МБР и т.д.

Еще нет ни одного буткита, которого нельзя обойти и вылечить.

Лучше придумайте, как бороться с руткитами, которые заражают бут-драйверы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
АВаТар

Alex_Goodwin, вы меня не поняли. Нет никакого резидента! - "обходить" некого. Перечитайте внимательно мои сообщения от начала, особенно предыдущее.

Насчёт руткитов, которые заражают бут-драйверы - это хорошая идея! Для успешной реализации моего метода, нужно просто "заразить" бут-драйвер моей самозащитой! Для этого мне нужна только детальная техническая информация о загрузке и получении управления бут-драйвером в Windows последних актуальных версий, имеющих хождение в народе.

Общая схема всегда одна и та же: в Точку Входа, куда передаётся управление от предыдущей компоненты (модуля, блока, и т.п.), внедряется хороший защитник, выполняющий (само-)защиту ОС и всего того, что нужно защитить от внедрения чужеродного.

Теперь насчёт затирания "самозащиты". Если её кто-то затрёт, то ему придётся грузить ОС вручную. Других вариантов нет. Пусть зловред грузит Windows полностью самостоятельно, не пользуясь стандартной схемой загрузки!

Так что давайте мне необходимую техничскую информацию о работе бут-драйвера, и я "отрублю" руткиты, которые заражают бут-драйверы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Alex_Goodwin

АВаТар

Возьмите любой буткит и посмотрите, как он заражает систему, как реализовано его лечение. Вашу защиту просто перезапишут из под ОС и все. Прям сразу после загрузки. И перезапишут правильно, т.е. ОС загрузится стандартно.

Про бут-дрова, тут вообще без комментариев, никто вам не даст заражать дрова.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
priv8v

АВаТар, ваша защита будет работать если только нечто подобное сделает МС уже на этапе компиляции своих драйверов...

а если говорить только про MBR то все равно приходим к той же проблеме:

Не заблочили лишь потому что тогда не будет работать много легального софта, а на алерт юзер все равно нажмет "да".

Потому решается на данный момент это костылем вида: создается вайтлист на приложения из которого алерта не будет

т.е каким-то программам нужно разрешать лазать в MBR, а каким-то нет. опять приходим к вайтлисту...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
АВаТар

priv8v, вы здесь:

"АВаТар, ваша защита будет работать если только нечто подобное сделает МС уже на этапе компиляции своих драйверов..."

поняли меня совершенно правильно! :)

А вот ниже, про MBR - я уже ничего не понял. :(

Могу только сказать, что иммунизатору "нужно разрешать лазать в MBR", либо MS-у разрешить переписать все свои загрузчики на "правильные", со встроенной самозащитой. Однако, иммунизатору "лазать в MBR" потребуется всего лишь 1 раз в жизни ОС на этом загрузочном диске.

Alex_Goodwin, попробую разжевать помельче. Систему самозащиты нужно встроить в стандартные механизмы загрузки ОС, желательно, самой MS. Чтобы они сами сделали самозащиту во все Точки Входа. Обойти это будет невозможно! Либо, как единственный вариант развития событий - грузить ОС трояну самому! :))

Так что, если "защиту просто перезапишут из под ОС и все", то грузиться ничего не будет! Это не будет загружаемой ОС. Умрут все - и троян и ОС одновременно.

"И перезапишут правильно, т.е. ОС загрузится стандартно" - видимо, понятия о "правильности" у нас совсем разные. С моей т.з. правильно - это, как сказал priv8v, защита будет работать если только нечто подобное сделает МС... Вот это будет 100% правильно!

Про бут-дрова, позволю себе комментарий: позвольте мне (или MS-у) заразить дрова!

ЗЫ. Если что-то в моей идее не понятно, задавайте вопросы.

ЗЫ2. Реализованная мной для DOSа система защиты от boot-вирусов работала 100% в "боевых" условиях, изгоняя реальные вирусы из этапа загрузки. Я и мои друзья видели это сами несколько десятков раз. Конечно, вирус мог сбить мою защиту, переписав мой MBR на стандартный. Но они не решались трогать уже стоящий в системе, чтобы ничего не рухнуло! Следовательно, чтобы заражения не произошло, нужно заменить стандартный MBR на мой! :) Чтобы MS сама делала такие стандартные MBR! И если они не могут/не хотят, то нужно им тактично объяснить, что самозащита во всех Точках Входа - благо для их детища.

Я всё сказал!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Umnik

Вспоминаю историю, когда лечили Висту от буткита, а она на момент лечения уже прикопала зараженный бут как родной. И после лечения детектила изменение и восстанавливала обратно на зараженный.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Alex_Goodwin
истему самозащиты нужно встроить в стандартные механизмы загрузки ОС, желательно, самой MS. Чтобы они сами сделали самозащиту во все Точки Входа. Обойти это будет невозможно!

Уважаемый изобретатель велосипеда, настоятельно рекомендую поискать в гугле UEFI Secure Boot.

Про бут-дрова, позволю себе комментарий: позвольте мне (или MS-у) заразить дрова!

Возьмете сэмпл любого зловреда, который так инфектит и посмотрите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Илья Рабинович

АВаТар, ваша защита будет работать ровно до тех пор, пока не станет сколь-нибудь популярной, после чего зловредописатели будут просто проверять загружаемый ими MBR/VBR на "вредоносность" и, в случае положительного исхода, патчить ваш "самозащитный" код прямо в памяти так, чтобы он переставал сбрасывать перехватчик 13h. И на этом, собственно, защита и кончится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
priv8v
А вот ниже, про MBR - я уже ничего не понял. sad.gif

Могу только сказать, что иммунизатору "нужно разрешать лазать в MBR", либо MS-у разрешить переписать все свои загрузчики на "правильные", со встроенной самозащитой. Однако, иммунизатору "лазать в MBR" потребуется всего лишь 1 раз в жизни ОС на этом загрузочном диске.

Допустим механизм зловреда такой: CreateFile - SetFilePos - WriteFile - Reboot и на экране красуется MBR-локер-вымогатель (винда не загружается).

Работать тут можно из под винды и "из под биоса". При работе из под винды мы сразу сталкиваемся с ситуацией что это нормальная программа пишет в мбр и ей бы это нужно разрешить (нужен обновляемый вайт-лист таких приложений). А если "из под биоса" сверять там что-то, то опять таки вышеозвученная проблема.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Юрий Паршин
Вспоминаю историю, когда лечили Висту от буткита, а она на момент лечения уже прикопала зараженный бут как родной. И после лечения детектила изменение и восстанавливала обратно на зараженный.

На самом деле очень мутная история, потому что никаких таких механизмов в висте не было и нет - переписанный MBR никто не восстанавливает.

  • Upvote 5

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
priv8v
На самом деле очень мутная история, потому что никаких таких механизмов в висте не было и нет - переписанный MBR никто не восстанавливает.

эту историю я не знаю, но чисто в теории могу предположить, что:

1. чистили мбр, а зловред его перезаписывал и специально или нечаянно валил систему

2. пытались вычистить зловреда из ядра, а винда думала, что это ее родной код и сама роняла систему

хотя я не уверен, просто первая мысль пришедшая в голову :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
АВаТар

Alex_Goodwin, спасибо, КЭП! за вашу рекомендацию поискать в гугле UEFI Secure Boot - нашёл кое-что интересное, о чём будет упомянуто ниже. И да, я смотрел DOSовские драйвера и исследовал механизм их заражения. Самозащита туда внедряется аналогичным образом, если этого не делают разработчики.

Илья Рабинович, вы правильно мыслите. Для того, чтобы справиться с внедрённой самозащитой, зловреду будет необходимо знать эту защиту "в лицо" - так же, как и антивирус "знает" вируса. :) Так пусть они ведут свои базы защиты! Моя идея - не дать зловреду загрузить ОС, если он не передаёт управление "моей" защите.

priv8v, при всём уважении, не понял - о какой "вышеозвученной проблеме" идёт речь? Можно поконкретнее?

А про "CreateFile - SetFilePos - WriteFile - Reboot и на экране красуется MBR-локер-вымогатель (винда не загружается)" могу сказать только одно. При загрузке компьютера, после отработки BIOSа, на пустом чёрном экране красуется надпись "Boot virus! Cure? Y/N". И если пользователь нажмёт 'Y', то он увидит обычную загрузку Windows. А если, по каким-то особым соображениям, нажмёт 'N', то он увидит (В УЖЕ ЗАГРУЖЕННОМ WINDOWS) тот самый MBR-локер-вымогатель. Ну и пусть он сам определяется со своими ответами...

Понимаете, зловред ведь тоже жить хочет. А может он жить только с загруженной Windows. А вот этого-то мы ему и не позволим... Ну, или пусть авторы зловредов ведут свою БД самозащит... Или одно из двух. (шутка)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
priv8v
Илья Рабинович, вы правильно мыслите. Для того, чтобы справиться с внедрённой самозащитой, зловреду будет необходимо знать эту защиту "в лицо" - так же, как и антивирус "знает" вируса. smile.gif Так пусть они ведут свои базы защиты! Моя идея - не дать зловреду загрузить ОС, если он не передаёт управление "моей" защите.

АВаТар, предлагаемая вами защита должна быть реализована достаточно глубоко, чтобы при попытке ее модификации в памяти сработал либо ав-комплекс, либо патх_гуард.

на пустом чёрном экране красуется надпись "Boot virus! Cure? Y/N"

какой код ее выводит? (где этот код должен по вашей задумке быть размещен)

то он увидит обычную загрузку Windows. А если, по каким-то особым соображениям, нажмёт 'N', то он увидит (В УЖЕ ЗАГРУЖЕННОМ WINDOWS) тот самый MBR-локер-вымогатель

ммм... не совсем так... сейчас скину вам в личных сообщениях зловреда...

priv8v, при всём уважении, не понял - о какой "вышеозвученной проблеме" идёт речь? Можно поконкретнее?

просто втихую блокировать запись в мбр или отпиливать от нее куски будет несколько некорректно, т.к это помешает работе некоторых легальных программ. это имел в виду.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
АВаТар

Теперь пару слов про UEFI Secure Boot.

1-м пунктом хочу отметить, что система самозащиты работает и без UEFI Secure Boot. :)

2-е. Приведу цитату Линуса Торвальдса: «Я определённо не большой фанат UEFI, но в то же время я понимаю, зачем пользователю может понадобиться загрузка с проверкой цифровых подписей и т.д. И если получить ключ для Fedora стоит всего 99 долларов, я не вижу тут какой-то большой проблемы». А нам, или кому ещё эти проблемы с UEFI Secure Boot нужны? (Вопрос риторический, если что...)

3-е. Цитата с Хабра. "Такая вот фигня. Сама же Secure Boot в плане защиты — сомнительная технология. Если Win 8 такая отвратительная OS, что не может сама защитить свои загрузочные записи и память периферийных устройств, то зачем вообще её использовать? Если же она не такая отвратительная, то зачем нужна Secure Boot? Защищаться от хакеров, которые ходят по домам и устанавливают своё malware с дискетки? А представьте проблемы пользователя, если вдруг malware действительно пробьёт защиту и пропишется в загрузочные записи? Это же полная недееспособность системы сразу же. Лучше ли это, чем возможность продолжать работу?" - практически мои слова! Вот и 1-й единомышленник попался! :) (Только у меня инвайта на Хабр, чтобы пообщаться с единомышленником, нету :( ) А то тут пока что почти конструктивная критика звучит...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
priv8v

АВаТар, проверяйте личные сообщения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

×