Отловить убийство собственного процесса?

Тема в разделе "WASM.BEGINNERS", создана пользователем Rel, 27 ноя 2020.

  1. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Наверное нубский вопрос, но я как то не копал эту тему и что-то это плохо гуглится. Если процесс насильно убивается из вне (диспетчером задач, авером, малварью, из драйвера, чем угодно), можно ли это событие отловить? И в лучшем случае помешать ему, а в худшем случае просто успеть залогировать пользователю это событие? Ну и действие происходит на венде.
     
  2. nullPtr

    nullPtr Member

    Публикаций:
    0
    Под типу хукать TerminateProcess, не?

    Я даже хз про блек или вайт. Но малвари убивают себя запуская CreateProcces с cmd со скрытым окном, а аргументы передают задержка на 10 секунд и полный путь программы.
    --- Сообщение объединено, 27 ноя 2020 ---
    или в другом случае хукать любой ShellExecute, CreatePorcess и смотреть что там она делает. Программа может записывать в планировщик.
    Много вариков так-то
     
  3. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
  4. nullPtr

    nullPtr Member

    Публикаций:
    0
  5. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Rel,

    Ты ведь нуи и не понимаешь архитектуру, что процесс это окружение для работы потоков. Соответственно может не быть потоков, но останется окружение - обьекты адресное пространство, но процик там ничего выполнять не будет, это лишь будет висеть в памяти. Завершение процесса технически это посылка ядерных сообщений всем тредам, их прибивает планировщик, кванты они больше не получат, так что это событие никак не узнаешь.

    Делай как все крипты - первый процесс рабочий, второй под отладку его. Так твоя задача будет распределена между процессами и узнаешь когда один будет завершён. А они думают что создание сотни клонов чем то помешает крутить визором вот же наивные. Мой например инфицирует загрузчик, что бы реализовать наследование процессов, крутить клоны.
     
  6. nullPtr

    nullPtr Member

    Публикаций:
    0
    а что если дизасмить работающий процесс, находить в нем сигнатурно TerminateProcces и перед этим чекать push регситр eax, если туда пихается offset procces - где procces наш процесс (хендл), после хукать OpenProcces и смотреть аргументы и тот ли хендл принимает TerminateProcces

    Отладка в реальном времени. Возможно ли? Или бред?
     
  7. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    nullPtr, а как ты узнаешь, кто именно хочет тебя убить? Все процессы в системе перехватывать?
     
    Indy_ нравится это.
  8. Komrako18

    Komrako18 New Member

    Публикаций:
    0
    TerminateProcess, TerminateThread на вход принимает хэндл процесса с правами "PROCESS_TERMINATE".
    В драйвере регистрируем callback( https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/nf-wdm-obregistercallbacks ) при создании хендла в системе.
    А дальше фильтруем в callback права, ID процесса...

    очевидно что это далеко не все способы, с помощью которых можно убить поток/процесс
     
  9. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Komrako18,

    Вопрос не просто так, по распределению ресурсов. Если процесс завершается, то соответственно освобождаются обьекты. Но есть перманентный маркер, который остаётся вроде бы, я не помню подробности.

    Из ядра колхозить нельзя - это повесит ось. Пока какой то обьект/механизм ядро будет завершать, ты этому помешаешь, вмешавшись в этот механизм. Это не деадлок, но ось повесит. Ты вначале ядерные синхромеханизмы пойми, прежде чем советы бредовые давать. Ядро построено на синхронизациях, любое действие синхронно. Да и вопрос про юзер, а не про ядро; имея ядерный доступ можно делать что угодно и данный вопрос не имеет смысла.
     
    M0rg0t нравится это.
  10. nullPtr

    nullPtr Member

    Публикаций:
    0
    а ну, это я так, мысли в слух были. Как вариант.
    Моя предложка скорее касалась ring3, например как руткит замутить. Например можно отловить диспетчер задач, процесс эксплорер и прч.

    А так Инде прав, если есть доступ на ядре, то можно отловить походу дела.
     
  11. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    nullPtr,

    Да какое ядро, я ведь выше говорил. Протекторы создают кучи клонов и их завершают, в этом случае отладка вовсе не возможна, для этого и сделано. У авера вирта и им насрать на процессы, так как вирта их крутит. Но это не малварь, где прибив вирты, а паблик протекторы. Так вот что бы их раскрутить нужно в нэйтив инжектится загрузочный. Они создают сотни клонов что бы сбить отладку.

    Да и вообще, создание клона процесса это палево, это делает любой криптор для загрузки образа(тк самый примитивный простой способ). Под виртой попытка это сделать даст детект.

    Сейчас для семпла нет конкретно оси, есть защита авер и их вирта.
     
    nullPtr нравится это.
  12. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Или все же гоняет, а не крутит? Мы в прошлый раз так и не решили.
     
  13. sl0n

    sl0n Мамонт дзена **

    Публикаций:
    0
    вначале крутит а потом гоняет (лысого, но это не точно)
     
  14. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Крутит так как это замкнутый цикл имеющий выход лишь когда критерий выхода из цикла сойдётся. А гоняют" животных, а не код.
     
  15. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Но цикл не бесконечный, поэтому гоняет, а не крутит.
     
  16. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Rel,

    Скажи, тебе решить задачу или потролить, так как уже решена. В таком случае нужно тему закрывать.
     
    nullPtr нравится это.
  17. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Одно другому не мешает, особенно, когда Инде есть фундаментальное непонимание того, как работают аверские эмули.
     
  18. sl0n

    sl0n Мамонт дзена **

    Публикаций:
    0
    Ох рел то ли ты перетолстил то ли я терпение потерял так что распедалю:
    1) НОД он бостроено на бош эмуле у него есть таки и эвристика, если его иметь с помощью глубины погружения, стало быть кол-во эмулируемых не пустых инструкций то он взбрыкнет, если глубина достигнута а кодоанализатор не спокоен
    2) КАВ там поведенческий анализ в основном старую эвристику убрали а ну и облако
    3) Битдеф там в основном упор на эвристику и кодоанализатор, не в курсе что там за эмуль но совсем поганый на ссе2 отваливаливается если их не как мусор использовать
    4) виндеф вот тут постарались тут тебе и хороший эмуль с большой глубиной погружения и при определенных параметрах скан в памяти, но и то и то решаемо слишком много у него исключений он жеж почти на каждой тачке
    5) все остальное гдето эвристика главная гдето эмуль, кстати в вба эмуль то же есть но он даже пустые циклы не фильрует

    Нигде визоров и анклавов нету =)) но это не точно
     
  19. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Ну если вы так считаете, то в следующий раз улетите в бан. Последнее самурайское предупреждение предупреждение (П 2.11, правил васма).
     
    Indy_ нравится это.
  20. TrashGen

    TrashGen ТрещГен

    Публикаций:
    0
    Инде торжествуэ.
    А по сабжу мож в статический тлс обработать длл_детач_процесс, не пробывал только