Category: Хакинг

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. Под руководством опытных наставников вы научитесь писать подобные описанным (и более сложные) приложения, а успешно завершившим обучение студентам онлайн-академия поможет с трудоустройством.

30
Ноя
2020

🐧 Lynis, Lunar, LSAT и LBSA: изучаем набор утилит для аудита безопасности Linux

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

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

Кстати, новичкам стоит ознакомиться с нашим списком ресурсов для изучения Linux.

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

Lynis

результаты проверки Lynis
результаты проверки Lynis

Lynis – это инструмент аудита для UNIX-подобных систем, таких как Linux, OS X, Free/Net/Open BSD и других. Основная цель утилиты – проверить средства защиты и дать советы по настройке безопасности. Lynis сканирует общую информацию о системе, уязвимые пакеты программного обеспечения и возможные проблемы с конфигурацией.

Поддерживаемые дистрибутивы Linux

  • CentOS;
  • Debian;
  • Fedora;
  • OEL;
  • openSUSE;
  • RHEL;
  • Ubuntu;
запуск Lynis
запуск Lynis

Для чего предназначен

  • автоматизированный аудит безопасности;
  • тестирование на соответствие ISO27001, PCI-DSS, HIPAA;
  • обнаружение уязвимости;
  • конфигурирование и управление активами;
  • управление исправлениями для программного обеспечения;
  • укрепление системы;
  • тестирование на проникновение;
  • обнаружения вторжений.

Установка и запуск

Установка через YUM

        $ yum install lynis
    

Debian-подобные

        $ apt-get install lynis
    

openSUSE

        $ zypper install lynis
    

Установка через Git

        $ cd /usr/local
$ git clone https://github.com/CISOfy/lynis
$ cd lynis
    

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

        $ lynis audit system
    
Lynis в работе
Lynis в работе

Полезные опции

-checkall, -c – запуск сканирования;

-check-update – проверка обновлений;

-cronjob – запускает Lynis через планировщик;

-quick, -Q – не ждать ввода пользователя, кроме ошибок;

-version, -V – выводит версию Lynis.

Lunar

<span>LUNAR</span>
LUNAR

LUNAR – сокращение от Lockdown UNix Auditing and Reporting. Этот сценарий генерирует отчет аудита безопасности хоста UNIX. Он основан на CIS и других фреймворках.

Поддерживаемые ОС и дистрибутивы Linux

  • RHEL 5,6,7;
  • Centos 5,6,7;
  • Scientific Linux;
  • SLES 10,11,12;
  • Debian;
  • Ubuntu;
  • Amazon Linux;
  • Solaris (6,7,8,9,10 и 11);
  • Mac OS X.

Утилита также поддерживает облачную платформу Amazone и контейнеры Docker.

Для чего предназначен

LUNAR обычно используется для оценки безопасности, самооценки или повышения безопасности системы.

Установка и запуск

LUNAR это сценарий командной строки sh, поэтому особых усилий по установке он не требует. Качаем архив с Github, распаковываем в соответствующую директорию и запускаем из командной строки.

        $ ./lunar.sh -a
    

Рекомендуется запускать в режиме аудита (параметр -a).

Lunar в работе
Lunar в работе

Полезные опции

Будьте внимательны и осторожны при запуске в режиме исправлений! У автора статьи при запуске в режиме изменений скрипт выкинул основного пользователя из группы sudoers, в результате пришлось грузиться из recovery mode и откатываться из бэкапа, благо lunar сам создает их перед внесением изменений.

Список параметров:

-a – запуск в режиме аудита (в систему не вносятся изменения);

-v – подробный режим [используется с -a и -A];

-d – просмотр предлагаемых изменений системы до их внесения в конфиги;

-s – запуск в выборочном режиме;

-l – запуск в режиме блокировки (внесение изменений);

-S – список всех функций UNIX, доступных для выборочного режима;

-W – список всех функций AWS, доступных для выборочного режима;

-D – список всех функций Docker, доступных для выборочного режима;

-Z – показать изменения, ранее внесенные в систему;

-b – список файлов резервных копий;

-n – выводить доступные сегменты кода;

-u – восстановление из резервной копии.

LSAT

Linux security auditing tool (LSAT) имеет модульную конструкцию, поэтому можно быстро добавлять новые функции. LSAT проверяет записи inetd, просматривает ненужные пакеты RPM и проверяет версии ядра.

Поддерживаемые ОС и дистрибутивы Linux

  • Gentoo;
  • RedHat;
  • Debian;
  • Mandrake;
  • Linux Mint 18;
  • CentOS 7
  • Sparc: Sun OS (2.x);
  • Redhat sparc, Mandrake Sparc;
  • Apple OS X;
  • Должен нормально работать под Slackware и другими дистрибутивами Linux.

Для чего предназначен

Комплексный аудит безопасности ОС.

Установка и запуск

LSAT устанавливается с помощью сборки из исходников и имеет заранее заготовленный автоконфиг — autoconf.

        $ ./configure
$ make

    


Для установки в систему на /usr/local/bin

        $ make install
    
запуск LSAT для Debian
запуск LSAT для Debian

Полезные опции

-d diff – текущий и старый md5, вывод в lsatmd5.diff;

-m – тест для конкретного дистрибутива:

  • redhat;
  • debian;
  • mandrake;
  • solaris;
  • gentoo;
  • macosx.

-a – показать расширенную страницу справки;

-o – имя выходного файла, по умолчанию lsat.out

-r – проверить целостность rpm, только redhat или mandrake;

-s – тихий режим;

-v – подробный вывод;

-w – выходной файл в формате HTML;

-x – исключить модули из списка файлов из проверок.

LBSA

Это базовый сценарий аудита безопасности Linux для непрерывного применения политик (CPE). Запускать его можно из командной строки от имени пользователя root или на регулярной основе с использованием планировщика.

Для чего предназначен

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

