Есть только это пространство, полностью знакомое, в котором нет никаких неожиданностей.
Оно полностью освещено, каждый сантиметр под присмотром.
Но за границей периметра непроглядная тьма такая, что и на метр ничего не разглядеть.
И из этой тьмы тянутся руки. Вооруженные руки. С одной целью — уничтожить весь этот свет.
И вот из тьмы показывается пистолет. Хорошо известно как он выглядит и на что он способен. Desert Eagle.
Но как понять чья рука его держит?
Это наёмник, который и глазом не моргнёт перед выстрелом, или дошкольник, который едва удерживает пистолет, и выстрел из которого его самого убьёт?
Кажется, вступление получилось намного интереснее самой статьи.
Давайте я попробую ещё раз, менее литературно.
Работа над ошибками
Пять лет назад, когда я писал диплом, мне мой дипломный руководитель предложила тему по классификации нарушителей безопасности. В тот момент нам показалось, что тема маловата для диплома, но часть наработок всё же пошла в дело.
Годы прошли, но часть вопросов, которые были подняты в моём дипломе, до сих пор меня волнует.
Я более чем уверен, что я очень многое упустил в классификации нарушителей и хотел бы увидеть ваши мысли по этому поводу в комментариях.
Теперь точно начало
Можно ли использовать классификации нарушителей безопасности иначе, кроме как для создания модели нарушителя безопасности?
Мой диплом был в частности о том, что да, можно.
Но для начала давайте разберемся с определениями.
Вместо длинного словосочетания «нарушитель безопасности» я буду использовать «хакер». В конце концов у нас не академический журнал, чтобы использовать бюрократически выверенные формулировки.
Сначала я думал, что классификацию нужно проводить по «силе» хакера. Но тогда пришлось дать определение что же такое «сила хакера». В итоге получилось что-то в духе «Сила — величина ущерба, который может нанести хакер системе». Дальше пришлось бы говорить про то каким образом мы определяем ущерб: в денежных затратах на устранение последствий атаки, во времени простоя или устранения или ещё какой-нибудь эквивалент.
Но я принял соломоново решение и отошёл вообще от силы и классифицируем хакеров по опасности для атакуемой системы. Ну а что подразумевать под опасностью тут уже решайте сами.
Классифицируем?
Итак, мы пришли к классификации хакеров по опасности для системы. Ну а как можно классифицировать? Да можно взять три градации: «низкая опасность», «средняя опасность» и «высокая опасность».
Всё, разобрались. Спасибо, что прочитали мою небольшую статью, я рад, что вы потратили на неё своё время.
На самом деле мы потихоньку приближаемся к проблеме, которая меня волнует: можно ли автоматизированно классифицировать хакеров?
Поэтому сначала посмотрим что есть сейчас.
Мне удалось найти два основных подхода:
- по ресурсам;
- по знаниям.
А теперь посмотрим что же мне в них не нравится.
Классификация по ресурсам
Эту классификацию можно найти у ФСТЭК. Если быть точнее, то классифицируют они не самих нарушителей, а их потенциал:
- Нарушители с базовым (низким) потенциалом.
- Нарушители с базовым повышенным (средним) потенциалом.
- Нарушители с высоким потенциалом.
В нарушители третьей категории отнесены «Специальные службы иностранных государств (блоков государств)».
По сути, классификация говорит о том сколько людей, времени и денег может потратить на атаку хакер (ну или хакерская группировка). Спецслужбы могут позволить себе потратить практически неограниченные денежные ресурсы, а для разработки методов проникновения нанимать целые научные институты.
И вот тут возникает вопрос каким образом можно классифицировать хакеров автоматически. И выясняется, что возможностей для этого мало, потому что нельзя спросить у хакера «сколько ты готов потратить денег чтобы меня взломать?».
Разве что можно использовать какие-нибудь анти-APT решения могут что-то проанализировать и причислить зафиксированную атаку к какой-нибудь международной хакерской группировке, на которую повесили ярлык «правительственная».
Либо уже при расследовании инцидента экспертным методом определить сколько сил и средств было затрачено и сколько человек в этом участвовало.
Классификация по знаниям
Такая классификация обычно выглядит как-то так:
- Скрипт-кидди.
- Хацкеры.
- Хакеры высокого уровня.
Градация примерно понятна, что скрипт-кидди сами не пишут эксплоиты, тащат чужое, хацкеры уже могут что-то настроить под себя и сносно использовать инструментарий для пентеста, а хакеры высокого уровня ищут уязвимости и пишут под свои нужды эксплоиты. В зависимости от автора классификации определения (и названия) категорий могут быть разными — то, что я написал очень усредненная и сокращенная версия.
Так в чём проблема?
Проблема в том, что нельзя дать написать атакующему какой-нибудь ЕГЭ.
В условиях неопределенности сложно сделать вывод о знаниях. Даже в более контролируемых условиях экзамена выводы могут быть неправильные.
Детектировать инструментарий?
Ну, можно попробовать. Но нет гарантий, что хакер высокого уровня не будет использовать более простые инструменты. Тем более, если он не знаком с какой-то технологией. Он в своих попытках может опуститься даже до уровня скрипт-кидди, что не сделает его менее опасным, ведь после того как он пройдёт сложный для него участок он снова вернётся на третий уровень опасности. Также не стоит забывать, что все инструменты продаются, либо утекают в открытый доступ. Использование высокоуровнего инструмента может повысить шансы «на успех» и сделает в какой-то краткосрочной перспективе человека, его использующего, более опасным, но в целом-то ничего не изменится.
Т.е., по сути, я говорю о том, что такая система подвержена ошибкам и первого, и второго рода (как завышение опасности, так и занижение).
Может проще?
Есть ещё метод, который я использовал в своём дипломе — использование CVE, а если быть точнее, то CVSS.
В описании уязвимости CVSS есть такая строка как «сложность эксплуатации».
Корреляция довольно простая — если уязвимость сложно эксплуатировать, то и человек, который смог её эксплуатировать, более опасен.
Кажется, идеально: смотрим какие уязвимости эксплуатирует хакер, ищем их в базе и присваиваем хакеру оценку опасности. Так что же мне и тут не нравится?
Оценку эксплуатации уязвимости производит эксперт. А он может ошибаться в оценке, он может иметь свой интерес (намеренно занизить или завысить оценку), да ещё что угодно, ведь это человек.
Кроме того эксплоит под уязвимость можно купить. Порой реализация может быть настолько направленной «на покупателя», что остаётся только нажать условную кнопку «хакнуть» и сложность эксплуатации для хакер падает примерно до нуля.
Вместо выводов
Задумавшись над решением этой задачи я понял, что, в общем-то, я решить её не смогу — у меня нет необходимых знаний.
Быть может Хабр подскажет по каким критериям можно классифицировать хакеров? Быть может я пропустил очевидный подход?
А самое главное — нужно ли это вообще?
Быть может этот пост будет полезен студентам, которые выбирают тему для диплома.
Не смотря на чрезвычайно простую постановку вопроса («как определить уровень хакера?») дача ответа совершенно не очевидна.
Чем-то похоже на машинное зрение и распознавание образов.
Только намного скучнее.