Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Таким образом, никакой, даже самый совершенный и правильно сконфигурированный брандмауэр не защитит вашу сеть (и уж тем более – домашний компьютер) ни от червей, ни от опытных хакеров. Это, разумеется, не обозначает, что брандмауэр совершенно бесполезен, но убедительно доказывает тот факт, что приобретение брандмауэра еще не отменяет необходимость регулярной установки свежих заплаток.
Устанавливаем соединение с удаленным узлом
Сейчас мы рассмотрим пять наиболее популярных способов установки TCP/IP-соединения с атакуемым узлом, два из которых легко блокируются брандмауэрами, а оставшиеся три представляют собой серьезную и практически неразрешимую проблему.
Для осуществления всех описываемых в статье экспериментов вам понадобится:
n утилита netcat, которую легко найти в Интернете и которая у каждого администратора всегда должна быть под рукой;
n локальная сеть, состоящая как минимум из одного компьютера;
n любой симпатичный вам брандмауэр;
n операционная система типа Windows 2000 или выше (все описываемые технологии прекрасно работают и на UNIX, но исходные тексты демонстрационных примеров ориентированы именно на Windows).
bind exploit, или «детская» атака
Идея открыть на атакованном сервере новый порт может «осенить» разве что начинающего хакера, не имеющего реального опыта программирования сокетов и не представляющего, насколько этот способ нежизнеспособен и уязвим. Тем не менее многие черви именно так и распространяются, поэтому имеет смысл поговорить об этом поподробнее.
Рисунок 2. Атакующий засылает shell-код на уязвимый сервер, где shell-код и открывает новый порт N, к которому впоследствии
подключается атакующий, если, конечно, на его пути не встретится брандмауэр
Программная реализация серверной части shell-кода совершенно тривиальна и в своем каноническом виде состоит из следующей последовательности системных вызовов: socket –> bind –> listen –> accept, организованных приблизительно следующим образом:
Листинг 1. Ключевой фрагмент shell-кода, открывающего на атакуемом сервере новый порт.
// порт, который эксплоит будет слушать
#define HACKERS_PORT 666
// шаг 1: создаем сокет
if ((lsocket = socket(AF_INET, SOCK_STREAM, 0)) < 0) return -1;
// шаг 2: связываем сокет с локальным адресом
laddr.sin_family = AF_INET;
laddr.sin_port = htons(HACKERS_PORT);