[Перевод] Конференция DEFCON 22. «Один дома с автоматической системой защиты». Крис Литтлбери
Меня зовут Крис Литтлбери, я работаю старшим испытателем систем безопасности от проникновений в компании Knowledge Consulting Group, которая расположена в округе Колумбия. Я люблю конструировать всякие интересные вещи, придавая обычным устройствам необычные функции. Например, вот этот контроллер XBox Live быстро обнаруживает пожар. Я использовал его всего один раз, скомбинировав с микропроцессором Arduino. На второй картинке показано устройство для замены пятой передачи в коробке передач моего автомобиля, которое улучшает пробег. Я люблю делать вещи своими руками.
Я создаю идеи, образцы и коды, которые работают на меня, и отвечаю на любые вопросы, связанные с их последующим использованием.
Я не беру денег за хвалебные отзывы о каких-либо продуктах, которые я тестирую. Я не обещаю покончить с кражами, особенно если Вы живёте в доме, расположенном в криминальном районе. Я не агитирую за то, чтобы Вы устанавливали в своих домах ловушки, угрожающие ворам смертельным исходом. Это запрещено федеральными законами, поэтому не просите меня устроить у Вас дома скрытую яму с торчащими вверх пиками. Если Вы установите у себя нечто похожее на ловушку из фильма «Один дома», когда вор открывает входную дверь и падает в ловушку, Вы сами попадёте в тюрьму. Я не делаю ничего, что может поранить людей или нанести ущерб имуществу, и не применяю такие устройства для защиты Вашей автомашины или квартиры.
И я не советую кому-либо «испытать на проникновение» мой дом. Пожалуйста, не пытайтесь это проделать! Я не хочу обнаружить незнакомца, стоящего рано утром возле моей кровати, хотя знаю, что некоторые из Вас настолько ненормальны, что попытались бы это проделать.
Итак, перейдём к истории, которую я назвал «Однажды в Южном Техасе». Речь пойдёт о городе Сан-Антонио, известном туристическом центре, куда приезжают множество людей с семьями на экскурсии в такое прекрасное место, как Riverwalk. Я прожил в Сан-Антонио почти 10 лет, поэтому разбираюсь в том, что говорю. Предлагаю взглянуть на карту криминальной ситуации в этом городе. Она просто ужасна.
В числе преступлений, кроме уличных нападений, также учитывается количество случаев незаконного проникновения в жилища. Этот город получил 3 место в рейтинге криминальных городов Америки (на 100 месте находится самый безопасный город), так как число совершаемых здесь преступлений значительно превышает средние показали в США. На тысячу проживающих ежегодно происходит более 5 преступлений против личности и около 60 преступлений против собственности.
В то время у меня была вот эта небольшая «Хонда Сивик» 1995 года, одна из самых угоняемых машин в США. В 2009 году этот автомобиль занимал в рейтинге угонов 2 место. Это был мой магнит для воров стоимостью $1500.
Кто-нибудь из Вас имеет или имел когда-то такую машину? Поднимите руки, у кого её угоняли. Вижу, можете опустить руки, Вы настоящие мужики. В моей машине был кондиционер и небольшой пробег, когда я её купил. Однажды утром я увидел, что кто-то вскрыл двери и копался в моих вещах, но угонять машину не стал. Я подумал, что должен как-то этому противостоять и перехитрить воров, так как умел собирать всякие штуки, паять и всё такое и мог применить свои знания в области IT.
Я придумал 12 контактный коннектор, который позволял отсоединять и вытаскивать на ночь главное реле управления подачей топлива, зафиксировал нижнюю часть приборной панели так, что её невозможно было снять, и установил двустороннюю сигнализацию с оповещением о взломе на брелок-пейджер. Я специально установил самый дешёвый вариант иммобилайзера без звуковой и световой сигнализации, чтобы не вспугнуть воров, когда они влезут в машину и захотят её угнать. Я знал, что даже если они вытащат или отключат все реле, которые активируют сирену, поворотники и так далее, я всё равно получу сообщение на пейджер. Фактически у меня получилась машина-ловушка для угонщиков, но она нужна была мне для поездок на работу, поэтому я ею всё равно пользовался.
Однажды ранним утром спустя 3 месяца сигнализация сработала, я выскочил на улицу и увидел в своей машине двоих прилично одетых незнакомцев, которые копались в кабине автомобиля с рулевой колонкой. Один успел убежать, а второй постарался вступить со мной в диалог, но я уложил его на землю и сдал полиции. Это был успех, после которого я свалил из этого дерьмового района, тем более что у моих соседей была куча подобных случаев, и даже похуже.
Год спустя я увидел фотографию, которая изображала мой жилой комплекс и горящий джип соседа, и обрадовался тому, что вовремя оттуда убрался.
Я переехал в более приличный район. На этом фото, кстати, показан снег, который выпадал в Сан-Антонио всего трижды за время его существования. Этот снег напоминал мелкую пыль, но люди уже собирались ездить на санках, Вы понимаете. Я снимал квартиру на третьем этаже из соображений безопасности, потому что там везде раздвижные двери, даже на балконах, и вор легко может проникнуть в квартиру на нижних этажах, вскрыв дверной или оконный замок. Одним из советов полиции было использовать свет для имитации присутствия хозяев в доме, когда там никого нет. То есть устанавливать всякие таймеры, которые включали бы лампочки, телевизор и так далее, чтобы заглянувший в окно думал, что хозяева дома. Они советовали также осматривать все окна и двери перед тем, как ложишься спать, и запирать их на замок, даже если выходишь из дома на короткое время. Нужно было держать запертой и закрытой на щеколду дверь гаража.
Также советовалось регулярно вынимать почту из своего ящика, а когда Вы были в отъезде, просить почтовый офис, чтобы они не доставляли Вам почту или же чтобы её доставали Ваши соседи. Я думаю, что эти правила взяли за основу при съёмке фильма «Один дома».
Я часто работал ночью, работал и днём, то есть моя квартира выглядела обитаемой всё время. Я также установил дома самый дешёвый вариант автоматического устройства X10, так называемый «глупый чип». Это действительно дурное устройство, созданное в конце 70-х годов, оно пересылает данные по Вашей домашней электросети.
Оно формирует несущую частоту 120 КГц в форме синусоиды из ветвей по 60 КГц, пересекающих ось нулевого напряжения. Каждый раз, когда волна пересекает нулевую горизонталь, она передаёт один бит. Домашний код, код управления модулем и команда состоят из 4 бит информации. Волны были подвержены интерференции, и каждую команду нужно было вводить трижды. То есть оно было совершенно не пригодным для комфортного использования. Но если Вы живёте в небольшой квартире или старом жилом комплексе, Вам не нужно использовать более сложное устройство, это тоже работает. Перед использованием его нужно было запрограммировать.
Оно автоматически включало и выключало свет по дням недели и по часам, имело таймер безопасности, позволяло создавать макросы и им можно было управлять дистанционно. Таймер безопасности позволял в произвольном порядке включать и выключать свет в разные дни недели в разное время суток.
Затем я переехал из апартаментов в свой дом и сразу же решил что-то сделать с наружным освещением. Я хотел автоматически изменять освещение, включать и отключать разные фонари, использовать фото-сенсоры на основе того же устройства X10, то есть ничего особенного. Не знаю, как это помогло, но за всё время, что я жил в этом доме, ко мне ни разу никто не вломился, хотя моих соседей грабили.
Наконец, через 10 лет я переехал обратно в Колорадо и принялся оборудовать свой дом с учётом всего приобретённого опыта. Я не собирался превращать свой дом в ловушку, просто сделать жильё удобным, и составил такой «список желаний»:
- эффективное освещение. Это были бы автоматические стенные выключали и такая подсветка лестницы, чтобы все эти 60–80 Вт лампочки не создавали эффект «микроволновки».
- Настройка освещения по зонам, то есть регулировка интенсивности освещенности в разных частях дома и централизованный контроль за изменением освещения;
- гибкий тайминг, то есть ввод случайных или постоянных параметров освещения;
- «умную» систему кондиционирования, которая сама бы включала и отключала кондиционеры в зависимости от температуры в помещениях;
- внутренний геофенсинг, то есть создание замкнутой зоны, вход или выход из которой заставляет приложение выполнять какие-либо команды. Это позволяет автоматически активировать какие-либо функции домашнего оборудования в зависимости от того, в каком месте находится его хозяин. Например, когда Вы выходите из дома, Ваш мобильный телефон отдаёт команду на выполнение каких-то событий.
- Защиту дома от беспроводных автоматических атак. Если Вы помните, один джентльмен на прошлогоднем DEFCON сделал доклад о z-волнах, которые могут расшифровать код дверного замка и взломать его;
- создание защитной реакции дома на внешние стимулы, например, активация систем защиты при взломе или проникновении в дом.
Мне не нужно было устанавливать повсюду камеры, чтобы с помощью смартфона наблюдать за детьми, или устраивать автоматическое открывание входных дверей и гаражных ворот, как только мой автомобиль приближался к дому, потому что я боюсь всех этих ужасных вещей. Я хотел просто сделать так, чтобы мой дом смог защитить себя сам.
Мне нужно было, чтобы человек, который хочет проникнуть в дом, был бы задержан ещё на пороге. Знаете, у многих есть мощнейшая система тревожной сигнализации или на лужайке перед домом стоит щит, на котором написано: «Не приближайтесь к моему жилищу, а то сработает тревога» и так далее — так вот, если они намерены таким образом обеспечить свою безопасность, пусть делают, как хотят. Потому что бывали случаи, когда такая сигнализация срабатывала на Ваших друзей в гостиной или полиция задерживала совершенно постороннего человека перед Вашим домом из-за некорректной работы охранной системы.
Мне такое было не нужно, я хотел, чтобы моя тревога срабатывала действительно на реальную угрозу, но была скрытой, без всяких сирен и прочего. То есть когда посторонний человек проникал в дом, там бы начинали происходить какие-то необычные события, привлекающие моё внимание.
Первой вещью, которую я приобрёл, стал WiFi LIFX. Это устройство для программируемого управления цветной светодиодной лампочкой по беспроводной связи. Она была результатом внедрения проекта, который стартовал на портале Kickstarter в 2012 году. Это была крутая лампочка с WIFi модулем яркостью 1000 Люмен, которая светила как ненормальная и при этом потребляла всего 17 Вт. У неё была фантастическая цветовая палитра, дающая освещение любого цвета. На слайде показано синее освещение моей гостиной, которое обеспечивается всего двумя такими лампочками, установленными на потолке. Это действительно круто. Так вот, когда срабатывает сигнализация, весь Ваш дом начинает вспыхивать красным светом. Все люстры, лестничное освещение, настольные лампы — всё начинает светить вспыхивать красным, будто бы прилетели инопланетяне. Если при этом ещё запустить машину, которая выпускает дым…
Представьте, как это подействует на грабителя.
Для кодировки этой лампочки есть API на Python, благодаря чему её работу можно запрограммировать в нужном Вам режиме. Недостатками этих ламп является большой размер и вес, поэтому Вы не сможете использовать их как обычные лампы для стенного освещения, к тому же они хорошо нагреваются, поэтому их не удастся прикрыть обычным абажуром или плафоном.
Альтернативой этим лампочкам можно считать лампы Philips Hue. Они гораздо меньшего размера, потребляют меньше энергии — всего 8,5 Вт при полной яркости, немного дешевле. Три такие лампочки соответствуют яркости свечения обычной лампы мощностью 360 Вт. Их недостатками является бедная цветовая палитра и небольшая яркость свечения. Но если Вы хотите использовать такие лампочки для освещения столовой или холла, и при этом иметь возможность устроить «красную» световую тревогу Terrible Security, то они станут фантастически удачным выбором.
На следующих слайдах показано освещение моих комнат на 4 июля, правда, камера не смогла передать реально пурпурный и голубой свет, который создаёт комбинация из 3-х ламп Philips Hue и 4-х светодиодных ламп LIFX.
Следующее устройство, которое я использовал в своём доме, называется WeMo. Оно произведено компанией Belkin. Это устройство обладает такими особенностями:
- создает WLAN с участием таких устройств, как LIFX, и позволяет управлять этой сетью при помощи смартфона по сети WiFi. C его помощью можно управлять достаточно мощным оборудованием, например, моторами, и в зависимости от того, какими устройствами оно управляет, можно даже разжечь костёр и спалить свой дом к чертям.
- Использует UPnP и SOAP, автоматически обновляет прошивку и с помощью роутера может запереть всё, что только можно запереть в Вашем доме;
- управляет розетками и настенными выключателями, а также уличным освещением, снижая ночью энергопотребление CFL лампочек до 20 Вт;
- недорогое;
- поддерживает Terrible App и Terrible Security;
- иногда работает по Вашим правилам, потому что встроенное приложение достаточно проблемное и может не выполнять определённые команды или выполнять их с ошибками.
На следующем слайде показан разработанный мною сервер защиты жилища — Home Defense Server. Основными требованиями при его разработке были:
- работоспособность 24 часа 7 дней в неделю;
- низкое энергопотребление, позволяющее использование UPS при отключении электроэнергии;
- совместимость с аналоговыми и цифровыми датчиками и компонентами, позволяющими подключить его к домашней WLAN, то есть это должна быть модульная система;
- выходы для соединения с традиционными системами домашней безопасности;
- открытая платформа на основе микропроцессора Raspberry Pi.
Мне нужно было, чтобы система могла мне звонить, передавая видео или текстовые сообщения, чтобы мне не пришлось звонить в полицию и говорить: «Эй, меня зовут Крис, я создал в своём доме «заумную машину» Руба Гольдберга, и я клянусь Вам, что кто-то проник ко мне в дом, не могли бы вы это проверить»? и слышать в ответ: «Сэр, это 911, не звоните сюда больше»!
На следующем слайде показана моя WiFi коптильня для барбекю, которая сообщала на мобильник температуру дыма и мяса, время, остававшееся до полной готовности, количество порций и так далее, созданная на основе Raspberry Pi, так что я прекрасно разбирался в его потрясающих возможностях.
Процессор был соединён с датчиками через десятибитный интерфейс ADC и для его работы использовался Rails-сервер, потому что я имел некоторый опыт работы с Ruby on Rails, это веб-фреймворк с открытым кодом.
На следующем сайде изображен сервер «Домашней обороны». Он связан с существующими системами домашней безопасности в виде такой локальной сети, развёрнутой на базе Raspberry Pi. В систему добавлены независимые PIR/X-band компоненты сенсорного радара, то есть реле, транзисторы, датчики движения. Сервер позволяет активировать систему тревоги с помощью аппаратного обеспечения или беспроводных тревожных кнопок. Аппаратные цепи были запрограммированы на контактный тип срабатывания, то есть как нормально замкнутые или нормально разомкнутые контуры, и фиксировали движение или открывание двери.
Для решения всех этих задач я использовал открытое программное обеспечение, перечень которого приведён на следующем слайде. Например, Magicmonkey обрабатывало LIFX протоколы лампочек, объединяя их в синхронизированную систему с гибкими настройками частоты вспышек определённых групп. Язык программирования Sharph представляет собой LIFX версию языка Python, основан на библиотеках и протоколах Magicmonkey и позволяет создавать потрясающие API, обеспечивающие связь между WLAN и сетевыми протоколами ZigBee, управляющими лампочками LIFX на основе протокола беспроводной связи 802.15 на частоте 915 МГц.
Официальное приложение LIFX Api, написанное на Rubi, поддерживало одновременное управление несколькими лампочками. Я использовал также нечто непроизносимое — iancmcc«s ouimeaux — расширенную версию Python IPI для устройств WeMo с приложением, написанным поверх официального API. Система имела кодовую и линейную поддержку. После этого я присоединил к сети элементы внешнего интерфейса и службы, обеспечивающие их функционирование.
В правой части слайда Вы видите, как выглядит приложение «Система управления светом» на экране смартфона. Для написания этого приложения я использовал легковесные фреймворки Flask (на языке Python) или Sinatra (на языке Ruby). Я создал сервисы для каждого вида техники — LIFX, Hue, WeMo. Индивидуальные сервисы предотвращали общесистемные сбои, выполняя приложения на отдельных портах, то есть если какой-то сервис давал сбой, система продолжала функционировать. Для обеспечения быстродействия такой громоздкой структуры я использовал легковесную базу данных по типу Redis, поместил её на раздельных Pi, которые находились в разных комнатах, и создал службы слежения с тревожной сигнализацией. Я также снабдил каждую платформу Raspberry Pi своим собственным жёстким диском, чтобы не было задержек, возникающих при обращении к общему устройству записи и чтения данных.
Замечу, что я не программист и не специалист в области написания кодов, а всего лишь тестер, поэтому мои коды не выглядят изящно и достаточно громоздки, но всё равно неплохо работают. Я должен был протестировать работу системы безопасности, для чего использовал канал Bluetooth. Например, я входил в комнату с моим смартфоном, а система должна была это увидеть и отреагировать на моё пребывание там надлежащим образом, запустив определённые процессы. Причём это было достаточно сложно, потому что нужно было проверять интенсивность сигнала моего смартфона, чтобы система «видела», что я приближаюсь или удаляюсь от приёмника, то есть отслеживала моё перемещение по дому. Я даю ссылку на видео тестирования диапазона Bluetooth CARRI, где показано, как гаснет свет на втором этаже, когда я выхожу из комнаты и спускаюсь по лестнице и как он загорается в другой комнате, когда я туда вхожу. Для этого я использовал особое устройство под названием RSSI — индикатор силы принимаемого сигнала.
Я написал скрипт на основе Linux rfcomm/hcitool/l2ping, который пинговал MAC-адрес моего телефона, проверял постоянную передачу пакетов RSSI-массивов, то есть интенсивность сигнала Bluetooth и отдавал команду на выполнение заданной функции. Если сигнал Bluetooth был слишком мощным, приложение блокировало беспроводной интерфейс смартфона, поэтому я постарался использовать только протокол 802.11, то есть WiFi.
Система привязывалась именно к моему смартфону, и если бы в дом вошёл сосед со своим смартфоном, она бы на него никак не отреагировала, потому что у него другой MAC-адрес.
Таким образом, я создал систему, которая наблюдала за перемещениями хозяина по дому посредством слежения за приближением или удалением мобильного устройства. «Мониторинг приближения устройств» обладал такими свойствами:
- запускал службу, которая наблюдала за «прописанными» в таблице MAC-адресами мобильных телефонов;
- наблюдал за сигнальными пакетами данных WLAN и вычислял силу сигнала;
- записывал зафиксированную интенсивность сигнала и время его последнего обнаружения в базу данных Redis;
- обладал возможностью вести историю местоположения;
- проставлял раздельные метки времени и определял присутствие устройства. То есть если система «видела», что в комнате появлялось устройство, которого не должно было там быть в это время, то она запускала другое событие;
- обновлял триггеры событий базы данных, которые запускали выполнение процессов на других устройствах.
Я подвязал к своей системе планировщик под названием SmartCron, который планировал изменения режимов системы освещения в зависимости от времени восхода и заката по данным, полученным из бесплатного приложения Weather Underground. Это потрясающее API с фантастическими возможностями регулировки интенсивности освещения в зависимости от погодных условий, например, оно включало свет, если за окном было пасмурно.
Теперь рассмотрим систему защиты от беспроводных атак. Она основана на принципе спортивной радиопеленгации «Охота на лис», когда с помощью приёмника, карты и компаса обнаруживают спрятанные на местности передатчики.
Система обнаруживает Z-Wave атаки на устройства контроля доступа или попытки заглушить беспроводную передачу данных сенсоров и датчиков, работающих на частоте 345 МГц, чтобы вывести из строя систему безопасности. Приёмники системы защиты представляют собой антенны, которые обнаруживают начало передачи сигналов и место, откуда она производится, то есть засекают сигнал передатчика злоумышленника. Они настроены так, чтобы срабатывать против сенсорных атак, производимых на частоте 345 МГц и Z-wave на частоте 900 МГц, и используют сеть Ehternet для функционирования в условиях глушения беспроводных сигналов. Эта технология основывается на эффекте Доплера, позволяющем обнаруживать движущиеся объекты благодаря изменению частоты и длины волны передатчика, который перемещается относительно неподвижного приёмника.
Таким образом, если кто-то пытается подобрать электронные ключи к моему дому, находясь за пределами обозначенного системой периметра, приёмник засекает его координаты. Для обеспечения этой функции я использовал формат текстовых сообщений Agrello DF, где качество обнаружения сигнала имеет фиксированное значение 7 пикодопп.
Антенны подключены к серийному порту интерфейса RS232, затем к USB-адаптеру и процессору Raspberry Pi, где их сигналы обрабатываются при помощи приложения Python. Здесь полученные координаты сравниваются с координатами защищённого периметра, и даже если ключ совпадает, но получен из источника за пределами этого периметра, система на него не реагирует.
Я предусмотрел также активный элемент защиты на случай, если вор всё же проникнет в дом. Если он будет думать, что его не заметили, то попытается что-либо украсть и сбежать. Поэтому мне нужно было средство, показывающее, что злоумышленник обнаружен. Оно должно было активироваться с помощью электроники и производить много шума, но не причинять вору никакого физического ущерба. Во-первых, освещение в доме начинало вспыхивать красным светом. Во-вторых, я подключил к тяжёлым металлическим предметам соленоиды с напряжением 12 В, которые создавали эффект стука. То есть когда вор оказывался в доме, весь дом начинал вспыхивать красным, а со стороны лестницы раздавался стук, как будто бы кто-то спускается по ступенькам.
Последнее, что я сделал и от чего категорически Вас отговариваю — это сигнальный фейерверк из петард. Не вздумайте проделать это в своём доме, потому что спалите его дотла. Учтите, что создание кустарных фейерверков является федеральным преступлением. Помните, что я Вас об этом предупредил!
Итак, я использовал 12 В контур для создания искры, которой поджигало петарды. Он срабатывал автоматически по сигналу системы безопасности, при этом петарды поджигались не все сразу, а по очереди в случайном порядке и издавали звуки, напоминающие стрельбу, по типу той, что устроил пацан в фильме «Один дома».
Замечу, что я не использовал в своей домашней системе устройства Z-wave, потому что они дорогие и не являются открытым ресурсом. Но я планирую испытать их в дальнейшем, а также хочу интегрировать устройства SDR сканирования в диапазон 345 МГц для всех беспроводных датчиков и произвести инженерный анализ двухдиапазонного трансмиттера 2 GIG, работающего на частотах 345/900Мгц. Я не успел этим заняться, потому что сел в самолёт и прилетел сюда, но обязательно продолжу свою работу. Если у Вас есть ко мне вопросы об использовании устройств для защиты дома, обращайтесь на электронную почту, так как, к сожалению, я полностью исчерпал лимит времени, отведённый на моё выступление.
Спасибо, что остаётесь с нами. Вам нравятся наши статьи? Хотите видеть больше интересных материалов? Поддержите нас оформив заказ или порекомендовав знакомым, 30% скидка для пользователей Хабра на уникальный аналог entry-level серверов, который был придуман нами для Вас: Вся правда о VPS (KVM) E5–2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps от $20 или как правильно делить сервер? (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40GB DDR4).
Dell R730xd в 2 раза дешевле? Только у нас 2 х Intel Dodeca-Core Xeon E5–2650v4 128GB DDR4 6×480GB SSD 1Gbps 100 ТВ от $249 в Нидерландах и США! Читайте о том Как построить инфраструктуру корп. класса c применением серверов Dell R730xd Е5–2650 v4 стоимостью 9000 евро за копейки?