В настоящее время скрипт ищет:

  • распространенные уязвимости безопасности в настройке учетной записи для входа в Linux;
  • распространенные уязвимости безопасности в настройках SSH;
  • распространенные уязвимости безопасности во временных файловых системах и файловых системах с общей памятью (например: /tmp, /var/tmp, /dev/shm);
  • рекомендации по разрешениям файловой системы, которые могут усилить защиту большинства систем, не влияя на нормальную работу;
  • Heartbeat и разрешения файла конфигурации DRBD;

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

LBSA в работе
LBSA в работе

Полную версию скрипта можно взять на официальной странице.

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

Если рекомендаций нет, сценарий просто выводит единственную строку с сообщением «System Checks Completed». Этот сценарий должен работать «из коробки» и рекомендовать лишь несколько небольших, но важных изменений в системе, которые должно быть легко внести.

В заключении

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

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

***

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

26
Ноя
2020

🕵 Offensive или Defensive Security: что лучше, защита или нападение?

Пример разных подходов к безопасности: красные и синие команды. Разбираемся, чему надо учиться для участия в них, и как выбрать между Offensive или Defensive Security.

Традиционная стратегия кибербезопасности фокусируется на защите. Активный переход на дистанционную работу с использованием удаленного и внедрение BYOD (Bring your own device) требуют переключения внимания на обнаружение и реагирование. В этом случае обязательно создание обороняющейся и атакующей команды.

Разница между Offensive и Defensive Security

Существование в компании Offensive security позволяет постоянно совершенствовать защиту, следуя модели «подразумевать взлом» (assume breach). Цель таких «войнушек» – найти слабые места и усилить их, а также сократить время реагирования до минимума.

В одних компаниях красная/синяя команда существуют на постоянной основе. Например, в Microsoft группа сотрудников занимается всесторонней проверкой устойчивости облачной платформы Azure. Что-то подобное есть в Google, McAfee и Tesla. В других компаниях такие команды собираются только на время учений; красная команда предоставляется сторонней организацией, которая на этом специализируется.

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

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

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

Атакующие ребята

Offensive security может быть представлена в нескольких форматах. Вот некоторые из них:

<i>Источник: <a href="https://www.anti-malware.ru/analytics/Market_Analysis/Red-Team-Operations-market-overview" target="_blank" rel="noopener noreferrer nofollow">Anti-malware</a>.</i>
Источник: Anti-malware.

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

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

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

3. В рабочий процесс пентестеров входит поиск уже известных уязвимостей, их анализ, а в ряде случаев и эксплуатация. Красные команды ищут в том числе угрозы нулевого дня (0-day) и пытаются использовать изъяны для компрометации исследуемого объекта

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

5. Формат отчета. У красных команд он представляется в виде истории, а у пентестеров это может быть просто перечисление найденных уязвимостей.

Необходимые знания и навыки для участников Red team

Вам не обязательно подробно разбираться во всех этих направлениях. Достаточно понимать, как это все работает и быть мастером в чем-то одном. Навыки идут от более общим к более специализированным. Участнику красной команды необходимо:

  • знание ландшафта угроз для отрасли организации-заказчика;
  • понимание способов осуществления атак;
  • креативное, неформальное мышление – нужно постоянно искать новые техники и инструменты;
  • владение методами тестирования на проникновение;
  • OSINT;
  • владение методами имитации угрозы (threat emulation);
  • умение создавать собственные эксплойты;
  • навык осуществления физических атак, понимание физических средств защиты;
  • навыки социальной инженерии;

Стек технологий:

  • ОС и программные пакеты;
  • разнообразные сетевые протоколы и алгоритмы;
  • беспроводная связь;
  • шифрование;
  • Python, Ruby, Perl, PowerShell и др.;
  • BAD USB;
  • продвинутое системное администрирование и инженерия;
  • пользовательские приложения, протоколы и другие технологии;
  • сети;
  • взлом замков (Lock picking).

Примеры задач

  • любыми методами нарушить безопасность компании и получить информацию, проникнуть в систему или физически проникнуть на территорию организации. Вплоть до того, чтобы приехать в офис, представиться курьером и попроситься быстренько отнести посылку в нужный кабинет. Затем просто вставить флешку в ПК кого-то из сотрудников или даже менеджмента;
  • избегать обнаружения синей командой;
  • тестировать средства безопасности на проникновение;
  • идентифицировать и использовать ошибки и слабые стороны инфраструктуры компании.
<i>Источник: книга «Кибербезопасность: стратегии атак и обороны».</i>
Источник: книга «Кибербезопасность: стратегии атак и обороны».

Обороняющие ребята

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

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

К defensive security относятся такие направления кибербезопасности, как security operations center (SOC), threat intelligence (TI), форензика, киберразведка и т. д.

Необходимые знания и навыки для Blue team

  • умение искать и анализировать основные угрозы – здесь поможет OSINT;
  • умение продумывать сценарии рисков;
  • владение техниками и инструментами усиления безопасности;
  • SIEM (Security Information and Event Management).
  • аудит DNS;
  • реверс-инжиниринг;
  • анализ рисков;
  • анализ цифровых следов;
  • DDoS-тестирование;
  • межсетевая защита;
  • антивирусные программы;
  • анализ логов;
  • IDS (Intrusion detection system) и IPS (Intrusion Prevention System);
  • pcap.

Вот примерный стек технологий синей команды:


Примеры задач

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

Вот так выглядит процесс:


Взаимодействие красной и синей команды

<i>Источник: книга «Кибербезопасность: стратегии атак и обороны».</i>
Источник: книга «Кибербезопасность: стратегии атак и обороны».

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

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

Иногда может понадобиться создание фиолетовой команды (purple team). Она работает над эффективностью обеих команд и обычно состоит из их же участников. Фиолетовая команда представляет собой интенсивную временную совместную работу красных и синих – это своеобразный тренинг.

