Вторник, 03.12.2024, 18:23 Приветствую вас Гость | Группа "Гости" 
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Neo, xXxSh@dowxXx  
[C++] калькулятор с правами System ,инжект в Winlogon
C@TДата: Воскресенье, 27.05.2012, 01:54 | Сообщение # 1
Авторитетный
Зарегистрирован: 06.03.2010
Группа: Модераторы
Сообщений: 265
Статус: Offline
вобщем решил выложить один исходничек, вдруг кому то будет интересно smile

данный способ инжекта позволяет проинжектится в процес с правами систем и является менее палевным для АВ(нод обычно ругается на инжекты через CreateRemoteThread)

Предыстория:
когда то пытался проинжектится в системный процесс но ничего не работало, и вдруг заметил что память системного процесса можно редактировать smile

так как когда открываешь хендел процесса Winlogon-а можно писать туда что угодно, но нельзя выполнить CreateRemoteThread , проинжектится в Winlogon не получается, но, так как можно писать все что угодно в память чужого процесса, то это значит что можно поставить удаленный хук на какую то API функцию(прописав джамп в ее начало) , дальше при вызове этой функции выполнится прыжок куда мы захотим, ну т.е на наш шелл код который будет уже записан в процессе жертвы(Winlogon-а) , ну а этот шелл код уже может творить внутри чужего процесса все что захочет, в моем случае я сделал LoadLibrary , чтобы можно было "вредоносный" код поместить в дллку и каждый раз просто подгружать новую длл, а не переписывать шелл код :). Дальше возникает вопрос, какую бы функцию хукнуть, так чтобы избежать ее вызова во время того как будет убиратся с нее джамп, я выбрал RtlLeaveCriticalSection , так как код помещенный между RtlEnterCriticalSection и RtlLeaveCriticalSection выполняется в критической секции(знаю кэп biggrin ), а т.е код блокируется для выполнения в других потоках, да и функция RtlLeaveCriticalSection очень часто вызывается, поэтому не приходится ждать результата smile

в тестах я делал дллку которая запускает калькулятор, и на тот момент удивился, что калькулятор был запущен от пользователя System, получается каждый запущенный процесс будет иметь права системы

P.S експерементируя с Winlogon-ом нужно быть окуратней, при ошибке будет бсод, поэтому лучше експерементировать с не критическими процессами(метод работает везде) smile

ну и сам код :
 
REMiXДата: Среда, 30.05.2012, 22:34 | Сообщение # 2
Был не раз
Зарегистрирован: 11.01.2010
Группа: Пользователи
Сообщений: 22
Статус: Offline
Ух ты, на win7 пашет???
 
C@TДата: Четверг, 31.05.2012, 10:55 | Сообщение # 3
Авторитетный
Зарегистрирован: 06.03.2010
Группа: Модераторы
Сообщений: 265
Статус: Offline
да, правда права админа нужны(с включенной UAC он не сможет), но если манифест прилепить, то и с включенной UAC будет работать smile
 
XSPYДата: Четверг, 31.05.2012, 17:57 | Сообщение # 4
Продвинутый
Зарегистрирован: 28.01.2010
Группа: Пользователи
Сообщений: 263
Статус: Offline
молодец,помог мне)
 
Marra_KeshДата: Четверг, 31.05.2012, 19:24 | Сообщение # 5
Постоянный
Зарегистрирован: 19.12.2009
Группа: Модераторы
Сообщений: 182
Статус: Offline
Видишь C@T, XSPY'ю (не знаю как NIK'и склоняются) помог, а ты не хотел! Было бы вообще ;GOOD, если Neo код в "spoiler" поместитЪ...

Сообщение отредактировал Marra_Kesh - Четверг, 31.05.2012, 23:10
 
NeoДата: Воскресенье, 03.06.2012, 07:54 | Сообщение # 6
Модератор
Зарегистрирован: 04.05.2010
Группа: Модераторы
Сообщений: 317
Статус: Offline
Quote (Marra_Kesh)
Было бы вообще ;GOOD, если Neo код в "spoiler" поместитЪ...

Sorry, у меня временно не было доступа в инет))) surprised wacko
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 *'
что посоветуете сделать?
 
XSPYДата: Воскресенье, 03.06.2012, 14:27 | Сообщение # 7
Продвинутый
Зарегистрирован: 28.01.2010
Группа: Пользователи
Сообщений: 263
Статус: Offline
Neo, в свойствах проекта измени кодировку в Наборе знаков на "Не задано",потом проверь проект дебаг,или релиз ветка.
Если будут опять ошибки скакать-стукни мне в жабку DarkKoder@xep.li или в скайп troyan7705
 
XSPYДата: Воскресенье, 03.06.2012, 14:50 | Сообщение # 8
Продвинутый
Зарегистрирован: 28.01.2010
Группа: Пользователи
Сообщений: 263
Статус: Offline
хмм,у меня в 2006-й студии ругаеться только на 3 строчки "err = GetLastError(); ",а посмотрел-внатуре,не определено...а все остально епока окай)
Кот,ты уверен что все написал?
 
C@TДата: Вторник, 05.06.2012, 22:31 | Сообщение # 9
Авторитетный
Зарегистрирован: 06.03.2010
Группа: Модераторы
Сообщений: 265
Статус: Offline
да, а err = GetLastError(); я забыл вытереть когда код постил(решил его не постить с дебагом)
 
Волк-1024Дата: Воскресенье, 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
 
xXxSh@dowxXxДата: Воскресенье, 09.09.2012, 10:17 | Сообщение # 11
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
Поддерживаю вопрос Волк-1024
 
artemukДата: Воскресенье, 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 аналоги. Всё бесполезно.

В чём может быть проблема?

Может DEP мешает?
 
Волк-1024Дата: Воскресенье, 09.09.2012, 22:23 | Сообщение # 13
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
Может быть, но ведь у некоторых код фурычит. И ведь DEP, вроде, не позволяет выполнять код, а тут даже выделить место не получается. sad И как теперь обойти данную проблему?
 
artemukДата: Понедельник, 10.09.2012, 15:43 | Сообщение # 14
Был не раз
Зарегистрирован: 31.05.2010
Группа: Пользователи
Сообщений: 17
Статус: Offline
Quote (Волк-1024)
Может быть, но ведь у некоторых код фурычит. И ведь DEP, вроде, не позволяет выполнять код, а тут даже выделить место не получается. И как теперь обойти данную проблему?

Тут ты прав. DEP позволяет выделять память.
 
  • Страница 1 из 1
  • 1
Поиск:

delphicode.ru © 2008 - 2024 Хостинг от uCoz