Сейчас на форуме: hgdagon (+5 невидимых)

 eXeL@B —› Программирование —› Методы внедрения DLL в процессы
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 117.1 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 06 августа 2007 07:51
· Личное сообщение · #1

Привет.

Интересует информация о возможностях внедрения DLL в процесс. Однако предлагаемые варианты должны удовлетворять определенным требования

1/ Исключительно юзермод.
2/ Ключ AppInit_Dlls, функция SetWindowsHookEx не интересуют.
3/ Варианты, в той или иной мере требующие открытия процесса (в том числе через сервер процессов) также не интересны, так как невозможно получить нормальный хэндл процесса.
4/ Внедрение должен быть в максимально возможное количество процессов, winlogon отдельно не интересует.
5/ Модификация файлов на диске не рассматривается.
6/ Внедрение через перехват той или иной фазы создания процесса не интересует.
7/ Желательно, чтобы все начинало работать без перезагрузки, но не обязательно.

Есть ли что-то ещё или нет?
Если кто готов поделиться информацией буду очень благодарен.

TIA

-----
Security through obscurity is just an illusion




Ранг: 56.3 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 06 августа 2007 08:13
· Личное сообщение · #2

rootkit.com/newsread.php?newsid=715

Правда, я думаю ты о нём знаешь



Ранг: 117.1 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 06 августа 2007 08:47
· Личное сообщение · #3

Спасибо. Однако это патч процесса при загрузке. А если оно уже загружено?

-----
Security through obscurity is just an illusion




Ранг: 226.0 (наставник), 67thx
Активность: 0.160
Статус: Участник

Создано: 06 августа 2007 09:31
· Личное сообщение · #4

А в Advanced API Hook Libary (By Ms-Rem) смотрел ?
Там есть три разных метода внедрения.



Ранг: 117.1 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 06 августа 2007 12:34
· Личное сообщение · #5

Смотрел.

InjectDll стандартный прием с LoadLibraryA/CreateRemoteThread. Неприемлимо, поскольку CreateRemoteThread требует хэндл процесса, который получить для целевого процесса в моем случае из юзермод невозможно, мой пункт №3 в первом посте.
InjectDllEx запись DLL в процесс и инжект трида с передачей управления. Неприемлимо, опять же никто не даст открыть и тем более писать в процесс, пункт №3.
InjectDllAlt используется инжект, основанный на SetThreadContext. Совершенно неприменимо, поскольку к сожалению потоки целевого процесса закрыты от доступа хуками на уровне SSDT.

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

Хм. Может существуют ещё какие-нибудь ключи в реестре (кроме AppInit), которые могут подгрузить dll в процесс (помимо winlogon)?

-----
Security through obscurity is just an illusion




Ранг: 51.0 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 06 августа 2007 12:40 · Поправил: sotona
· Личное сообщение · #6

[deleted]



Ранг: 162.2 (ветеран)
Активность: 0.090
Статус: Участник

Создано: 06 августа 2007 13:33
· Личное сообщение · #7

pushick
Скажи а пользователь на чьей стороне? Твоей или той проги?



Ранг: 117.1 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 06 августа 2007 14:34
· Личное сообщение · #8

Оффтоп, но ладно. Это не троян (или любая другая вредоносная программа) и это не средство потрошения касперского антивируса

А теперь может все-таки что-то в тему?

-----
Security through obscurity is just an illusion




Ранг: 309.8 (мудрец), 21thx
Активность: 0.170
Статус: Участник

Создано: 06 августа 2007 15:56
· Личное сообщение · #9

в езиносах 29A писали про ключ реестра, чтобы поставить свою прогу "отладчиком" для другой... кто заинтересуется найдёт и пременит =)

-----
Shalom ebanats!





Ранг: 120.9 (ветеран), 5thx
Активность: 0.080
Статус: Участник
Programmer and reverser

Создано: 06 августа 2007 16:00
· Личное сообщение · #10

Что это у тебя за процесс, хэндл которого невозможно получить? Если уж так вышло, то все же, видимо, придется писать драйвер. И все же, почему ты не можешь получить "нормальный" хэндл процесса? И что ты вместо него получаешь?

-----
Уважайте других и пишите грамотно.




Ранг: 309.8 (мудрец), 21thx
Активность: 0.170
Статус: Участник

Создано: 06 августа 2007 16:15
· Личное сообщение · #11

ага... восстанови sdt и получай хэндл, не боясь аверов =]

-----
Shalom ebanats!




Ранг: 117.1 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 06 августа 2007 17:22
· Личное сообщение · #12

SLV

Это про Image File Execution Options?
Метод известный, спасибо.

Executioner пишет:
И все же, почему ты не можешь получить "нормальный" хэндл процесса?


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

SSDT почти всегда восстанавливается легко и непринуждено в двух случаях
1/это хуки антивируса
2/тебе дали загрузить драйвер