<i>Источник: <a href="https://pentestmag.com/red-teaming-10000-feet/" target="_blank" rel="noopener noreferrer nofollow">Pentesmag</a>.</i>
Источник: Pentesmag.

Пример коммуникации красной и синей команды:


Задачи фиолетовой команды:

1. Установить лучшее понимание инфраструктуры обеих команд.

2. Закрепить практику регулярной обратной связи.

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

4. Анализировать результаты и принимать меры. Например, более полное обучение сотрудников.

Примеры red teaming

1. Получение административного доступа к Active Directory. Кейс от Group-IB.

Была взломана одна из дочерних компаний группы и обнаружен VPN между локальными сетями подразделений. Подключение к сети было хорошо защищено. Команда применила атаку Kerberos «golden ticket», чтобы обойти защиту с помощью смарт-карт на «низком уровне». Используя механизм доверия между доменами Active Directory, команда получила администраторские права в головном офисе.

2. Тестирование с помощью социальной инженерии. Кейс от QCC Global.

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

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

3. Сценарии киберучений от BI.ZONE, они же предоставляют красную команду.

1) Атакующая команда хочет украсть конфиденциальные данные клиентов.

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

2) Преступники получили привилегированный доступ с помощью фишинговой атаки.

Расследование синей командой уже произошедшего инцидента:

  • Был зафиксирован запрос в центр командования и управления. Синяя команда получила данные о каком-то из скомпрометированных хостов: дамп памяти, журнал событий и др. Действия синей команды: использовать методы и инструменты компьютерной форензики.
  • Такой же инцидент, но другие индикаторы компрометации. Агенты EDR собирают телеметрию и посылают на Threat hunting платформу. Там собранные данные анализируются и идентифицируется аномальная активность. Действия синей команды: охота на угрозы (Threat Hunting approach).

В результате двух раундов для правоохранительных органов должно быть сформировано досье на эти происшествия.

Как выбрать команду?

Если вы так и не определились с направлением, то вот несколько вариантов, которые в этом помогут.

1. Поучаствовать в attack/defense CTF. В этом типе соревнования ваша команда будет одновременно и атаковывать приложения других команд и защищать свои. Примеры таких конкурсов можно найти здесь.

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

Заключение

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

***

На Факультете информационной безопасности GeekBrains можно подтянуть скилы и по offensive, и по defensive security. Вы получите много практики по тестам на проникновение, Python, реверс-инжинирингу, безопасности сетей и криптографии. Успешно окончившим курс студентам онлайн-академия поможет с трудоустройством.

19
Ноя
2020

🕵🥇💵10 успешных ИБ-стартапов, запущенных в 2020 году

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

Информационная безопасность – одна из самых важных отраслей в эпоху массового перехода в онлайн. В 2020 году она показала хороший рост: в США компании из этой сферы получили около $1.5 млрд. финансирования только за первый квартал этого года, причём 80% всех сделок пришлось на стартапы.

Количество новых компаний в этом году значительно снизилось. По данным Atlas VPN, до сентября включительно было запущено 78 стартапов в сфере кибербезопасности. Для сравнения в 2019 году их было 207, а в 2015 году – 490. 35% новых бизнесов основано в США.

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

1. Избавляет людей от паролей

Кто: Beyond Identity, США.

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

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

Как было:

<i>Источник: <a href="https://www.beyondidentity.com/" target="_blank" rel="noopener noreferrer nofollow">Beyond Identity</a>.</i>
Источник: Beyond Identity.

Как стало:

<i>Источник: <a href="https://www.beyondidentity.com/" target="_blank" rel="noopener noreferrer nofollow">Beyond Identity</a>.</i>
Источник: Beyond Identity.

В основе сервиса лежит сертификат X.509 и протокол защиты транспортного уровня (TLS). Облачная платформа предоставляет приложения для разных устройств (iOS, iPadOS, macOS, Windows, Android) и специальный сервис. Внедрение системы не требует радикальных изменений в процессах и IT-инфраструктуре заказчика.

Для пользователей все выглядит примерно так:

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

Инвестиции на данный момент: $30 млн.

2. Легко определяет контекст рисков

Кто: Sevco Security, США.

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

Для кого: специалисты по кибербезопасности.

Инвестиции на данный момент: $6,7 млн.

3. Управляет безопасностью приложений

Кто: Enso Security, Израиль.

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

Платформа делает следующее:

  1. собирает всю информацию о разработчиках и изменениях;
  2. фиксирует текущее состояние безопасности в целом по всем приложениям;
  3. оптимизирует безопасность приложений и отображает результаты в режиме реального времени;
  4. приоритезирует задачи на основе данных, которые приходят от инструментов разработчиков (например, JIRA, Jenkins, GitLab, GitHub, Splunk, ServiceNow);
  5. позволяет искать по ключевым словам.

Вот так выглядит дашборд сервиса:

<i>Источник: <a href="https://techcrunch.com/2020/10/28/enso-security-raises-6m-for-its-application-security-management-platform/" target="_blank" rel="noopener noreferrer nofollow">Tech Crunch</a>.</i>
Источник: Tech Crunch.

Для кого: специалисты по кибербезопасности.

Инвестиции на данный момент: $6 млн.

4. Спасает от лавины уведомлений об угрозах

Кто: SOC.OS, Великобритания.

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

Платформа делает следующее:

  1. уведомляет отдел кибербезопасности о самых важных угрозах за выбранные промежутки времени;
  2. позволяет расследовать инциденты прямо в программе;
  3. позволяет визуализировать результаты;
  4. помогает готовить отчеты.

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

<i>Источник: <a href="https://socos.io/" target="_blank" rel="noopener noreferrer nofollow">SOC.OS</a>.</i>
Источник: SOC.OS.

Для кого: небольшие команды специалистов по кибербезопасности.

Инвестиции на данный момент: $2,5 млн.

5. Организовывает всю информацию о безопасности компании

Кто: Safe Base, США.

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

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

