eXeL@B —› Основной форум —› Вопрос по Daemon Tools + Syser + VMware |
Посл.ответ | Сообщение |
|
Создано: 26 декабря 2012 00:47 · Личное сообщение · #1 Установил я на варю Daemon Tools, потом установил Syser, вручную включил службу sptd (в реестре параметр запуска на 0 поменял), потом через RKU снимаю ядерные колбэк-обработчики этой прекрасной sptd, и дебаггер у меня запускается, работает. Даемон тулз тож диски эмулит, и всё в шоколаде, но Syser работает только с установленными на виртуалке VMware tools, а для этого строку isolation.tools.getVersion.disable = "TRUE" из конфига виртуалки мне приходится стирать, что приводит к тому, что хитрожопый старфорс детектит виртуалку через i/o backdoor механизм, т.е как-то так: Code:
bpio в Syser ничего не дают, т.е. где-то эта грёбаная инструкция есть, а где - непонятно. Трассировал с условием ехе, защищённый старфорсом, трассировал в лог и делал поиск по логу - болт. В Syser вписал tss, и в ответ увидел, что I/O Map size = 0, а по инфе |
|
Создано: 26 декабря 2012 00:51 · Поправил: plutos · Личное сообщение · #2 Архангел, признайтесь, это Вы? daFix: Новая метла она всегда по-новому метет... ----- Give me a HANDLE and I will move the Earth. | Сообщение посчитали полезным: daFix |
|
Создано: 26 декабря 2012 00:51 · Поправил: daFix · Личное сообщение · #3 AlienHackTeam Архангел, раздвоение личности?) Сорри за оффтоп UPD: не я один такой подозрительный UPD2: Пора бы уже выводить клоунов с форума ----- Research For Food | Сообщение посчитали полезным: plutos |
|
Создано: 26 декабря 2012 00:59 · Поправил: AlienHackTeam · Личное сообщение · #4 |
|
Создано: 26 декабря 2012 01:20 · Поправил: ARCHANGEL · Личное сообщение · #5 Та свиновод это новый ник себе придумал, но вопрос этот да, мой. Ну, попробую нормально сформулировать вопрос, т.е. более детально. Как известно, производители Duplex Secure позиционируют свой драйвер как несовместимый с ринг0 дебаггерами. Но "совместить" это дело можно, если удалить ядерные CALLBACK - обработчики, устанавливаемые драйвером sptd.sys (может именовать себя по-другому). Обработчики эти устанавливаются с помощью ядерных PsSetCreateProcessNotifyRoutine, PsSetLoadImageNotifyRoutine и т.д. Делается это легко с помощью Rootkit Unhooker (RkU), удаляем три колбэка, явно принадлежащих области памяти, занимаемой драйвером Duplex Secure, и четвёртый - расположенный в выделенной памяти и распознаваемый как расположенный в unknown code page. Ах да, забыл упомянуть, что этот драйвер используют Daemon tools и Alcohol. Но давайте по-порядку. Как только мы установим Syser, он автоматом отрубит, как где-то писали, службу sptd. Ну, правильнее сказать, что это не служба, а драйвер ринг0, просто общего у него со службой только то, что параметры его установки и запуска описаны в реестре HKLM\System\CurrentControlSet\Services\Sptd. Естественно, там есть параметр Start, который описывает, как драйвер будет подгружаться. Syser при установке этот параметр ставит равным 3, т.е. SERVICE_DEMAND_START - запуск по требованию. Вручную меняем его на ноль, и всё - драйвер эмулятора стартует как и раньше. По указанному выше способу мы, удаляя ядерные колбэки, делаем совместимость отладчика и эмулятора. Но! Без установленных VMware tools отладчик не может нормально работать с видеобуфером, проще говоря, его рабочего "окна" не видно на экране монитора. Ну что ж - ставим VMware tools. Кстати, у меня на разных системах эта проблема проявляется по-разному, т.е. где-то без этих VMware tools мышь не работает, где-то работет, но то колёсико перестаёт прокручивать область, то курсор нельзя навести в определённые зоны экрана, короче, без VMware tools всё работает весьма криво. Проблема в том, что в старфорсе присутствует код обнаружения эмулятора. Когда-то давненько я баловался, анпакая блокнот, упакованный старфорсом. Там внтури вм есть эта нехорошая инструкция in eax,dx, которую я менял на cli, тем самым добиваясь того, что генерился иксепшен, и старфорс работал на виртуалке, как миленький. А сейчас не получается найти вызов этой чудной инструкции. Да это и понятно - вариантов, откуда она может вызываться - миллион. Может из упакованного приложения, может из protect.exe, а потом как-то уведомлять распаковываемое приложение, что мы под варей. Стал искать, что тут можно сделать. Начал ставить bpio в сайсере. Но они не срабатывают. Я так понимаю, что старфорс может препятствовать такому срабатыванию, просто чистя drx регистры. Но, возможно, есть способ просто избавиться от такого обнаружения вм (который в инете называют i/o backdoor интерфейс из-за того, что так виртуалка может общаться с основной/реальной/железной машиной), я х.з., что-то там запатчить и т.д., т.к. по-моему, если я ничего не путаю, карта ввода-вывода в TSS настроена так, чтоб генерить иксепшен при выполнении таких инструкций, но иксепшена не происходит из-за кода вари. ----- Stuck to the plan, always think that we would stand up, never ran. | Сообщение посчитали полезным: plutos |
|
Создано: 26 декабря 2012 01:29 · Поправил: tomac · Личное сообщение · #6 |
|
Создано: 26 декабря 2012 01:49 · Личное сообщение · #7 Не зря говорят: "Лучше с умным потерять, чем с дураком найти!" Есть такие люди, которые умеют так задать вопрос, что если внимательно слушать, то узнаешь больше, чем из длинных обьяснений какого-нибудь дурака. АРХАНГЕЛ определенно один из этих людей! Спасибо, АРХАНГЕЛ, за вопрос! ----- Give me a HANDLE and I will move the Earth. | Сообщение посчитали полезным: ARCHANGEL |
|
Создано: 26 декабря 2012 01:52 · Поправил: reversecode · Личное сообщение · #8 что то я сомниваюсь что детект виртуалки это карта вывода, это в самой вмваре емуляции, и скорее всего ты его никак не перехватишь тем более это ОФФИЦИАЛЬНЫЙ детект ВМВаре, а есть еще неофиицальные которыми можно детектить вируталки и не факт что их не использует сарфорс поэтому лучший вариант, это разбирать старфорс побайтно) |
|
Создано: 26 декабря 2012 02:10 · Поправил: ARCHANGEL · Личное сообщение · #9 reversecode что то я сомниваюсь что детект виртуалки это карта вывода Точно-точно, и я тоже сомневаюсь. поэтому лучший вариант, это разбирать старфорс побайтно) Хм, возможно, но даже если отбросим код виртуальной машины старфорса, т.е. представим, что его там нет, всё на чистом С++, то это дело тоже такое небыстрое. А суть задачи в том, что хотел я помочь бедному Свиноводу перенести кусок кода из драйвера старфорса в дампы его многомегабайтные. Если кто не в курсе, то проблема заключается в том, что до того, как программа, упакованная старфорсом, дойдёт до ЕР, выполнется код из DllMain protect.dll, статически прилинкованной к защищаемому ехе-файлу. Там происходит вызов CreateFileA, которая открывает (правильнее сказать, посылает IRP_MJ_CREATE девайсу) по символьной ссылке девайс старфорса для дальнейшей работы. А работа эта заключается в том, что периодически внутри виртуальной машины происходят вызовы DeviceIoControl, где во входном буфере указывается область вм, а также размер этой области. Что именно происходит в драйвере, я пока не разбирал. Но в первом приближении видно, что если провести аналогию архитектуры вм старфорса с машиной Тьюринга, то множество ленточных символов после вызова DeviceIoControl меняется по какому-то закону. А т.к. часть, где защита получает дескриптор, с которым потом работает DeviceIoControl, Свиновод выпиливает, то получается, что внутри вм есть какая-то константа, в действительности не являющаяся валидным дескритором (хотя, может, так совпадёт, что это будет дескриптор, но явно не того, что нам нужно), и DeviceIoControl, естественно, не работает. Знаете, Свиновод, конечно, далековат от реверсинга, но я так ржу с его блога, что просто не мог не попытаться помочь человеку. plutos И тебе спасибо, что уделил время и прочитал ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 26 декабря 2012 02:32 · Личное сообщение · #10 |
|
Создано: 26 декабря 2012 08:38 · Личное сообщение · #11 ARCHANGEL пишет: получается, что внутри вм есть какая-то константа, в действительности не являющаяся валидным дескритором (хотя, может, так совпадёт, что это будет дескриптор, но явно не того, что нам нужно), и DeviceIoControl, естественно, не работает. Дескриптор как ни странно одинаковый,в обоих случаях -когда вызов DevIoCtrl будет успешный и когда он закончится неудачей.Это хорошо видно здесь: http://ic.pics.livejournal.com/svinovod2012/49577432/10549/10549_original.png http://ic.pics.livejournal.com/svinovod2012/49577432/10775/10775_original.png hDevice в обоих случаях одинаков. |
|
Создано: 26 декабря 2012 08:55 · Поправил: neprovad · Личное сообщение · #12 |
|
Создано: 26 декабря 2012 09:23 · Личное сообщение · #13 Попробовал подменить дескриптор - почему то не работает.Нашел адрес в дампе,где указано имя дрова "\.\sfdrv02" ,на OEP сделал прыжок в свободное место,туда прописал код: Code:
Записал дескриптор 00000068, дальше бряк на вызов DevIoCtrl ,подменил его дескриптор (генерится рандомно каждый раз) на 68, вызов функции - нет результата.Last Error "FILE_NOT_FOUND" ,раньше вроде был неправильный хэндл |
|
Создано: 26 декабря 2012 09:27 · Поправил: Nightshade · Личное сообщение · #14 Стар вызывает DeviceIoControl в 2 случаях. -При проверке диска -При работе с SFFS Проверки диска идут до оеп. Т е после оеп мы не можем вывалиться с кривым DevIo Для работы с SFFS написано куча эмулей, которые выложены в соседней теме. Т е я не понимаю как вы вообще попадаете на вызов DevIo. Кроме того есть способ запуска эмулятора дисков без извратов с sptd. Архангел пиши в личку - помогу, при обещании не сливать свину. |
|
Создано: 26 декабря 2012 09:42 · Поправил: AlienHackTeam · Личное сообщение · #15 Nightshade Ты не в теме вообще,перечитай ещё раз посты выше. Идет проверка блоков ВМ,с преобразованием их драйвером. На входе буфер (или лента кодов), на выходе - константа,используемая для вычисления адреса следующих команд. Метод подмены дескриптора драйвера выдает на выходе функции желаемую 1-цу, только выходная константа не формируется (она равна 00000000), т.е. можно предположить что помимо дескриптора дрова нужен ещё дескриптор какого-то файла Эти проверки есть только на Старе 4.50 ,начиная с 4.70 они поменяли дров и DeviceIoCtrl после ОЕР уже не вызывается. |
|
Создано: 26 декабря 2012 10:07 · Личное сообщение · #16 |
|
Создано: 26 декабря 2012 10:23 · Личное сообщение · #17 |
eXeL@B —› Основной форум —› Вопрос по Daemon Tools + Syser + VMware |
Эта тема закрыта. Ответы больше не принимаются. |