25 Мая, 2011

Безопасность пингвиненка

Филипп Гриценко
Думаю, что всем надоело дефейсить мелкие сайты, поэтому будем считать, что взломать надо какую-нибудь достаточно крупную(ну хотя бы 7-10 компьютеров) сеть подключенную к интернету.

Скажу сразу, что взламывать сервер не обязательно. Именно эта статья не даст практически никакого опыта, однако она действительно важна для понимания того, как все устроено. Ведь без азов нельзя в будущем написать что-либо действительно хорошее. Именно эта статья начинает мою серию о безопасности линукс и именно она рассказывает, почему xspider полезен, но если он ничего не выдает, то это не значит, что жертва не уязвима(как считают 95% начинающих взломщиков).

В статье описывается именно безопасность linux-систем, так как windows не совсем предназначен для "глубокой" работы с сетью.

Итак, приступим. Начнем, как я уже говорил, с азов. То есть со сканирования сети и получения от нее всей интересующей нас информации. Думаю, что всем ясно, как пользоваться соц. инжинерией. Я не буду углубляться в этот недостойный человека метод и расскажу Вам о настоящих сканированиях сети.
Очень редко используемые, да и мало помогающие базы whois

root@localhost$ whois foo.com
Domain name: ---
Registar: ---
Referall: bar.com

и т.д. Наиболее полезными строками будут registar и referall, т.к. при запросе whois с указанием компании регистратора мы получим наиболее полную информацию. (root@localhost$ whois foo.com@whois.bar.com)

Советую так же применить whois относительно не только какого-то домена, но и по определенному ip адресу. Именно это поможет узнать такие тонкости, как последнее обновление сервера.
Ping, traceroute, host

Про ping, наверное, не надо рассказывать. Много информации от него не получишь, хотя он всегда под рукой.

Traceroute основывается на отправке UDP-пакетов с указанным max-forwards и ожидании ICMP-ответов. Шлет пакеты на порты в диапазоне от 33434 до 33523. Мы видим через какие компьютеры проходили пакеты, можем узнать больше об удаленной машине. И даже если она не уязвима, то можно попробовать в дальнейшем протестировать на безопасность, к примеру, его провайдера.

Host. Сначала расскажу Вам о DNS. DNS является в интернете важным связующим звеном. Без него жизнь была бы не представима. DNS перекодирует имена хостов в их ip и обратно. Все хосты прописываются в файле etc/hosts . Без dns мы могли бы заходить только на те адреса, что находятся у нас в этом файле.

Однако сейчас не о его пользе, а о его вреде. Главное - получить как можно больше информации. И это нам вполне может удастся, если dns создавалась не вручную.

а)При вызове команды host со следующими параметрами можно добиться результатов:
-HINFO указывает конфигурацию сервера, установленное на него ПО.
-ТХТ дополнительная информация о сервере.
(это далеко не все параметры, однако именно они нужны при сканировании сети).

б)Поскольку одна машина может работать некорректно, то создают вторичные dns-сервера, которые являются "запасными".

Проблема в том, что хакер может наряду с администратором создать такую dns.

Если сначала ввести host baz.ru, а потом host baz.ru name_of_server (где name_of_server - ответ на ваш первый запрос), то можно получить список всех хостов для данного сервера с их ip.
Определение ОС и запущенных процессов

Сканирование портов

а)Вот то главное, что необходимо при анализе безопасности компьютера. Зная все открытые порты жертвы можно подключаться к ней через разные прокси и узнавать, какие именно версии программ установлены на нем(например старый sendmail). Так же открытые порты лучше всего позволяют определить запущенную систему, однако не стоит верить во все открытые порты. Иногда открывают порты для windows, когда на сервере стоит linux, что вводит многих в смятение. Каждый порт лучше проверить на действительную работоспособность.

Я предпочитаю сканировать удаленную машину с помощью nmap (именно, той, что была в матрице 2). Все ее параметры Вы легко можете найти в документации, а саму программу найти в интернете не составит абсолютно никакого труда.

Надо заметить, что информация, которую будет передаваться на ваш компьютер при подключении к компьютеру жертвы может быть подменена администратором и определить настоящую версию ОП будет уже не так легко, поэтому сканирования портов может быть недостаточно.

б)Необходимо формировать заведомо некорректные запросы. Тогда ответ сервера может помочь с определением ОС. Для формирования таких запросов я советую использовать nmap (и вообще, nmap лучше других программ такого рода во всем, поэтому использовать нужно его как можно больше).

Однако и формирование запросов не даст результата, если администратор поставил firewall, а это он уж точно сделал.

Однако появилось усовершенствование предыдущего метода. Заключается это усовершенствование в том, что мы не посылаем специальные запросы на сервер, нам достаточно простого подключения к удаленной машине. У каждой системы свои конфигурации соединения и работы по протоколу tcp/ip: DF, Windows Size, TOS, TTL. (главные атрибуты). Получая их мы можем определить установленную на удаленном компьютере систему.

Если сами вы не умеете смотреть свойства соединения, то зайдите на сайт subterrain.net, где вы сможете скачать нужную программу.
Файловая система