<i>Источник: <a href="https://security.safebase.co/" target="_blank" rel="noopener noreferrer nofollow">Safe Base</a>.</i>
Источник: Safe Base.

Для кого: B2B (SaaS компании).

Инвестиции на данный момент: $2,1 млн.

6. Расследует цифровые преступления в облаке

Кто: Cado Security, Великобритания.

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

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

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

Для кого: специалисты по кибербезопасности.

Инвестиции на данный момент: $1,5 млн.

7. Безопасность в смартфоне

Кто: Traced, Великобритания.

Что делают: бесплатное мобильное приложение, которое:

  1. защищает от фишинга;
  2. вредоносного ПО;
  3. вредоносных веб-сайтов;
  4. непроверенных сетей Wi-Fi (когда вы подключаетесь к такой сети, приложение сообщит, если кто-то попытается украсть данные);
  5. помогает идентифицировать шпионское ПО.

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

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

<i>Источник: <a href="https://traced.app/control/" target="_blank" rel="noopener noreferrer nofollow">Traced</a>. </i>
Источник: Traced.

Чтобы идентифицировать новое вредоносное ПО, разработчик использует глубокое обучение.

Для кого: частные лица и компании.

Инвестиции на данный момент: $300к.

8. Фейковые фишинговые атаки для обучения сотрудников

Кто: Riot, Франция.

Что делают: платформу, которая проводит нескучное обучение сотрудников.

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

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

<i>Источник: <a href="https://techcrunch.com/2020/03/16/riot-automatically-educates-your-team-about-phishing/?ref=producthunt" target="_blank" rel="noopener noreferrer nofollow">Tech Crunch</a>.</i>
Источник: Tech Crunch.

Для кого: компании.

Инвестиции на данный момент: $150к.

9. Облачная инфраструктура с встроенной безопасностью

Кто: Frontline, США.

Что делают: сервис для разработчиков с возможностью запускать виртуальные машины (VM) с соответствующими необходимым стандартам настройками безопасности. По-простому: время установки и настройки ряда необходимых для безопасности инструментов значительно сокращается.

Созданные с помощью сервиса VM подходят для AWS (Amazon Web Services), к тому же они обслуживаются и регулярно обновляются.

Для кого: разработчики, DevOps.

Инвестиции на данный момент: $150к.

10. Безопасные смарт-города

Кто: GuardIoT, Чехия.

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

Для кого: компании.

Инвестиции на данный момент: €110к.

Заключение

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

Управляющий программы CyberNorth, эстонского акселератора Startup Wise Guys, отмечает следующие перспективные направления: защиту данных, борьбу с фишингом и пропагандой, а также обучение основам кибербезопасности.

***

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

14
Ноя
2020

🌎 🕵 Навыки OSINT(интернет-разведки) в кибербезопасности

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

OSINT (Open Source Intelligence) – сбор и анализ информации из публично доступных источников. В нынешних реалиях речь идет в основном про интернет-источники. От русскоязычных экспертов можно услышать термин «интернет-разведка», что по смыслу приравнивается к OSINT.

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

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

OSINT удобен тем, что:

  1. подразумевает гораздо меньше рисков: вы не нарушаете чью-то приватность и законы;
  2. дешевле – не нужно какое-то дополнительное оборудование и дорогой софт;
  3. к такой информации легко получить доступ (зайти в интернет), и чаще всего она всегда свежая.

Есть два основных метода сбора информации:

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

2. Активный. Этот метод используется для интернет-разведки гораздо реже. Для получения информации вы исследуете IT-инфраструктуру компании, активно взаимодействуете с компьютерами и машинами. Используются продвинутые техники для получение доступа к открытым портам, сканирование уязвимостей и серверных веб-приложений. В этом случае ваша разведка может быть легко распознана. Социальная инженерия тоже сюда относится.

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

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

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

Почитать подробнее о правовых рамках и законодательстве России и зарубежных стран можно здесь.


Основные источники OSINT, которые используются в информационной безопасности

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

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

1. Метаданные файлов.

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

2. Конфиденциальная документация.

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

3. Данные о домене.

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

  • е-мейлы,
  • телефоны,
  • факсы,
  • технологии, на которых построен сайт,
  • криптографические сертификаты, которые используются на конкретном домене.

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

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


Обучение OSINT для использования в информационной безопасности

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

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

Развитие в OSINT делится примерно не следующие этапы:

1. Освоение базовых техник, вроде Google dorks (продвинутый поиск в Гугл). Для этого – читайте блоги специалистов или специализирующихся компаний. Например:

  • Hrazvedka – в разделе «Разведнет» можно найти подборки разных инструментов. Кроме этого в блоге собираются видео, статьи, книги, фильмы по теме на русском;
  • Sector035 – еженедельные подборки с новыми техниками и инструментами;
  • OSINT Curious – кроме блога у них есть вебкаст, куда приглашают гостей и обсуждают новости;
  • Aware Online;
  • значительная тусовка собрана в Твиттере: i-intelligence, Dutch OSINT Guy, Henk van Ess. В этой подборке можно найти и других деятелей, на которых будет интересно подписаться.

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

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

3. Станьте максимально анонимным. При изучении OSINT значительное время уделяется обеспечению своей безопасности при поиске. Это нужно, чтобы компания или человек не смогли распознать, что вы собираете какую-то информацию. Вот несколько практик:

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

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

Много материалов по этому поводу можно найти в выше описанных блогах и книгах. Вот один из них.

4. Изучайте более продвинутые инструменты, для которых необходимо знание:

  • Kali Linux. Есть много инструментов OSINT, которые работают только на этой операционной системе.
  • Python – работа с некоторыми инструментами требует знания синтаксиса языка.

5. Пробуйте самостоятельно писать на Python автоматизирующие инструменты по сбору и анализу информации.


Инструменты OSINT в информационной безопасности

