Вы находитесь на странице: 1из 77

Пролог

Компьютерная Безопасность: Введение в CTF

1
Статистика по заявкам

● 88 валидных заявок
● 5 разных университетов
● Больше всего 2 курса – 40 заявок
● Только 65 человек заполнили поле «про себя»
● Приглашено 42 человека (+4 от Bulba Hackers)
● 23 человека – 2 курс, 13 – 1, 1 – 3, 7 – 4
● У некоторых людей проблема с чтением и оформлением
заявки по примеру

2
Как происходил отбор

● Выгрузили заявки в Tg чат


● 5 организаторов, независимо от всех, проставляли эмодзи каждому
участнику
● На основе эмодзи участники набирали баллы
● Отсортировали список, взяли топ 40 (так как у участников 28-43 были
одинаковые баллы – взяли 43 участника)

3
Выводы, которые нужно сделать участникам

● Всегда внимательно читать описания при заполнении анкеты


● Учитесь продавать себя: на основе информации о том, что вы из БГУИР
и студент первого курса – мы вас не возьмем
● Внимательно читайте оригинальный пост, за фразу «мне всегда было
интересно это направление» мы отказывали*

4
Цели и задачи этого курса

● Набрать новое поколение CTF для Bulba Hackers


● Показать, что существуют более эффективные способы войти в мир ИБ
● Показать существование проблем безопасности и то, что они окружают
нас постоянно
● Дать «пузырь» знаний, который участники курса смогут заполнить
самостоятельно
● Попытаться изменить мир к лучшему =)

5
О задачах на курсе

● Своя платформа с задачами: https://tb.ctf.by


● Есть «именные» задачи – за первого решившего даем мерч
● Члены BH (состоящие в CTF отделе, Pentest отделе или «Лимбе») не
претендуют на призы в рамках курса
● Задачи начинаются от «детских» и заканчиваются «real ctf medium+»
● Не все задачи можно решить прослушав курс
● Шаринг флагов запрещен, аналогично подсказки от участников
● Девиз курса: “Try Harder”

6
Не забывайте об УК РБ!

7
Криптография

Компьютерная Безопасность: Введение в CTF

8
Криптография

Целостность
Аутентификация
данных

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

9
Зачем нужна криптография

1. Передать данные из точки А в точку Б так, чтобы их нельзя было перехватить


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

10
Где найти криптографию в вакансиях ИБ

1. Криптографы-исследователи, для создания государственной


криптографии (СТБ)
2. Вакансии, связанные с криминалистикой (reverse engineering, forensics)
3. Специалисты по безопасности, связанные с ЭЦП (Электронная
Цифровая Подпись)
4. Любая другая вакансия (с требованием в виде базовых понятий
криптографии)

11
Где найти криптографию в вакансиях IT

1. Разработчик (middle+)
2. DevOps (но здесь скорее криптография ограничится работой с HashiCorp
Vault like сервисами)
3. Системный архитектор

12
Какие навыки можно получить занимаясь криптографией

1. Математика (95% криптографии строится на математических свойствах)


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

13
Виды функций преобразования в криптографии

● Кодирование

● Хеширование

● Шифрование
14
Кодирование

15
16
Что такое кодирование

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


необходимый для передачи и/или хранения

17
Что такое кодирование

Пусть f(x) – функция кодирования, где x – исходный текст.

Тогда существует такая функция f’(x), где f’(x) – функция обратная


кодированию. Соответственно:
b = f(a),
a = f’(b).

18
Какие есть алгоритмы кодирования

● Base64
● Hex
● Base85
● Morse
● Unicode
● Binary
И так далее

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

Base64 SGVsbG8sIHdvcmxkIQ==

Hex 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21

Base85 87cURD_*#TDfTZ)+T

Morse .... . .-.. .-.. --- --..--,.-- --- .-. .-.. -.. -.-.—

Unicode \u0048\u0065\u006C\u006C\u006F\u002C\u0020\u0077\u006F\u0072\u00
6C\u0064\u0021
Binary 01001000 01100101 01101100 01101100 01101111 00101100 00100000
01110111 01101111 01110010 01101100 01100100 00100001

20
Когда стоит применять кодирование

● Вы работаете с символами из языка (например, арабский) и не уверены,


что серверная сторона приложения сможет нормально обработать
запрос
● Любая другая вариация ситуации выше

21
ИСПОЛЬЗОВАТЬ КОДИРОВАНИЕ ДЛЯ
«ШИФРОВАНИЯ» ИНФОРМАЦИИ НЕЛЬЗЯ!!!!

22
Реальные примеры использования кодирования

23
24
25
26
Как атаковать закодированную информацию?

Никак.

Кодировка не является функцией для шифрования данных, соответственно


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

27
Хеширование

28
29
Что такое хеширование

Хеширование – необратимое преобразование исходного текста в какой-то


набор символов (байтов).

30
Что такое хеширование

Пусть f(x) – функция хеширования, где x – некое исходное сообщение.

Тогда не существует такой функции f’(x), что f’(x) – является обратной для
функции f. Но одновременно с этим, для исходного сообщения a,
существует такое исходное сообщение b, что:

f(a) = f(b)

31
Что такое коллизия

Коллизия – равенство значений для хеш-функции при разных входных


данных.

Почему она возникает:


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

32
Домашнее задание до 1 октября 8:30

Предложите способ сравнения двух исходных сообщений при помощи хеш


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

33
Какие есть алгоритмы хеширования

● MD4/MD5
● SHA2
● SHA256/512
● SHA3
● PBKDF
● bcrypt
И так далее

