|
VoIP под прицелом
Xakep, номер #048, стр. 048-074-2 Однако, всякие Land, Targa, TFN2K, Stacheldraht, mstream и их сотоварищи - не единственные способы задосить выбранный шлюз или IP-телефон. Внимательно изучив стандарты, можно попробовать несколько простейших способов разрыва соединения между абонентами. Например, в протоколе SIP, который становится все более популярным, для этого можно задействовать команды CANCEL и BYE, которые отменяют обработку переданных ранее запросов и завершают соединение соответственно. Допустим, на твоей работе вовсю используются современные технологии, в частности IP-телефония. Также вместе с тобой работает девушка с редким именем Алиса, к которой ты питаешь нежные чувства. Но она к тебе равнодушна и благоволит твоему сопернику Борису (вот негодница!). Ты хочешь расстроить планы их совместного времяпрепровождения и планируешь помешать им общаться по телефону. Когда Алиса набирает номер Бориса, ее телефон посылает запрос INVITE, приглашающий Бориса к разговору. В процессе определения местонахождения телефона Бориса, телефон Алисы получает ответ 100 Trying ("ждите ответа"). После обнаружения телефона в ответ Алисе посылается сигнал 180 Ringing, а в случае желания пообщаться - сигнал 200 OK ("Хочу"). Вот здесь-то ты и вступаешь в дело, посылая Борису запрос CANCEL, который отменяет все ранее переданные запросы и ответы от Алисы. Однако есть три тонкости: * Запрос CANCEL посылается до того, как Борис пошлет сигнал 200 OK. * Должна быть программа, которая может создавать любые SIP-запросы и SIP-ответы с заданным содержанием. * Необходимо прослушивать сетевой трафик в поисках SIP-взаимодействия. Прослушать SIP-взаимодействие не составляет труда, т.к. RFC 2543 доверяет шифрование внешним разработчикам. Можно поступить проще - не ловить момент между ответами 180 Ringing и 200 OK, а послать запрос BYE, посылаемый каждому из абонентов в отдельности или обоим сразу (это можно сделать и после 200 OK). Во всех случаях соединение будет завершено и разговор не состоится. Наконец, можно поступить и иначе, воспользовавшись специально посланными сообщениями об ошибке: * 4xx - в запросе обнаружена ошибка; * 5xx - запрос не может быть обработан из-за отказа сервера; * 6xx - соединение с вызываемым абонентом установить невозможно. Бывает и так, что IP-телефон получает свою конфигурацию, обращаясь к специальному Web-серверу, или имеет в своем составе встроенный Web-сервер (например, некоторые модели Cisco IP Phone). Некорректный запрос к этому серверу (длинный URL или некорректное значение какого-либо параметра) приводит к перезагрузке или реинициализации IP-телефона. Например, обращение по адресу http:// |