# новый способ ловли fs

Тема в разделе "WASM.HEAP", создана пользователем kaspersky, 20 дек 2007.

  1. Hellspawn

    Hellspawn New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2006
    Сообщения:
    310
    Адрес:
    Москва
    вспомнили баянные трюк)))

    винда определяет наличие отладчика:
    Код (Text):
    1. 7C8630E7   .  57                  PUSH EDI                                                ; /pReqsize
    2. 7C8630E8   .  6A 04               PUSH 4                                                  ; |Bufsize = 4
    3. 7C8630EA   .  8D85 DCFEFFFF       LEA EAX,DWORD PTR SS:[EBP-124]                          ; |
    4. 7C8630F0   .  50                  PUSH EAX                                                ; |Buffer
    5. 7C8630F1   .  6A 07               PUSH 7                                                  ; |InfoClass = 7
    6. 7C8630F3   .  E8 1DADFAFF         CALL kernel32.GetCurrentProcess                         ; |[GetCurrentProcess
    7. 7C8630F8   .  50                  PUSH EAX                                                ; |hProcess
    8. 7C8630F9   .  FF15 AC10807C       CALL DWORD PTR DS:[<&ntdll.NtQueryInformationProcess>]  ; \ZwQueryInformationProcess
    9. 7C8630FF   .  85C0                TEST EAX,EAX
    10. 7C863101   .  0F8C A2000000       JL kernel32.7C8631A9
    11. 7C863107   .  39BD DCFEFFFF       CMP DWORD PTR SS:[EBP-124],EDI
    12. 7C86310D   .  0F84 96000000       JE kernel32.7C8631A9 // ;)
    InfoClass = 7 (DebugPort)

    тут несколько способов, главное чтобы мы прыгнули...

    з.ы. помучайте мой плагин для ольги ;)
    з.ы.ы. есть нескольно багов, которые валят ольгу на раз, два, тока зачем самим
    закапывать такой хороший инструмент...
     
  2. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    Asterix
    > не важно, после выделения памяти и записи кода
    > можно поставить атрибут на выделенную память
    > PAGE_EXECUTE_READ и твой fs-catcher-b уже ничего не ловит ;)
    это старая версия ;) версия fs-catcher-c и fs-catcher-e все ловят,
    т.к. секут подмену адреса NtQueryInformationProcess в IAT KRN32
    и нужно придумать как накодить плугин так, чтоб его не трогать ;)
    http://nezumi.org.ru/souriz/fs-catcher-e.zip <-- скачивайте :derisive:
    не, мне правда стала интересна война с плугинами :derisive:

    Hellspawn
    с удовольствием помучаю. даже в новой книжке опишу ;)
    а где плагин?!

    PROFi
    > В общественных топиках это не обсуждают.
    > В конечном счете ломается олька,
    > только зачем открыто об этом кричать
    на каждую хитрую.... найдется...
    а разве не интересно разрабывать
    anti-anti-anti-anti-anti-отладочные технологии?

    находить трюки, "палящие" отладчик,
    обходить их (например, путем плагинов)
    и тут же писать новые плагины, которые
    просто так не обойдешь.... в итоге мы
    получим "непробиваемый" отладчик....
    а если мы будем молчать и ныкаться
    по норам ничего этого не будет....
     
  3. Hellspawn

    Hellspawn New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2006
    Сообщения:
    310
    Адрес:
    Москва
    там же где и все мое творчество)))

    _hellspawn.nm.ru/works/PhantOm.plugin.1.20.zip
     
  4. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    kaspersky

    А пилить сук на котором сидишь :)
     
  5. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    Hellspawn
    ага поймал... щас уже поздно и мыщъх выдвигается на топчан, но завтра же буду пытать ;) опишу все в лучшем виде.

    PROFi
    > А пилить сук на котором сидишь :)
    что касается сук, то я предпочитаю, чтобы они сидели на мне. классическая миссионерская - это изврат, это не для меня. а если говорить серьезно, но я не понимаю почему обсуждение anti-отладочных технологий есть бэд. от этого все только выиграют. тем более я не понимаю, почему это надо делать в "закрытом кругу". если ничего не обсуждать, то не будет никакого прогресса, а будет только мрак. и добывание огня трением. не, ну разве не интересно разрабатывать анти-дебажные трюки и способы их преодоления, а потом способы обхода способов преодоления? и кто пилит сук? что-то я не понимаю...
     
  6. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    kaspersky
    чтоб потом автор экзекриптора вставлял их в свой прот ;)

    а не получится так что некоторые вещи просто невозможно будет преодолеть
    в рамках конкретного отладчика, того же OllyDbg ?
     
  7. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    Hellspawn
    хороший у тебя плагин. вот очень простой код (две строки на си ;)
    http://nezumi.org.ru/souriz/fs-catcher-jag.zip

    для его детекции с прикладного уровня без использования Nt-фцй
    так же должен детектить и другие плагины подобного типа...
    а) от поиска по сигнатурам я отказался;
    б) проверять адрес NtQueryInformationProcess - тухлое дело;
    с) короче дописал всего две строки к старому коду ;)

    кто протестирует его?! и хотя я уже придумал как обломать его ;)
    но все равно... это противостояние меча и щита получается....
    слишком большие затраты на ныканье от антидебага и слишком
    легко написать антитебаг, ловящий целый класс плагинов.
    даже тех, что работают в ядре ;)

    исходник вновь не прилагается по причине того, что кода там...
    оно и без исходника ясно как это работает :derisive: :derisive: :derisive:
    а вот как бороться?!

    Asterix
    > чтоб потом автор экзекриптора вставлял их в свой прот ;)
    а он что, туссуется на этом форуме? не знал... и кто же он?
    ну и вообще, антидебажные трики можно вставлять скажем
    в малварь или еще куда... к тому же чем сложнее защита...
    тем интереснее ее ломать ;)

    >> и способы их преодоления
    > а не получится так что некоторые вещи просто невозможно
    > будет преодолеть в рамках конкретного отладчика, того же OllyDbg ?
    твоя мысль мне понятна, но я совершенно с ней не согласен.
    получается так. давай _мы_ не будем вести исследования,
    чтобы _они_ не использовали их против нас ;0) только вот,
    _они_ тоже ведут исследования. а обнаружить новый трик
    в коде на несколько метров намного сложнее, чем в моем
    маленьком мышином "макетнике". кто предупрежден - тот,
    как говориться, вооружен. какие будут предложения?!

    в идеале, анти-анти-дебужные плагины не должны палится
    ну или не палится по тупому... а доработать их - можно ;)
    у тебя в коде два основного палева, не считая сигнатур.
    а) ты хачишь IAT KERNEL32.DLL надеясь, что это никто не
    заметит. а не лучше ли хачить сам код KERNEL32.DLL?
    конечно, это не универсально, но зато довольно сложно
    обнаруживается на прикладном уровне (на самом деле
    обанруживается, конечно, кучей способов).

    б) ты с Hellspawn'ом передаешь приложению single step
    exception. а теперь подумай, что произойдет, если мыщъх
    заюзает его в обработчике необрабатываемого исключ.?
    правильно - произойдет палево. даже сказать Olly, чтоб
    он пассил single step'ы отлаживаемой программе, то все
    равно при пошаговой трассировке мы обнаружим dbg :)

    и самое главное! мне бы _очень_ хотелось, чтобы плугины
    как-то показывали наличие этого самого обработчика и
    позволяли передать на него управление. а то часть кода
    выполняется скрытно, что в ряде слчаев очень затрудняет
    анализ программы... просто офигенно как затрудняет...
    ну скажем ты выполняшь (в грубом приближении)...

    1: mov eax, offset serial_num
    2: mov ebx, [eax]
    3: cmp ebx, "1234"
    4: jxxx xxxx

    если в DS - нулевой селектор, то при выполнении строки 2
    управление получает обработчик, который осуществляет
    реальную проверку сернума, а ты этого ниxya не видишь,
    т.к. вообще не знаешь, что между этими двумя командам
    что-то такое выполняется.... и хотя по дефлоту плагины
    останавливают отладчик с сообщением от single-step'е,
    это палит плагин на все 100% и обработчик может это
    дело засечь, а если передавать исключения программе,
    что мы хоть и не спалим отладчик, но все равно никак
    не узнаем, что тут выполняется какой-то код...
    кстати, при пошаговой трассировке все равно спалимся ;)
    даже если будем передавать исключения программе.

    а вы говорите "баянные трюки", если же они такие баянные,
    то почему до сих пор нет нормального плугина, который бы
    не палился на пионер на первой хапке?!


    p.s. это не наезд. я восхищен плагином Hellspawn'а и твоим.
    вы оба проделали большую и полезную работу, я же всего
    лишь указываю на ошибки и даже предлагаю пути их фикса ;)

    вот, файл:
    http://nezumi.org.ru/souriz/fs-catcher-jag.zip
     
  8. Hellspawn

    Hellspawn New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2006
    Сообщения:
    310
    Адрес:
    Москва
    у меня последняя версия ничего не детектит)))
    сьавим галку ignore "single-step breaks"...
     
  9. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    Hellspawn
    ок, сьавим галку ignore "single-step breaks".
    и при пошаговой трассировке (step into/step over - без разницы)
    трассируем до следующих строк:

    .00400380: mov [004005B4],ebx
    .00400386: mov ebx,fs:[00000000]

    в строке .00400386 возникает исключение и Olly предлагает давить
    Shift-F7/F8/F9, но что мы не давим - отладчик все равно палится ;)

    конечно, если нажать F9, то все будет ок...
    но ведь не все же по F9 сделать можно...
    иногда необходимо и трассировать, например,
    для установа бряка на команду, выхода за диапазон EIP....

    а как обломать F9 я еще подумаю...
    а вообще у тебя крутой плагин, мне понравился ;)
    щас буду описывать его в своей новой книжке по дебагу.

    http://nezumi.org.ru/souriz/fs-catcher-seo.zip
    ^^^- это тот же самый файл, только там добавлены строка

    .00400386: mov ebx,fs:[00000000]
    чтобы ее было можно трассировать ;)
    я сам трассировал путем захода в IsDebuggerPresent()
    трассировка палит отладчик ;) чтобы не возится - нажми
    Ctrl-F12 (trace over) и увидишь то, о чем я говорю...
     
  10. Hellspawn

    Hellspawn New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2006
    Сообщения:
    310
    Адрес:
    Москва
    про трассировку я знаю))) тока очень редко трассирую в ручную...
    а если и трассирую, то смотрю внимательно :) ну плагины трассировочные
    обламаются конечно.

    з.ы. дашь почитать то? ))
    з.ы.ы. я кодил всю ринг3 часть плага, дроф кодил Арчи...
     
  11. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    хехе) а кто-то говорил что васм умер, а ннет
    если через int3 то контролем целостности а если хардвар то затирать регистры контекста ты ж и сам знаешь )
     
  12. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    kaspersky
    нет, ты не понял ;) я хотел сказать что нужно писать спецовый крекерский отладчик,
    в котором изначально можно многое учесть чтоб потом не прикрывать плагинами "дырки"

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

    а это что типа сложно прочекать? ;))

    http://wasm.ru/forum/profile.php?id=3359
     
  13. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    Hellspawn
    > про трассировку я знаю))) тока очень редко трассирую в ручную...
    тогда нафига тебе Olly? юзай syser :)
    мне Olly как раз нравится за возможность автоматической трассировки, при которой он может делать много полезных вещей. бряки на команды и выход EIP за диапазон я уже упоминал. так, что еще? ага, есть плагины, которые ищут определенные строки в регистрах. очччень удобно искать введенное имя пользователя. или вот например, та же автоматическая трассировка позволяет отслеживать возвращение в код, вызывающий форму где вводится имя/пароль, после нажатия на "ОК", что опять-таки делается путем проверки диапазона EIP (хотя вообще-то можно и через бряки на атрибуты страниц...), а вот еще можно вести лог трассировки, кидать в него только jxx и сравнивать логи прогонов программы до и после истечения триала. все это опять-таки требует трассировки... трассировка - мощный инструмент, чтобы полностью от нее отказываться, особенно при изучении критических кусков кода. а иначе как потом писать кейген? не все ведь в ассемблере можно сделать...
    разве ты не согласен, что зачастую гораздо проще потрейсить программу и посмотреть, что она сделала с данными, чем разбирать код в дизассемблере?

    ну и потом, F9 я все-таки буду тоже обходить ;) на этот счет у меня есть несколько идей...

    > з.ы. дашь почитать то? ))
    ситуация следующая.
    в ][акере планируется рубрика анти-дебаг, где будут покоцанные статьи на русском, сама книга неспешно пишется на eng, русский вариант (если он и выйдет), будет сильно усеченным. а дать - дам, конечно. когда я свои книги зажимал ;)

    как я понимаю, твой плагин можно ложить на диск к книге? ;)

    > з.ы.ы. я кодил всю ринг3 часть плага, дроф кодил Арчи...
    извини за глупый вопрос - а кто такой Арчи?
     
  14. Hellspawn

    Hellspawn New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2006
    Сообщения:
    310
    Адрес:
    Москва
    написание уже идет.
    он падает через раз и плюс мне ольга удобнее...
    с клаба чел :)
    просто так затирать маловато, придется и чекать постоянно их, хотя и этого тоже мало.
    перед нг зарелизю новую версию, там несколько фиксов будет.
     
  15. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    >>щас буду описывать его в своей новой книжке по дебагу.

    А что за книга, можно по подробнее?
     
  16. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Hellspawn
    по слухам после фантома падает или фризит сама винда, так что тебе не привыкать ;)

    это должен быть опенсорц проект
     
  17. Hellspawn

    Hellspawn New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2006
    Сообщения:
    310
    Адрес:
    Москва
    а ты больше слущай, падает из-за кривых хуков фаеров и ав (это все пофиксено),
    но сейчас версия очень стабильная, так что не нада тут ;)

    з.ы. дык у меня хайдтуулз тоже через раз падает, такова цена хайда...

    слишком жирно будит...
     
  18. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    Asterix
    > я хотел сказать что нужно писать спецовый крекерский отладчик,
    > в котором изначально можно многое учесть чтоб потом
    > не прикрывать плагинами "дырки"
    а) сейчас я неспешно пишу core-отладчика, который делает inject в процесс и работает с ним изнутри. отладочного процесса при этом не порождается и куча анти-отладочных трюков ес-но не работает, чтобы не писать весь функционал, я планирую поддержать протокол gdb чтобы работать по сети (или локально на компе), еще где-то видел спецификации на протокол ms gdb но потерял ;( буду благодарен, кто кинет в меня ссылкой. т.к. мне реализовать интерфейс не в кайф, а только базовые возможности - чтение/запись регистров/памяти, точки останова, трассировка, etc... объем работы резко уменьшается...

    б) Wu YanFeng и Chen JunHao, похоже, заинтересованы в сотрудничестве со мной и вроде бы даже готовы делать syser хакерским отладчиком, который хрен обнаружишь ;) а чтобы проект не заглох, буду его продвигать путем описывания в книжках. популяризации продукта так сказать ;)

    rain
    > если через int3 то контролем целостности а если хардвар
    > то затирать регистры контекста ты ж и сам знаешь )
    тут все не так просто. плугины перехватывают set-thr-cntx,
    да с int 03 борются... я пока мыслю в другой плоскости...
    одна из идей (порочная, конечно) - принудительный вызов
    NtQueryInformationProcess с нужными мне параметрами.
    если плагин ее не перехватывает - мы получим один
    результат, если перехватывает, то другой...
    но это плохая идея по любому, я сейчас пытаюсь найти
    что-то системно-независимое...

    плагиг Hellspawn'а я поймал всего с:
    ExceptionInfo->ContextRecord->EFlags ^= 0x100; z++;
    ...
    if (z < 2) plugin_is_detected;

    но это работает только при пошаговой трассировке
    (если конечно в Olly не установлена галочка передачи
    single step'ов в программу, а по умолчанию она не установлена,
    так что пионеры по любому обломятся, даже по F9)
     
  19. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    ну тогда мне он точно не нужен, как и другие мсремовские поделки типа хайдтулз,
    который я просто ни разу не использовал из-за отсутствия доверия товарищу афтару
     
  20. Demon666

    Demon666 New Member

    Публикаций:
    0
    Регистрация:
    19 май 2006
    Сообщения:
    99
    kaspersky
    надо для начала справку по ольке почитать, потом научиться юзать PSDK, отреверсить отладчик до ощущения, что код ольки знаешь даже лучше самого автора, который написал этот отладчик – и только тогда ВАМ откроется истЕна что вы в теме…

    согласен с отцом дерматологом жидаобщества и с тем что он написал

    протЕв!