1. Shodan – поисковик по устройствам, подключенным к сети (в т.ч. интернет вещей и веб-приложения). Раздел «Explore» поможет начать поиски, так как туда собираются запросы пользователей. Чтобы получить доступ к расширенному поиску, надо зарегистрироваться. В платных версиях у вас будет доступ к большему количеству устройств, а также неограниченное количество поисковых запросов в сутки. Руководство по Shodan на русском (ссылка для скачивания).

2. MaltegoMaltego – ПО, которое собирает все данные вместе, помогает увидеть взаимосвязи и сделать выводы. Результат визуализируется в виде дерева, собирающего в единую систему IP-адреса, е-мейлы, телефоны, домены и т.д. Есть три версии клиента, но большинству специалистов будет достаточно бесплатной. Туториалы по Мальтего: на русском и английском (они разные).

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

4. Foca – программа, которая помогает с выгрузкой, классификацией и анализом файлов на удаленном веб-сервере. Для этого она сканирует определенный домен с помощью поисковиков Google, Bing, DuckDuckGo. ПО бесплатное и быстро устанавливается. В этом материале можно найти небольшую инструкцию, как пользоваться программой.

5. Spyse – поисковик по технической информации веб-сайтов. С его помощью вы найдете разнообразные данные, вроде уязвимостей, IP-адресов, субдоменов и SSL/TLS.

Заключение

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

***

Чтобы начать использовать базовый OSINT, достаточно на пару дней погрузиться в книги и туториалы по теме. Если же вы планируете выйти на более продвинутый уровень, скорее всего понадобятся курсы по информационной безопасности и помощь наставников. Например, на Факультете информационной безопасности образовательного портала GeekBrains вы сможете подробно изучить работу с Linux и Python. Также портал дает возможность полностью освоить профессию на практический кейсах.

18
Окт
2020

🧨 Bug Bounty: как заработать на взломе

Белый хакер на фрилансе может заработать $200 за 5 минут, но не спешите сразу ломать все подряд. Мы расскажем, как делать это легально с программами Bug Bounty.

Этичный хакинг – од…

13
Окт
2020

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

В сфере кибербезопасности есть множество напр…

29
Сен
2020

Можно ли создать графический файл с исполняемым сценарием JavaScript внутри? Рассказываем как.

Перевод публикуется с сокращениями, автор оригинала: Sebastian Stamm.

***

Картинка, которая одновременно является кодом на JavaScript

Изображения хранятся в бинарных файлах, а сценарий JavaScript является обычным текстом. Оба типа файлов должны следовать собственным правилам: изображения соответствуют конкретному формату, а сценарии JavaScript должны следовать определенному синтаксису. Можно ли создать файл изображения, одновременно соотвествующий синтаксису JavaScript?

        <!DOCTYPE html>
<html lang="en">
  <head>
    <style>
      body {
        margin: 0;
        overflow: hidden;
        height: 100vh;
      }

      img {
        width: 100%;
      }
    </style>
    <title>This Image Is Also a Valid Javascript File</title>
  </head>
  <body>
    <!--
      Изображение ниже, является валидным файлом Javascript!

      Пожалуйста, замените тег изображения тегом сценария, чтобы увидеть его в действии.
    -->
    <img src="https://executable-gif.glitch.me/image.gif" />

    <!-- https://executable-gif.glitch.me/image.gif -->
  </body>
</html>

    

Выбираем тип изображения

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

        /*ALL OF THE BINARY IMAGE DATA*/
    

Это будет корректный файл JavaScript. Однако файлы изображений начинаются со специфичного для формата заголовка. Например, файлы PNG начинаются с последовательности байтов 89 50 4E 47 0D 0A 1A 0A. Если изображение начиналось с /*, оно перестанет быть корректным.

Заголовок файла
приводит к следующей мысли: что, если эту последовательность байтов использовать
в качестве имени переменной и присвоить ей значение длинной строки:

        PNG=`ALL OF THE BINARY IMAGE DATA`;
    

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

Большинство заголовков содержат недопустимые в именах переменных символы, но есть один формат, который можно использовать:
GIF.
Блок заголовка GIF имеет вид 47 49 46 38 39 61 и удобно преобразуется в ASCII-строку GIF89a.

Выбираем размер изображения

Теперь, когда мы нашли начинающийся с допустимого имени переменной формат изображения, нужно добавить символы « = » и « ` ». Таким образом, следующие четыре байта файла
будут 3D 09 60 04:

В формате GIF следующие за заголовком четыре
байта определяют размеры изображения. Мы должны
поместить туда 3D (знак равенства) и 60 (обратный апостроф). Чтобы изображения
были как можно меньше, 3D и 60 следует хранить в наименее значимых байтах.

Второй байт ширины
изображения должен быть символом пробела, потому что это будет пробел
между знаком равенства и началом строки «GIF89a= `…» . Помните, что
шестнадцатеричный код символов должен быть как можно меньше, иначе изображение получится
огромным.

Наименьший пробельный символ – 09 (символ горизонтальной табуляции). Это дает нам ширину изображения 3D09 или 2365.

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

Создаем скрипт

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

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

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

        GIF89a= ` BINARY COLOR TABLE DATA ... COMMENT BLOCK:

`;alert("Javascript!");/*

REST OF THE IMAGE */
    

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

        alert('Javascript');/*0x4A*/console.log('another subblock');/*0x1F*/...
    

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

        const fs = require("fs");

