Безопасность компьютерных систем 2017 — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Итоговый тест)
 
(не показаны 34 промежуточные версии 7 участников)
Строка 9: Строка 9:
 
# (05.09) [https://docs.google.com/a/solidlab.ru/presentation/d/1Ejcm45wZWjG5dFxzMo0P1snL6vpqWxz6kGqWq603pus/edit?usp=sharing Вводная лекция. Безопасность приложений как фактор технологической конкуренции. Уязвимости программного обеспечения и атаки на них.]
 
# (05.09) [https://docs.google.com/a/solidlab.ru/presentation/d/1Ejcm45wZWjG5dFxzMo0P1snL6vpqWxz6kGqWq603pus/edit?usp=sharing Вводная лекция. Безопасность приложений как фактор технологической конкуренции. Уязвимости программного обеспечения и атаки на них.]
 
# (12.09) [https://docs.google.com/a/solidlab.ru/presentation/d/1obrDy2-_g4x-WgCM89mYPqffemUib6H_qndK_5Wf9Ys/edit?usp=sharing Основные понятия и определения. Модель нарушителя.]
 
# (12.09) [https://docs.google.com/a/solidlab.ru/presentation/d/1obrDy2-_g4x-WgCM89mYPqffemUib6H_qndK_5Wf9Ys/edit?usp=sharing Основные понятия и определения. Модель нарушителя.]
# (19.09) Безопасность приложений. Мобильные приложений и их уязвимости.  
+
# (19.09) [https://docs.google.com/presentation/d/1Poc89tUKcobK2HAaezZkMHVDxuB7tAV1Uk6h1qKM7Lk/edit?usp=sharing Безопасность приложений. Мобильные приложений и их уязвимости.]
# (26.09) Безопасность приложений. Уязвимости веб-приложений ч. 1.
+
# (26.09) [https://drive.google.com/open?id=0B1nyyeocSxBaRkhCajRhaV9qdHM Безопасность приложений. Уязвимости веб-приложений ч. 1.]
# (03.10) Безопасность приложений. Уязвимости веб-приложений ч. 2.
+
# (03.10) [https://drive.google.com/open?id=0B1nyyeocSxBabnFieWxVbEN2VmM Безопасность приложений. Уязвимости веб-приложений ч. 2.]
# (10.10) Безопасность приложений. Исполнение программ на процессоре, стек, подпрограммы и функции, передача аргументов, возврат значения. Системные вызовы. Размещение объектов в памяти: статическое, динамическое, автоматическое. Загрузчик программных модулей. Формат исполняемых файлов ELF. Зависимости модулей. Символы. Уязвимости, связанные с переполнением буфера.Уязвимости, связанные с подменой программных модулей. Уязвимости, связанные с некорректной проверкой прав доступа, TOCTOU.
+
# (10.10) [https://docs.google.com/presentation/d/1KQ0YKM_Q5vxTrpv3kKAJyPGoRVvjxh7ATTdgU5aEzCI/edit?usp=sharing Безопасность приложений. Уязвимости, связанные с переполнением буфера.]
# (17.10) Безопасность приложений. Уязвимости переполнения кучи. Механизмы защиты в современных операционных систем. ASLR, защита стека. Методы обхода.  
+
# (17.10) [https://docs.google.com/presentation/d/14aG1_23kURtEY93_ac_OhmUyxTgDr36Gi2nrElraPoU/edit?usp=sharing Безопасность приложений. Уязвимости переполнения кучи. Механизмы защиты в современных операционных систем. ASLR, защита стека. Методы обхода.]
# (24.10) Безопасность приложений. Secure Development Life Cycle ч. 1
+
# (31.10) [https://drive.google.com/file/d/1v7tb_YmZSqB0KUmvAST7icS7o1uW6Qrk/view?usp=sharing Безопасность приложений. Secure Development Life Cycle ч. 1]
# (31.10) Безопасность приложений. Secure Development Life Cycle ч. 2
+
# (7.11) [https://drive.google.com/file/d/1SU3-hoxeXoGHDVafEpbdGe2WR5NJ2Cz7/view?usp=sharing Безопасность приложений. Secure Development Life Cycle ч. 2]
# (7.11) Безопасность операционных систем.  
+
# (14.11) [https://docs.google.com/presentation/d/1m0KVaIN8VeP7PF8qBsgs4P3NzCee_ZKU5OuqNExhCYI/edit?usp=sharing Механизмы безопасности приложений в операционных системах.]
# (14.11) Криптография. Введение и история
+
# (21.11) [https://docs.google.com/presentation/d/15L1xDBvNDffUuVLi73RCgcluVFoZepY48Xq0quJcETs/edit?usp=sharing Криптография. Введение и история]
# (21.11) Криптография. Симметричные шифры и атаки на них.
+
# (28.11) [https://docs.google.com/presentation/d/1jrhO0ta_3E-wwHxIDffWzelXkj-UrzKb719hY9drsPo/edit?usp=sharing Криптография. Симметричные шифры и атаки на них.]
# (28.11) Криптография, Асимметричные шифры и атаки на них.
+
# (5.12) [https://docs.google.com/presentation/d/1jmKzZb2ezLkVVY_wlQkS4dj1a6V4okIFTgbNucigpIw/edit?usp=sharing Криптография, Асимметричные шифры и атаки на них.]
# (5.12) Криптография. Приложения - PKI, WoT, Блокчейн.
+
# (12.12) [https://docs.google.com/presentation/d/1neIp5iXJBRTrGVsp1KQXqO6vJfqLxXL5OXHuh-MPlew/edit?usp=sharing Криптография. Приложения - PKI, WoT, Блокчейн.]
# (12.12) Криптография. Пост-квантовая криптография.
+
# (19.12) [https://docs.google.com/presentation/d/1ecTS70EjpiASn8rhV_vFhohaVEcIqkmLQx6aDwci5xY/edit?usp=sharing Криптография. Пост-квантовая криптография. Заключение.]
# (19.12) Заключительная лекция.  
+
  
 
Семинары:
 