34
Когда используют хеширование

● При проверке целостности файлов (исходных сообщений). Достаточно


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

35
Реальные примеры использования хеширования

36
37
38
Зачем используют соль в хеш функции?

Соль – некая строка (кусок данных / байтов), которую добавляют к


исходному сообщению перед хешированием.

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

39
Как проводить атаки на хеширование?

1. Использовать онлайн сервисы для подбора оригинального значения


хеша, например: crackstation.net
2. Использовать брутфорс (hashcat) и хороший словарик с паролями,
например: rockyou.

40
41
42
Как мы искали коллизию md5 + sha256

● Дана строка и ее хеши md5 и sha256


● Нужно найти коллизию к этой строке, чтобы md5 и sha256 совпадали
● Решение (как это сделали мы): запустить брутфорс на сутки
● Причем фокусируемся на md5 (потому что подбор md5 работает
быстрее, чем sha256)

43
Шифрование

44
45
Что такое шифрование

Шифрование – обратимый процесс преобразования информации с


использованием дополнительной информации (ключа).

46
Что такое шифрование

Пусть f(x, k) – функция шифрование, где x – исходное сообщение, а k –


ключ шифрования.

Причем существует такая функция f’(x, k), где f’(x, k) – обратная функция
для f(x, k).

47
Домашнее задание до 1 октября 8:30

Представим, что вы находитесь в сети и хотите передать сообщение


своему другу. Однако вы уже знаете, что в этой же сети находится
злоумышленник и слушает весь ваш трафик. Как вы передадите сообщение
своему другу по сети, не дав узнать содержимое злоумышленнику?
Условия:
1. Никаких договоренностей с другом у вас не было.
2. Все ваше общение видит злоумышленник, но не вмешивается.
3. Должна использоваться криптография.

48
Шифрование

● Симметричное – использование одного ключа для шифрования и


расшифрования

● Асимметричное – использование пары ключей (один публичный – для


шифрования, один приватный – для расшифрования)

49
Примитивные шифры

50
XOR

● Главное свойство – A^B=C, C^B=A,


B^C=A
● Соответственно, если A – исходное
сообщение, B – ключ, то C –
зашифрованное значение
● Его не используют для шифрования,
так как можно попытаться найти
ключ по шифротексту

51
Шифр Цезаря (ROT13/47)

52
53
54
Симметричное шифрование

55
Какие есть алгоритмы симметричного шифрования

● AES
● DES
● 3DES
● Blowfish
● Kuznechik
И так далее

56
Когда используют симметричное шифрование

● Когда гарантируется безопасность передачи ключа шифрования (и


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

57
Реальные примеры использование симметричного
шифрования

58
59
Как атакуют алгоритмы симметричного шифрования

1. Попытки восстановить ключ шифрования


1. Прослушка трафика
2. Исследование файловой системы (+ Reverse Engineering)
3. Перебор ключа

2. Уязвимости конкретного алгоритма


3. Эксплуатация неправильных настроек алгоритма

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

61
Публичный и приватный ключ

В асимметричном шифровании используются понятия публичного и


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

Публичным ключом нельзя расшифровать сообщение, которое было


зашифровано публичным!

62
Алгоритмы асимметричного шифрования

● RSA
● ECDH
● DSA/ECDSA
● И так далее

63
Зачем нужна асимметричная криптография, если есть
симметричная?

Асимметричная криптография позволяет решить проблему с прослушкой


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

64
Если асимметричная такая классная, то зачем нужна
симметричная?

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


с симметричной. Соответственно, если стоит задача зашифровать большой
объем данных (либо делать это часто) – выбирают симметричную.

65
Реальные примеры использования асимметричного
шифрования

66
67
68
Как атакуют алгоритмы асимметричной криптографии

1. Поиск слабостей алгоритмов


2. Попытка восстановить приватный ключ, зная публичный
3. Атака на неправильные конфигурации шифрования

69
Почему нельзя путать кодирование, шифрование и
хеширование

1. Выбрав неправильную функцию – вы можете подвергнуть вашу


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

70
Криптография и CTF

71
Что мы чаще всего встречаем на соревнованиях

● Примитивные шифры (и атаки на них)


● Well known криптография и атаки на нее
● Эксплуатация неправильной конфигурации шифра
● White papers исследования особенностей шифров
● Кастомная криптография (вдохновленная какими-то свойствами)

72
Как находить информацию для решения криптографии

● Google
● Google “crypto <algoname> ctf writeup”
● Researchgate / Sci-Hub (для поиска научных статей по алгоритмам)
● Вышмат
● Google “crypto <algoname> attacks”

73
Как работать с кастомной криптографией

1. Нужно понять к какому типу криптографии относится алгоритм


2. По возможности, найти наиболее похожий алгоритм на текущий и
проанализировать «отклонения» от исходного
3. Поставить себя на место автора – «что я мог заложить в задачу?»
4. Читать код и плакать, читать код и решать.

74
Ответы на вопросы

75
Что дополнительно изучить для криптографии

● icyberchef.com
● Applied Cryptography Bruce Schneier
● Cryptonomicon Neal Stephenson
● Школа Анализа Данных от Яндекса
● Модуль криптографии у UgraCTF
● Модуль криптографии у Хакердома
● Cryptographic Storage Cheat Sheet OWASP
● Практика CTF соревнований

76
Практика

● Root-me: Encoding – ASCII


● Root-me: Hash – Message Digest 5
● Root-me: File – PKZIP
● Root-me: Factorization
● HackTheBox: Flippin Bank
● HackTheBox: RLotto

77

Вам также может понравиться