- PVSM.RU - https://www.pvsm.ru -
И снова здравствуйте. Обычно я пишу статьи в качестве разработчика, но сегодня хочется поделиться опытом проведения экзамена по информационной безопасности в Московском Политехе [1]. По-моему получилось довольно интересно. Задание даже может быть полезным начинающим тестировщикам и пентестерам. Но вначале я немного расскажу про то, как проходили занятия в течении семестра — чтобы было понятно, как мы дошли до жизни такой.
В течении семестра у меня было по две пары занятий в неделю для каждой группы, и в это время я постарался впихнуть максимум информации для расширения кругозора. На лекциях рассказывал разное:
И ещё многое другое. На самом деле, я отлично понимаю, что студенты забывают три четверти полученной информации, а оставшаяся четверть к моменту выпуска становится неактуальной.
Поэтому самым важным для меня было донести до студентов, что:
С учётом того, что времени на семинарах было заметно меньше, чем хотелось бы (да, этот предмет я готов вести хоть несколько лет — тема очень глубокая), пришлось выбирать какую-то конкретику, которой студенты будут заниматься в максимально прикладном характере, чтобы их представление о хакинге несколько отличалось от фильмов с красивыми бегущими зелёными строчками. При этом мне хотелось максимально рассмотреть именно способы атаки, а не варианты защиты. Наиболее интересно мне показалось рассмотреть атаки на веб приложения. Они наглядны, эффектны, и многие из используемых там принципов можно так же применить на мобильные и даже десктопные приложения. Поскольку студенты в прошлом семестре изучали PHP, то рассматривали эти уязвимости в PHP — с оговоркой на то, что практически всё то же самое справедливо для других языков разработки.
В целом лабораторные были такие:
Полные задания лабораторных можно посмотреть тут [3] — выкладка на github pages быстра, удобна, и позволяет быстро исправлять какие-то найденные в задании косяки. Студент нажал F5 — и вот у него уже новая версия задания! Для особо вредных читателей — сразу признаюсь, что местами там идёт копирование википедии. Можно было бы давать ссылки — но там часто попадаются прекрасные вещи вроде этой [4]. Так что приходится переписывать материалы руками. И то периодически студенты находили в интернете всякие нетривиальные решения…
Для экзамена было заготовлено специальное уязвимое веб приложение (ссылка есть в конце поста). Изначально у меня было желание заготовить дополнительных уязвимостей в самой машине (устаревшее ПО, открытые порты сервисов с простыми паролями и так далее), но решил, что на это не хватит времени — поэтому ломали только непосредственно само приложение.
Перечислять лишний раз уязвимости не буду, поскольку там было ровно то, что мы проходили на лабораторных работах. Заранее предупреждаю — там некачественный код! Тонны его! В этом и был смысл.
Забавный алгоритм мы придумали для оценки студентов. Для экзамена использовался формат bug bounty, и поэтому каждая уязвимость стоила там некоторую сумму вознаграждения. Всё как во взрослом настоящем мире. И экзамен нужно было купить… Отличная оценка стоила 20.000 долларов, удовлетворительная 12.000. Можно наличными.
Если кому интересно, то сама виртуалка была поднята на vagrant+virtualbox, в качестве ОС там был CentOS 7, из ПО стоял nginx+mariadb+php-fpm плюс несколько расширений. Так же на экзамене можно было пользоваться заготовленным стандартным образом Kali Linux 2016.2 — аналогичный тому, который мы использовали на лабораторных работах.
Экзамен длился пять часов (мы практикуем формат WorldSkills). Он прошёл без всяких неожиданностей — всё работало, всё (что нужно) ломалось, все студенты, которые ходили на пары, сдали. Кто не ходили — увы. По-моему, так и должно быть.
После экзамена я запилил вот такой анонимный опросник [5] — гугл формы просто божественны для быстрого сбора фидбека. Если интересно, можете прокликать — я специально экспортировал себе результаты опроса студентов и оставил форму открытой. Приятно было получить 13 ответов — при общем количестве студентов в 30 человек и отсутствию обязаловки по заполнению это просто отличный результат. Так же очень обрадовало, что ребятам понравился курс, и отзывы по большей части позитивные. Хвалить себя здесь я смысла не вижу, так что остановимся на критике (авторская орфография сохранена):
Крайне мало информативности по лабам на лекциях.
Да, есть такое дело. Мне хотелось максимум всего интересного рассказать на лекциях, а лабораторками заниматься на семинарах. Но, видимо, надо им тоже уделять время лекций.
Мало времени выделено в течении семестра на лекции.
Да, у нас было по паре лекций в неделю. Приятно, что ребята увидели, что можно было рассказать ещё очень много всего. Ну что же — может быть, мы ещё встретимся в магистратуре.
Отсутствие проектора на первых лекциях.
Да, аудиторию с проектором я получил не сразу. С ним выходит гораздо нагляднее.
Kali и LInux в целом надо бы показать людям более подробно.
Да, тут проблема в том, что курса по Linux до этого не было. Надо будет скорректировать последовательность курсов.
Было трудно приходить на лекции так рано.
Мне тоже :)
В качестве улучшения, я бы предложил(а) добавить в курс интеректива. Например блиц опросы, тесты на лекциях (гуглить kahoot). Это бы увеличило вовлечённость студентов и дало бы понимание кто и где плавает.
Отличная идея. В следующий раз сделаем.
Видео с ютуба
Да, проблема с наглядными материалами была. Причём с видео на русском вообще проблема серьёзная. Его нет, а то, что есть, настолько чудовищно… И дикция куда хуже моей, и часто возникают ситуации, когда автор совершает ошибку, после чего в течении 10 минут её ищет и откатывается обратно… А на заднем фоне в это время играет «Владимирский централ» и фишки домино стучат. В общем, нужны очень крепкие нервы, чтобы это смотреть. А писать своё видео с нуля это весьма трудозатратно. Так что в результате я или использовал видео материалы Positive Technologies (очень люблю этих ребят!), или ставил английское видео и озвучивал его. В следующий раз нужно будет или записать самостоятельно, или хотя бы наложить свою озвучку. Но надо будет искать человека на это, поскольку моя дикция хромает. В общем, задача есть, сложная, но подъёмная.
Трудно слушать речи с недочетами в дикции, а также стоило бы говорить погромче, дальше 2-й парты часто просто было неслышно.
Да, есть такое. Рад, что это заметил только один студент (ну или просто остальные избыточно вежливы). Буду стараться исправляться и использовать микрофон для усиления звука. Громко говорить две-три пары подряд просто горла не хватает — и так на работу потом приходил без голоса.
Неприменимая теория, которую я забуду через пару месяцев.
Увы, так со всей теорией. Но я надеюсь, что ребята запомнили основные мысли (см. выше). Ну и такие вещи умеют всплывать в памяти, если вы продолжаете ими заниматься.
Письменный материал, который в курсе не особо был полезен.
Тут, видимо, имелось в виду, что не особо полезен для экзамена. Увы, теорию в экзамен положить не удалось. Буду думать, как лучше связать курс.
Люди боятся подходить и спрашивать(проблема глобальная и видимо не лечится с годами и курсами), надо как-то придумать подход к ним, чтобы студенты сами приходили и интересовались как что делать, если совсем не понимают. Ничего предлагать не стану, просто это надо как-то обдумать.
Да, проблема есть, и она очень серьёзная. У первого курса, который курирую по проектам микроэлектроники, всё ещё хуже. Ребята просто не умеют спрашивать (хотя тут есть интереснее разделение по половому признаку — девушки охотнее задают вопросы). Постараюсь исправить большим количеством обратной связи — в том числе тестами, опросами и так далее. Убедить ребят задавать вопросы безумно сложно.
Так же многие студенты указали на то, что хотелось бы иметь больше времени на экзамен. Надо думать. ИМХО, 6-8 часов работать головой почти нереально — возможно, надо сокращать программу экзамена, чтобы лучше уложиться в 4-5 часов. Или действительно делать перерыв.
Ещё ребята писали, что была несовершенная система оценки уязвимостей — были небольшие награды за небольшие уязвимости, а за большие можно было получить сразу треть нужной награды. С одной стороны, большие уязвимости мной так и задумывались — их мало кто найдёт, но если уж найдёт — это вознаградится по полной. С другой стороны, явно было нужно больше маленьких уязвимостей. Есть над чем поработать.
В целом я доволен, хотя предстоит ещё много работы по доработке курса. Радует то, что теперь есть костяк, на который уже легче наращивать больше вкусного “мяса”. И хорошо, что первый блин — не комом. А дальше будет больше, интереснее и вкуснее!
Буду рад фидбеку от аудитории хабра. Прямо сейчас вы можете повлиять на будущее российского образования и на то, какие соискатели придут к вам через несколько лет.
P.S. Ищу сейчас хорошего QA-инженера в свою команду. Принимаю резюме с отчётами по данному приложению ;)
P.S.2. Вы можете позвать меня читать какой-то курс у вас. Но должно быть социально-полезно, интересно, или за деньги (лучше, конечно, все три). А то постоянно приходят предложения от всяких милых компаний — придумайте и прочитайте нам курс за несколько рублей, с вас все материалы, видео, методички, и курс остаётся в нашей собственности… Мне страшно думать, кто для них пишет материалы, и чему такие курсы обучают студентов.
Без этих людей такого экзамена не было бы. Так что благодарности:
Автор: jehy
Источник [17]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/236464
Ссылки в тексте:
[1] Московском Политехе: http://mospolytech.ru/
[2] Пулл реквест: https://github.com/ethicalhack3r/DVWA/commit/ae55c91d7140252240f7fc77c58d825e92a65e8a
[3] тут: https://jehy.github.io/mami/
[4] этой: https://ru.wikipedia.org/wiki/%D0%92%D0%BD%D0%B5%D0%B4%D1%80%D0%B5%D0%BD%D0%B8%D0%B5_SQL-%D0%BA%D0%BE%D0%B4%D0%B0#.D0.A4.D1.83.D0.BD.D0.BA.D1.86.D0.B8.D1.8F_.D0.BF.D0.BE_.D0.B0.D0.B2.D1.82.D0.BE.D0.BC.D0.B0.D1.82.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.BE.D0.BC.D1.83_.D0.BE.D0.BF.D1.80.D0.B5.D0.B4.D0.B5.D0.BB.D0.B5.D0.BD.D0.B8.D1.8E_.D0.B7.D0.B0.D1.80.D0.B5.D0.B7.D0.B5.D1.80.D0.B2.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.BD.D1.8B.D1.85_SQL_.D1.81.D0.BB.D0.BE.D0.B2_.D0.B2_.D1.82.D0.B5.D0.BA.D1.81.D1.82.D0.B5_.D0.B8_.D0.B7.D0.B0.D0.BD.D0.B5.D1.81.D0.B5.D0.BD.D0.B8.D1.8E_IP_.D0.B2_.D0.B1.D0.B0.D0.BD_.D0.BB.D0.B8.D1.81.D1.82
[5] вот такой анонимный опросник: http://docs.google.com/a/jehy.ru/forms/d/1vqt56pfbur3rqyGxuXEmb-qeifSnUWUaZoFwkcJVpug/viewform
[6] Ивану Чикунову: https://www.facebook.com/profile.php?id=100007588693481
[7] Андрею Филипповичу: https://www.facebook.com/aphilippovich?fref=ts
[8] Денису Васильеву: https://www.facebook.com/denis230v?fref=ts
[9] Фаблаба: https://vk.com/fablabum
[10] Ольге Прудковской: https://www.facebook.com/olga.helka?fref=ts
[11] Владимиру Канину: https://www.facebook.com/vladimir.kanin?fref=ts
[12] PayMe: https://www.pay-me.ru
[13] Дмитрию Леонову: https://asugubkin.ru/staff/dl/
[14] BugTraq.Ru: https://bugtraq.ru
[15] Исходник приложения: https://github.com/jehy-security/mami-exam-vulpix
[16] Образ машины, готовой для тестирования: https://github.com/jehy-security/mami-exam-vulpix/releases/download/1.1/infosec-exam-1.1.torrent
[17] Источник: https://habrahabr.ru/post/320210/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.