Существует интересная возможность собрать информацию благодаря NFS, которая позволяет совместно использовать файлы машинам, основанным на linux. При этом любой человек может(если это не запретили) подключиться к удаленной машине и смонтировать(подключить) жесткий диск жертвы к себе с правами суперпользователя. Если такое подключение и запретили, но команду showmount(что она делает, наверное, догадаетесь сами) - врят ли. Надо заметить, что часто необходимо использовать эту команду с параметрами -а и -е, что покажет все хосты, на которые смонтированы файлы, а так же все хосты, которым это позволено.
Протокол SNMP

Останавливаться подробно я на нем не буду, так как он больше пригоден для взлома(а это тема другой статьи), нежели для сбора информации. Данный протокол позволяет обращаться к различным сетевым устройствам. Главной проблемой его является то, что многие программы работают только с одной из самых ранних его версий, безопасность которой оставляет желать лучшего.

Программы для работы с snmp широко распространены в интренете.
Протокол ONC RPC

RPC является механизмом, который позволяет процессам одного компьютера вызывать некоторые процедуры на других компьютерах. Интересным является тот факт, что за RPC не устанавливаются определенные порты, они сами регистрируются в специальной службе portmap. Portmap поддерживает команду rpcinfo, что позволяет вам увидеть все запущенные rpc процессы на удаленном компьютере.

Я и для этого сканирования предпочитаю использовать nmap.
Заключение

Если вы еще не поняли, почему нельзя(точнее нежелательно) использовать сканер безопасности xspider (или любой другой ему подобный), то вы были не внимательны. А ответ прост: при сканировании жертва легко может заметить сканирование и перекрыть доступ к уязвимым местам системы, а так же подменить выдаваемую информацию, что приведет к полной дезинформации взломщика.

Собственно говоря, используйте все методы сбора информации, может, хоть об одном администратор забыл.

Часть статьи по тому, как собирать информацию о сети я написал. Теперь напишу для администраторов сетей, как не дать злоумышленнику узнать о том, что его интересует. Все это будет описано достаточно кратко, т.к. больше защите я посвящу в последующих статьях. Надо заметить, что в линукс достаточно много потенциальных уязвимостей, однако многие из них решаются одинаковым способом(установкой firewall, к примеру).

Итак, поехали.

1) Базы данных whois.

Здесь все просто. Не давать им данных...

2) Ping, host traceroute

Для отключения ping необходимо настроить политику безопасности относительно echo запросов. Необходимо, чтобы такую возможность имели только определенные узлы. Можно с помощью firewall, можно с помощью политики ipchains(о ней подробно в другой статье). Можно так же отключить саму службу echo в файле /etc/inetd.conf. Закомментируйте строки:
echo stream ...
echo dgram ...

Host: да, здесь сложнее.

а) Во-первых, записи в dns создавайте в ручную. Не пишите информацию в поле hinfo. (остальные поля по усмотрению).

б) При создании вторичных серверов необходимо в файле named.conf указать IP-адреса "разрешенных". (как это сделать, написано в документации, но все же скажу, что сделать это можно с помощью allow_transfer:
...
zone "foo.ru" {
...
allow-transfer {ip.ip.ip.ip;};
...

Traceroute: т.к. указать администраторам других компьютеров что-либо вы не можете, то придется единственное, что вы можете сделать - запретить echo запросы и/или установить firewall. Тогда злоумышленнику будет отправляться сообщение о том, что порт недоступен и информацию о вашей сети он получит не всю.

3)Определение ОС и запущенных процессов.

а)Я предпочитаю программу с www.psionic.com/abucus/portsentry (как вы уже догадались, программа называется PortSentry). Она помогает распознавать наличие подключение к какому-то порту.

Собственно, я уже упоминал о том, что необходимо как можно больше открывать портов с незапущенными на них службами(причем портов для разных операционных систем).

Так как очень часто злоумышленников волнуют telnet и sendmail, то я опишу то, где хранится информация, выдаваемая при подключении к вашему компьютеру(версия службы). В файле sendmail.cf в папке /etc/ необходимо изменить строку smtpgreetingmessage. (это для sendmail, если кто-то не догадался). А для telnet - /etc/essue Там надо удалить всю информацию, которую будут показывать злоумышленнику.

б) Для закрытия возможности получить информацию, использую некорректные пакеты для запроса необходимо просто установить firewall.

При закрытии "пассива" необходимо опять же выдавать заведомо ложную информацию. Для /proc/sys/net/ipv4 параметра ip_default _ttl можно написать echo 1024 и она будет выдавать 1024 при запросе, а на самом деле все не так. Для просмотра остальных параметров исследуйте исходные коды системы.

4)Постарайтесь избегать этой NFS (не как нечисть, конечно). Если все же nfs вам необходим для работы, то запретите подключение к порту 2049 для "не своих". Желательно запретить доступ к nfs программам, так как их безопасность оставляет желать лучшего.

5)Буду немногословным. Надо установить firewall и заблокировать доступ к портам с snmp для чужих компьютеров. Ну и, естественно, использовать как можно более новые версии smtp.

6)Закройте все ненужные порты используя firewall, отключите возможность обращаться к portmaper с помощью все того же firewall.
или введите имя

CAPTCHA