По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Все, кто так или иначе причастен к миру IT, точно слышал это слово из трех букв - DNS. Domain Name System это своего рода телефонный справочник, в котором указаны адреса всех веб-сайтов в интернете. Также DNS это довольно простой протокол, работающий, как правило, через 53 порт и который используется системными администраторами в буквально каждой сети - ну а куда без него? В данной статье мы не будем подробно разбирать схему работы DNS и типа DNS серверов - это мы оставим на потом. Каждый раз когда приложение или человек пытается попасть на какой-нибудь веб-сайт, DNS запрашивает в образном "телефонном справочнике" IP-адрес этого ресурса и отправляет вас по нужному адресу. Темой этой статьи будет некорректное использование службы злоумышленниками: в какой-то момент умные товарищи поняли, что DNS также является прекрасным вектором атаки и научились использовать DNS в целях передачи информации и команд на компьютер жертвы, и это, по сути является основным принципом DNS туннелирования. Принцип работы DNS туннелирования на пальцах Пять шагов DNS туннелирования: Злоумышленник использует DNS для маскировки вредоносных действий, т.к DNS трафик в 99,99% разрешен и не проверяется; Далее злодеи туннелирует другие протоколы (к примеру, http) через DNS Далее они туннелируют IP-трафик и передают украденную информацию Украденную информация снова преобразуют в удобный для восприятия вид Установленный туннель используют для передачи вредоносного ПО Обратите внимание на скриншот - я запросил IP-адрес gismeteo.ru. В терминах технологии DNS, вы сделали запрос типа А (от слова Address). Типов подобных запросов существует несколько, и чуть ниже я попробую это продемонстрировать. В любом случае, под капотом у DNS работает простая схема клиентский запрос на сервер, который в свою очередь отвечает клиенту обратно. А что если можно было бы "зашить" сообщение внутрь запроса? Представьте себе, что хакеры контролируют DNS сервер: в таком случае, они смогут просто собирать всю нужную информацию без риска оказаться замеченными. Опять же - как DNS запрос может быть нелегитимным? Все привыкли к тому, что эта служба работает всегда и не несет никакой угрозы. Но если служба оказалась скомпрометированной, злоумышленники могут фальсифицировать запросы и использовать информацию, скрытую в различных полях ответных пакетов для контроля вредоносного ПО на компьютере жертвы. Самая интересная часть - это туннелирование, то есть маскировка информации и передаваемых команд. Делается это, очевидно для того, чтобы подобный трафик прошел незамеченным мимо защитных систем и ПО. Для маскировки используются base32, base 64, а порой и полноценное шифрование. Base32 и Base64 - это способы кодировки информации используя 32 символа и 64 соответственно. Суть данного упражнении в передаче любой информации в текстовом виде.У обоих методов есть минусы - Base32 код оказывается в 1,6 раза больше оригинальной информации, а Base64 - регистрозависим. Когда возник данный тип атак? Впервые подобный вид атак был упомянут в рассылке Buqtraq неким Оскаром Пирсоном в апреле 1998 года. Далее в 2004 на ежегодной конференции Black Hat была представлена подробная техника - то есть буквально руководство по использованию данной атаки. Шло время и данный тип атак становился все популярнее - сегодня этот механизм встроен буквально в каждый вирус-шифровальщик. Попробуйте погуглить словосочетание Sea Turtle - это все еще активная кампания, целью которой является взлом легитимных DNS серверов для перенаправления запросов на свои собственные сервера. То есть злоумышленники смогут отвечать на эти запросы ложными сайтами. К примеру пользователь будет пытаться зайти на Facebook или свой аккаунт Ozon, но на самом деле это будут копии страниц, созданные для перехвата пользовательской информации. Честно говоря, такой тип атак не имеет ничего общего с туннелированием DNS, но вектор атаки остается тем же. И представьте себе последствия от украденных учетных данных - лично я бы не хотел, что злоумышленники получили доступ к моим аккаунт в онлайн банках и социальных сетях. Основные опасности DNS туннелирования Как вы уже могли понять из моей спутанной и слегка аутичной статьи, DNS туннелирование является механизмом, который является катализатором для различного вида неприятностей, а именно: Утечка данных: злоумышленники используют DNS для банального вывода текстовой информации с помощью определенной маскировки. Объемы вывода небольшие, но порой много и не требуется - к примеру, данные паспорта улетят очень быстро; Удаленный контроль: злоумышленники отправляют различные команды через DNS, к примеру для управления RAT-ами (троянами с удаленным управлением). К слову, большое количество шифровальщиков именно так получают свои инструкции и ключи шифрования; IP-Over-DNS туннелирование: сейчас уже можно найти специальные утилиты, в которых IP стэк имплементирован в клиент-серверную модель работы DNS. То есть такие утилиты позволяют относительно просто передавать информацию используя стандартные штуки вроде FTP, Netcat, ssh и пр. То есть через DNS можно будет передать буквально любую информацию Техники детектирования DNS - туннелирования Существует два основных метода по обнаружения некорректного использования DNS службы: анализ трафика и анализ полезной нагрузки. При анализе полезной нагрузке необходимо обращать внимание на странные и аномальные запросы, особенно если они содержат в себе странные доменные имена, странные символы и пр. Для выявления подобного используются различные статистические техники. В свою очередь, при анализе трафика, нужно обращать внимание на общее количество запросов к домену и сравнивать это число со средними значениями. Хакеры, осуществляющие DNS туннелирование, будут создавать большой объем DNS трафика - что сразу должно вызвать подозрения, так как отличия в объемах будут буквально на порядки. Утилиты для создания DNS туннеля: Если вам хочется посмотреть, уязвима ли ваша инфраструктура к такому виду атак, то можете попробовать несколько утилит из списка ниже (только на свой страх и риск). Все эти утилиты реализуют IP-over-DNS механизм атак. Iodine: данная утилита доступна на большинстве платформ (Linux, Mac OS, Windows, FreeBSD) и позволяет установить SSH туннель между целью и вашим компьютером. Утилита не самая простая, когда-нибудь мы напишем статью чс примером ее использования; OzymanDNS: функционал схож с Iodine, то есть утилита также позволяет строить SSH туннель. Интересно то, что это проект целиком и полностью написан на Perl; DNSCat2: многофункциональный комбайн, который создает зашифрованный канал для управления (C2) и позволяет скачивать/загружать файлы, запускать cmd/powershell и пр. Утилиты для мониторинга DNS туннеля: dnsHunter: модуль на питоне, написанный для Mercenary-Linux. Данный модуль читает .pcap файлы, выделяет из них DNS-запросы и осуществляет геолукапы, что также может помочь при расследовании; reassemble_dns: также утилита, написанная на питоне, которая позволяет читать .pcap файлы и реконструировать DNS запросы;
img
Ядро Linux - это фундамент, на котором работают все дистрибутивы Linux. Это программное обеспечение с открытым исходным кодом - любой может декомпилировать, изучить и изменить код. Обновленные версии ядра могут повысить безопасность, добавить функциональность и повысить скорость работы операционной системы. Это руководство расскажет вам, как обновить ядро Linux на CentOS 7. Шаги по обновлению версии ядра CentOS Менеджер пакетов yum позволяет обновлять ядро. Однако CentOS не предлагает последнюю версию ядра в официальном репозитории. Чтобы обновить ядро в CentOS, вам необходимо установить сторонний репозиторий под названием ElRepo. ElRepo предлагает последнюю версию ядра, доступную на kernel.org. Официальные выпуски тестируются, чтобы убедиться, что они работают правильно и не дестабилизируют работу приложений и функций ОС. Есть два типа версий ядра Linux: Стабильный выпуск ядра с долгосрочной поддержкой (Stable long-term supported kernel release) - обновляется реже, но поддерживается дольше. Основной выпуск ядра (Mainline kernel release) - более короткий срок поддержки, но более частые обновления. Шаг 1. Проверьте текущую версию ядра. Чтобы проверить текущую версию ядра в CentOS, откройте интерфейс командной строки и введите следующую команду: uname -msr Система должна вернуться с записью, которая выглядит следующим образом: Output Linux 3.10.0-862.el7.x86-64 x86-64 В выходных данных указывается, какая версия ядра используется в настоящее время и на какой архитектуре оно основано. Шаг 2. Обновите репозитории CentOS Перед обновлением ядра все пакеты должны быть обновлены до последней версии. Чтобы обновить репозитории программного обеспечения CentOS, используйте команду: sudo yum -y update Ваш репозиторий программного обеспечения обновлен. Это гарантирует, что у вас будет доступ к последней версии ядра. Примечание. Параметр -y указывает системе отвечать «да» на любые всплывающие подсказки. Шаг 3. Включите репозиторий ELRepo Чтобы установить новую версию ядра, необходимо включить новый репозиторий (репозиторий ELRepo). В окне терминала введите: sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org Предыдущая команда устанавливает ключ GPG для репозитория ELRepo. Это важно - CentOS не позволит установить неподписанный программный пакет. Ключ GPG обеспечивает цифровую подпись для проверки подлинности программного обеспечения. Затем установите репозиторий ELRepo, выполнив следующую команду: sudo rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm Подождите, пока система завершит выполнение операции. Шаг 4: Список доступных ядер Чтобы вывести список доступных ядер, введите: yum list available --disablerepo='*' --enablerepo=elrepo-kernel Система должна вернуть список доступных модулей. Обратите внимание на строку в списке, в которой написано kernel-lt, что означает стабильный выпуск с долгосрочной поддержкой, или kernel-ml, который указывает на основной выпуск с более коротким сроком поддержки, но с более частыми обновлениями. Затем посмотрите на правый столбец и обратите внимание на ряд букв и цифр (который выглядит примерно как «4.4.113-1.e17.elrepo»). Это версия ядра. Используйте эти две части информации, чтобы решить, какую версию ядра вы хотите установить. Как видите, ядро Linux 5 - это последний основной выпуск. Шаг 5: Установите новую версию ядра CentOS Чтобы установить последнее основное ядро: sudo yum --enablerepo=elrepo-kernel install kernel-ml Чтобы установить последнее ядро долгосрочной поддержки: sudo yum --enablerepo=elrepo-kernel install kernel-lt Система должна загрузить программное обеспечение, а затем предложить вам подтвердить, что установка подходит - введите y и нажмите Enter. Подождите, пока процесс завершится. Шаг 6: перезагрузите и выберите новое ядро Перезагрузите систему, выполнив команду: reboot Вам будет представлен GRUB или меню загрузки. С помощью клавиш со стрелками выберите только что установленное ядро ??Linux, затем нажмите Enter. Ваша операционная система должна нормально загрузиться. Шаг 7. Проверьте работоспособность Найдите минутку, чтобы проверить функциональность вашей системы CentOS. Все ли у вас программное обеспечение запускается правильно и без ошибок? Все ли ваши сетевые функции работают правильно? Протестируйте новое ядро ??так, чтобы все ошибки были вовремя обнаружены и исправлены. Или, если нет никаких исправлений, вы можете вернуться к старому ядру. Шаг 8: Установите версию ядра по умолчанию Убедившись, что новое ядро ??совместимо и работает правильно, вы захотите отредактировать загрузочную утилиту GRUB так, чтобы по умолчанию она загружала ваше новое ядро. Перейдите в /etc/default/ и откройте файл grub в текстовом редакторе. Или введите в терминал следующее: sudo vim /etc/default/grub После открытия файла найдите строку с надписью GRUB_DEFAULT=X и измените ее на GRUB_DEFAULT=0. Эта строка проинструктирует загрузчик по умолчанию использовать первое ядро ??в списке, которое является последним. Сохраните файл, а затем введите следующую команду в терминале, чтобы воссоздать конфигурацию ядра: sudo grub2-mkconfig -o /boot/grub2/grub.cfg Перезагрузитесь еще раз: reboot Убедитесь, что загрузчик настроен на загрузку последней версии ядра по умолчанию. Итог Готово! Мы обновили ядро CentOS до последней стабильной версии с помощью ELRepo.
img
Возможно, вы уже слышали о термине "wirespeed" раньше. Это то, что отдел маркетинга любит использовать, когда речь заходит о продаже сетевого оборудования. Это означает, что пакеты могут быть переданы без какой-либо заметной задержки. Кстати, для остальной части этой статьи слова "многоуровневый коммутатор" и "маршрутизатор" - это одно и то же. Все, что я объясняю о многоуровневых коммутаторах отныне, также относится и к маршрутизаторам. Давайте посмотрим на разницу между коммутаторами 2уровня и многоуровневыми коммутаторами с точки зрения коммутации: Вы знаете, что коммутаторы 2 уровня будут переключать только кадры Ethernet в пределах VLAN, и, если мы хотим, мы можем фильтровать трафик на основе уровня 2 (например, с защитой портов). Многоуровневый коммутатор может делать то же самое, но он также способен маршрутизировать между VLAN и фильтровать на уровне 3 или 4 с помощью списков доступа. Переадресация на уровне 2 основана на конечном MAC-адресе. Наш коммутатор изучает исходные MAC-адреса на входящих кадрах и строит таблицу MAC-адресов. Всякий раз, когда фрейм Ethernet входит в один из наших интерфейсов, мы проверяем таблицу MAC-адресов, чтобы найти конечный MAC-адрес, и отправляем его в правильный интерфейс. Переадресация на уровне 3 основана на IP-адресе назначения. Переадресация происходит, когда коммутатор получает IP-пакет, где исходный IP-адрес находится в другой подсети, чем конечный IP-адрес. Когда наш многоуровневый коммутатор получает IP пакет со своим собственным MAC адресом в качестве назначения в заголовке Ethernet есть две возможности: Если конечный IP-адрес является адресом, настроенным многоуровневом коммутаторе, то IP-пакет был предназначен для этого коммутатора. Если конечный IP-адрес - это адрес, который не настроен на многоуровневом коммутаторе, то мы должны действовать как шлюз и "маршрутизировать" пакет. Это означает, что нам придется сделать поиск в таблице маршрутизации, чтобы проверить наличие самого полного совпадения. Кроме того, мы должны проверить, разрешен ли IP-пакет, если вы настроили ACL. В те не далекие времена коммутация производилась на аппаратной скорости, а маршрутизация-на программной. В настоящее время как коммутация, так и маршрутизация выполняются на аппаратной скорости. В оставшейся части этой статьи вы узнаете почему. Давайте рассмотрим разницу между обработкой кадров Ethernet и IP-пакетов: Жизнь коммутатора уровня 2 проста Коммутатор проверит контрольную сумму кадра Ethernet, чтобы убедиться, что он не поврежден или не изменен. Коммутатор получает кадр Ethernet и добавляет исходный MAC-адрес в таблицу MAC-адресов. Коммутатор направляет кадр Ethernet к правильному интерфейсу, если он знает конечный MAC-адрес. Если нет,то он будет отброшен (помечен как flood). Там нет никакого изменения кадра Ethernet! Теперь давайте посмотрим, что происходит, когда получает IP-пакет многоуровневый коммутатор: В приведенном выше примере компьютер А посылает IP-пакет к компьютеру В. Обратите внимание, что они находятся в разных подсетях, поэтому нам придется его маршрутизировать. Когда наш многоуровневый коммутатор получит IP-пакет, вот что произойдет: Коммутатор проверит контрольную сумму кадра Ethernet, чтобы убедиться, что он не поврежден или не изменен. Коммутатор проверит контрольную сумму IP-пакета, чтобы убедиться, что он не поврежден или не изменен. Многоуровневый коммутатор проверит таблицу маршрутизации, заметит, что 192.168.20 /24 напрямую подключен, и произойдет следующее: Проверит таблицу ARP, чтобы увидеть, есть ли сопоставление уровня 2-3 для компьютера B. Если нет сопоставления, многоуровневый коммутатор отправит запрос ARP. Конечный MAC-адрес изменится с FFF (многоуровневый коммутатор Fa0 / 1) на BBB (компьютер B). Исходный MAC-адрес изменится с AAA (компьютер A) на GGG (многоуровневый коммутатор Fa0/2). Поле TTL (time to live) в IP-пакете уменьшится на 1, и из-за этого контрольная сумма IP-заголовка будет пересчитана. Контрольная сумма фрейма Ethernet должна быть пересчитана заново. Фрейм Ethernet, несущий IP-пакет, будет отправлен из интерфейса к компьютеру B. Как вы можете видеть, имеется довольно много шагов, связанных с маршрутизацией IP-пакетов. Когда мы рассматриваем многоуровневый коммутатор возникает "разделение обязанностей". Мы должны построить таблицу для MAC-адресов, заполнить таблицу маршрутизации, ARP-запросы, проверить, соответствует ли IP-пакет списку доступа и т. д. И нам нужно переслать наши IP-пакеты. Эти задачи разделены между "плоскостью управления" и "плоскостью данных". Ниже приведен пример: Плоскость управления отвечает за обмен информацией о маршрутизации с использованием протоколов маршрутизации, построение таблицы маршрутизации и таблицы ARP. Плоскость данных отвечает за фактическую пересылку IP-пакетов. Таблица маршрутизации не очень подходит для быстрой переадресации, потому что мы имеем дело с рекурсивной маршрутизацией. Что такое рекурсивная маршрутизация? Давайте рассмотрим пример: В приведенном выше примере у нас есть три маршрутизатора. У R3 есть loopback интерфейс, к которому мы хотим получить доступ из R1. Будем использовать статические маршруты для достижения поставленной цели: R1(config)#ip route 3.3.3.0 255.255.255.0 192.168.23.3 R1(config)#ip route 192.168.23.0 255.255.255.0 192.168.12.2 Первый статический маршрут предназначен для достижения интерфейса loopback0 R3 и указывает на интерфейс FastEthernet0/0 R3. Второй статический маршрут необходим для достижения сети 192.168.23.0/24. Всякий раз, когда R1 хочет достичь 3.3.3.0/ 24, мы должны выполнить 3 поиска: Первый поиск должен проверить запись для 3.3.3.0/24. Он должен быть там и должен быть IP-адрес следующего прыжка-192.168.23.3 Второй поиск относится к 192.168.23.3. Есть запись, и IP-адрес следующего прыжка - 192.168.12.2. Третий и последний поиск относится к 192.168.12.2. Там имеется вход, и он напрямую подключен. R1 должен проверить таблицу маршрутизации 3 раза, прежде чем он будет знать, куда отправлять свой трафик. Звучит не очень эффективно, верно? Выполнение нескольких поисков для достижения определенной сети называется рекурсивной маршрутизацией. Большую часть времени все входящие и исходящие IP-пакеты будут обрабатываться и пересылаться плоскостью данных, но есть некоторые исключения, давайте сначала рассмотрим картинку ниже: Большая часть IP-пакетов может быть передана плоскостью данных. Однако есть некоторые "специальные" IP-пакеты, которые не могут быть переданы плоскостью данных немедленно, и они отправляются на плоскость управления, вот некоторые примеры: IP-пакеты, предназначенные для одного из IP-адресов многоуровневый коммутатора. Трафик протокола маршрутизации, такой как OSPF, EIGRP или BGP. IP-пакеты, которые имеют некоторые параметры, заданные в IP-заголовке. IP-пакеты с истекшим сроком действия TTL Плоскость управления может пересылать исходящие IP-пакеты на плоскость данных или использовать свой собственный механизм пересылки для определения исходящего интерфейса и следующего IP-адреса прыжка. Примером этого является маршрутизация на основе локальной политики. Наш многоуровневый коммутатор выполняет больше шагов для пересылки пакетов, чем коммутаторы уровня 2, поэтому теоретически он должен работать медленнее, верно? Одна из причин, по которой многоуровневые коммутаторы могут передавать кадры и пакеты на wirespeed, заключается в том, что в плате данных используется специальное оборудование, называемое ASICs. Такая информация, как MAC-адреса, таблица маршрутизации или списки доступа, хранится в этих ASIC. Таблицы хранятся в content-addressable memory (Cam) и ternary content addressable memory (TCAM). Таблица CAM используется для хранения информации уровня 2, например: Исходный MAC-адрес. Интерфейс, на котором мы узнали MAC-адрес. К какой VLAN относится MAC-адрес. Поиск таблицы происходит быстро! Всякий раз, когда коммутатор получает кадр Ethernet, он будет использовать алгоритм хэширования для создания "ключа" для целевого MAC-адреса + VLAN, и он будет сравнивать этот хэш с уже хэшированной информацией в таблице CAM. Таким образом, он может быстро искать информацию в таблице CAM. Таблица TCAM используется для хранения информации "более высокого уровня", например: Списки доступа. Информацию о качестве обслуживания. Таблицу маршрутизации. Таблица TCAM может соответствовать 3 различным значениям: 0 = не просматривать. 1 = сравнивать X = любое приемлемое значение. Полезно для поиска, когда нам не нужно точное совпадение. (таблица маршрутизации или ACL, например). Поскольку существует 3 значения, мы называем его троичным. Так почему же существует 2 типа таблиц? Когда мы ищем MAC-адрес, нам всегда требуется точное совпадение. Нам нужен точный MAC-адрес, если мы хотим переслать кадр Ethernet. Таблица MAC-адресов хранится в таблице CAM. Всякий раз, когда нам нужно сопоставить IP-пакет с таблицей маршрутизации или списком доступа, нам не всегда нужно точное соответствие. Например, IP-пакет с адресом назначения 192.168.20.44 будет соответствовать: 192.168.20.44 /32 192.168.20.0 /24 192.168.0.0 /16 По этой причине такая информация, как таблица маршрутизации, хранится в таблице TCAM. Мы можем решить, должны ли совпадать все или некоторые биты. Пример таблицы TCAM Если мы хотим сопоставить IP-адрес 192.168.10.22, многоуровневый коммутатор сначала посмотрит, есть ли "самое полное совпадение". Там ничего нет, что соответствовало бы полностью 192.168.10.22/32, поэтому мы продолжим сравнение на не полное соответствие. В этом случае есть запись, которая соответствует 192.168.10.0/24. Приведенный выше пример относится к поиску таблиц маршрутизации, спискам доступа, а также к качеству обслуживания, спискам доступа VLAN и многим другим. Теперь вы знаете все шаги, которые должен выполнять многоуровневый коммутатор, когда он должен пересылать IP-пакеты, плоскость управления/данных и, что мы используем разные таблицы, хранящиеся в специальном оборудовании, называемом ASIC. Давайте подробнее рассмотрим фактическую "пересылку" IP-пакетов. Существуют различные методы коммутации для пересылки IP-пакетов. Вот различные варианты коммутации: Процессорная коммутация: Все пакеты проверяются процессором, и все решения о пересылке принимаются в программном обеспечении...очень медленно! Быстрая коммутация (также известное как кеширование маршрутов): Первый пакет в потоке проверяется процессором; решение о пересылке кэшируется аппаратно для следующих пакетов в том же потоке. Это более быстрый метод. (CEF) Cisco Express Forwarding (также известный как переключение на основе топологии): Таблица пересылки, созданная в аппаратном обеспечении заранее. Все пакеты будут коммутироваться с использованием оборудования. Это самый быстрый метод, но есть некоторые ограничения. Многоуровневые коммутаторы и маршрутизаторы используют CEF. При использовании процессорной коммутации маршрутизатор удалит заголовок каждого кадра Ethernet, ищет IP-адрес назначения в таблице маршрутизации для каждого IP-пакета, а затем пересылает кадр Ethernet с переписанными MAC-адресами и CRC на исходящий интерфейс. Все делается в программном обеспечении, так что это очень трудоемкий процесс. Быстрая коммутация более эффективна, потому что она будет искать первый IP-пакет, но будет хранить решение о переадресации в кэше быстрой коммутации. Когда маршрутизаторы получают кадры Ethernet, несущие IP-пакеты в том же потоке, он может использовать информацию в кэше, чтобы переслать их к правильному исходящему интерфейсу. По умолчанию для маршрутизаторов используется CEF (Cisco Express Forwarding):
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59