Дата: Воскресенье, 27.05.2012, 01:54 | Сообщение # 1
Авторитетный
Зарегистрирован: 06.03.2010
Группа: Модераторы
Сообщений: 265
Статус: Offline
вобщем решил выложить один исходничек, вдруг кому то будет интересно
данный способ инжекта позволяет проинжектится в процес с правами систем и является менее палевным для АВ(нод обычно ругается на инжекты через CreateRemoteThread)
Предыстория: когда то пытался проинжектится в системный процесс но ничего не работало, и вдруг заметил что память системного процесса можно редактировать
так как когда открываешь хендел процесса Winlogon-а можно писать туда что угодно, но нельзя выполнить CreateRemoteThread , проинжектится в Winlogon не получается, но, так как можно писать все что угодно в память чужого процесса, то это значит что можно поставить удаленный хук на какую то API функцию(прописав джамп в ее начало) , дальше при вызове этой функции выполнится прыжок куда мы захотим, ну т.е на наш шелл код который будет уже записан в процессе жертвы(Winlogon-а) , ну а этот шелл код уже может творить внутри чужего процесса все что захочет, в моем случае я сделал LoadLibrary , чтобы можно было "вредоносный" код поместить в дллку и каждый раз просто подгружать новую длл, а не переписывать шелл код :). Дальше возникает вопрос, какую бы функцию хукнуть, так чтобы избежать ее вызова во время того как будет убиратся с нее джамп, я выбрал RtlLeaveCriticalSection , так как код помещенный между RtlEnterCriticalSection и RtlLeaveCriticalSection выполняется в критической секции(знаю кэп ), а т.е код блокируется для выполнения в других потоках, да и функция RtlLeaveCriticalSection очень часто вызывается, поэтому не приходится ждать результата
в тестах я делал дллку которая запускает калькулятор, и на тот момент удивился, что калькулятор был запущен от пользователя System, получается каждый запущенный процесс будет иметь права системы
P.S експерементируя с Winlogon-ом нужно быть окуратней, при ошибке будет бсод, поэтому лучше експерементировать с не критическими процессами(метод работает везде)
Дата: Воскресенье, 03.06.2012, 07:54 | Сообщение # 6
Модератор
Зарегистрирован: 04.05.2010
Группа: Модераторы
Сообщений: 317
Статус: Offline
Quote (Marra_Kesh)
Было бы вообще ;GOOD, если Neo код в "spoiler" поместитЪ...
Sorry, у меня временно не было доступа в инет))) P.S У меня при компиляции возникает ошибка WideCharToMultiByte(CP_ACP, 0, Entry.szExeFile, -1, szProcessName, MAX_PATH, NULL, NULL); //тут ошибка [C++ Error](73): E2034 Cannot convert 'char *' to 'const wchar_t *' что посоветуете сделать?
Дата: Воскресенье, 03.06.2012, 14:27 | Сообщение # 7
Продвинутый
Зарегистрирован: 28.01.2010
Группа: Пользователи
Сообщений: 263
Статус: Offline
Neo, в свойствах проекта измени кодировку в Наборе знаков на "Не задано",потом проверь проект дебаг,или релиз ветка. Если будут опять ошибки скакать-стукни мне в жабку DarkKoder@xep.li или в скайп troyan7705
Дата: Воскресенье, 03.06.2012, 14:50 | Сообщение # 8
Продвинутый
Зарегистрирован: 28.01.2010
Группа: Пользователи
Сообщений: 263
Статус: Offline
хмм,у меня в 2006-й студии ругаеться только на 3 строчки "err = GetLastError(); ",а посмотрел-внатуре,не определено...а все остально епока окай) Кот,ты уверен что все написал?
Дата: Воскресенье, 09.09.2012, 00:28 | Сообщение # 10
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
Кое-как откомпилировал данный код в С++ Builder'е 6. И на Windows 7 x32, сидя под админом, при попытке инжекта в winlogon.exe, функция VirtualAllocEx выдаёт фолт - ERROR_ACCESS_DENIED (при инжекте в не крит.процесс она отрабатывает нормально). Прикручивал манифест - результат тот же. Пытался заменить функции на Native аналоги. Всё бесполезно.
В чём может быть проблема?
Сообщение отредактировал Волк-1024 - Воскресенье, 09.09.2012, 00:32
Дата: Воскресенье, 09.09.2012, 21:19 | Сообщение # 12
Был не раз
Зарегистрирован: 31.05.2010
Группа: Пользователи
Сообщений: 17
Статус: Offline
Quote (Волк-1024)
Кое-как откомпилировал данный код в С++ Builder'е 6. И на Windows 7 x32, сидя под админом, при попытке инжекта в winlogon.exe, функция VirtualAllocEx выдаёт фолт - ERROR_ACCESS_DENIED (при инжекте в не крит.процесс она отрабатывает нормально). Прикручивал манифест - результат тот же. Пытался заменить функции на Native аналоги. Всё бесполезно.
Дата: Воскресенье, 09.09.2012, 22:23 | Сообщение # 13
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
Может быть, но ведь у некоторых код фурычит. И ведь DEP, вроде, не позволяет выполнять код, а тут даже выделить место не получается. И как теперь обойти данную проблему?
Дата: Понедельник, 10.09.2012, 15:43 | Сообщение # 14
Был не раз
Зарегистрирован: 31.05.2010
Группа: Пользователи
Сообщений: 17
Статус: Offline
Quote (Волк-1024)
Может быть, но ведь у некоторых код фурычит. И ведь DEP, вроде, не позволяет выполнять код, а тут даже выделить место не получается. И как теперь обойти данную проблему?