в нашем случае
1/это не дребедень вроде кав, хуки стоят инлайном и это мониторит их, восстанавливая немедленно
2/если я загружу драйвер, мне уже ничего из темы этого топика будет не нужно

-----
Security through obscurity is just an illusion




Ранг: 309.8 (мудрец), 21thx
Активность: 0.170
Статус: Участник

Создано: 06 августа 2007 17:24
· Личное сообщение · #13

ищи ошибки в этой защите сталобыть =]

-----
Shalom ebanats!




Ранг: 61.4 (постоянный), 1thx
Активность: 0.020
Статус: Участник

Создано: 06 августа 2007 17:52
· Личное сообщение · #14

приложение оконное?



Ранг: 117.1 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 07 августа 2007 05:54
· Личное сообщение · #15

SLV

Вот я и ищу

n0name

Приложение оконное. Однако, не стоит на это расчитывать, так как его окна тоже бронированные.
Хотя здесь могут быть варианты. хвнд окна стандартными средствами получить невозможно.
Вообще эту программу писали фанатики самозащиты по аналогии с крякми и катчме это можно назвать факме

-----
Security through obscurity is just an illusion




Ранг: 31.8 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 07 августа 2007 05:59
· Личное сообщение · #16

pushick
Под твои условия подходит разве что добавление dll в загружаемые LSP, shell extention, и.т.д.
Для процессов запускающихся не из системной директории, можно кинуть dll враппер на используемую ими дллку в их папку. Ну в общем то и все, болше под эти условия ничего не подойдет.



Ранг: 117.1 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 07 августа 2007 08:53
· Личное сообщение · #17

Sly Ass
Спасибо большое. Если можно поподробнее про shell extensions. AFAIK они и называются потому так, что работают в оболочке и вызываются из оболочки? И как здесь поможет layered service provider?

Насчет врапера я тоже смотрел, однако оказалось, что таблица импорта у программы отсутствует, в силу чего она не работает под win2k. Анализ показал, что программа самостоятельно подгружает kernel32.dll и далее грузит все, что ей нужно. Что неужели все прикрыто?

-----
Security through obscurity is just an illusion





Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 07 августа 2007 09:02
· Личное сообщение · #18

pushick
А если открыть csrss и получить хендл через DuplicateHandle?



Ранг: 56.3 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 07 августа 2007 09:03 · Поправил: W[4Fh]LF
· Личное сообщение · #19

pushick пишет:
Вот я и ищу


Можно ещё попробовать заюзать локальные баги elevation of code privelege в ОС. Хотя это жёсткая привязка к ОС, но всё зависит от задачи.



Ранг: 31.8 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 07 августа 2007 09:57
· Личное сообщение · #20

HoBleen пишет:
А если открыть csrss и получить хендл через DuplicateHandle?

А почитать первый пост в топеге не судьба?

pushick пишет:
Если можно поподробнее про shell extensions.

Это DLL которые добавляют пункты в контекстное меню оболочки. (к примеру rarext.dll в WinRar). Могут быть загружены в любой процесс использующий file open dialig, либо другие функции оболочки.
Смотри HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers и потом HKEY_CLASSES_ROOT\CLSID

pushick пишет:
И как здесь поможет layered service provider?

Если процесс юзает winsock, то LSP в него загрузиться.


HoBleen пишет:
Насчет врапера я тоже смотрел, однако оказалось, что таблица импорта у программы отсутствует, в силу чего она не работает под win2k. Анализ показал, что программа самостоятельно подгружает kernel32.dll и далее грузит все, что ей нужно. Что неужели все прикрыто

А загрузиться ДО нее и после хукать создание процессов не судьба? К примеру это можно сделать из BootExecute

З.Ы. можно ссылку на прогу в личку?



Ранг: 10.2 (новичок)
Активность: 0=0
Статус: Участник

Создано: 07 августа 2007 10:01 · Поправил: Unmoored
· Личное сообщение · #21

И вобще это странно. Прога может рушить хендлы только из режима ядра. Бороться с ядром из юзер-мода... А что мешает сделать простенький драйвер? Из режима ядра можно будет напрямую пообщаться с обьектом ядра процесс...



Ранг: 61.4 (постоянный), 1thx
Активность: 0.020
Статус: Участник

Создано: 07 августа 2007 11:04
· Личное сообщение · #22

Sly Ass пишет:
З.Ы. можно ссылку на прогу в личку?

тож интересно.
pushick пишет:
Анализ показал, что программа самостоятельно подгружает kernel32.dll

проверяет что это реальный kernel32?




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 07 августа 2007 11:29
· Личное сообщение · #23

хех))) что же это такое то? по осписанию что-то знакомое, но говорить не буду
на счёт хендла окна, его можно получить многими способами врядли они прикрыли все,
всё зависит от задачи, я так бегло пробежал топик, но вроде не заметил, а для чего это всё?

-----
[nice coder and reverser]




Ранг: 117.1 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 07 августа 2007 11:57
· Личное сообщение · #24

HoBleen

Пункт №3 первого поста. Хэндл процесса отсутствует в csrss.exe

Sly Ass пишет:
Это DLL которые добавляют пункты в контекстное меню оболочки. (к примеру rarext.dll в WinRar). Могут быть загружены в любой процесс использующий file open dialig, либо другие функции оболочки.
Смотри HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers и потом HKEY_CLASSES_ROOT\CLSID


Это понятно. К сожалению не применимо, программа не использует шел диалоги.

Sly Ass пишет:
Если процесс юзает winsock, то LSP в него загрузиться.


Нет, ничего такого там нет.

Sly Ass пишет:
А загрузиться ДО нее и после хукать создание процессов не судьба? К примеру это можно сделать из BootExecute


Пункт №6 первого поста. На целевых компьютерах такой возможности просто не будет.

Sly Ass
n0name
Программа является частной и закрытой разработкой одной команды моего города. Мне отвинтят башку, если я выложу её в паблик. Если бы я имел такое право, я бы это сделал ещё в первом посте.

-----
Security through obscurity is just an illusion




Ранг: 117.1 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 07 августа 2007 12:06
· Личное сообщение · #25

n0name пишет:
проверяет что это реальный kernel32?


Идет получение симболик линка на системную директорию, а потом типа strcatW(buf, '\system32\kernel32.dll');

Hellspawn пишет:
хех))) что же это такое то? по осписанию что-то знакомое, но говорить не буду
на счёт хендла окна, его можно получить многими способами врядли они прикрыли все,
всё зависит от задачи, я так бегло пробежал топик, но вроде не заметил, а для чего это всё?


Сомневаюсь, что ты знаешь, что это такое, поскольку ни одна из пяти версий никогда не выкладывалась в паблик. По описанию это похоже на антивирус или систему предотвращения, но это совсем не оно.
Перекрыты NtUserQueryWindow, NtUserFindWindowEx, NtUserBuildHwndList, NtUserWindowFromPoint, соответственно, все юзермод функции использующие их не дают результата. Если есть идеи, поделись


Unmoored пишет:
И вобще это странно. Прога может рушить хендлы только из режима ядра. Бороться с ядром из юзер-мода... А что мешает сделать простенький драйвер? Из режима ядра можно будет напрямую пообщаться с обьектом ядра процесс...


Рушить хэндлы в других процессах в юзермод можно через ZwDuplicateObject с флагом DUPLICATE_CLOSE_SOURCE, если я правильно тебя понял. Бороться с ядром вполне возможно, если авторы драйвера дураки.

При выходе в кернел мод не нужен и инжект длл. А тогда условия будут не выполнены и этот своеобразный "факме" будет не факнут.

-----
Security through obscurity is just an illusion




Ранг: 61.4 (постоянный), 1thx
Активность: 0.020
Статус: Участник

Создано: 07 августа 2007 12:22
· Личное сообщение · #26

а с потоками как? хендлы прикрыты?



Ранг: 31.8 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 07 августа 2007 12:49
· Личное сообщение · #27

pushick пишет:
Если есть идеи, поделись

Делаем скриншот через BitBlt, после чего ищем в нем координаты окна проги по сигнатуре и юзает keybd_event, mouse_event. Либо придется нарушить одно из правил условия задачи.




Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 07 августа 2007 13:04
· Личное сообщение · #28

ну не все, например эта не прикрыта, как заюзать решай сам))) а заюзать можно

NtUserGetForegroundWindow

что-то мне всё странно это кажется, а не тестят ли очередной говнопродукт?
если это закрытая разарботка, нахера такая защита?

-----
[nice coder and reverser]




Ранг: 117.1 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 07 августа 2007 15:06
· Личное сообщение · #29

n0name пишет:
а с потоками как? хендлы прикрыты?


Их тоже нет в csrss.

Hellspawn пишет:
что-то мне всё странно это кажется, а не тестят ли очередной говнопродукт?


Вот насчет этого можешь быть абсолютно спокоен. На кавнокомпании я не работаю.

Hellspawn пишет:
если это закрытая разарботка, нахера такая защита?

Потому как эта программа всегда применяется только в жутко агрессивной среде =)

Кстати, спасибо за BitBlt, GetForegroundWindow, это конечно уже из области высоких извращений, но тоже можно попробовать в будущем.

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

-----
Security through obscurity is just an illusion





Ранг: 109.2 (ветеран)
Активность: 0.090
Статус: Участник
Cardinal

Создано: 07 августа 2007 15:08
· Личное сообщение · #30

pushick
Работа с файлами каким-то образом отслеживается/блокируется? Есть возможность получить доступ к закрытым на чтение файлам?

-----
– Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями...



. 1 . 2 . >>
 eXeL@B —› Программирование —› Методы внедрения DLL в процессы
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати