| Автор: Du10 | 82458 | 18.11.2017 21:21 |
|
- Доводилось ли вам подключаться к своему компьютеру по RDP, используя недоверенный (чужой) компьютер?
- Не боялись ли вы при этом, что адрес RDP, логин и пароль уйдут куда не надо или ваш компьютер не будет инфицирован тут-же? - Не боитесь ли вы, что пока вас нет на месте, кто-то включил ваш компьютер и вошел используя ваш пароль? - Не боитесь ли вы, что пока вы читаете эти строки, кто-то пытается подобрать пароль к вашему компьютеру локально или по RDP? Если ответ на любой из этих вопросов ДА - тогда Welcome. Сегодня вы перестанете бояться и начнете жить. Когда-то и я задался этими вопросами. У меня была потребность подключаться к своему компьютеру по RDP, используя для этого недоверенные компьютеры КонтрАгентов. Но ведь если я подключусь 1 раз - то я рискую поймать заразу. Как решить проблему? Надо написать программу, которая будет работать как служба, постоянно читать журнал Windows, и сигнализировать про интересующие нас события: - Попытка входа (попытка подбора пароля от учетной записи) - Вход (успешный вход в учетную запись) Так-же все пароли должны быть одноразовыми, то есть меняться каждый раз после успешного входа. Еще пароли можно менять раз в заданный интервал, что бы снизить вероятность подбора пароля. Такая программа уже готова, и я её использую/тестирую вполне успешно уже несколько месяцев. Имя ей LogonSecurity. Исходный код LogonSecurity доступен на github, что бы ни у кого не возникло подозрений о том, что кто-то украдет доступ к вашему компьютеру. LogonSecurity контролирует не только доступ по RDP, но и консольный вход (когда есть физический доступ к компьютеру). На данный момент базовый функционал работает, но я наметил еще много пунктов в todo, и выполняю их в свободное время. С более подробным описанием работы вы можете ознакомиться на странице wiki |
|
| Автор: Бутч | 82489 | 19.11.2017 01:20 |
|
В Диспетчере задач Windows процесс запущенной программы скрыт? Как программа защищена от деактивации злоумышленником? Как программа сама защищена от несанкционированного доступа и изменения целостности своих компонентов?
Допустим, Вы воспользовались чужим компом для доступа к своей машине через RDP. На чужой машине был программный или ещё хуже аппаратный кейлогер. Учётные данные получены злоумышленником, который спокойно логинится на Вашей машине, первым делом вырубает Вашу программу, затем совершает на Вашей машине противоправные действия и уничтожает улики о своём присутствии и своих действиях (удаляет записи в журналах, удаляет информацию из веток реестра и т.п.). Соответственно, Вы о том, что кто-то что-то делал на Вашей машине, никогда не узнаете. Более того, злоумышленник может внедрить свой код в Вашу программу и изменить её настройки. |
|
| Автор: Бутч | 82491 | 19.11.2017 01:24 |
|
Если уж нужно заходить на свою машину, удаленно, через чужой комп, то лучше делать это через промежуточный узел, через связку прокси-серверов и при этом использовать виртуальную клавиатуру и разные пароли для каждого прокси-сервера. Хотя и это не особо спасёт.
|
|
| Автор: Du10 | 82522 | 19.11.2017 12:55 |
|
Бутч
"В Диспетчере задач Windows процесс запущенной программы скрыт?" Зачем? Программа работает как служба. Её цель - защитить от несанкционированного входа и предупредить о попытках брута. "Как программа защищена от деактивации злоумышленником?" Обрезаешь RDP пользователю права администратора - и службу не остановить. Если, конечно, не использовать уязвимость, повышающую привилегии. "Как программа сама защищена от несанкционированного доступа и изменения целостности своих компонентов?" Для этого нужно стороннее решение, которое будет следить что бы ни одна программа не была изменена, а не только эта. "На чужой машине был программный или ещё хуже аппаратный кейлогер." А пароль был одноразовым и перестал работать после успешного логона. "первым делом вырубает Вашу программу" В этом случае, если пароли генерируются, то больше ни кто не получит доступ к компьютеру через RDP. Для восстановления доступа надо будет добраться до консоли, и залогиниться под пользователем, у которого есть права администратора, но запрещен вход по RDP. Да и потом, ни что не мешает переименовать службу и .exe файл. + в исходники внести немного правок, что бы хеш не совпадал с общедоступным хешем. "Вы о том, что кто-то что-то делал на Вашей машине, никогда не узнаете." При логоне тут-же улетит письмо, оповещающее о входе. RDP сессия поднимается не секунду, и не 2. Иногда 10-15. + ни что не мешает поставить на компьютере программу-шпион, которая будет следить за активностью и писать всю инфу в защищенное хранилище. Пост-фактум хотя бы сможете посмотреть что происходило без вашего участия. "злоумышленник может внедрить свой код в Вашу программу" Для этого нужны будут права администратора. "через связку прокси-серверов" Проще с телефона, тогда, зайти. Не на каждом компьютере есть софт для подключения через прокси. |
|
| Автор: oko | 82526 | 19.11.2017 15:45 |
|
to Du10
Поздравляю, вы изобрели агента SIEM-системы с доп.функционалом одноразовых паролей... Тов. Бутч вам верные вопросы задал. Процесс надо скрывать, поскольку иначе рискуете нарваться на... да, собственно, он также все основное уже указал, ага. Народ не зря ПО системы защиты пытается внедрить как можно ближе к ring 0 (хотя бы ring 1, драйверная база, хотя и это не панацея). А вы на уровне демона пытаетесь работать - это, как говорится, до первого стука ломиком... Парольная защита RDP уже давно не метод защиты. Даже с учетом FIPS-шифрования. Даже с учетом последних обновлений. Слишком уязвимый и популярный сервис, кейсов к нему пруд пруди для любых вариантов реализации... Конструктивно. Решали уже такую задачу "Работа с удаленной машиной посредством использования недоверенных СВТ" много раз. Пожалуй, лучшим вариантом является своя доверенная live-ОС, загружаемая на "чужом ПК" с любого носителя. Что автоматически рубит часть каналов утечки/атак, и оставляет (навскидку) только: аппаратные закладки (кейлоггеры, перехватчики и т.п.), перехват и взлом данных, передаваемых по каналу связи и, мое любимое, ВОК (проще говоря, подглядывание). А на серверной стороне МЭ с белыми списками, криптуха для канала связи и хостовая IDS для выявления аномалий подключений. Можно и СЗИ НСД прилепить на уровне ОС (с аппаратной ИАФ, с замкнутой программной средой, с контролем всего и вся), но это уже с оглядкой на общий уровень вложений и паранойи... ЗЫ Единственное, согласен, что "тiльки для себе" предложенная программа имеет право на существование. В том смысле, что уж лучше с ней, чем вообще без ничего. Хотя анализ кода не проводил - черт его знает, не породит ли ее установка еще большее число уязвимостей (например, самое банальное, на переполнение буфера)... |
|
| Автор: Du10 | 82568 | 19.11.2017 18:07 |
|
to oko
Благодарю за конструктивную критику. Надо будет подумать/почитать о том как выполнять код на ring 0 или 1. " не породит ли ее установка еще большее число уязвимостей (например, самое банальное, на переполнение буфера)" Уже несколько месяцев работает на моем сервачке. Пока не падало. Да и потом, какой вред может нанести служба, которая читает логи и шлет письма по электронной почте? P.S. PVS Studio (статический анализатор кода) не выявил проблем. |
|
| Автор: oko | 82576 | 19.11.2017 21:11 |
|
to Du10
Не специалист по анализу кода и выявлению багов/дырок, но могу предположить, что чем больше системных служб, тем больше проблем. Как в части отказоустойчивости, так и в части безопасности. Нужен только подходящий кейс... В ring 1 вы просто так не встроитесь. В ring 0 тем более (вообще давно бытует мнение, что в Win это полноценно сделать не реально)... Посмотрите на сайтах ОКБ САПР и АНКАД. Они делали такие доверенные накопители с доверенной ОС на борту. Не знаю, как дела обстоят сейчас. Но у них хотя бы статьи имеются, где какой-никакой анализ решений проводится... |
|
Просмотров темы: 3465