Russian Qt Forum

Qt => Вопросы новичков => Тема начата: virtual_root от Август 13, 2012, 13:27



Название: сбор данных с rdp-сервера
Отправлено: virtual_root от Август 13, 2012, 13:27
Добрый день ребята) я написала программку которая собирает некоторые данные у компьютера, а именно:
  • список открытых программ
  • заблокировна ли учетная запись
  • количество нажатых на клавиатуре клавиш
  • количество нажатий кнопок мыши
У меня возник вопрос, а как мне собирать данные если я запущу свою программу на rdp-сервере(windows) как мне по всем удаленным пользователям собрать эти данные? Не в перемешку, а как-то по раздельности, чтоб я могла знать что эту программу запустил один пользователь, другую другой. Подскажите, пожалуйста!


Название: Re: сбор данных с rdp-сервера
Отправлено: Bepec от Август 13, 2012, 14:21
Жуткие мысли - зачем вам эта программа? Что она из себя будет представлять? И зачем ???


PS очень похоже на зловреда аля троян. % на 90 его функционал :D

PPS жду ответа :)


Название: Re: сбор данных с rdp-сервера
Отправлено: LisandreL от Август 13, 2012, 15:11
очень похоже на зловреда аля троян. % на 90 его функционал
Есть ещё такой вариант (http://bash.im/quote/403104).


Название: Re: сбор данных с rdp-сервера
Отправлено: Bepec от Август 13, 2012, 16:52
Отметаю как нецелесообразный для одиночной разработки :) К тому же готовых дофига.

PS такие проги вроде не логгируют все действия :)

PPS хотелось бы ТС услышать :)


Название: Re: сбор данных с rdp-сервера
Отправлено: virtual_root от Август 13, 2012, 21:05
это правда должна вестись статистика по работникам) так может мне подскажет кто с идеями реализации?


Название: Re: сбор данных с rdp-сервера
Отправлено: Serr500 от Август 13, 2012, 21:54
Идея (не проверял):
OpenProcess (http://msdn.microsoft.com/en-us/library/windows/desktop/ms684320%28v=vs.85%29.aspx (http://msdn.microsoft.com/en-us/library/windows/desktop/ms684320%28v=vs.85%29.aspx))
-->
OpenProcessToken (http://msdn.microsoft.com/en-us/library/windows/desktop/aa379295%28v=vs.85%29.aspx (http://msdn.microsoft.com/en-us/library/windows/desktop/aa379295%28v=vs.85%29.aspx))
-->
GetTokenInformation (http://msdn.microsoft.com/en-us/library/windows/desktop/aa446671%28v=vs.85%29.aspx (http://msdn.microsoft.com/en-us/library/windows/desktop/aa446671%28v=vs.85%29.aspx))
с TokenInformationClass=TokenUser
-->
Получили структуру TOKEN_USER (http://msdn.microsoft.com/en-us/library/windows/desktop/aa379634%28v=vs.85%29.aspx (http://msdn.microsoft.com/en-us/library/windows/desktop/aa379634%28v=vs.85%29.aspx)), в ней - SID_AND_ATTRIBUTES (http://msdn.microsoft.com/en-us/library/windows/desktop/aa379595%28v=vs.85%29.aspx (http://msdn.microsoft.com/en-us/library/windows/desktop/aa379595%28v=vs.85%29.aspx)), а внутри неё - SID (http://msdn.microsoft.com/en-us/library/windows/desktop/aa379594%28v=vs.85%29.aspx (http://msdn.microsoft.com/en-us/library/windows/desktop/aa379594%28v=vs.85%29.aspx)).
-->
LookupAccountSid (http://msdn.microsoft.com/en-us/library/windows/desktop/aa379166%28v=vs.85%29.aspx (http://msdn.microsoft.com/en-us/library/windows/desktop/aa379166%28v=vs.85%29.aspx))
Из lpName выдираем имя аккаунта.


Название: Re: сбор данных с rdp-сервера
Отправлено: virtual_root от Август 13, 2012, 22:17
Спасибо большое буду пробовать вашу идею))


Название: Re: сбор данных с rdp-сервера
Отправлено: Bepec от Август 14, 2012, 06:53
Помоему достаточно пихнуть программку в виде службы.
Если каждый пользователь заходит под своим логином-паролем, то их спокойно можно изъять посредством переменной среды %username%.
Записывать в виде непрерывного журнала для всех.
А дальше уже информацию фильтровать по пользователям.

PS Serr500 - зачем такие сложности? :)


Название: Re: сбор данных с rdp-сервера
Отправлено: Serr500 от Август 14, 2012, 08:17
Помоему достаточно пихнуть программку в виде службы.
А её в любом случае пихать в виде службы. Под аккаунтом обычного пользователя какая-то из функций работы с токенами, насколько я помню, обламывается из-за недостатка привилегий. Служба должна будет работать под учёткой (LOCAL)SYSTEM.

Если каждый пользователь заходит под своим логином-паролем, то их спокойно можно изъять посредством переменной среды %username%. Записывать в виде непрерывного журнала для всех.
Переменная USERNAME имеет разные значения под разными аккаунтами. Соответственно, программа всегда будет видеть только имя пользователя, под которым запущена сама. Кроме того, это не решает проблему определения
что эту программу запустил один пользователь, другую другой.
Моя идея в том, чтобы мониторить процессы и при появлении нового таким образом определять пользователя.

PS Serr500 - зачем такие сложности? :)
Просили идею... Пришло в голову именно это. Метод получения пользователя, запустившего процесс. Да и, вроде, не так уж сложно. Для WinAPI это вообще считается элементарным вариантом. Там "простыня" на 200 строк - вполне нормальное явление.


Название: Re: сбор данных с rdp-сервера
Отправлено: Bepec от Август 14, 2012, 08:44
Та никто не спорит :D Там и функции с 9 параметрами - норма.

Можно вообще пойти по пути непротивления - сделать тупо программку-приёмщик данных. А при входе любого пользователя запускать для каждого свою программку-логер. В результате будет тот же результат, что и с токенами :D

PS ненавижу winApi простыни. Особенно если они чужие и в них необходимо разобраться :/


Название: Re: сбор данных с rdp-сервера
Отправлено: Serr500 от Август 14, 2012, 09:03
Можно вообще пойти по пути непротивления - сделать тупо программку-приёмщик данных. А при входе любого пользователя запускать для каждого свою программку-логер.
Можно и так. Но пользователь может её и убить. Системный сервис защищён лучше. Некоторые и с правами админа убить невозможно.


Название: Re: сбор данных с rdp-сервера
Отправлено: Bepec от Август 14, 2012, 09:35
Есть пара способов скрытия, но есть и более крутая фишка - при выключении процесса, инициализировать выход из системы :D

Ну или посыл сигнала тревоги => в кабинете админа загорается красная лампочка, выезжает железный шкаф. Моторы, надсадно гудя, распахивают бронированные дверцы и на ложе из красного бархата появляется она - лопата из морёного дуба. А на ней надпись - "Любимым пользователям от злого админа!". И высвечивается месторасположение нарушителя + полное досье.
И кара настигнет нарушителя! И наш герой админ обретёт славу.


Название: Re: сбор данных с rdp-сервера
Отправлено: virtual_root от Август 14, 2012, 09:57
Мне понравилась и идея
Цитировать
Можно вообще пойти по пути непротивления - сделать тупо программку-приёмщик данных. А при входе любого пользователя запускать для каждого свою программку-логер.
Получается мне нужно, как раньше я ловила, ловить вход и выход из системы? по нему получаю имя пользователя и уже под ним сохраняю собранные данные. и мне нужно под каждым пользователем запускать мою службу ?


Название: Re: сбор данных с rdp-сервера
Отправлено: Serr500 от Август 14, 2012, 10:07
Да. Автозапуск при входе в систему. Но учтите возможность "убийства" процесса продвинутым пользователем.


Название: Re: сбор данных с rdp-сервера
Отправлено: Bepec от Август 14, 2012, 10:23
Лопата из морёного дуба спасёт.

А так - надо запретить пользователям вообще диспетчер задач. Нефиг им там ковыряться :D

PS хотя от профессионала очень сложно защиту сделать :D Практически нереально.

PPS ещё стоит учесть возможность "защищённой клавиатуры". У многих антивирусняков такая появилась :) Там фиг перехватишь хуками.


Название: Re: сбор данных с rdp-сервера
Отправлено: Serr500 от Август 14, 2012, 10:40
Лопата из морёного дуба спасёт.
Слишком экстремально.  :D

А так - надо запретить пользователям вообще диспетчер задач. Нефиг им там ковыряться :D
Process Explorer или Process Hacker прекрасно его заменяют. Работают даже без установки. Запрет диспетчера - средство только от недообразованных кулхацкеров.

PPS ещё стоит учесть возможность "защищённой клавиатуры". У многих антивирусняков такая появилась :) Там фиг перехватишь хуками.
Можно и там перехватить. Но надо лезть в Ring0.