Сейчас на форуме: rmn, exp50848 (+7 невидимых)

 eXeL@B —› Основной форум —› Вопрос по Daemon Tools + Syser + VMware
Посл.ответ Сообщение

Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 26 декабря 2012 00:47
· Личное сообщение · #1

Установил я на варю Daemon Tools, потом установил Syser, вручную включил службу sptd (в реестре параметр запуска на 0 поменял), потом через RKU снимаю ядерные колбэк-обработчики этой прекрасной sptd, и дебаггер у меня запускается, работает. Даемон тулз тож диски эмулит, и всё в шоколаде, но Syser работает только с установленными на виртуалке VMware tools, а для этого строку isolation.tools.getVersion.disable = "TRUE" из конфига виртуалки мне приходится стирать, что приводит к тому, что хитрожопый старфорс детектит виртуалку через i/o backdoor механизм, т.е как-то так:
Code:
  1.     mov eax, 0x564D5868 
  2.     mov ecx, 10
  3.     xor ebx, ebx
  4.     mov dx, 0x5658 
  5.     in eax, dx

bpio в Syser ничего не дают, т.е. где-то эта грёбаная инструкция есть, а где - непонятно. Трассировал с условием ехе, защищённый старфорсом, трассировал в лог и делал поиск по логу - болт. В Syser вписал tss, и в ответ увидел, что I/O Map size = 0, а по инфе --> Тык <-- я понял, что если размер нулевой, то все биты битовой карты считаются взведенными, а значит вызов иснтрукции типа in xxx,xx будет делать исключение. Внимание, вопрос - как бы так оставить VMware tools, но убрать этот грёбаный бэкдор?




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 26 декабря 2012 00:51 · Поправил: plutos
· Личное сообщение · #2

Архангел, признайтесь, это Вы?

daFix:
Новая метла она всегда по-новому метет...

-----
Give me a HANDLE and I will move the Earth.


| Сообщение посчитали полезным: daFix


Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

Создано: 26 декабря 2012 00:51 · Поправил: daFix
· Личное сообщение · #3

AlienHackTeam
Архангел, раздвоение личности?) Сорри за оффтоп
UPD: не я один такой подозрительный

UPD2: Пора бы уже выводить клоунов с форума

-----
Research For Food


| Сообщение посчитали полезным: plutos

Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 26 декабря 2012 00:59 · Поправил: AlienHackTeam
· Личное сообщение · #4

Нет,я новый модератор тут.Вот скопировал его пост из закрытой темы сюда. Что непонятно?
Временно исполняю обязанности Архура

Нет,банить не будем никого - наоборот,свобода выражения.Я сторонник либеральных идей,матом только не ругайтесь




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 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

Ранг: 65.3 (постоянный), 10thx
Активность: 0.020
Статус: Участник

Создано: 26 декабря 2012 01:29 · Поправил: tomac
· Личное сообщение · #6

AlienHackTeam
Архаром он будет. Он Archer, лучник! Читается "Арчер".

По теме - может быть, проще сисер заставить работать без тулз? Или сделать отладку с хоста, чтобы драйверы монитора и мыши были не нужны.




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 26 декабря 2012 01:49
· Личное сообщение · #7

Не зря говорят: "Лучше с умным потерять, чем с дураком найти!"
Есть такие люди, которые умеют так задать вопрос, что если внимательно слушать, то узнаешь больше, чем из длинных обьяснений какого-нибудь дурака.
АРХАНГЕЛ определенно один из этих людей!
Спасибо, АРХАНГЕЛ, за вопрос!

-----
Give me a HANDLE and I will move the Earth.


| Сообщение посчитали полезным: ARCHANGEL


Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 26 декабря 2012 01:52 · Поправил: reversecode
· Личное сообщение · #8

что то я сомниваюсь что детект виртуалки это карта вывода,
это в самой вмваре емуляции, и скорее всего ты его никак не перехватишь
тем более это ОФФИЦИАЛЬНЫЙ детект ВМВаре, а есть еще неофиицальные которыми можно детектить вируталки и не факт что их не использует сарфорс

поэтому лучший вариант, это разбирать старфорс побайтно)




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 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.





Ранг: 529.0 (!), 110thx
Активность: 0.290.04
Статус: Участник
5KRT

Создано: 26 декабря 2012 02:32
· Личное сообщение · #10

ARCHANGEL
Виртуалки вроде грешат в информации об оборудовании. В информации о устройствах, может быть вписан производитель VMWare, проверь

-----
Research For Food




Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 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 в обоих случаях одинаков.



Ранг: 35.4 (посетитель), 15thx
Активность: 0.020
Статус: Участник

Создано: 26 декабря 2012 08:55 · Поправил: neprovad
· Личное сообщение · #12

Выше справедливо заметили про отладку с хоста. IDA будет поудобней syser



Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 26 декабря 2012 09:23
· Личное сообщение · #13

Попробовал подменить дескриптор - почему то не работает.Нашел адрес в дампе,где указано имя дрова "\.\sfdrv02" ,на OEP сделал прыжок в свободное место,туда прописал код:
Code:
  1. push 0
  2. push 40000000
  3. push 3
  4. push 0
  5. push 7
  6. push c0000000 (не кладется почему то,только руками)
  7. push 00CB4E88     ASCII "\.\sfdrv02"
  8. call kernel32.CreateFileA
  9. push 60
  10. push ......     //первые команды ОЕР
  11. jmp обратно

Записал дескриптор 00000068, дальше бряк на вызов DevIoCtrl ,подменил его дескриптор (генерится рандомно каждый раз) на 68, вызов функции - нет результата.Last Error "FILE_NOT_FOUND" ,раньше вроде был неправильный хэндл




Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 26 декабря 2012 09:27 · Поправил: Nightshade
· Личное сообщение · #14

Стар вызывает DeviceIoControl в 2 случаях.
-При проверке диска
-При работе с SFFS
Проверки диска идут до оеп. Т е после оеп мы не можем вывалиться с кривым DevIo
Для работы с SFFS написано куча эмулей, которые выложены в соседней теме.
Т е я не понимаю как вы вообще попадаете на вызов DevIo.
Кроме того есть способ запуска эмулятора дисков без извратов с sptd. Архангел пиши в личку - помогу, при обещании не сливать свину.



Ранг: 2.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 26 декабря 2012 09:42 · Поправил: AlienHackTeam
· Личное сообщение · #15

Nightshade
Ты не в теме вообще,перечитай ещё раз посты выше. Идет проверка блоков ВМ,с преобразованием их драйвером. На входе буфер (или лента кодов), на выходе - константа,используемая для вычисления адреса следующих команд. Метод подмены дескриптора драйвера выдает на выходе функции желаемую 1-цу, только выходная константа не формируется (она равна 00000000), т.е. можно предположить что помимо дескриптора дрова нужен ещё дескриптор какого-то файла

Эти проверки есть только на Старе 4.50 ,начиная с 4.70 они поменяли дров и DeviceIoCtrl после ОЕР уже не вызывается.




Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 26 декабря 2012 10:07
· Личное сообщение · #16

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




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 26 декабря 2012 10:23
· Личное сообщение · #17

Клоун забанен.


 eXeL@B —› Основной форум —› Вопрос по Daemon Tools + Syser + VMware
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати