Пн, 1.11 в 23:59 – срок загрузки курсовой работы

Уважаемые студенты!

Сегодня, в понедельник 1 ноября не позднее чем в 23:59 вы должны загрузить свои курсовые работы в интранет Майнора.
Вы можете загружать свои работы в формате MS Word (doc, docx), OpenOffice Writer (odt) или Adobe Acrobat (pdf).

Напомню, что работа должна быть корректно оформлена в соответствие с действующими требованиями к оформлению курсовых и дипломных работ. Единственное исключение касается резюме вашей работы: для курсовой работы достаточно резюме только на русском языке. Объём резюме: 1-2 страницы текста. Те, у кого получилось написать качественное введение и содержательное заключение, могут составить резюме объединив и отредактировав эти две части вашей работы и дополнив их выводами, сделанными в конце каждой из остальных глав. Большего для резюме не нужно.

Копию курсовой работы на бумажном носителе в одном экземпляре необходимо сдать в учебную часть до 4 ноября включительно. Работа должна быть аккуратно переплетена, используя либо твёрдный, либо спиральный переплёт. NB! Кто не успел залить курсовую работу с резюме – обязательно добавьте его к бумажной версии!

Те студенты, кто не предоставит работу в срок, смогут сделать это в следующий раз к 31 января 2011 года. Защита их работ состоится весной в марте месяце, поэтому возможности закончить университет написанием диплома весной 2011 года у них уже по всей видимости не будет (возможные варианты: защищать диплом осенью-зимой 2011 года, либо весной 2011 года писать экзамен).

Экзамен по веб-программированию

Уважаемые студенты!

Экзамен по веб-программированию (PHP) состоится в будущий вторник, 1 июня, в 17:30 в компьютерном классе.
У тех, кто всё ещё не предоставил домашние задания ещё есть срок сделать это до 23:59 31.05.2010

До встречи на экзамене!

Итоговая задача про Ajax

Уважаемые студенты!
Публикую задачу на использования технологии Ajax. Решение задачи является одним из условий допуска к экзаменту.

Собственно, задача: создать страницу, которая показывает случайную фотографию из директории с фотографиями на сервере. Под фотографией разместить кнопку “Show Next Random Image”, нажатие на которую при помощи Ajax (т.е. без перезагрузки страницы) заменяет эту фотографию на другую случайную фотографию из той же директории.

Фотографии должны быть в формате jpeg, размером не меньше 500х500 пикселей, числом не менее 5 разных.

Ссылки на готовые работы (клиенткая часть ссылкой на html, серверная – ссылкой на txt) прошу оставлять в комментах к этой записе.

Удачи!

Курсовая работа

Выложил слайды про курсовую работу. NB! Информация про курсовую и связанную с ней практику начинается с 8 слайда, после части про модульное обучение.

Пользуясь случаем сообщаю, что список студентов, которые изъявили желание писать курсовую под моим руководством, составлен и закрыт.
Вот он (если кого вдруг забыл, или наоборот – кто-то пишет работу с другим руководителем, пожалуйста, отпишитесь в комментах):

  • Максим Абызов
  • Юрий Бесков
  • Роман Борисов
  • Дмитрий Исрафилов
  • Виктор Михайлов
  • Александр Мочёнов
  • Евгений Мялик
  • Александр Скуби
  • Яков Юрьев

PHP & Ajax: что дальше?

Уважаемые студенты!

Те из вас, кто всерьёз заинтересовался программированием на PHP или использованием Ajax, могут посмотреть следующие презентации в поисках best practices и нюансов работы с этими технологиями в различных условиях:

Ajax and PHP
Ajax for PHP Developers
High Performance Ajax Applications
Enterprise PHP (PHP London Conference 2008)
PHP tips and tricks
Iterators in PHP

Javascript: что дальше?

Тем, кто всерьёз заинтересовался возможностями Javascript, в свободное время настоятельно рекомендую ознакомиться с:

Поскольку в конце курса по PHP мы ещё затронем тему объедининения между собой PHP и Javascript (jQuery) при помощи Ajax, то одновременно хочется успеть посмотреть, как строятся многоуровневые приложения с использованием сторонних веб-сервисов.

Будет здорово, если вы в рамках самостоятельной работы ознакомитесь с документацией и примерами следующих службам Google:

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

Финальное задание по Javascript

Уважаемые студенты!

Сегодня мы закончили знакомство с Javascript. К этому языку программирования мы ещё вернёмся после того, как изучим основы PHP: для использования Ajax и различных Google API.

А пока домашнее задание:

При помощи Javascript, HTML и CSS (а главное – максимально активно используя jQuery) написать программу, играющую с пользователем в классические крестики-нолики.

Некое подобие технического задания:

  • перед началом игры пользователю необходимо представиться (ввести имя или никнейм, по которому программа в дальнейшем будет обращаться к пользователю);
  • перед началом игры случайным образом определяется, будет ли пользователь играть за крестики или за нолики;
  • игру всегда начинают крестики (не важно – играет на них компьютер или человек);
  • сложность AI (созданного вами “искусственного интеллекта”) может быть любой: похвально, если вы научите свою программу сводить любую партию вничью или выигрывать, если компьютер получает право первого хода. Но для зачёта достаточно, даже если компьютер будет делать ходы “наобум”.
  • необходимо воспроизвести все правила игры и определение победителя (с учётом ничьей);
  • в программе должна быть кнопка “Начать новую игру”;
  • после того, как компьютер сделает ход, нужно подсветить для пользователя клетку, заполненную компьютером и, если не наступил конец игры, оповестить его о переходе права хода к пользователю (Например, выводом сообщения “Теперь ваш ход, %username%”;
  • для ввода/вывода запрещается использовать alert() и prompt()
  • код программы должен быть корректно отформатирован и содержать комментарии в разумных количествах;
  • придерживайтесь “хороших практик” программирования: используйте семантически корректный HTML, отделите оформление и программный код от структуры файла, вынеся CSS и Javascript во внешний файл или секцию <head>;
  • постарайтесь при выполнении этого задания использовать знания, полученные в ходе курсов “Веб-технологии” и “Пользовательские интерфейсы”.

Работы разместите на своих серверах или на mk.ee/~%ваше_имя% и оставьте ссылку на свою работу в комментариях к этой записи.

Мотивационная часть

Кнут: на экзамен по веб-программированию допускаются только самостоятельно выполнившие это задание.

Пряник:  авторы наиболее интересных и функциональных программы (эффективность AI, процедура определение победителя, качество кода, использование средств jQuery, аккуратность интерфейса) получат весомый бонус на экзамене.

Полезные ссылки по безопасности

Моя коллекция полезных ссылок по теме “Информационная и компьютерная безопасность”. Пост будет пополняться. Пожалуйста. делитесь своими находками в комментах!

Аудит, стандарты безопасности, статьи общего плана

Computer Security Resource Center @ National Institute of Standards and Technology

WirelessDefence.org – сайт, посвящённый целиком защите Wi-Fi

Cisco Safe Reference Guide

OWASP: Open WebApplication Security Project

Блог эксперта по безопасности Брюса Шнаера

EthicalHacker – онлайн-журнал для профессионалов по безопасности

VulnerabilityAssesment.co.uk – британский тематический информационный ресурс

Информационная безопасность на Хабре

Местный тематический блог Infosecurity.ee (на русском) и Arvutikaitse.ee (на эстонском)

Автоматический поиск уязвимостей, penetration testing

HP SWFScan – утилита для анализа Flash-анимации

W3AF: Web Application Attack and Audit Framework

Metasploit Penetration Testing Framework

NeXpose Vulnerability Scanner

OpenVAS: Vulnerability Assesment System

SARA: Security Auditor’s Research Assistant

MS Baseline Security Analyzer

Inguma: Vulnerability Research Toolkit

N-Stalker – коммерческий анализатор безопасности веб-сайтов под Windows. Бесплатная версия проверяет только XSS-уязвимость на 100 страницах любого ресурса.

Безопасность сетей Ethernet и Wi-Fi, анализ траффика, firewalls, снифферы

Chaosreader – аназиз TCP/UDP траффика и поиск информации в его дампах

Firewalk – OSI L4 тестирование рутеров

Scapy – пакетный анализатор/конструктор

Снифферы: Ettercap, dsniff

WireShark – комплексный Network Protocol Analyzer с хорошим GUI

Aircrack-NG: утилита для взлома Wi-Fi сетей

Перебор и перехват паролей, Bruteforce, словари

Cain and Abel – многофункциональная программа для Windows

John the Ripper – локальный перебор паролей

Brutus – удаленный перебор паролей

THC-Hydra – очень быстрый сетевой крякер паролей

Data Forensics

OnTrack EasyRecovery (коммерческая) – восстановление информации с жёстких дисков

RAID Reconstructor (коммерческая) – восстановление с RAID массивов

Sleuthkit – восстановление утерянных данных, анализ носителей + GUI к нему Autopsy

Foremost – восстановление утерянных данных методом data carving

Утилиты для поиска информации а дампах памяти

Сбор информации о жертве

Fierce – анализ DNS

Metagoofil – анализ мета-информации в файлах разных типов

Matlego – аналитический инструмент

Социальная инженерия (в основном работает для американцев): Spokeo, CVGadget, Pipl

Дистрибутивы  для учебных целей

Damn Vulnerable Linux – дырявый Линукс

Damn Vulnerable WebApp – дырявое веб-приложение на PHP

BackTrack Linux – полный комплект софт для тестирования безопасности

Защита компьютера, опсистемы и приложений

Snort: lightweight open-source IDS

PHP-IDS: система обнаружения вторжений в веб-приложений на PHP

Clam-AV: антивирус с открытым исходным кодом

XArp 2 (коммерческая): ARP watch tool for Windows (аналог arpwatch с графическим интерфейсом)

Демонстрационные видео

Видео: взлом WEP за 4 минуты

Видео: взлом WPA-PSK за 6 минут (bruteforce)

Брутфорс паролей веб-форм при помощи Hydra

Использование Metasploit для атаки на Windows XP SP2

Установка и настройка DVWA

Разное

Milw0rm – коллекция эксплойтов

Top 100 Network Security Tools

Инструментарий для тестирования под Windows

StartSSL – бесплатные SSL-сертификаты

Вопросы для подготовки к экзамену по безопасности

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

При подготовке пользуйтесь свежим конспектом лекции (PDF).

Список вопросов

1.  Базовые понятия криптологии: криптография, криптоанализ, криптосистема, открытый и закрытый текст, ключ. Основополагающие принципы работы криптосистем: замена и перестановка. Примеры исторических криптоалгоритмов, использующих эти принципы (объяснить, как работает хотя бы один).

2. Сравнение исторических и современных криптоалгоритмов с точки зрения их надёжности. Что является гарантом надёжности современных компьютерных криптосистем? В чём состоит принцип Керкгоффса? Понятие ключа и свойства ключа. Идеальный ключ, обеспечивающий максимальную надёжность криптограммы. Почему использование идеального ключа не оправдывает себя?

3. Шифрование при помощи ключа и логической операции XOR.  В чём слабые стороны этого метода шифрования? Что нужно для обеспечения надёжности этого способа шифрования? Какие  средства криптоанализа можно использовать для взлома криптограммы на основе ключа и XOR? Частотный анализ.

4. Методы взлома криптосистем: физические, технические, социальные. Способы криптоанализа: атака по имеющимся криптограммам, атака по словарю из частично расшифрованных криптограмм, атака с “чёрным ящиком” (есть доступ к криптосистеме для тестирования своих криптограмм или открытых текстов). Bruteforce по словарю и без него.

5. Симметричные криптосистемы. Принцип работы. Разница между шифрованием блоками и потоком. Какие их достоинства и недостатки? От чего зависит их криптостойкость? К каким атакам наиболее уязвимы? Перечислить названия распространённых симметричных криптоалгоритмов и сферу их применения.

6. Ассимметричные криптосистемы (криптосистемы с открытм ключом). Принцип работы. От чего зависит их криптостойкость? Какие их достоинства и недостатки? Что такое “цифровая подпись” и как она работает?  Перечислить названия распространённых ассимметричных криптоалгоритмов и сферу их применения.

7. Криптографические хеши. Принцип работы. Основные характеристики хеширующих алгоритмов: необратимость, стойкость к коллизиям, лавинный эффект. Примеры хэш-алгоритмов и сфера их применения. Какие из них считаются безопасными (криптостойкими)? Что означает “взломать хэш” и как это можно сделать?

8. Безопасность сетей Ethernet: в чём причина слабой защищённости этого сетевого стандарта? В чём отличие уязвимостей (и способов защиты) нижних уровней OSI (1-3) от верхних уровней (4-7)? Подробно рассказать об уязвимостях и методах защиты на физическом уровне (L1) модели OSI.

9. Уязвимости и методы защиты на канальном уровне (L2) модели OSI. Рассказать, в чём суть таких атак, как MAC flood (aka CAM/MAC table overflow) и ARP spoofing? Какой вред могут нанести эти атаки, какова их цель? Выберите один любой тип атаки (или MAC flood, или ARP spoofing) и подробнее расскажите как она осуществляется и как от неё защититься.

10. Безопасность беспроводных сетей Wi-Fi. Почему Wi-Fi уязвимы? Чем они привлекательны для злоумышленников? Каких атак стоит опасаться администратору Wi-Fi сети и что нужно делать, чтобы минимизировать их риск и недопустить проникновения злоумышленника в сеть?

11. Защита рабочих станций: что угрожает обычным пользователям Windows? Как защитить компьютер пользователя от похищения данных? Антивирусы и их виды. Что нужно учитывать при выборе антивируса? Что такое data forensics?

12. Фаерволлы: назначение и принцип работы. Различия между аппаратным и программным фаерволом. Как работают правила фильтрации траффика (привести пример). Что такое Intrusion Detection System и Intrusion Prevention System, в чём их сходства и различия с “обыкновенным” фаерволом?

13. Общие принципы защиты веб-приложений: что угрожает веб-сайтам? Кто и для чего их ломает, каковы основные методы взлома веб-приложений? Что должен иметь в виду веб-разработчик при проектировании и реализации серверных скриптов, чтобы максимально обезопасить свой сайт от злоумышленников? Что такое Cross-Site Scripting и как он него защититься?

14. SQL-инъекции. Объяснить суть этой уязвимости. Какие СУБД, языки программирования и интернет-протоколы подвержены этому типу аттак? Какой вред могут нанести SQL-инъекции? Привести пару примеров. Как от них защититься? Как определить, вероятно ли выполнение инъекции применительно к конкретному веб-сайту?

15. Всё про пароли и имена пользователей. Сложность паролей. Какие пароли считаются надёжными, а какие – нет? Как хранить пароли в веб-приложении? Принцип работы salt. Как лучше всего осуществить авторизацию пользователя (проверку на соответствие введённого пароля с сохранённым в базе данных веб-приложения)? Как хранить сохранённый пароль в сессии или в cookies? Какие существуют способы, чтобы добиться от простых пользователей высокой культуры управления своими паролями?

Каких тем точно не будет?

Вам не нужно детально вникать в политики безопасности, в защиту сетевого (L3) и более высоких уровней OSI, в режимы шифрования блоками (CBC, ECB, OFB), в математику Диффи-Хелмана, в демилитаризованные зоны фаерволов и во все другие вопросы, которые мы немного затрагивали устно на лекциях, но которых нет среди вышеназванных тем.

Ход экзамена

Каждый выбирает наугад 1 карточку. На карточке будет одна из вышеназванных тем для устного ответа + 2 простых вопроса, на которые нужно ответить прямо на карточке (например: “Алгоритм RC4 – это алгоритм шифрования или хэш-функция? Нужное подчеркнуть.”)

Если вам не нравится тема карточки или сопутствующие ей вопросы, вы можете выбрать другую карточку, но в этом случае вы получаете -1 балл (т.е. ваша максимальная оценка статовится 4 балла).

У вас будет 5-10 минут на подготовку ответа. При подготовке запрещается пользоваться конспектом, компьютером, слайдами лекций или другими электронными или печатными материалами.

Разрешается принести с собой шпаргалку в виде одного листа А4, на который вы можете поместить сколько угодно много информации. При подгтовке к ответу можете пользоваться свой шпаргалкой.

При устном ответе можете использовать маркерную доску или чистый лист бумаги и ручку, если это поможет вам в объяснении своей темы.  Времени на устный ответ – 5-7 минут (пока один отвечает, другой готовится, остальные ждут своей очереди).

Оценивание

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

Наличие выполненных и предоставленных на емейл ко дню экзамена домашних заданий (всего их было 2: расшифровка текста методом частотного анализа и аудит Вифи-сетей) склоняет чашу весов в сторону более высокой оценки в неоднозначных случаях.

Компьютерная безопасность: вторая неделя

Домашнее задание-2

Проведите аудит Wi-Fi сетей у себя дома или на работе. Результаты представьте в виде таблицы:

ESSID | BSSID | Channel | Authorization | Encryption | Cipher

где

ESSID – название сети (например, “Mainor”)
BSSID – MAC-адрес точки доступа (например, 00:19:5B:52:AD:F7)
Channel – канал, на котором работает точка доступа (например, 6)
Authorization – требуется ли авторизация для подключния?
Encryption – если авторизация требуется, то какой тип – WEP, WPA-PS или другой?
Cipher – используемы алгоритм шифрования (TKIP или AES aka CCMP)

Ответьте на вопросы:

1. Есть ли в эфире Wi-Fi сети со скрытым ESSID? (Которые не видны Wi-Fi клиентом Windows, но обнаруживаются низкоуровневыми мониторинговыми средствами типа airmon-ng?)

2. Есть ли в эфире сети, представляющие собой несколько точек доступа, объединённых одним именем? (несколько BSSID имеют одинаковый ESSID)

3. Есть ли в эфире различные сети (точки доступа), работающие на одном и том же канале?

4. Каких сетей в вашем эфире больше – защищённых или незащищённых?

5. Какие настройки безопасности использует ваша сет (если вы имеете доступ к настойкам одной из точек доступа).