Сейчас на форуме: (+7 невидимых) |
eXeL@B —› Основной форум —› Vmprotect. Хитрая защита от отладки. |
. 1 . 2 . 3 . 4 . 5 . >> |
Посл.ответ | Сообщение |
|
Создано: 24 мая 2017 20:14 · Поправил: Vamit · Личное сообщение · #1 При реверсе одной проги встретил хитрую защиту от отладки: она не позволяет работать проге под дебагером, после F9 терминация, приаттачиться к работающей то же нельзя - сразу терминация. Приложение накрыто последним Vmprotect, все функции защиты также под протектором, основные виртуализованы, остальные обфусцированы, а всего их более 200шт. Терминирует именно защита, а не вмпрот. В TLS сидят 2 каллбака защиты, первый из них есть в листинге. Дебаг работает только до первого каллбака, тут можно снять дамп проги и девиртуализовать вмпрот. А суть задачи такова: прога посылает запрос на сервер, в котором одним из куков является состояние защиты (32 бита), проэмулировать мне его не удалось и сервак не отвечает. Прошу любые идеи как победить, или идентифицировать защиту, она явно не самописная, и прилинкована к проге из какой-то либы. Вот листинг нескольких функций ядра защиты, вытащенных из под Vmprotect: Code:
----- Everything is relative... |
|
Создано: 24 мая 2017 20:25 · Личное сообщение · #2 >> При реверсе одной проги встретил хитрую защиту, она не позволяет работать проге под дебагером, после F9 терминация, приаттачиться к работающей то же нельзя - сразу терминация. Как же так, если прога юзермодная то ведь все антидебаг трюки известны. Только GetTickCount рубит иногда. Трейс, бряк на ExitProcess (или как она ложиться) и смотреть? Ловим custom rdtsc. |
|
Создано: 24 мая 2017 20:53 · Личное сообщение · #3 |
|
Создано: 24 мая 2017 21:20 · Личное сообщение · #4 sendersu пишет: Как насчет спрятать процес? Ничего не помогает, ни фантом, ни стронг, ни кернел моде, ни сцилла и всё прочее. Все эти антидебаги с вмпротом работают без вопросов, но они патчат системные либы, а защита похоже их проверяет... Причем эти syscall, sysenter, int 2E, int 2D для меня темный лес, причем в динамике ничего не пашет, даже слепок памяти не сделать чтоб посмотреть, а чтоб добраться до их аргументов нужно кучу фунок из под вмпрота вытащить, а виртуализация там самая суровая - ультра со всеми опциями. Это полгода работы в статике, не меньше... ----- Everything is relative... |
|
Создано: 24 мая 2017 21:57 · Поправил: vden · Личное сообщение · #5 SysEnter(0x9A...) это же вроде NtQueryInformationProcess ? (на xp) SysEnter(0xE5... ) - NtSetInformationThread тупо заинлайнили вызовы Code:
= NtQueryInformationProcess(0x0FFFFFFFF, ProcessDebugPort, ...) Code:
= NtSetInformationThread(0x0FFFFFFFE, ThreadHideFromDebugger, 0, 0) | Сообщение посчитали полезным: Vamit |
|
Создано: 24 мая 2017 22:20 · Личное сообщение · #6 |
|
Создано: 24 мая 2017 22:36 · Личное сообщение · #7 |
|
Создано: 24 мая 2017 22:55 · Личное сообщение · #8 |
|
Создано: 24 мая 2017 23:03 · Личное сообщение · #9 |
|
Создано: 24 мая 2017 23:21 · Личное сообщение · #10 |
|
Создано: 24 мая 2017 23:26 · Личное сообщение · #11 int 2d ntcallbackreturn ? анти дебаг где клерк? он знает матчасть в сисколах | Сообщение посчитали полезным: v00doo |
|
Создано: 25 мая 2017 00:01 · Поправил: vden · Личное сообщение · #12 Если успешно, то в логе должно быть Log("[TITANHIDE] ProcessDebugPort by %d\n", pid); и Log("[TITANHIDE] ThreadHideFromDebugger by %d\n", pid); |
|
Создано: 25 мая 2017 11:25 · Поправил: Vamit · Личное сообщение · #13 Решил обновить весь антидебаг, с последней Сциллой (март 2017) ситуация изменилась, теперь Олька при старте проги не терминирует, а выдает пустые окна, одни только адреса - контекста нет. С Титаном вообще непонятно, сервис создается, но не стартует - Не найден указанный путь, а в списке служб сервис отсутствует. Олька 1 чистая, из плагов только OllyDump, ODbgScript и свипер с отключенным антидебагом. Да, всё эти манипуляции на виртуалке HyperV под Win10, возможности проверить на чистой ХР нет Пробовал Ольку 2 со Сциллой на Вин10, стоп на первой вмпротовской ТЛС есть, далее прога стартует вне Ольки, в дебагере только пустые окна - писал уже об этом в теме декомпилятора. Вот сам экзешник, может кто попробует... ----- Everything is relative... |
|
Создано: 25 мая 2017 12:02 · Поправил: TryAga1n · Личное сообщение · #14 Vamit пишет: Олька при старте проги не терминирует, а выдает пустые окна, одни только адреса - контекста нет. На ХП под VirtualBox'ом точно так же Запуск без отладчика и с запущенным рядом отладчиком, происходит в штатном режиме. При попытке приаттачиться, получаем Terminate в одном из потоков, но это скорее всего антиотладка ВМпрота уже. | Сообщение посчитали полезным: Vamit |
|
Создано: 25 мая 2017 12:17 · Личное сообщение · #15 TryAga1n пишет: Запуск без отладчика и с запущенным рядом отладчиком, происходит в штатном режиме. Это если отладчик без кернел моде, а рядом с кернел моде у меня прога не стартует. получаем Terminate в одном из потоков, но это скорее всего антиотладка ВМпрота уже Нет, вмпрот антидебагом обходится легко, это реакция защиты. ----- Everything is relative... |
|
Создано: 25 мая 2017 15:16 · Личное сообщение · #16 Windows 10 x64 Enterprise build 1703 x32dbg, Scyllahide Шо надо не смотрел, врубил всё. Атачицца. Memory map есь, тред cpu cycles есь. А вот это имхо self check. Один тред главный, за окошко итд отверчает. Другой, с 53мил. дельта, крутится так, "для прикола". Start address интересен, один и тот же на всех. Даже на hardware бряках на например UpdateWindow в user32.dll рубится, создаёт новый процесс и видать эксэпшн -> winfault.ехе | Сообщение посчитали полезным: Vamit |
|
Создано: 25 мая 2017 17:50 · Личное сообщение · #17 hash87szf пишет: Windows 10 x64 Enterprise build 1703 x32dbg, Scyllahide Под x32dbg не смотрел, да и Вин 10 не особо интересен, пробовал под ним, правда давненько, с Олькой 2 и вмпротом невозможно под ним работать, да, к проге вроде бы аттачится, только толку мало, хардбяки не работают и стопануться где нужно никак, а в памяти того что нужно нет. Актуально именно на ХП. На ранних версиях этой проги был только вмпрот, с дебагом не было никаких проблем. Затем всунули в ТЛС один каллбак, прога под дебагером уже не стартовала, но можно было приаттачиться и подебажить. А не так давно добавили в ТЛС второй каллбак и началась полная хрень. ----- Everything is relative... |
|
Создано: 25 мая 2017 18:51 · Личное сообщение · #18 |
|
Создано: 25 мая 2017 19:28 · Поправил: Bronco · Личное сообщение · #19 |
|
Создано: 25 мая 2017 20:08 · Поправил: Vamit · Личное сообщение · #20 r99 Неужели всё дело в виртуалке (в HyperV и VirtualBox не пашет, а в варе всё норм), с трудом в это верится. У тебя Олька чистая или сборка? Может дать настройки фантома и стронга для проверки, можно просто ини файл ольки, вроде бы оба туда пишут. И ещё их версии для надежности. что надо декомпильнуть код в тредгварде для комьюнити, чтобы разобраться до конца 200 фунок декомпильнуть, это не как два пальца ..., причем почти половину из них вручную, чистую обфускацию свипер не берет. ----- Everything is relative... |
|
Создано: 25 мая 2017 20:26 · Личное сообщение · #21 |
|
Создано: 26 мая 2017 03:49 · Личное сообщение · #22 redlord > где клерк? он знает матчасть в сисколах Умный человек возьмёт мой модуль фильтрации из подобной темы, он сильный и позволяет решить сабж простой загрузкой до старта апликухи(нэйтив, до инит длл). Но вам же нужно это настройками плагов сделать, так что я хз. Добавлено спустя 25 минут > Другой, с 53мил. дельта, крутится так, "для прикола". Это всё обычная системная обработка, не тот случай, где необходимо взять приложение под визор. Достаточно обычной системной фильтрации. ----- vx |
|
Создано: 26 мая 2017 09:43 · Поправил: Vamit · Личное сообщение · #23 difexacaw пишет: он сильный и позволяет решить сабж простой загрузкой до старта апликухи Основная цель не изучение защиты, а чтобы прога под дебагером работала. А вот если цель не достигнута, то на крайний случай, изучение. Эта защита сидит не только до старта проги, она во все важные функи вшита, в том числе и в треды и естественно всё обращение к защите завиртуализовано вмпротом. Все нужные функи тела проги я девиртуализовал, там простая виртуализация без всяких опций, декомпилится без вопросов. А вот функи самой защиты накрыли по максимуму. Пока у одного r99 всё работает, но написал и пропал... А 5 потоков с одним адресом это _NtWaitForWorkViaWorkerFactory, нужны для организации пула потоков для I/O completion port (пул сокетов, распараллеленный между ядрами процессора), всего их может быть до 100шт. ----- Everything is relative... |
|
Создано: 26 мая 2017 14:39 · Личное сообщение · #24 |
|
Создано: 26 мая 2017 16:42 · Личное сообщение · #25 |
|
Создано: 26 мая 2017 17:26 · Поправил: vden · Личное сообщение · #26 На примере TitanHide я бы убедился: 1. что драйвер стартует (titanhide.sys) 2. на win10 может быть проблема с нахождением SSDT There is partial Windows 10 support. Hooking works, but finding the SSDT will currently fail. If you must run TitanHide on Windows 10, a workaround is to find the RVA of KeServiceDescriptorTable in ntoskrnl.exe and hardcode it in SSDTFind(). Ради интереса поставлю 10-ку x86, посмотрю. |
|
Создано: 26 мая 2017 18:49 · Личное сообщение · #27 |
|
Создано: 26 мая 2017 18:52 · Поправил: Vamit · Личное сообщение · #28 vden Я уже про это писал: С Титаном вообще непонятно, сервис создается, но не стартует - Не найден указанный путь, а в списке служб сервис отсутствует. Пытался поставить TitanHide на WinXP sp3 на виртуалке HyperV под Win10 x64. Я не понимаю какой нужен путь для старта сервиса? Вот для создания путь нужен. difexacaw пишет: Так что Ki* ентри хучим и вуаля. Если такой умный, то захучь и покажи решение, экзешник выложен, а болтать мы все можем... ----- Everything is relative... |
|
Создано: 26 мая 2017 18:56 · Поправил: vden · Личное сообщение · #29 Я только установил win10 x86, Пока попробовал создать папку c:\dbg с драйвером TitanHide.sys sc create TitanHide binPath= c:\Dbg\TitanHide.sys type=kernel sc start TitanHide Дальше лог из c:\TitanHide.log [TITANHIDE] FileSize of ntdll.dll is 0018A568! [TITANHIDE] UndocumentedInit() was successful! [TITANHIDE] Device \Device\TitanHide created successfully! [TITANHIDE] Symbolic link \DosDevices\TitanHide->\Device\TitanHide created! [TITANHIDE] SSDThook(NtQueryInformationProcess:0x810EEBB0, 0xA5C1171A) [TITANHIDE] SSDThook(NtQueryObject:0x81110956, 0xA5C1183E) [TITANHIDE] SSDThook(NtQuerySystemInformation:0x810D5C26, 0xA5C119A2) [TITANHIDE] SSDThook(NtSetInformationThread:0x810D8B8A, 0xA5C11AF2) [TITANHIDE] SSDThook(NtClose:0x810F5F64, 0xA5C11694) [TITANHIDE] SSDThook(NtSetContextThread:0x812E2159, 0xA5C11A22) [TITANHIDE] Hooks::Initialize() returned 6 [TITANHIDE] HiderProcessData OK! [TITANHIDE] ProcessDebugPort by 2248 И на этом отладчик виснет. |
|
Создано: 26 мая 2017 19:01 · Поправил: difexacaw · Личное сообщение · #30 Vamit Тут есть топик, но я не могу найти, так как я не могу подобрать критерий поиска. Вероятно это тот архив, хотя я не уверен. Форумный двиг уг и не позволяет найти свои аттачи етц. Была тема про детект .net отладчика, может вы сможите найти. > то захучь и покажи решение Хучилось через конструктор - морфом. Но не суть важно, не нужно так вопрос формулировать, не гопники же за углом. ----- vx |
. 1 . 2 . 3 . 4 . 5 . >> |
eXeL@B —› Основной форум —› Vmprotect. Хитрая защита от отладки. |