Семинары:
# (12.09) Уязвимости мобильных приложений ч. 1
+
# (12.09) [[Безопасность компьютерных систем 2017/Уязвимости мобильных приложений ч. 1|Уязвимости мобильных приложений ч. 1]]
 
+
# (19.09) [[Безопасность_компьютерных_систем_2017/Уязвимости_мобильных_приложений_ч._2|Уязвимости мобильных приложений ч. 2]]
ПО, которое необходимо скачать/установить к семинару (всё работает под Windows/Mac Os):
+
 
+
По вопросам установки ПО можно писать в tg: @rakatakatakata
+
 
+
'''Обязательно:'''
+
 
+
1. Эмулятор android:
+
    Установить virtualbox (VirtualBox 5.1.26 platform packages): https://www.virtualbox.org/wiki/Downloads
+
    Установить genymotion for fun: https://www.genymotion.com/fun-zone/
+
    Создать учётную запись на https://www.genymotion.com
+
    Запустить genymotion. Выбрать тип использования “For personal use”
+
    Нажать + (Add new virtual device)
+
    Зарегистрироваться с использованием созданной на шаге 3 учётной записи
+
    Выбрать параметры виртуального девайса:
+
    Android version – 6.0.0
+
    Device model – Custom Phone
+
    Нажать “Next” и скачать образ выбранного виртуального девайса
+
    Запустить образ виртуального девайса
+
 
+
2. Скачать архив https://drive.google.com/file/d/0B7Ud4xPbhmAKWkRmSEh2aVNGVHc/view?usp=sharing . Запустить образ виртуального девайса. Перетащить в окно виртуального девайса скачанный архив, со всем согласиться. После установки. Перезапустить виртуальный девайс.
+
 
+
3. Установить Burp Suite Free Edition: https://portswigger.net/burp/freedownload
+
 
+
4. Установить Java Runtime Environment: http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html
+
 
+
5. Скачать dex2jar: https://github.com/pxb1988/dex2jar/releases/download/2.0/dex-tools-2.0.zip
+
 
+
6. Скачать JD-GUI: http://jd.benow.ca/
+
 
+
7. Установить apktool: https://ibotpeaches.github.io/Apktool/install/
+
 
+
8. Установить SQlite browser: http://sqlitebrowser.org/
+
 
+
9. Скачать уязвимое приложения для тестов: http://payatu.com/wp-content/uploads/2016/01/diva-beta.tar.gz
+
 
+
10. Скачать архив с другими приложениями для тестов: https://drive.google.com/file/d/0B7Ud4xPbhmAKU0dRWXhzWGV4SUk/view?usp=sharing
+
 
+
'''Желательно:'''
+
 
+
    Установить drozer : https://labs.mwrinfosecurity.com/tools/drozer/ (при установке антивирус может среагировать на некоторые модули - надо добавить их в исключения)
+
          1.1 Скачать и установить  Java SE Development Kit 8u144
+
          1.2 Открыть командную строку. Перейти в каталог, куда установился drozer. Ввести команду drozer console (или, в случае использования windows, команду drozer.bat console).  Проверить наличие ошибки “Cannot find java”.
+
          Если ошибки нет, то всё хорошо.
+
          1.3 Если есть ошибка “Cannot find java”, то вы скорее всего работаете под windows. В таком случае необходимо создать файл .drozer_config (без расширения .txt) в домашнем каталоге и прописать туда путь к java.exe.
+
            Содержимое файла .drozer_config должно быть, например, таким:
+
                  [executables]
+
                  java = C:\Program Files\Java\jdk1.8.0_144\bin\java.exe           
+
          После создания конфигурационного файла снова ввести команду drozer.bat console. Ошибка “Cannot find java” должна исчезнуть.
+
          Подробнее см. первую запись https://github.com/mwrlabs/drozer/wiki/FAQ)       
+
          1.4 Скачать agent.apk : https://github.com/mwrlabs/drozer/releases/download/2.3.4/drozer-agent-2.3.4.apk
+
          1.5 Скачать sieve.apk : https://github.com/mwrlabs/drozer/releases/download/2.3.4/sieve.apk
+
 
+
# (19.09) Уязвимости мобильных приложений ч. 2
+
 
# (26.09) Веб-уязвимости. Обзор, инструменты.
 
# (26.09) Веб-уязвимости. Обзор, инструменты.
# (03.10) Веб-уязвимости. XSS.
+
# (03.10) [[Безопасность_компьютерных_систем_2017/XSS|Веб-уязвимости. XSS.]]
 
# (10.10) Веб-уязвимости. SQLi.
 
# (10.10) Веб-уязвимости. SQLi.
# (17.10) Веб-уязвимости. XXE, прочее интересное.
+
# (17.10) [http://hse.seclab.cs.msu.ru/xxe.html Веб-уязвимости. XXE], прочее интересное.
# (24.10) Бинарные программы. Инструменты.
+
# (31.10) [[Безопасность_компьютерных_систем_2017/Бинарные_программы_1|Бинарные программы. Инструменты.]]
# (7.11) Бинарные программы. Обнаружение уязвимостей и эксплуатация.
+
# (07.11) [[Безопасность_компьютерных_систем_2017/Бинарные_программы_2|Бинарные программы. Обнаружение уязвимостей и эксплуатация.]]
 
# (14.11) Уязвимости в бинарных программах. Advanced.
 
# (14.11) Уязвимости в бинарных программах. Advanced.
 
# (21.11) Безопасная разработка.
 
# (21.11) Безопасная разработка.
# (28.11) Механизмы безопасности операционных систем.
+
# (28.11) [[Безопасность_компьютерных_систем_2017/SECCOMP|Механизмы безопасности операционных систем на примере Linux Seccomp]]
# (5.12) Атаки на блочные шифры. CBC.
+
# (05.12) [https://drive.google.com/open?id=1Aq9shLjGTypbGrGSFksfEdziu_XX41kG Атаки на блочные шифры.]
# (12.12) Атаки на RSA.
+
# (12.12) [[Безопасность_компьютерных_систем_2017/RSA|Атаки на RSA.]]
  
 
=== Материалы лекций ===
 
=== Материалы лекций ===
Строка 101: Строка 47:
 
В рамках курса нужно выполнять домашние задания, выдаваемые на семинарах. Всего запланировано 4 задания.
 
В рамках курса нужно выполнять домашние задания, выдаваемые на семинарах. Всего запланировано 4 задания.
  
==== Общее ====
+
[[Безопасность_компьютерных_систем_2017/Задание_1|Задание по теме "Уязвимости мобильных приложений"]]
 +
 
 +
[[Безопасность_компьютерных_систем_2017/Задание_2|Задание по теме "Веб-уязвимости"]]
 +
 
 +
[[Безопасность_компьютерных_систем_2017/Задание_3|Задание по теме "Бинарные уязвимости"]]
 +
 
 +
[[Безопасность_компьютерных_систем_2017/Задание_4|Задание по теме "Криптографические уязвимости"]]
 +
 
 +