const scriptChunks = [
  `\`;document.body.innerHTML='<div style="text-align: center;"><h1 style="margin-top: 45vh; transform: translate(0,-50%); font-family: monospace;">Click Button to play Snake! (Control with WASD)</h1></div>';`,
  `document.querySelector('div').innerHTML += '<button id="play" style="font-size: 32px;">Start Game</button>';`,
  `document.querySelector("#play").addEventListener("click",()=>{const e=document.querySelector("h1");document.querySelector("#play").style.display="none",e.textContent="3",e.style.fontSize="3em";const t=document.createElement("style");`,
  `t.innerHTML=\`@-moz-keyframes spin { 100% { -moz-transform: rotate(360deg); } }\n  @-webkit-keyframes spin { 100% { -webkit-transform: rotate(360deg); } }\n  @keyframes spin { 100% { -webkit-transform: rotate(360deg); transform:rotate(360deg);}}\`;`,
  `document.head.appendChild(t),document.body.style.overflow="hidden",setTimeout(()=>{e.textContent="2",e.style.fontSize="4em"},1e3),setTimeout(()=>{e.textContent="1",e.style.fontSize="5em"},2e3);setTimeout(()=>{`,
  `document.body.innerHTML=\`[youtube https://www.youtube.com/watch?v=dQw4w9WgXcQ?controls=0&autoplay=1&w=100&h=100]\`;`,
  `document.body.innerHTML+='<div id="lol-as-if-i-would-let-you-turn-it-off-blocker-div" style="position: absolute; top: 0; bottom:0; left: 0; right: 0;"></div>';},3e3);`,
  `setTimeout(()=>{const e=document.createElement("div");e.textContent="I was too lazy to write a snake game.";`,
  `e.setAttribute("style","position: absolute;top: 45%;color: white;text-align: center;width: 100%;font-size: 3vw;text-shadow: 2px 2px 2px black; animation:spin 6s linear infinite;"),document.body.appendChild(e)},4500)});`,
  `alert("Script works! Press the Button to play a game of Snake!");`,
];

const chunks = scriptChunks.map((chunk, i) => {
  if (i > 0) {
    chunk = "*/" + chunk;
  }
  chunk += "/*";
  return chunk;
});

const scriptContent = [];
for (let i = 0; i < chunks.length; i++) {
  const chunk = chunks[i];
  scriptContent.push(chunk.length);
  for (let j = 0; j < chunk.length; j++) {
    scriptContent.push(chunk.charCodeAt(j));
  }
}

fs.writeFileSync("out.js", Buffer.from(scriptContent));

fs.readFile("image.gif", function (err, buffer) {
  const data = [...buffer];

  for (let i = 0; i < data.length; i++) {
    if (data[i] === 33 && data[i + 1] === 254) {
      // found comment section
      const currentCommentLength = data[i + 2];

      data.splice.apply(data, [
        i + 2,
        currentCommentLength + 1, // remove current comment
        ...scriptContent, // add script as new comment
      ]);

      fs.writeFileSync("out.gif", Buffer.from(data));
      break;
    }
  }
});
    

Очищаем двоичные данные

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

Посмотрим на первую
часть:

        GIF89a= ` BINARY DATA `;
    

Если двоичные данные
будут содержать символ ` или комбинацию символов ${, у нас возникнут проблемы: либо завершится строка шаблона, либо мы получим недопустимое выражение. Исправить
это можно, заменив двоичные данные: например, вместо символа « ` »
(шестнадцатеричный код 60) мы могли бы использовать символ « a »
(шестнадцатеричный код 61). Поскольку эта часть файла содержит таблицу цветов,
это приведет к тому, что некоторые цвета будут немного другими (незаметно),
например: #286148 вместо #286048.

Боремся с искажениями

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

        alert("Script done");/*BINARY IMAGE DATA ...
    

Если данные изображения
будут содержать последовательность символов « */ », комментарий завершится
преждевременно, что приведет к некорректности файла. Здесь придется изменить
один из двух символов, как описывалось ранее. Однако, поскольку мы сейчас
находимся в разделе закодированных изображений, это приведет к его повреждению,
например:

В некоторых случаях картинка вообще не могла отрисоваться. Экспериментируя с поворотами битов, я смог свести к минимуму «поломку» изображения. К счастью было только
несколько случаев появления вредной комбинации « */ » и в конечном изображении
все еще есть немного повреждений, видимых, например, в нижней части строки «Valid
Javascript File», но в целом я вполне доволен результатом.

Завершаем файл

Последняя манипуляция –
файл должен заканчиваться байтами «00 3B», поэтому комментарий нужно завершить
раньше. Поскольку это конец файла, любое потенциальное повреждение будет не сильно
заметно, просто добавим однострочный комментарий, чтобы не вызвать никаких
проблем при синтаксическом анализе:

        /* BINARY DATA*/// 00 3B
    

Заставляем браузер выполнить сценарий

У нас наконец-то есть графический файл, который является сценарием JavaScript-файлом. Возникает еще
одна проблема: если загрузить изображение на сервер и попытаться использовать
его в теге <script>, скорее всего мы увидим такую ошибку:

Refused to execute script from ‘http://localhost:8080/image.gif‘ because its MIME type (‘image/gif’) is not executable.

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

Браузер в этом случае делает то,
что лучше всего соответствует контексту: отображает его картинку в теге
<img> или выполняет его JavaScript в теге <script>.

Зачем это все?

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

***

По соображениям
безопасности мы не стали публиковать код сервера
. С вами была Библиотека программиста. Удачи в хакинге картинок!

15
Сен
2020

⛑️ Этичный взлом: учимся белому хакингу

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

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

Хакинг может быть этичным?

Хакинг – это выявление уязвимостей системы для получения доступа к её слабым местам. Хотя сейчас слово «хакер» ассоциируется с киберпреступниками, идея этичного хакинга появилась намного раньше. В 1960-х годах студенты Массачусетского Технологического Института термином hacking обозначали поиск способов оптимизации систем и машин для их эффективной работы. Но в 1980-х и 1990-х годах хакерами стали называть и преступников в сфере информационной безопасности.

С ростом популярности персональных компьютеров многие важные данные стали храниться на цифровых носителях. Преступники увидели возможность кражи информации, которую можно было бы продать или использовать для мошенничества. Эти цифровые злоумышленники использовали свои навыки для получения доступа к частным компьютерам, кражи данных и даже шантажа. Такого рода хакеров сегодня называют Black Hat Hackers («черные шляпы», «черные хакеры»).

