Хочется также представить ситуацию с позиции студента этого самого вуза и этого самого курса. Я вот долго хотел разобраться в одной статье, и курс, о котором идёт речь, меня побудил выйти из зоны комфорта и написать её перевод с анализом. Так что лично я благодарен преподавателям, что они поощряют такое творчество.
Для различителя между реальным железом и виртуализацией здесь выбран очень сложный и не дающий никаких гарантий работоспособности подход
совершенно согласен. Более того, я сам в последнем комментарии привёл ссылку на статью, в которой тот же результат достигается более систематично и куда проще(вплоть до автоматизации). Замечу только, что ваша методика с синхронизацией времени(и другие, основанные на взаимодействии с внешним миром, которые сразу приходят на ум), хотя и действенна, может вызвать подозрение со стороны антивирусного ПО, поэтому вредоносное ПО старается использовать более «автономные», неприметные методы определения среды, в которой исполняется.
Я разместил в своей статье размышления на тему red pill, так как этот её пример, уступая в эффективности(поэтому, кстати, я не добавил свою статью в хаб «Защита информации» или подобный), обладает привлекательной экзотичностью. К тому же было бы попросту не совсем корректно опускать один из основных тезисов авторов оригинальной работы. Вот, какая ремарка в ней присутствует на эту тему:
Although “redpills” are plentiful and can be automatically produced, the ability to host arbitrary computations in the “red pill” space is a fresh cautionary tale.
Верно! Приведённый вами и другие примеры неожиданных тьюринг-полных систем; связанные с этим соображения безопасности; а также рассуждения об особенностях «хакерского взгляда» на вещи можно найти в заметке Surprisingly Turing-Complete(в статье я также на неё ссылаюсь).
Полюбившийся мне отрывок оттуда:
“Uncle Milton Industries has been selling ant farms to children since 1956. Some years ago, I remember opening one up with a friend. There were no actual ants included in the box. Instead, there was a card that you filled in with your address, and the company would mail you some ants. My friend expressed surprise that you could get ants sent to you in the mail. I replied: ‘What’s really interesting is that these people will send a tube of live ants to anyone you tell them to.’”
Спасибо за вопрос!
Сразу оговорюсь: я не эксперт в области виртуализации, поэтому попытаюсь ответить вам словами более компетентных людей, надеюсь, не истолкую их превратно.
1. Цитата из публикации, на которой основана моя статья:
Not a single such emulation and tracing tool reflected the entirety of hardware’s actual behavior on which we rely. We believe the reason for this limitation is that emulation-based analysis tools are primarily debugged against popular OS implementations rather than hardware specifications.
Аналогичное утверждение, с некоторыми деталями, авторы делают в своём выступлении, на 54:55. Разумеется, возникает вопрос — как тогда они записывали своё демо? Они могли запустить свой «странный вычислитель» на голом железе, но в видео явно видно окошко bochs. В другом выступлении, на 26:21, поясняется, что одному из авторов статьи изначально пришлось пропатчить этот эмулятор, чтобы он всё же повторял поведение голого железа, но в итоге, разобравшись в проблеме, он просто поместил workaround в свой компилятор, обходящий баг в bochs, чтобы их программа работала правильно и без патча.
2. Некоторые другие источники[1][2][3, слайд 8] наталкивают на мысль, что прерывания и исключения — это как раз тот аспект(тот 1%, о котором вы говорите?) взаимодействия виртуальной машины с железом, который гипервизор эмулирует программно, а значит это вполне плодородная почва для генерации red pills.
3. Если я правильно интерпретировал вашу мысль(поправьте, если это не так), то red pill создаются непросто, а если они и существуют, то их легко пофиксить, пропатчив гипервизор. Для начала, предлагаю вам ознакомиться c четвёртым абзацем моей статьи — там, а также в приведённых ссылках, есть некоторые наводки на то, почему дела обстоят не совсем так. Прибыль разработчиков гипервизоров зависит не от количества red pills, а от стабильности исполнения мейнстримных операционных систем, поэтому мотивация патчить гипервизоры для правильной обработки недостижимых при обычном использовании случаев(например, хитрости с рудиментами вроде double fault) стремится к нулю. С учётом этого, создание red pills, эксплуатирующих многочисленные баги гипервизоров, не составляет труда: для этого существуют даже автоматические инструменты.
Лучше водки хуже нет.
Хочется также представить ситуацию с позиции студента этого самого вуза и этого самого курса. Я вот долго хотел разобраться в одной статье, и курс, о котором идёт речь, меня побудил выйти из зоны комфорта и написать её перевод с анализом. Так что лично я благодарен преподавателям, что они поощряют такое творчество.
совершенно согласен. Более того, я сам в последнем комментарии привёл ссылку на статью, в которой тот же результат достигается более систематично и куда проще(вплоть до автоматизации). Замечу только, что ваша методика с синхронизацией времени(и другие, основанные на взаимодействии с внешним миром, которые сразу приходят на ум), хотя и действенна, может вызвать подозрение со стороны антивирусного ПО, поэтому вредоносное ПО старается использовать более «автономные», неприметные методы определения среды, в которой исполняется.
Я разместил в своей статье размышления на тему red pill, так как этот её пример, уступая в эффективности(поэтому, кстати, я не добавил свою статью в хаб «Защита информации» или подобный), обладает привлекательной экзотичностью. К тому же было бы попросту не совсем корректно опускать один из основных тезисов авторов оригинальной работы. Вот, какая ремарка в ней присутствует на эту тему:
Полюбившийся мне отрывок оттуда:
Сразу оговорюсь: я не эксперт в области виртуализации, поэтому попытаюсь ответить вам словами более компетентных людей, надеюсь, не истолкую их превратно.
1. Цитата из публикации, на которой основана моя статья:
Аналогичное утверждение, с некоторыми деталями, авторы делают в своём выступлении, на 54:55. Разумеется, возникает вопрос — как тогда они записывали своё демо? Они могли запустить свой «странный вычислитель» на голом железе, но в видео явно видно окошко bochs. В другом выступлении, на 26:21, поясняется, что одному из авторов статьи изначально пришлось пропатчить этот эмулятор, чтобы он всё же повторял поведение голого железа, но в итоге, разобравшись в проблеме, он просто поместил workaround в свой компилятор, обходящий баг в bochs, чтобы их программа работала правильно и без патча.
2. Некоторые другие источники[1][2][3, слайд 8] наталкивают на мысль, что прерывания и исключения — это как раз тот аспект(тот 1%, о котором вы говорите?) взаимодействия виртуальной машины с железом, который гипервизор эмулирует программно, а значит это вполне плодородная почва для генерации red pills.
3. Если я правильно интерпретировал вашу мысль(поправьте, если это не так), то red pill создаются непросто, а если они и существуют, то их легко пофиксить, пропатчив гипервизор. Для начала, предлагаю вам ознакомиться c четвёртым абзацем моей статьи — там, а также в приведённых ссылках, есть некоторые наводки на то, почему дела обстоят не совсем так. Прибыль разработчиков гипервизоров зависит не от количества red pills, а от стабильности исполнения мейнстримных операционных систем, поэтому мотивация патчить гипервизоры для правильной обработки недостижимых при обычном использовании случаев(например, хитрости с рудиментами вроде double fault) стремится к нулю. С учётом этого, создание red pills, эксплуатирующих многочисленные баги гипервизоров, не составляет труда: для этого существуют даже автоматические инструменты.