Пользователь
Архитектура JETPLOW – NSA бэкдор в моей подставке под кофе
"Какой изящный ход – называть стандартный буткит имплантом," — подумали мы.
Всё началось около года назад, когда в распоряжение нашего отдела исследований поступили дорогостоящие подставки под кофе, а именно несколько железок от Cisco – коммутаторы Catalyst 3850, Catalyst 6500 (о технике написания шеллкодов под этого "зверя" ранее был доклад на ZeroNights 2015) и межсетевой экран ASA 5525-X.
Найдя несколько баг в межсетевом экране, которые позволяли «провалиться» в систему, получив стандартный шелл (разработчик был своевременно проинформирован), мы задумались над импактом – что можно сделать такого страшного, чтобы нанесло бы максимальный урон. И тут… слитые в 2013-м году Сноуденом секретные документы АНБ пришлись как нельзя кстати. В них рассказывалось про имплант для PIX и ASA под названием JETPLOW, покрывающий Cisco PIX 500-й серии и Cisco ASA серии 5505, 5510, 5520, 5540, 5550. Как вы можете заметить, в каталоге АНБ из представленного большого диапазона поддерживаемых версий не было упоминания об имеющемся в нашем распоряжении ASA 5525-X, что, в свою очередь, породило спортивный интерес в части создания своего импланта под серию 5525-X в качестве PoC.
О своем видении и реализации импланта под ASA 5525-X мы будем рассказывать на конференции ZeroNights 2016 и выложим его исходные коды. Также, в качестве бонуса, мы продемонстрируем реализацию аналогичного импланта для Catalyst 3850.
Важно отметить, что разработанный имплант для целевых 5525-X немного отличается от JETPLOW ввиду того, что 5525-X построена на архитектуре Intel x86_64, и использует UEFI, а Catalyst 3850 базируется на архитектуре MIPS64.
«Молчание – золото»: 13 вещей, которые не стоит говорить разработчикам и тестировщикам
![](https://habrastorage.org/files/9a2/f61/049/9a2f61049686415394ca3f539f2f5a5d.jpg)
/ фото Sistema Bibliotecario Vimercatese CC
Практически каждая крупная организация нанимает в свой штат разработчиков программного обеспечения. При этом только треть из них заняты непосредственно в бизнесе, связанном с ИТ. Но вне зависимости от того, где они работают: в фармацевтической компании, образовательной или рекламной сферах, они остаются программистами.
Работа в команде – ответственное занятие, поскольку в этом случае люди отвечают не только за себя, но и за окружающих, они общаются, помогают друг другу. Как бы это ни было банально, ключом к продуктивному общению между людьми всегда является вежливость и взаимоуважение. Однако все же есть определенный список фраз, которые – даже когда они звучат вежливо и корректно – не стоит употреблять в разговоре с разработчиками и тестировщиками, если вы их коллега, заказчик, «владелец» или руководитель проекта.
Памятка пользователям ssh
![](https://habrastorage.org/getpro/habr/post_images/784/133/dac/784133dac3a6daa093e5a8174962be7f.png)
Предупреждение: пост очень объёмный, но для удобства использования я решил не резать его на части.
Оглавление:
- управление ключами
- копирование файлов через ssh
- Проброс потоков ввода/вывода
- Монтирование удалённой FS через ssh
- Удалённое исполнение кода
- Алиасы и опции для подключений в .ssh/config
- Опции по-умолчанию
- Проброс X-сервера
- ssh в качестве socks-proxy
- Проброс портов — прямой и обратный
- Реверс-сокс-прокси
- туннелирование L2/L3 трафика
- Проброс агента авторизации
- Туннелирование ssh через ssh сквозь недоверенный сервер (с большой вероятностью вы этого не знаете)
Как передать энергию по одному проводу
Как определить уровень ИТ-зрелости своей компании — и какие они бывают
![](https://habrastorage.org/files/f35/092/baa/f35092baa1f746e486f981f432676e83.jpg)
Давайте разберём уровни зрелости ИТ-процессов на примере управления инцидентами. Это всё то, что сыплется на ИТ-отдел в виде тикетов от пользователей, шефа, текущих задач и всего, что надо сделать. Забегая чуть вперёд, скажу, что в среднем по стране у крупного бизнеса с инцидентами довольно хорошо, в большинстве случаев это 4-й уровень. Ну просто потому, что работа со сбоями — это первое, по чему судят об ИТ-отделе.
Первый уровень — это когда:
- ИТ-отдел работает без распределения обязанностей и специализаций. Все отвечают за всё (точнее, ни за что), принцип выбора исполнителя — «Вася, ты свободен, ну, сделай им там».
- Ответственности нет: если Вася забыл, непонятно, кому писать, непонятно, как и что на что влияет, пользователи вообще не разбираются, кто и что делает. И иногда бьются в истерике.
- Документации нет.
- Автоматизации нет (либо есть на уровне списка задач в блокноте).
- Пользователи почти всё решают по личным знакомствам, обращаясь к тем, кто им уже один раз помог.
На втором уровне появляется базовое распределение обязанностей и вычленение логичных последовательностей действий.
Разбираемся в Go: пакеты bytes и strings
Перевод одной из статей Бена Джонсона из серии "Go Walkthrough" по более углублённому изучению стандартной библиотеки Go в контексте реальных задач.
В предыдущем посте мы разобрались, как работать с потоками байт, но иногда нам нужно работать с конкретным набором байт в памяти. Хотя слайсы байт вполне подходят для многих задач, есть немало случаев, когда лучше использовать пакет bytes. Также мы рассмотрим сегодня и пакет strings, так как его API практически идентичен bytes, только он работает со строками.
Этот пост является одним из серии статей по более углублённому разбору стандартной библиотеки. Несмотря на то, что стандартная документация предоставляет массу полезной информации, в контексте реальных задач может быть непросто разобраться, что и когда использовать. Эта серия статей направлена на то, чтобы показать использование пакетов стандартной библиотеки в контексте реальных приложений. Если у вас есть вопросы или комментарии, вы всегда можете написать мне в Твиттер — @benbjohnson.
Прокачиваем VoIP GSM шлюз Yeastar TG100 до мини-АТС
![](https://habrastorage.org/files/aed/b8a/870/aedb8a87057b45d9830ed77b91cfce41.jpg)
Использование runit для своих сервисов
Но на практике оказалось, что runit идеален для управления сервисами безотносительно инициализации и т.п.
Введение
Супервизор берёт на себя такой функционал, как:
- превращение любого процесса в демон;
- логгирование вывода процесса и ротирование логов;
- запуск, остановка, рестарт, запрос состояния, управляющие скрипты для init.d;
- выключение и запуск сервисов автоматически при появлении новых сервисов в списке либо удалении старых из списка;
- возможность ведения нескольких независимых списков сервисов одновременно (например, для каждого пользователя отдельно и для системы в целом);
- удобный API для управления сервисами.
Для большинства операционных систем runit уже входит в репозитории пакетов (apt-get install runit). Кроме того, мы имеем уже готовый набор рецептов для популярных сервисов (nginx, apache etc.).
Распределенная природа мессенджера Tox
В данной публикации я бы хотел рассказать про распределенную природу данного мессенджера, общие принципы работы DHT-сети Tox, а так же как "догнать и перегнать Америку" по количеству нод.
![tox logo](https://habrastorage.org/files/5ae/820/1b8/5ae8201b8cff4de88e41cc06c27bfb82.png)
Эмоциональный landing page? Воу воу, полегче
![](https://habrastorage.org/files/77e/3c0/638/77e3c0638120423f8c9fe4a3e8978861.jpg)
Пародия на избыточную эмоциональность в интерфейсах
А началось все с клиента, прочитавшего статью о «правильной» технике продаж и поставившего под сомнение мою компетенцию. Та статья стоила 2-х часового разговора и заставила разложить вопрос эмоциональности в интерфейсах по-полочкам.
Терминал для домашнего Linux сервера на базе ESP8266
![](https://habrastorage.org/files/c78/55f/858/c7855f85896b49fca445ce4347fa9d73.png)
Введение
Данное устройство служит для удалённого доступа к Linux серверу посредством последовательного порта и позволяет отказаться от локальных монитора и клавиатуры. Зачем оно нужно если есть SSH и VNC? Нужно в виду ряда проблем, связанных с управлением на этапе загрузки системы и управлением питанием:
- Выбор загружаемой ОС, вход в recovery mode, memtest. Нажатие S во время загрузки при невозможности смонтировать одну из файловых систем, управление fsck во время загрузки.
- Ввод пароля от зашифрованного корневого раздела во время загрузки. Приходилось в initramfs устанавливать dropbear действующий на этапе загрузки. Пароль вводился по SSH. Хочу отметить, что данный способ непросто мне давался в плане конфигурации, на популярных дистрибутивах приходилось править скрипты загрузки и использовать некоторые костыли, которые переставали работать с выходом новых релизов.
- Удаленное выключение и включение. С первым затруднений никогда не было, а вот для включения приходилось применять технологию Wake-on-LAN (WOL), магический пакет посылался с маршрутизатора и сервер включался, правда не всегда, а только тогда когда в конфигурационных регистрах сетевой карты были «правильные» значения перед выключением, которые должна была внести туда ОС.
- Отказы после отключения электричества и некорректной работы UPS, вкупе с автоматическим включением настроенном на материнской плате.
- К сожалению, оборудование моего домашнего сервера не промышленное и не обладает высокой степенью надежности. То же касается и программного обеспечения, зачастую работают «сырые» модули ядра. В следствие чего не раз сервер «зависал» не отвечая ни по сети, ни на нажатие клавиш клавиатуры. Приходилось использовать аппаратный сброс зажимая кнопку питания более чем на 3 секунды.
На промышленном оборудование таких проблем нет, в пример можно привести решение HP iLO позволяющее удаленно хоть систему устанавливать, не говоря о таких вещах как управление питанием и диагностика системы. Кстати говоря у них есть продукты и для дома/малого бизнеса с этим решением. Но так сложилось, что система строилась на базе обычной miniITX материнской платы без таких возможностей.
Wi-Fi: неочевидные нюансы (на примере домашней сети)
[!!]: после замечаний касательно публикации первой части привожу текст целиком. Если вы читали первую часть — продолжайте отсюда.
Программный интернет шлюз для уже не маленькой компании (Shorewall, QoS во всю ширь). Часть 3
В этих статьях мы рассмотрим построение интернет шлюза на linux, позволяющего связать несколько офисов компании, и обеспечить ограниченный доступ в сеть, приоритезацию трафика (QoS) и простую балансировку нагрузки с резервированием канала между двумя провайдерами.
Конкретно в этой части:
- QoS во всю ширь в Shorewall
- Более подробная настройка Shorewall
- Раскидывание трафика по каналам в соответствии с протоколами
- Костыли, без них, никуда
А в первой части были рассмотрены:
- Простейшая настройка Shorewall
- Ужасно сложная настройка dnsmasq
- Не менее сложная настройка OpenVPN
- И для многих продолжающих админов нетипичная, динамическая маршрутизация, на примере OSPF
А во второй:
- Более подробная настройка Shorewall
- Страшный и не понятный QoS
- Балансировка нагрузки и резервирование
В четвертой части:
- Автоматические события
- Макросы
Сервисы для проверки навыков тестирования на проникновение
![](https://habrastorage.org/files/529/2ff/069/5292ff06934b49b7a859b8323d405d59.jpg)
В прошлом топике я опубликовал обзор дистрибутива PentestBox со ссылками и описанием входящих в него утилит. Надеюсь вам хватило времени ознакомиться с ними и изучить функционал. Сегодня я предлагаю вам несколько сервисов для тестирования своих навыков на практике. Это специализированные сервисы, абсолютно легальные и позволяющие всем желающим проверить свои знания и умения.
Лучшие дистрибутивы для проведения тестирования на проникновение
![](https://habrastorage.org/files/6a4/72f/3a8/6a472f3a81494f6d8a7a384181e85229.png)
Существует несколько популярных securty дистрибутивов, содержащих большинство популярных утилит и приложений для проведения тестирования на проникновение. Обычно они основаны на существующих Linux-дистрибутивах и представляют из себя их переработанные версии. В этой статье будут представлены наиболее известные из них.
Centos 7.x USB Install Media (Добавляем Centos в Multiboot)
Но, начиная с Centos 7, сделать это стало немного сложнее, и единственным официальным способом стала запись образа на прямую на носитель (с потерей всего что на нем уже есть).
Но, применив немножко смекалки, я смог решить эту проблему, прошу под кат:
Systemd: пишем собственные .service и .target
systemctl start apache2.service
systemctl start mysqld.service
/root/scripts/mysqld-tmpfs start
И заканчивать его:
systemctl stop apache2.service
systemctl stop mysqld.service
/root/scripts/mysqld-tmpfs stop
Но мне хотелось сделать вещи “как надо”.
Вливаемся в tox-сообщество или установка ноды за 5 минут
![debian_tox_dht](http://blog-static-nonsafe.saraeff.net/uploads/2015/12/debian_tox_dht_762b835ba15829c7.png)
Есть такая замечательная система, которая называется TOX. Вот их официальный сайт, а вот профиль на github.
О tox уже писали множество раз, но я перечислю основные плюшки: DHT — нет зависимости от центрального сервера, достаточно хотя бы одной ноды, шифрование на клиенте — Вася пишет Маше,
Язык Go для начинающих
![Gopher](https://habrastorage.org/getpro/habr/post_images/667/f8f/496/667f8f4964d6951ab27d15ece675161e.jpg)
Цель этой статьи — рассказать о языке программирования Go (Golang) тем разработчикам, которые смотрят в сторону этого языка, но еще не решились взяться за его изучение. Рассказ будет вестись на примере реального приложения, которое представляет из себя RESTful API веб-сервис.
Information
- Rating
- Does not participate
- Location
- Славянск, Донецкая обл., Украина
- Date of birth
- Registered
- Activity