Исследование уязвимостей в операционных системах семейства Unix
Журнал: Научный журнал «Студенческий форум» выпуск №39(90)
Рубрика: Технические науки
Научный журнал «Студенческий форум» выпуск №39(90)
Исследование уязвимостей в операционных системах семейства Unix
Аннотация. Надежность функционирования программного обеспечения и работы OC в целом является ключевой задачей разработчиков. Для создания, соответствующего ПО были разработаны различные способы слежения за состоянием вычислительной машины: физические (например, отдельный, встроенный в плату модуль) и виртуальные (в виде установленной на OC программы). Более актуальным и продвинутым будет виртуальный способ контроля функционирования. Следующей частью составной частью надежной OC является ее защищенность. В это же время количество уязвимостей может говорить, как и о уязвимости системы так и о ее возможной простоте и функционале. В этой работе мы хотели рассмотреть и проанализировать уязвимости различных операционный систем, в частности их количество и весомость для каждой системы отдельно.
Ключевые слова: Linux, семейство UNIX, nmap, руткиты.
Введение
Особый вклад в процесс эволюции защитных ОС внесли ведущие разработчики и испытательные лаборатории систем обеспечения сетевой безопасности и средств защиты от несанкционированного доступа, которые на основании проводимых испытаний подтвердили отсутствие недекларированных возможностей, высокую отказоустойчивость встроенных механизмов защиты ОС.
Правила реализации парольной политики и типовые настройки базовых встроенных механизмов управления доступом известны, однако вопрос анализа сложных и временных характеристик успешного получение несанкционированного доступа к пользовательским и системным данным ОС на настоящий момент не подтверждены единым математическим доказательством.
Рассмотрим некоторые статистические данные, рассказывающие какие ОС самые уязвимые.
Таблица 1.
Статистические сведения о уязвимостях в ОС семействах Unix
Название ОС |
Производитель |
Общее число уязвимостей за 2017 год |
Общее число уязвимостей за 2016 год |
Общее число уязвимостей за время ведения статистики |
LinuxKernel |
Linux |
381 |
217 |
1921 |
Windows 10 |
Microsoft |
226 |
172 |
451 |
Windows Server 2016 |
Microsoft |
212 |
39 |
251 |
Windows 7 |
Microsoft |
197 |
134 |
838 |
Windows 8.1 |
Microsoft |
192 |
154 |
542 |
Windows Vista |
Microsoft |
64 |
125 |
814 |
DebianLinux |
Debian |
95 |
327 |
1029 |
UbuntuLinux |
Canonical |
66 |
279 |
867 |
Основные виды уязвимостей, которые рассматриваются в нашем анализе:
1). DoS (DenialofService / отказ в обслуживании) (эксплойт уязвимости приводит к DoS устройства);
2). Обход чего-либо (например, пароля для входа в систему);
3). Исполнение кода (возможность злоумышленником выполнить какую-то команду на устройстве жертвы);
4). Повреждение памяти;
5). Доступ к информации (имеется в виду секретная информация, полученная за счет уязвимости);
6). Увеличение привилегий (в частности для вредоносного ПО);
7). Переполнение буфера;
Использование уязвимостей
Как можно увидеть, количество уязвимостей у большинства ОС только за один 2016 год переваливает за 100. Если у ОС так много уязвимостей, то ими можно воспользоваться.
Получив доступ оп одной их подобных уязвимостей, злоумышленник может сделать многое:
-Установить бесполезную программу и позже потребовать оплатить “подписку”, которую вы естественно не оформляли.
-Загрузить вирус пользующийся ресурсами вашего ПК для собственной выгоды.
-Узнать вашу личную информацию.
-Получить доступ к данный расположенным и привязанным к вашей системе.
-И т.п.
Первое что потребуется сделать перед взломом, это узнать используемую операционную систему. Подробные способы по определению ОС описаны в [1].
Таблица 2.
Краткое описание способов определения операционной системы
Халатность администратора
В данном случае при подключении по telenet вполне вероятно сразу же узнать операционную систему жертвы. Например: RED HAT 6.2 Login: Значит мы имеем дело с операционной системой RAD HAT 6.2
|
PING
Самый простой способ определить, какая OS можно с помощью ping. Ответ сервера на запрос ping будет содержать значение TTL – время жизни пакета, с помощью которого, можно определить OS.
PingIP_жертвы определяем по TTL (время жизни) linux 2.0.x – 64 Win 95 OSR/2 – 32 NowellNetware – 128
|
ShadowScan и другие программы
В сети можно найти огромное количество всевозможных сканеров, которые находятся в открытом доступе и скачать их может абсолютно каждый. Также для пользования данными программами особых навыков не требует. Поэтому ими пользуются как администраторы, так и злоумышленники. Одна из таких программ: ShadowScan – программа позволяющая получить большую часть информации о хосте просто после ввода адреса.
Установить фильтр (netfilter). Например, случае Linux системы помогут несколько подобных правил: iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j LOG --log-prefix «Stealth scan» Первое правило служит для обязательной записи события в журнал. После цели LOG пакет продолжает движение по цепочке условий (в отличие от целей DROP и ACCEPT. Принятые или отклоненные пакеты на дальнейшую проверку не пойдут). Подобные команды настройки фильтров можно так же найти и интернете для любой системы. |
Использование открытых портов
Используя telenet, подключится по открытым портам к жертве и проверить версии серверов. Некоторые сервисы являются специфичными для определенного вида OS, а по их версии можно определить с какой OS имеешь дело. Кроме того, версию ОС иногда можно определить по баннеру сервиса (надписи, которую ты видишь, когда соединяешься с данным сервисом). Если будет IMAP, sendmail, Apache, QPOP то это UNIX. ЕслиIIS,Microsoft FTP и т.д. то это Win NT.
Поверхность атаки каждого сервера, подключённого к сети, можно уменьшить, отключив все необязательные сетевые службы. |
Социальная инженерия
Один из самых интересных\простых способов, чтобы узнать тип используемой OS. Можно пойти совершено разными способами:
Данный способ использует серьёзную уязвимость - человеческий фактор. Защититься от этого достаточно просто и одновременно тяжело, так как многим не захочется или не найдётся времени проверить информацию.
|
Суперпользователь
Злоумышленник может попытаться создать своего пользователя, но при этом его можно будет отследить в логах системы. Либо его могут заметить специальные программы нацеленные на выявление появления несанкционированных пользователей. В таких случаях злоумышленник в очередной раз может воспользоваться набором утилит Rootkit.
Защититься от этого можно настроив брандмауэр вручную, но это будет не эффективно и не безопасно. Проще всего установить хороший антивирус в возможности которого будет входить защита от Rootkit’ов. |
Предположим злоумышленник все-таки узнал вашу OS. Второе, что он должен сделать - это просканировать все порты. Это также можно сделать программами ShadowScan и nmap. Особенно обратите внимание на sendmail, qpop, imap, rlogin, ssh, mount, named, amd, talk. Теперь ему/вам понадобиться эксплоит. Эксплоит - это утилита, реализующия в программе недокументированные или закрытые функции. Можете досать эксплоит на rootshell и technotronic. Также советуем вам посетить BUGTRAQ. Найдите эксплоиты именно для вашей версии. После этого найти противодействие им будет проще. Например, если на хосте злоумышленника стоит sendmail, 9.8.9./9.8.9, то эксплоит под версию sendmail 3.4.3./3.4.3 не сработает. Версии должны полностью совпадать (это для Unix, но есть эксплоиты и под NT). После того, как нашли эксплоит, его нужно привести в рабочее состояние. Для этого нужно его скомпилировать. Все достаточно просто. Обычно эксплоиты написаны на SI,поэтому пользуемся командой gcc (Так же множество способов защиты на этом этапе можно реализовать на уровне компилятора, написав к нему расширение. Подходящие вам расши рения находятся в открытом доступе в интернете). Например вы скачали эксплоит sux.c. Самый простой вариант компиляции:
# gcc -o suxsux.c
Теперь запускаете его командой:
# ./suxимя_жертвы
Также могут потребоваться дополнительные опции в команде. При успехе вы получите shell и ваш UID и GID будет равен 0(root). Теперь вы суперпользователь. Но эксплоиты - это еще не все. Вам еще может помочь NFS. Посмотрите камандойshowmountрасшаренные ресурсы атакуемого хоста. Например:
# showmount -e
имя_атакуемого_хоста
Допустимвывидите:
/usr
/var (everyone)
/home (everyone)
Теперь пора монтировать home( (everyone) говорит о том, что каталог доступен любому по NFS). Монтируем:
# mount
имя_атакуемого_хоста:/home /mnt
Где /mnt -имя вашей папки на компьютере для монтажа. Теперь можно создать в папке какого-нибудь пользователя файл .rhosts с содержанием '+ +'. Теперь можете логиниться в сеть с помощью rlogin.
Заключение
Анализ уязвимостей программного обеспечения в настоящее время является обязательным видом деятельности, выполняемым экспертами испытательных лабораторий отечественных систем сертификации средств защиты информации.
Любой компьютер или сервер нуждается, для полного функционирования, не только в качественных комплектующих, но и в не менее качественном, а главное, безопасном программном обеспечении.