внедрение;GetThreadContext\SetThreadContext. Resume - Ok, result = 0.

Тема в разделе "WASM.WIN32", создана пользователем dead_body, 12 авг 2007.

  1. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    В общем, сделал вроде всё как надо. Взятие, установка контекста. Работает. Но на некоторых процеесах не видно, что код запускаеться. То есть:
    Код (Text):
    1. WaitForMultipleObjects(2,ecx,0,5000); на том конце если поток запуститься установит ивент.
    2. add esp,8
    3. .if ~ eax
    4.     write_l 'InjectIn:Seems infect was succesful.'
    5.     mov [ret_val],1
    6. .elseif eax = 1         ;our shutdown event signaled.
    7.     write_l 'InjectIn:Infect fails. Windows shutdown. Rolling back infection...'
    8.     jmp .frab
    9. .elseif eax = WAIT_TIMEOUT          ;На некоторых процессах попадаем сюда.
    10.     write_l 'InjectIn:Infect fails. WAIT TIMEOUT. Rolling back infection...'
    11. ...
    на некотрых процессах, за 5 секунд - ноль. Проверку на установку контекста\успешного резюминга делаю, ошибок нет. Антивирус отключен. То есть практически чистая ХП. Если увеличить время ожидание, толку вроде тоже нету. Что это может быть? Уже вроде заново перечитал и Рихтера, и полазил по форумам. Но ответа не нашел. К примеру не могу заинжектиться в mdm.exe. Вначале думал, что попадаю в них, на уже засаспеденые потоки. Но у мдм убил два потока(с помощью НтПроцессЭксплорер), оставил только 3, показывало что те меняют свой контекст во время работы. Значит живые. Но всё равно не за инжектились. Я конечно, сейчас буду с АПС разбираться, но вначале надо до ума эту процедуру уже довести. А понять в чём дело не могу. Кто знает помогите, если эти знания распостронять в открытую нельзя, то в личку.
     
  2. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    установкой контекста и то что инжектишь...
     
  3. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Ничего не понял )
    Нафига снимать и ставить контекст? Опиши подробно цель..
     
  4. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    Great
    Инжект делаю. Внедряю свой код в чужой процесс. Всё внедряеться и работает успешно. Но на Некторых приложениях не проходит. То есть Взял контекст, изменил на свой код там еип, и пустил поток. Все функции завершаються успешно(делаю полностью проверку всех функций), но мой код в чужом процессе не заводиться.
    Для проверки уже и "инт3" внедрял. - 0.
    То есть Контекст устанавливаеться нормально, все функции возвращают - ГУД, РезюмеСреад возвращает 1. То есть всё как надо, но поток стоит и смотрит на меня как баран на новые ворота. Была бы ошибка в коде она бы вываливалась на всех, приложениях. А то в системе у меня 43 процесса, из них в 16 не внедряеться.
    FreeProxy,mdm,ati2evxx и так далее.
    в explorer,winlogon,cmd,frigate3,totalcmd,regedit,notepadы разные, все нормально делаеться. Уже перечитал и планирование поток в винде(Внут. устр. Виндовс 2000), ответа всё нет.
     
  5. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    уверен, что все библиотеки для инжектированного кода в АП?
     
  6. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    FreeManCPM
    да. потому как на начальном этапе используються только kernel&ntdll. А их наличие проверяеться при инжекте. Да, я если даже поставлю инт3 вначале, то всё равно же программа не вываливаеться. Главное вот в чём. Запустил я вчера вроде свою прогу, а когда комп выключал, те процессы попадали. Так как моя программа к тому времени вырубилась первая при выключении винды, а процессы попытались прочитать её память(как в примере Мс-Рема). После этого уже дописал код, что бы при выключении винды откатывать инжет "неижектищихся процессов" назад. Но хочеться всё таки, заразить все процессы в системе, что бы не было белых пятен.
    Конечно могу код привести, но не думаю, что он чем то поможет. Код так сказать, почти стандартен. Если у кого то есть пример инжекта с установкой контекста, дайте поюзать, глянуть заразит ли он те процессы.
     
  7. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    хзхз. хендлы закрываешь?
     
  8. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    FreeManCPM
    хэнд потока вообще не закрваю, только что попробовал после резюма закрывать, всё равно тоже. Ну а на процесс не закрываю. А вообще правильно как? Нигде не читал, что если хэндл на поток\процесс не закрыт, то будет что то страшное.
     
  9. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    раз процессы раздупляюцо, когда твой закрывается, значет случается чтолибо, что заставляет их это сделоть. йа предположил, что закрываются хендлы...
     
  10. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    FreeManCPM
    но тогда и винда закрываеться. то есть их сама винда раздуплить может.

    Если закрываеться мой процесс то они всё равно не раздупляються. Если я при неудачном инжекте, не делаю откат назад(то есть не востанавливаю контекст) и моя программа завершаеться, то всё нормально до закрытия винды. А потом винды выключаеться, и всё потоки оживают. И Исполняеться мой код:
    Код (Text):
    1. align 4
    2. LoaderCode:
    3.         push 0                          ;lpNumberOfBytesRead
    4.         push InjectSize                 ;nSize
    5.         push esi                        ;lpBuffer
    6.         push ebp                        ;lpBaseAddress
    7.         push edi                        ;hProcess
    8.         call ebx                        ;ZwReadVirtualMemory
    который вызывает исключение.(так как моего процесса из которого читать к тому времени нет в живых.)

    З.Ы. Только что проверил. Запустил свой код в процесс, и сразу вышел из своей проги. Смотри по логам, в который поток в том процессе мы внедерились. Открываю в оле. И вижу:dntknw:щас буду пытаться вставить скрин)

    Аттачи видно отменили...
    Но оля показывает что поток запущен, но он же стоит на месте. Никак вьехать не могу, в чём дело. Вижу что ЕИП стоит на моем коде и надпись:"раннинг". Что за..