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

Discussion in 'WASM.BEGINNERS' started by Rel, Nov 27, 2020.

  1. Rel

    Rel Well-Known Member

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

    nullPtr Member

    Blog Posts:
    0
    Под типу хукать TerminateProcess, не?

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

    M0rg0t Well-Known Member

    Blog Posts:
    0
  4. nullPtr

    nullPtr Member

    Blog Posts:
    0
  5. Indy_

    Indy_ Well-Known Member

    Blog Posts:
    4
    Rel,

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

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

    nullPtr Member

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

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

    M0rg0t Well-Known Member

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

    Komrako18 New Member

    Blog Posts:
    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

    Blog Posts:
    4
    Komrako18,

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

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

    nullPtr Member

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

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

    Indy_ Well-Known Member

    Blog Posts:
    4
    nullPtr,

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

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

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

    Rel Well-Known Member

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

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

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

    Indy_ Well-Known Member

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

    Rel Well-Known Member

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

    Indy_ Well-Known Member

    Blog Posts:
    4
    Rel,

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

    Rel Well-Known Member

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

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

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

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

    TermoSINteZ Синоби даоса Staff Member

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

    TrashGen ТрещГен

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