Hack FAQ

VEiDER

Xakep, номер #049, стр. 048-049

hack-faq@real.xakep.ru

Задавая вопросы, конкретизируй их. Давай больше данных о системе, описывай абсолютно все, что ты знаешь о ней. Это мне поможет ответить на твои вопросы и указать твои ошибки. И не стоит задавать вопросов вроде "Как сломать www-сервер?" или вообще просить у меня "халявного" интернета. Я все равно не дам, я жадный :). И проверяй, пожалуйста, свои письма на ошибки. У меня тоже с русским языком проблемы, но иногда такие шедевры приходят, что просто криптография какая-то :).

Q: Что такое "сканер портов"? Зачем они нужны? И как они работают?
A: Из названия понятно, что это софт, который может сканировать заданный диапазон адресов на предмет открытых/закрытых портов. Работа любого порт-сканера сводится к попытке установить соединение с удаленным хостом на определенный порт, и если соединение удалось, то порт открыт, в противном случае - закрыт.

Q: Могут ли меня засечь, когда я сканю порты некоторого компа?
A: Засечь можно, но ты можешь максимально усложнить эту задачу. Помимо обычного (connect()) сканирования, которое, естественно, легко вычисляется, также существует stealth-сканирование. При stealth-сканировании на порт удаленного компьютера отправляется пакет с флагом SYN - начало установления tcp-соединения. В ответ, если порт открыт, возвращается пакет с флагами SYN/ACK. Таким образом ты узнаешь, что порт открыт, но при этом в файлах журнала соединение не зафиксируется, так как tcp-соединение не было установлено. Существует еще множество способов скрыть попытки сканирования. Многие из них реализованы в сканере nmap (http://www.insecure.org/nmap/).

Q: Я просканил один комп, а сканер показал, что на нем открыто 3575 портов. Как такое может быть?
A: Возможно, но крайне маловероятно, что на сервере действительно запущено такое ненормальное количество сервисов. С другой стороны, на сервере может стоять система защиты от сканирования, типа siphon, которая работает следующим образом: повисает на неиспользуемые порты и при попытке подключения к ним пишет лог.

Q: Сканировал один сервак на порты открытые. Порта три отсканил, теперь он на пинг не отвечает. Это я его своим сканом так зафлудил?
A: Ну, если у тебя широкий канал, а сервак стоит у модемщика, то может ты его и зафлудил... Но вряд ли. Скорее всего, там стояла утилита, выявляющая попытку сканирования, и она добавила тебя в /etc/hosts.deny. Или все та же прога, заметив, что ты сканишь сервак, добавила правило к фаерволу. Методы разные, а результат один - прикрывается доступ к серверу.

Q: Лазал по инету, нашел сервер http-шный. Решил посмотреть, что на нем еще есть, а мой любимый сканер говорит что "host down". Почему я страницу посмотреть могу, а хост по ping'у недоступен?
A: Видимо твой сканер, прежде чем начать сканирование, проверяет, жива ли вообще жертва. Он посылает на нее icmp echo request (ping) и ждет icmp echo reply. Если он этого ответа не получает, то считает, что хост в дауне. Самое тривиальное, что может быть - на сервере прикрыты icmp echo request'ы. Таким образом твой сканер не получает ответа на свой запрос и отказывается сканить хост. У большинства сканеров есть функция не проверять на живучесть сервера, у nmap'а это опция -P0.

Q: Я сижу в локальной сетке у прова. За выкаченные из инета метры плачу деньги, трафик внутри локалки бесплатный. Как можно инет на халяву использовать?
A: Для начала необходимо понять, что абсолютно халявного инета не бывает. За него в любом случае кто-то платит, главное, что не ты. Самый простой вариант - завернуть трафик на соседей. Для этого нам понадобится какой-то прокси-сервер, установленный на компе соседа. Как ему такую "приятность" установить? Есть множество вариантов. Вот один из них: в локалке наверняка много расшаренных ресурсов, открываешь шару на себе и раскладываешь там заранее припасенные трояны. Когда глупые соседи позапускают твои творения, и ты получишь доступ к их машинам, то ставь им хоть wingate и вперед. По аналогии можно поступить с каким-нибудь http-шником или ftp-шником. В общем, неважно как, главное, чтобы скачали и запустили. Правда, получится не очень красиво, так как весь трафик будет идти через одного человека, и он очень быстро это заметит. Лучше написать простую программу, которая будет распределять твой трафик на всех.

Q: Хотел я один сервер ломануть. Просканил его nmapом с -O, он определил, что там SunOS 4.1.1 - 4.1.4, а netcraft показал на Microsoft IIS/4.0. Как они ИИС на SunOS поставили?
A: ИИС на SunOS они поставить не могли, разве что под эмулятором. Скорее всего, просто сменили баннер апачу. То что nmap определил там SunOS, тоже не говорит о полной достоверности данных. Ибо fingerprint можно подделать.

Q: Вот вы говорите снифить, а что снифить-то?
A: Снифить данные. Например, можно снифить пассы, которые идут в незашифрованном виде. Одним из примеров сервисов, не шифрующих свои пароли, является ftp. Вот пример работы sniffit'а с ftp: "USER victim.. PASS c001Pa5S.. REST 0.. PWD.. CWD /.." и так далее. В данном примере видно, что пароль пользователя идет в незашифрованном виде. Теперь только остается ввести login: victim, password: c001Pa5S. Но современные сниферы обладают гораздо большими возможностями, чем просто перехватывать пакеты, проходящие в сети. Например, dsniff может перехватывать файлы, которые передаются при помощи nfs (network file system).

Q: А какие сервисы, кроме ftp передают пароли в незашифрованном виде?
A: Из наиболее распространенных: pop3, telnet, irc, всякие там mud'ы. Потом, естественно, можно перехватывать пароли к cgi'шкам, которые в запросе отправляются. Например, можно перехватить такое - "GET /cgi-bin/user.cgi&id=victim&pass=c001Pa5s HTTP/1.1".

Q: А как можно сканить порты при помощи ftp-серверов? Это ведь действительно так?
A: Да, действительно можно. У ftp-серверов существует возможность подключаться к клиенту, а не открывать порт на себе. Вот этим-то и надо воспользоваться. Посылаем серверу команду "PORT 192,168,100,1,46,46" и ждем результата. Этот вид сканирования реализован в nmap'е. Для того чтобы воспользоваться этим методом, необходимо указать nmapу опцию -b user:password@server:port. Но есть одна проблема: далеко не каждый сервер позволит тебе подключаться к порту < 1024 и к IP, отличному от твоего.

Q: Слышал про атаку dns-spoofing, что это такое и зачем применяется?
A: Данная атака применяется для подмены своего реального hostname'а. Допустим, есть некоторый smtp-сервер, который позволяет пересылать почту только клиентам из определенного домена. Например, сервер mail.localdomain принимает почту только от машин client1.localdomain, client2.localdomain, client3.localdomain и так далее, а тебе надо послать письмо именно через этот сервер. Тут-то и начинается dns-spoofing. Ты заваливаешь mail.localdomain сообщениями, что твоему IP-адресу соответствует имя client4.localdomain. Таким образом, когда ты подключишься, сервер определит твое имя как client4.localdomain и даст тебе отправить твое письмо. Но есть несколько проблем: первое - сервер может проверять, от кого пришел днс-ответ, и ждать его от определенного сервера. Тогда для успешного проведения атаки нам надо знать адрес правильного днс-сервера. И второе - наш ответ должен прийти раньше, иначе сервер будет знать наше настоящее имя.

Q: Решил я у себя в школе пароли поснифить. Принес туда свой любимый снифер, запустил и... ничего. Дома в локалке между двумя компами все ловил, а тут никак не хочет. Почему?
A: Ничего удивительного. У тебя дома сетка, наверное, по tcp/ip собрана? Вот и снифер твой по этому протоколу трафик ждет, а у новелла-то не tcp/ip, а ipx. Вот и получается, что твой снифер ничего поймать не может. Для перехвата пакетов в сетках на основе ipx тебе понадобится пакетный драйвер (это такая прога резидентная, которая позволяет интерфейсом управлять) и, соответственно, снифер, понимающий этот пакетный драйвер.

Содержание
ttfb: 653.94496917725 ms