Компьютерная безопасность (ревёрсинг) — весна 2019

Материал из CSC Wiki
Перейти к:навигация, поиск

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

Лекции

Лекторы:

  • Росков Владислав Юрьевич
  • Колесов Михаил Сергеевич
  • Зайцев Георгий Юрьевич
  • Милованов Тимофей Игоревич
  • Ханов Артур Рафаэльевич

Программа занятий:

  1. 4 февраля — Введение в ревёрс
    На лекции мы начинаем курс с рассказа, что делают ревёрсеры.
    Практика — ревёрс прог при наличии исходников.

  2. 11 февраля — Реверсинг в Hex-Rays
    Лекция знакомит с стандартным инструментом реверсера — IDA+Hex-Rays.
    Практика — ревёрс бинарников, которые Hex-Rays легко переводит в читаемый псевдокод.
    Советы:
    1. Как сделать IDA красивее под wine: http://f1nn.com/ida-wine/
    2. Каждое задание собрано под Linux и Windows. Полезно смотреть в Hex-Rays оба бинарника: компиляторы выдают разный код

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

  4. 25 февраля — Продвинутые конструкции в Hex-Rays
    Лекция про возможности Хекс-рейса, которые ускоряют ревёрсинг: поиск обращений к переменным и строчкам, разметка структур и перечислений.
    Практика — бинарники, в которых использовались структуры.

  5. 4 марта — Динамический анализ
    Лекция предлагает ещё один подход к ревёрсингу — посмотреть, что происходит внутри процесса: трассировкой библиотечных вызовов, ядерных вызовов, отладкой в псевдокоде Hex-Rays и в ассемблере.
    Практика — бинарники, в которых помогает динамический анализ.

  6. 11 марта — Язык ассемблера
    Лекция дополняет предыдущую и рассказывает про конструкции языка ассемблера — самого близкого к железу представления программы.
    Практика — исходники на ассемблере и бинарники, в которых не помогает Хекс-рейс.

  7. 18 марта — Бинарный патчинг
    Лекция — иногда нужно не только понять, как скомпилированная программа работает, а ещё и что-то изменить в логике её работы. Увеличить количество жизней, убрать задержку при запуске, убрать ненужную ветвь — всё это достигается бинарным патчингом, изменением байтов программы прямо внутри бинарника.
    Практика — бинарники, на которых предлагается потренировать патчинг.

  8. 25 марта — Автоматический анализ
    Лекция про сегодняшний передний край ревёрс-инженеринга — автоматизацию с помощью символьного исполнения. Символьное исполнение позволяет отдать ревёрсинг на откуп автоматике: представить всю программу как математическую функцию, и решить её относительно неизвестных входных данных. В лекции речь про три инструмента: z3 — решатель уравнений с удобным питоновским API, Ponce — интеграция решателя в отладчик Иды, angr — фреймворк для автоанализа, с которым максимально просто использовать символьное выполнение.
    Практика — четыре бинарника, на которых предлагается потренироваться использовать angr, Ponce и z3.

Практика

Преподаватели:

  • Росков Владислав Юрьевич @mrvos
  • Зайцев Георгий Юрьевич @groke

Практические задания: https://hse.ctf.su/

Кто сдал какую неделю: https://goo.gl/7Mbrz3

Механика курса

Чтобы успешно завершить курс, нужно закрыть каждую неделю. Как это сделать:

  1. Решаете минимум 70% задач недели.
  2. Договариваетесь созвониться с преподавателями на десять минут.
  3. Препод просит продемонстрировать, что вы делали в каком-нибудь задании.

Первые две недели (до 18 февраля) можно спокойно отписаться от курса. Если остаётесь дальше, нужно добивать до конца.

Как ставится оценка

Оценка равна среднему арифметическому процентов решённых тасков за каждую неделю:
− если все недели закрыты на 70%, это 7.
− если закрыты от 70 до 100, считаем среднее арифметическое по восьми неделям, и округляем к ближайшему.
Например, 70, 80, 90, 90, 70, 70, 80, 80 = 630. Делим на 8 (недель), получаем 78,75. В итоге ставим 8.

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

RE points.png