В результате поиска компаниями адекватной защиты получил распространение этичный взлом – тестирование безопасности компьютерных систем. В отличие от черных шляп этичный хакер (White Hat Hacker) действует по предварительной договоренности и документирует процесс взлома.

Ответственность за нелегальный хакинг

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

Юридическая справка
Уголовный кодекс Российской Федерации категорически запрещает попытки взлома чужой инфраструктуры. По статьям 272, 273, 274 можно получить штраф или даже срок за нераспознанный доступ, хранение и распространение информации. О законах других стран относительно взлома можно узнать на странице-карте межправительственной организации ЮНКТАД.

Ресурсы для самостоятельного изучения методов хакинга

В прошлой статье по теме мы разобрали навыки, которые нужно освоить, чтобы попасть на технические должности в информационной безопасности (ИБ), и какие бесплатные ресурсы в этом помогут. Если вы хотите стать этичным хакером, обратите внимание на GitHub-репозиторий Awesome Ethical Hacking Resources, в котором ресурсы разбиты по категориям: книги, онлайн- и офлайн-платформы, курсы, сайты, youtube-каналы и т. д.

Познакомьтесь с автоматизированными инструментами OSINT – они помогут в исследовании вопросов безопасности. Чтобы начать работать багхантером, достаточно изучить несколько базовых инструментов:

  • Wireshark позволят анализировать сетевой трафик и устранять неполадки в сети;
  • Acunetix Web Vulnerability Scanner автоматизирует тестирование веб-приложений на наличие уязвимостей;
  • Sqlmap создан для обнаружения недостатков внедрения SQL-кода.

Где прокачать навыки белого хакинга

Capture the Flag (CTF). Участники CTF-соревнований ищут «флаг», который служит доказательством взлома системы. Соревнования по захвату флага – отличный способ научиться взламывать киберсистемы. Обычно на CTF отводится ограниченное время и в захвате флага участвуют только зарегистрированные команды. Но существует и большое количество CTF в стиле «всегда онлайн», где можно оттачивать мастерство кибервзлома в одиночку и без ограничений по времени.

CTF для веб-эксплуатации. Pentesterlab – отличный ресурс, чтобы начать изучать веб-тестирование на проникновение. На Hacker101 CTF представлен список задач, направленных на развитие навыков веб-взлома. Решая их, можно познакомиться с большинством уязвимостей программ bug bounty – вознаграждений за найденные ошибки.

Реверс-инжиниринг. Потренироваться в обратном инжиниринге (англ. reverse engineering) можно на сайте Crackme, хранящем множество программ, которые можно попытаться взломать.

Смешанные CTF. OverTheWire – сайт для новичков в IT, на котором обучение начинается с основ командной строки и базовых навыков программирования. Далее предлагается широкий спектр задач на выбор: веб-безопасность, двоичные файлы, реверс-инжиниринг.

Живые CTF. Если вы хотите поучаствовать в живом CTF или CTF в стиле «Атака и защита», посетите CTFtime.org и посмотрите список текущих и предстоящих событий.

Платформы Bug Bounty. Bug Bounty – это вознаграждение, выплачиваемое разработчикам, обнаружившим критические недостатки в программном обеспечении. Наградой служат деньги, оборудование компании или просто место в «Зале славы».

Поиск уязвимостей может проводиться на базе компании или на специализированной платформе. Одна из самых известных – Hackerone.

Востребованность белых хакеров

Тысячи организаций (в том числе General Motors, GitHub, Lufthansa, Nintendo, Spotify и Starbucks) сотрудничают с мировым сообществом белых хакеров. На платформе HackerOne за последний год была организованы тысяча клиентских программ, победителями получены награды на сумму 23 млн долл. Девять хакеров заработали суммарно более 1 млн долл. Средняя суммарная выплата сертифицированному этичному хакеру составляет 82 тыс. долл. в год. Отдельные багхантеры на платформах Bug Bounty зарабатывают до 50 тыс. долл. в месяц.

Карьера этичного хакера

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

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

Заключение

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

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

21
Авг
2020

Объясняем простым языком, что собой представляют прокси-серверы, какие они бывают и в чем разница между прокси и VPN.

Что такое прокси-сервер

17
Авг
2020

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

Что такое информационная безопасность?

Информационная безопасность (ИБ, англ. Information Security, сокр. InfoSec) – набор методов для защиты данных от несанкционированного доступа или изменений как при хранении, так и при передаче с одного компьютера на другой.

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

Обзор специальностей в сфере информационной безопасности

Развитие технологий порождает проблемы безопасности. По оценкам Cybersecurity Ventures, к 2021 г. в отрасли ИБ будет открыто 3.5 млн вакансий, а глобальные расходы на цифровую безопасность превысят 1 трлн долл. По данным MIT Technology Review, из кандидатов, претендующих на соответствующие должности, менее четверти имеют нужную квалификацию.

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

Технические специальности ИБ

  • Специалист по проникновению (пентестер) отвечает за проверку приложений, систем и сетей на наличие уязвимостей.
  • Специалист по инфраструктурной безопасности отвечает за анализ требований к безопасности систем организации, а также за установку и настройку решений безопасности в корпоративных сетях.
  • Инженер по безопасности приложений обеспечивает безопасность на всех этапах жизненного цикла разработки программного обеспечения, включая этапы проектирования, кодирования и разработки, тестирования и развертывания.
  • Инженер по облачной безопасности занимается вопросами безопасности цифровых облачных платформ.
  • Реверс-инженер анализирует вредоносные программы, чтобы понять, как они работают, как их можно идентифицировать и устранить.
  • Направление комплаенс (англ. compliance, досл. пер. согласие, соответствие) обеспечивает безопасность работы внутренних компьютерных систем, серверов и сетевых подключений.
  • DevSecOps занимается интеграцией тестирования безопасности в конвейеры непрерывной интеграции и непрерывной доставки.
  • CISO (Chief Information Security Officer) – руководитель, ответственный за безопасность информации и данных организации.
  • Аудитор ИБ проводит проверку компьютерных систем, которые могут подвергаться атаке.
  • Специалист по форензике (компьютерной криминалистике) собирает улики с компьютеров, сетей и других устройств хранения данных для расследования случаев цифровых преступлений.
  • Технический пресейл по ИБ объединяет технические знания и навыки продаж, чтобы предоставлять консультации текущим и потенциальным клиентам.
  • Технический писатель по ИБ сотрудничает с аналитиками реагирования на инциденты, с инженерами и специалистами по анализу угроз для документирования технической информации.

