С большим удовольствием хочу представить новую версию Intercepter-NG 0.9.10, которая, на мой взгляд, в значительной степени расширяет область применения инструмента. Данный обзор будет представлен не в виде сухого перечисления нововведений, а скорее как описание новых векторов атак вместе с рядом технических подробностей и элементами hack-story. Приступим…
Исследователи Mathy Vanhoef и Frank Piessens из iMinds-DistriNet и KU Leuven обнаружили опасную уязвимость в устаревшем, но все еще широко применяемом потоковом шифре RC4. В случае с веб-сайтами, уязвимость позволяет дешифровать часть зашифрованного HTTPS-потока (например, сессионный идентификатор, передающийся в Cookie) за десятки часов. Для реализации уязвимости необходимо применять MiTM-атаку, прослушивать и сохранять зашифрованный трафик, а также иметь возможность выполнять большое количество запросов от имени жертвы (как было и в случае POODLE), что проще всего достингуть, если внедрять жертве специальный скрипт на HTTP-страницы других сайтов, генерирующий большое количество запросов на интересующий хакера сайт. Кроме того, злоумышленнику необходимо каким-то образом узнать или установить свое значение Cookie, которое бы располагалось близко к искомому значению в передаваемом трафике.
В ходе исследования было выяснено, что для совершения атаки на дешифрование типичного значения сессии из 16 символов требуется около 75 часов активной атаки, после которой получить искомое значение можно в 94% случаев.
Ребята улучшили старую атаку от AlFardan, которая основывается на построении и использовании разброса распределений исследователей из Cisco Fluhrer и McGrew, добавив вариант распределения японских исследователей Takanori Isobe, Toshihiro Ohigashi, Yuhei Watanabe, Masakatu Morii, и скомбинировав их. Текст около искомого Cookie требуется для нахождения Байесовской вероятности.
Если атаку на HTTPS организовать достаточно проблематично, то, в случае с Wi-Fi, цифры более реальные: требуется всего 1 час активной атаки на сеть, после которой получается дешифровать используемый временной ключ, используемый для передачи Unicast-трафика (pairwise transient key, PTK). Атака сильно упрощается за счет наличия криптографически слабой проверки подлинности в TKIP-фреймах. Примечательно, что точки должны периодически (как правило, каждый час) менять этот ключ, однако большинство точек обновляют только ключ, который используется для передачи Broadcast-трафика — groupwise transient key (GTK). В любом случае, уязвимы даже правильно работающие точки, т.к. атака занимает чуть меньше времени, чем требуется для обновления ключа.
Сложилась ситуация, что участвую в проекте, который работает с достаточно большой нагрузкой. Как уже написал — 36 млн запросов в час. Я много чего прочитал и перепробовал за последний месяц, настраивая сервер; хотелось бы просто сжато и компактно выдать тезисно то, что работает хорошо в такой конфигурации.
Первое, что я заметил — множество советов как все настроить под большую нагрузку. Читайте их внимательно, обычно в тексте найдете, что речь про «высокую нагрузку» в 15-20 тысяч клиентов в сутки. У нас клиентов примерно миллион, активных, ежедневных.
У нас нет денег и мы все делаем за свой счет, поэтому экономим. Итог — весь миллион клиентов обслуживается на одном сервере, вот на таком — EX-60 на hetzner.
Свой первый квадрокоптер я купил более двух лет назад и купил я его, чтобы открыть новые ракурсы для своей «гопрошки». Сегодня совсем другая ситуация и на рынке квадрокоптеров и с курсом доллара, однако желание купить квадрокоптер для съёмки с воздуха — всё так же актуально. Поэтому в этой статье я расскажу о том, на какие квадрокоптеры стоит обратить внимание и с какими сложностями вы можете столкнуться.
Если вы когда-либо задумывались о шифровании данных на дисках уже после того, как у вас накопилось их приличное количество, вы, вероятно, расстраивались, прочитав о необходимости переноса данных перед созданием шифрованного раздела и после. Перенос 500 ГБ туда и обратно не представляет никакой особой трудности, такой объем можно временно загрузить даже в облако, но если речь идет о шифровании 6 винчестеров по 4 ТБ каждый, задача заметно усложняется. По какой-то причине, возможность шифрования и перешифровывания томов LUKS без потери данных (in-place re-encryption) слабо освещена в интернете, хотя для этого есть две утилиты: cryptsetup-reencrypt, входящая в состав cryptsetup с 2012 года, и сторонняя luksipc, появившаяся на год раньше. Обе утилиты выполняют, в общем-то, одно и то же — шифруют раздел, если он не был шифрован, либо перешифровывают уже существующий с другими параметрами. Для своих нужд я воспользовался первой, официальной.
Как это работает?
Предположим, у вас типичная разметка диска: один раздел, начинается с 1 МиБ (выравнивание для 4КиБ-секторов), заканчивается в конце диска.
Заголовок LUKS располагается в начале, перед зашифрованными данными. Для заголовка требуется минимум 2056 512-байтных секторов, т.е. чуть больше 1МиБ. Места перед началом раздела нам явно недостаточно, поэтому сначала нужно уменьшить размер файловой системы с ее конца, чтобы cryptsetup-reencrypt перенес блоки правее, в конец диска, освободив таким образом место в начале раздела для LUKS-заголовка. Конечный размер заголовка зависит от длины ключа, количества слотов для парольных фраз и прочих параметров, поэтому я рекомендую быть рачительным и отвести под заголовок 4 МиБ.
Продолжая тему, описанную здесь habrahabr.ru/post/252973, опять пишу про увеличение дисков виртуальных машин.
Конфигурация следующая:
Гипервизор сервер Supermicro с KVM и libvirt на Ubuntu.
Гости — Ubuntu с LVM2.
Задача:
Увеличить размер системного дисков без выключения/перезагрузки гостевой ОС.
Системный тоже можно на лету отресайзить. Для этого в libvirt есть команда:
virsh qemu-monitor-command resized-virtual-machine --hmp «block_resize $DRIVENAME $NEWSIZE»
Для HA проектов это очень важный момент, необходимо непрерывное функционирование сервиса.
Я решил попробовать изменить размер диска при помощи virsh.
Ниже результаты этого успешного эксперимента.
Как скрыть от посторонних конфиденциальную информацию?
Самое простое – зашифровать.
В Интернет и Интранет-сетях шифрацией данных управляет протокол SSL/TLS.
Солдат спит, служба идет.
Однако иногда возникает необходимость выполнить обратное – расшифровать перехваченный трафик.
Это может потребоваться как для отладки работы приложений, так и для проверки подозрительной сетевой активности.
Или в целях изучения работы SSL/TLS (очевидные, вредоносные цели не обсуждаются).
Как и при каких условиях можно расшифровать дамп SSL/TLS трафика в Wireshark?
Попробуем разобраться.
Моя статья расскажет Вам как принять 10 миллионов пакетов в секунду без использования таких библиотек как Netmap, PF_RING, DPDK и прочие. Делать мы это будем силами обычного Линукс ядра версии 3.16 и некоторого количества кода на С и С++.
Сначала я хотел бы поделиться парой слов о том, как работает pcap — общеизвестный способ захвата пакетов. Он используется в таких популярных утилитах как iftop, tcpdump, arpwatch. Кроме этого, он отличается очень высокой нагрузкой на процессор.
Итак, Вы открыли им интерфейс и ждете пакетов от него используя обычный подход — bind/recv. Ядро в свою очередь получает данные из сетевой карты и сохраняет в пространстве ядра, после этого оно обнаруживает, что пользователь хочет получить его в юзер спейсе и передает через аргумент команды recv, адрес буфера куда эти данные положить. Ядро покорно копирует данные (уже второй раз!). Выходит довольно сложно, но это не все проблемы pcap.
Кроме этого, вспомним, что recv — это системный вызов и вызываем мы его на каждый пакет приходящий на интерфейс, системные вызовы обычно очень быстры, но скорости современных 10GE интерфейсов (до 14.6 миллионов вызовов секунду) приводят к тому, что даже легкий вызов становится очень затратным для системы исключительно по причине частоты вызовов.
Также стоит отметить, что у нас на сервере обычно более 2х логических ядер. И данные могут прилететь на любое их них! А приложение, которое принимает данные силами pcap использует одно ядро. Вот тут у нас включаются блокировки на стороне ядра и кардинально замедляют процесс захвата — теперь мы занимаемся не только копированием памяти/обработкой пакетов, а ждем освобождения блокировок, занятых другими ядрами. Поверьте, на блокировки может зачастую уйти до 90% процессорных ресурсов всего сервера.
Хороший списочек проблем? Итак, мы их все геройски попробуем решить!
Что делать если вашего роутера не оказалось в списке поддерживаемых устройств OpenWRT? Конечно же сделать свой порт. Это можно сделать довольно быстро, если поддержка данной платформы уже реализована.
В этой статье я расскажу о процессе портирования прошивки в целом и о моем опыте портирования OpenWRT на ASUS DSL N12U.
Последние пару лет я пишу под ядро Linux и часто вижу, как люди страдают от незнания давнишних, общепринятых и (почти) удобных инструментов. Например, как-то раз мы отлаживали сеть на очередной реинкарнациинашего прибора и пытались понять, что за чудеса происходят с обработкой пакетов. Первым нашим позывом было открыть исходники ядра и вставить в нужные места printk, собрать логи, обработать их каким-нибудь питоном и потом долго думать. Но не зря я читал lwn.net. Я вспомнил, что в ядре есть готовые и прекрасно работающие механизмы трассировки и профилирования ядра: те базовые механизмы, с помощью которых вы сможете собирать какие-то показания из ядра, а затем анализировать их.
Здравствуйте, в данной заметке будет затронута тема организации «чистого» завершения для приложений, написанных на языке Go.
Чистым выходом я называю наличие гарантий того, что в момент завершения процесса (по сигналу или по любым иным причинам кроме system failure), будут выполнены определённые процедуры и выход будет отложен до окончания их выполнения. Далее я приведу несколько типичных примеров, расскажу о стандартном подходе, а также продемонстрирую свой пакет для упрощённого применения этого подхода в ваших программах и сервисах.
Есть сервисы, защищающие нас от DDoS атак. Они работают по принципу прокси: в DNS прописывается их IP, они фильтруют трафик и проксируют на ваш сервер. Все они настоятельно рекомендуют прятать свой IP и в публичном доступе давать только IP прокси-защитника. Вполне здравый подход, достаточный для успешной защиты. А я расскажу на чем можно проколоться и как от этого защитится.
NGINX вполне заслуженно является одним из лучших по производительности серверов, и всё это благодаря его внутреннему устройству. В то время, как многие веб-серверы и серверы приложений используют простую многопоточную модель, NGINX выделяется из общей массы своей нетривиальной событийной архитектурой, которая позволяет ему с легкостью масштабироваться до сотен тысяч параллельных соединений.
Инфографика Inside NGINX сверху вниз проведет вас по азам устройства процессов к иллюстрации того, как NGINX обрабатывает множество соединений в одном процессе. Данная статья рассмотрит всё это чуть более детально.
Семь долбаных лет я ждал язык, который хоть как то ответит части моих желаний. За это время, и в фоновом режиме я препробывал всё. Всё — означает, всю херню общего назначения, и всю херню не совсем общего назначения. Нельзя прочувствовать язык только что-то прочитав про него и написав Hello World. Чтобы понять — надо хоть немного попрограммировать — написать какую нить вещь. И вот все это время, я в минуты отчаянья качал какой-нить “замечательный язык”, и пытался что-то написать. Какие-то вещи даже до сих пор крутятся в конторе (или крутились).
Это – вторая часть путеводителя по музеям и исследовательским лабораториям, которые будут интересны пытливому айтишному уму. А первую вы можете почитать тут. Все музеи, о которых мы рассказываем, это не те пресловутые гулкие залы с паркетом и бабушкой-смотрительницей, сидящей на стуле, обитом бархатом. Это – интерактивные перекрёстки прошлого, настоящего и будущего технологий, в развитии которых вы участвуете. Причём часто прямо на экспозициях.
Во многих странах в частных гаражах, кроме автомобилей, хранится большое количество разного рода вещей, представляющих определенную ценность. При этом многие автоматические гаражные двери защищены только кодом, притом весьма несложным. Специалист по информационной безопасности Сэми Камкар (Samy Kamkar) открывает такие двери без всяких проблем, используя детскую игрушку.
Свой инструмент Камкар назвал OpenSesame, и этот инструмент способен открыть практически любую автоматическую дверь гаража, в системе которой используется «фиксированный код». Игрушка — IM-ME от компании Mattel, с дополнительной антенной и open-source кодом, написанным Сэми. Оказывается, этот девайс может опробовать все доступные комбинации кода всего за несколько секунд.
Это третий пост из серии «Пока не распилю, не успокоюсь». (Первый — про лазер, второй — про электрошокер.)
В 1899 был создан первый ручной фонарик (в картоновом корпусе), кубсат DIY киловаттный (эквивалентный) фонарик, мега-фонарик на светодиодах за 3000 рублей(sic!) (предоставленный для распила магазином green-laser.ru) .
Журнал Wired в 2012 году в статье, посвященной 50-летию создания светодиода, очень сильно перепутал факты и неправильно указал «отцовство». Так кто же папа светодиодов?
А пока я собирал факты, то вспомнилось детство и то, как мы делали свои первые инженерные попытки. Обычно они происходили после того, как мы толпой посмотрели фильм с Брюсом Ли (Майклом Дудиковым или Синтией Ротрок) в видеосалоне за советский рубль (которые почему-то всегда находились в подвалах). Купив батарейку «Планета» за 30 копеек и выкрутив лампочку из родительского фонарика, мы приступали к сборке. Купить фонарик было не круто, круто было собрать свой меч джедая. А еще крутость измерялась цветом изоленты.
История светодиодов, инструкция по сборке киловаттного фонаря и традиционный распил
Это, по большей части, рекламный пост, поскольку он первый в нашем блоге. После первого знакомства мы будем писать здесь об архитектуре защитных систем, антивирусных алгоритмах и интерфейсах.
В 2012 году мы решили создать самый удобный инструмент для защиты и борьбы с вирусами на сайтах и вот, сегодня этот проект вырос в сервис, о котором нам не стыдно рассказать.
Не секрет, что поражение сайта вирусом не сулит ничего хорошего его владельцу, а проблема устранения и предотвращения заражения сайтов с каждым годом становится все актуальнее. Решать проблему заражения приходится, в большинстве случаев, веб-мастеру.
Именно для таких веб-мастеров мы и создали сервис Вирусдай, который не только экономит время при поиске вредоносного кода и устранении заражения сайтов, а часто позволяет забыть о подобных проблемах. Достаточно лишь довериться антивирусному автомату и фаерволу.
Cтэнфордский курс CS183B: How to start a startup. Стартовал в 2012 году под руководством Питера Тиля. Осенью 2014 года прошла новая серия лекций ведущих предпринимателей и экспертов Y Combinator:
OpenMP– стандарт, определяющий набор директив компилятора, библиотечных процедур и переменных среды окружения для создания многопоточных программ.
Много статей статей было по OpenMP. Однако, статья содержит несколько советов, которые помогут избежать некоторых ошибок. Эти советы не так часто фигурируют в лекциях или книгах.
1. Именуйте критические секции
В очередь, сукины дети, в очередь! //М. А. Булгаков «Собачье сердце»
С помощью директивы critical мы можем указать участок кода, который будет исполняться только одним потоком в один момент времени. Если один из потоков начал выполнение критической секции с данным именем, то остальные потоки, начавшие выполнение этой же секции, будут заблокированы. Они будут ждать своей очереди. Как только первый поток завершит выполнение секции, один из заблокированных потоков войдет в нее. Выбор следующего потока, который будет выполнять критическую секцию, будет случайным.