[https://docs.google.com/spreadsheets/d/1d3wiWZgK1zw_pR7-oeCXeb3IbPH7A8laBEd0Blk0yhc/edit#gid=0 Результаты выполнения заданий]
  
 +
==== Общее ====
  
 
=== Итоговый тест ===
 
=== Итоговый тест ===
  
 +
https://docs.google.com/forms/d/1YMfeHVpvEZww_jVC9jukZKAdO_2uVlVrVGYlNLtF5Uo/viewform
  
 
=== Оценки ===
 
=== Оценки ===
Строка 112: Строка 68:
 
=== Расчет оценки ===
 
=== Расчет оценки ===
 
Вклад в оценку:
 
Вклад в оценку:
* Практические задания (4 штуки) - 80%, для зачета обязательно нужно выполнить все задания
+
* Практические задания (4 штуки) - 80%
 
* Итоговый тест (на экзамене) - 20%
 
* Итоговый тест (на экзамене) - 20%
  
Строка 122: Строка 78:
 
* Christopher Swenson, Modern Cryptanalysis: Techniques for Advanced Code Breaking.  
 
* Christopher Swenson, Modern Cryptanalysis: Techniques for Advanced Code Breaking.  
 
* Æleen Frisch. Essential system administration.
 
* Æleen Frisch. Essential system administration.
 +
* Dominic Chell, Tyrone Erasmus, Shaun Colley, Ollie Whitehouse. The Mobile Application Hacker's Handbook
  
 
Дополнительная литература:
 
Дополнительная литература:
Строка 129: Строка 86:
 
* Почта: gamajun@gmail.com, dgamaunov@hse.ru
 
* Почта: gamajun@gmail.com, dgamaunov@hse.ru
 
* Tg: @jamadharma
 
* Tg: @jamadharma
 +
* Tg чат: https://t.me/hse_security_course

Текущая версия на 16:15, 28 декабря 2017

Безопасность компьютерных систем

Курс по выбору для студентов 3 и 4 курса ФКН ВШЭ, осень 2017 года (1 и 2 модуль). Курс состоит из лекций и семинаров. Основной акцент сделан на безопасности приложений и разработке безопасного программного обеспечения.

План курса

Лекции:

  1. (05.09) Вводная лекция. Безопасность приложений как фактор технологической конкуренции. Уязвимости программного обеспечения и атаки на них.
  2. (12.09) Основные понятия и определения. Модель нарушителя.
  3. (19.09) Безопасность приложений. Мобильные приложений и их уязвимости.
  4. (26.09) Безопасность приложений. Уязвимости веб-приложений ч. 1.
  5. (03.10) Безопасность приложений. Уязвимости веб-приложений ч. 2.
  6. (10.10) Безопасность приложений. Уязвимости, связанные с переполнением буфера.
  7. (17.10) Безопасность приложений. Уязвимости переполнения кучи. Механизмы защиты в современных операционных систем. ASLR, защита стека. Методы обхода.
  8. (31.10) Безопасность приложений. Secure Development Life Cycle ч. 1
  9. (7.11) Безопасность приложений. Secure Development Life Cycle ч. 2
  10. (14.11) Механизмы безопасности приложений в операционных системах.
  11. (21.11) Криптография. Введение и история
  12. (28.11) Криптография. Симметричные шифры и атаки на них.
  13. (5.12) Криптография, Асимметричные шифры и атаки на них.
  14. (12.12) Криптография. Приложения - PKI, WoT, Блокчейн.
  15. (19.12) Криптография. Пост-квантовая криптография. Заключение.

Семинары:

  1. (12.09) Уязвимости мобильных приложений ч. 1
  2. (19.09) Уязвимости мобильных приложений ч. 2
  3. (26.09) Веб-уязвимости. Обзор, инструменты.
  4. (03.10) Веб-уязвимости. XSS.
  5. (10.10) Веб-уязвимости. SQLi.
  6. (17.10) Веб-уязвимости. XXE, прочее интересное.
  7. (31.10) Бинарные программы. Инструменты.
  8. (07.11) Бинарные программы. Обнаружение уязвимостей и эксплуатация.
  9. (14.11) Уязвимости в бинарных программах. Advanced.
  10. (21.11) Безопасная разработка.
  11. (28.11) Механизмы безопасности операционных систем на примере Linux Seccomp
  12. (05.12) Атаки на блочные шифры.
  13. (12.12) Атаки на RSA.

Материалы лекций

Лекционные материалы публикуются по мере продвижения по курсу.


Практические задания

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

Задание по теме "Уязвимости мобильных приложений"

Задание по теме "Веб-уязвимости"

Задание по теме "Бинарные уязвимости"

Задание по теме "Криптографические уязвимости"

Результаты выполнения заданий

Общее

Итоговый тест

https://docs.google.com/forms/d/1YMfeHVpvEZww_jVC9jukZKAdO_2uVlVrVGYlNLtF5Uo/viewform

Оценки

Расчет оценки

Вклад в оценку:

  • Практические задания (4 штуки) - 80%
  • Итоговый тест (на экзамене) - 20%

Литература

Основная литература:

  • Michał Zalewski. The Tangled Web: A Guide to Securing Modern Web Applications.
  • Chris Anley, John Heasman, Felix Lindner, Gerardo Richarte. The Shellcoder's Handbook: Discovering and Exploiting Security Holes.
  • Dafydd Stuttard, Marcus Pinto. The Web Application Hacker's Handbook: Detecting and Exploiting Security Flaws.
  • Christopher Swenson, Modern Cryptanalysis: Techniques for Advanced Code Breaking.
  • Æleen Frisch. Essential system administration.
  • Dominic Chell, Tyrone Erasmus, Shaun Colley, Ollie Whitehouse. The Mobile Application Hacker's Handbook

Дополнительная литература:

Контакты