Менеджерские специальности ИБ

  • Администратор средств защиты информации помогает организации внедрять лучшие решения в соответствии с их потребностями в безопасности.
  • Менеджеры по безопасности управляют политикой ИБ организации.
  • Директор по информационной безопасности (англ. chief information security officer) – менеджер исполнительного уровня, который направляет стратегию, деятельность и бюджет для защиты информационных активов предприятия.

Навыки для работы

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

Технический бэкграунд специалиста по информационной безопасности

Для начала надо освоить основы Computer Science.

Программирование, языки разметки, кодирование

  • В зависимости от специфики направления: будет полезно, как знание низкоуровневых языков C++ и Java, так и скриптовых Python, PHP, JavaScript для обеспечения безопасности веб-приложений.
  • Ассемблер и дизассемблеры.
  • Навыки регулярных выражений (regex).
  • Linux / MAC bash-скрипты.

Операционные системы и управление базами данных

  • Операционные системы Windows, UNIX и Linux.
  • Управлением базами данных SQL- и NoSQL-типа.

Cети

  • Конфигурация системы и сети.
  • TCP/IP, компьютерные сети, маршрутизация и коммутация.
  • Сетевые протоколы и инструменты анализа пакетов.
  • Брандмауэр, протоколы обнаружения и предотвращения вторжений.
  • Знание PacketShaper, балансировщика нагрузки и прокси.
  • Виртуальные частные сети.

Нетехнический бэкграунд

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

  • CompTIA IT Fundamentals certification представляет собой введение в базовые знания и навыки в области ИТ, которые помогают профессионалам решить, подходит ли им карьера в сфере ИТ. Это также первая сертификация, которую вам нужно пройти для вашей карьеры в области безопасности, если вы не имеете технического образования. Сертификат Security + откроет двери в индустрию информационной безопасности.
<a href="https://cyberexperts.com/how-to-transition-to-a-cyber-security-career-at-any-age/" target="_blank" rel="noopener noreferrer nofollow">Порядок получения сертификатов для работы в ИБ.</a>
Порядок получения сертификатов для работы в ИБ.

Подборка ресурсов для самостоятельного изучения

Книги

  • Security in Computing (англ.) – обзор компьютерной безопасности с акцентом на сетях, операционных системах и программных устройствах.
  • Crafting the InfoSec Playbook (англ.) – как разрабатывать собственные средства обнаружения инцидентов и аналитики угроз.
  • Gray Hat Hacking (англ.) – тактики реверс-инжиниринга, этичные способы взлома серверов и браузеров, деловая сторона этичного взлома.
  • Информационная безопасность. Защита и нападение подробное объяснение проведения аудитов безопасности и тестов на проникновение для различных систем, а также современных решений для маршрутизации, беспроводной связи и других направлений развития ИБ.

Сертификаты

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

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

Поиск по HeadHunter показывает, что на рынке есть около 90 открытых вакансий, которые требуют или предпочитают кандидатов, имеющих сертификат CISSP. Заработная плата в среднем составляет 190 000 руб.

Oнлайн-платформы

  • Cybrary (англ.) – бесплатный видеокурс по всем наиболее распространенным сертификатам кибербезопасности.
  • Open Web Application Security Project (OWASP) (англ.) – бесплатный курс о безопасности веб-приложений.
  • OpenSecurityTraining.info (англ.) – материалы для самоподготовки по модулям CISSP.

Блоги

Карьерные перспективы

Аналитические прогнозы показывают, что с 2018 по 2028 гг. спрос на работников информационной безопасности вырастет на 32% (для доступа к отчету может потребоваться VPN). Особенно высоким будет спрос на аналитиков по информационной безопасности, поскольку такие аналитики будут необходимы для создания инновационных решений, предотвращающих кражу информации и другие проблемы компьютерных сетей.

По данным SecurityLab.ru, средние зарплаты (в тыс. руб. в Москве, в других регионах на 20-30% ниже) в ИБ следующие:

  • Программист с опытом 2-3 года (в зависимости от конкретного проекта и языка программирования): системный инженер, веб-разработчик, и сетевой инженер – 120-150;
  • Архитектор по безопасности / инженер по безопасности – 150-250;
  • Аудитор ИБ – 230-270;
  • Менеджеры по безопасности – 200-250;
  • CISO (Chief Information Security Officer) – 300-500;

Заключение

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

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

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

14
Апр
2020

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

Небольшая заметка про отображение бинарных файлов в виде картинок и применение средств computer vision для обнаружения троянов и вирусов.

Любой софт,
предназначенный специально д…

26
Фев
2020

Qwerty уже не тот. Как хакеры взломали аккаунты 270 млн пользователей

Компания SpyCloud выпустила в свет результаты анализа учётных данных, похищенных хакерами в прошлом году. Целевые атаки киберпреступников стали ещё изощрённее.

Взломы аккаунтов п…

26
Фев
2020

Qwerty уже не тот. Аналитика взлома паролей 270 млн пользователей

Компания SpyCloud выпустила в свет результаты анализа учётных данных, похищенных хакерами в прошлом году. Целевые атаки киберпреступников стали ещё изощрённее.

Взломы аккаунтов п…