Карта сайта Хакер в RSS Энциклопедия Хакера PDA версия сайта Почтовые рассылки Хакера    Хакер в Twitter Хакер в ВКонтакте Приложение Хакер для Facebook Хакер на Formspring.me
Журнал Новости Форум Видео Life Xakep Live (блоги)
Bugtrack Статьи Блог Поиск English  
Хакер ищет продавцов рекламы Хакер ищет продавцов рекламы
Xakep.ru приглашает стажеров на должность менеджера по работе с клиентами. Резюме присылать по адресу hr@glc.ru....
Анатомия Cryptolocker Анатомия Cryptolocker
Он прост, как автомат Калашникова, но реально опасен. Ведь это он заставил тысячи незадачливых пользователей платить деньги своим создателям и ухитрился поставить на бабки сотрудников полиции Массачусетса (им пришлось покупать биткоины, чтобы расшифровать свои данные)!...

РАСКЛАДКА ПРОТОКОЛА NetBIOS. NetBIOS по полочкам

Матушка Лень (Mlen@mail.ru)

Спецвыпуск Xakep, номер #023


ИСТОРИЯ ПЕРВАЯ (В ДУХЕ КИПЛИНГА)

Как NetBIOS стал Биосом

Когда-то давным-давно (1986 год) фирма IBM припаяла BIOS к своим сверхскоростным сетевым адаптерам Token-Ring. То есть микросхему с базовой системой ввода-вывода (Basic Input/Output System). Базовая система ввода-вывода (BIOS) стоит и на современных компах. Эта маленькая микросхема осуществляет тестирование и настройку большинства железок, а также запуск операционной системы. А как ты хотел? Ведь твой компьютер с выключенным питанием - это куча металлолома, соединенного проводами. Каждый раз, когда компьютер включают, BIOS начинает искать жесткие диски, дисководы, видеокарты... Базовая система собирает все эти разрозненные железки в единый механизм. После того как сбор окончен, очень удобно обращаться к железкам через прерывания BIOS. То есть пара строк на ассемблере может высветить точку на экране монитора или записать байт на поверхность жесткого диска.

NetBIOS (Network BIOS) должен был делать все то же самое, только с сетью. Это было очень удобно и повысило производительность маркерного кольца (Token-Ring). Все дело в том, что сетевые программы смогли обращаться к сети через прерывания NetBIOS. То есть пара строк на ассемблере позволяла передать пакет с данными через сеть. Весь геморрой с протоколами взяла на себя микросхема, запаянная в сетевую карточку IBM, что позволило разгрузить и без того тормозной компьютер. Этот набор сетевых средств оказался очень удобным, его используют до сих пор для разработки простеньких сетевых программ, а называют BIOS API (Application Program Interface), то есть интерфейс прикладной программы с сетевыми службами. Или NetBEUI (NetBIOS Extended User Interface). В исконном NetBIOS не был формализован транспортный и сетевой протоколы. Поэтому API был не полным. Для того чтобы дополнить NetBIOS, ввели протокол NetBEUI, который и служит транспортно-сетевым протоколом. А стек называется NetBIOS/NetBEUI.

Для справки расскажу, что Token-Ring - это эстафетная сеть передачи данных по кольцу. Тот компьютер, у которого есть маркер, имеет право передавать данные после того как он передал маркер другому компу - данные передает другой. Маркер - это служебный кусок информации, передаваемый по сети от машины к машине. На основе Token-Ring сделали такие технологии, как Fast Ethernet и FDDI, которые используются в современных локальных сетях.

А теперь я открою тебе страшную тайну! Настоящий NetBIOS сгинул вмести с адаптерами 86-го года! Все с чем мы имеем дело - это эмуляторы этой микросхемы. На первый взгляд это глупо, но протокол и прерывания этой микросхемы были настолько удобными, простыми и быстрыми, что оказалось выгодным ее эмулировать. Тем более, что IBM открыла информацию о протоколах NetBIOS для всех бесплатно.

ИСТОРИЯ ВТОРАЯ (ЭРОТИЧЕСКАЯ)

Про то, как NetBIOS оказался сверху

Поначалу NetBIOS заменял собой почти все. И многие вещи в нем были очень удобны, но главные недостатки скрывались в отсутствии маршрутизации и в широковещательных запросах. Поэтому теперь NetBIOS бегает поверх IPX (Internetwork Packet eXchange - обмен пакетами международной сети) в операционных системах фирмы Novell. Или поверх TCP/IP в сетях Microsoft. Юниксы, как всегда, ухитряются быть совместимыми и с теми, и с этими.

Оба сетевых протокола умеют переносить на себе пакеты NetBIOS, это позволяет использовать его в таких больших сетях, как Internet. С Novell с его IPX мы заморачиваться не будем, потому что редко хакеру приходится сталкиваться с Novell NetWare (такая сетевая операционная система). Будем разбираться в NetBIOS over TCP/IP, потому что именно в таком виде NetBIOS использует Unix и Windows, а с ними хакер здоровается за руку каждый день, особенно когда сканирует всякие шары! Хотя основные принципы NetBIOS over TCP/IP и NetBIOS over IPX сильно похожи!

Фишка TCP/IP такая: для службы имен NetBIOS использует 137-ой порт TCP/IP, для дэйтаграмм использует 138-ой, а для сессий - 139-й порт. О том, как все это происходит, подробно написано в RFC 1001, RFC 1002. По сути это единственные документы, хоть как-то стандартизирующие NetBIOS, и то там говорится про NetBIOS over TCP/IP (NBT сокращенно). Поскольку этот протокол так и не был стандартизирован полностью, а информация по нему была открыта, поэтому практически каждая фирма придумала свою версию со своими надстройками, которые с другими клонами NetBIOS не работают. Вот и геморятся админы, чтобы заставить работать вместе Винды с Нетварью, Нетварь с Линухом, Линух с Виндами и так далее.

ИСТОРИЯ ТРЕТЬЯ (ФилоСОФТская)

Про власть имен

NetBIOS - первый протокол с человеческим лицом, который позволил простым пользователям пользоваться удобными именами, а не замороченными компьютерными адресами. Уже за это его так полюбили разные канцелярские крысы. Протокол позволил дать компьютеру имя и дать имя группе компьютеров, обычное человеческое имя из шестнадцати символов. Это имя можно использовать как сетевой адрес компьютера. Когда ты в сети Windows видишь группу компьютеров "MyCrazyFriends", а в ней компьютеры: "Pasha", "Sasha", "Klusha" и "Andrusha", это и есть нетбиосовские имена!

Но когда придумывали нетбиос в 84-ом году, никто и представить себе не мог, что сети будут такими огромными. Поэтому решили с именами все сделать дешево и сердито. Когда пользователь регистрирует новое имя в системе, NetBIOS отправляет широковещательный запрос (то есть запрос всем станциям) с новым именем. Если дублей нет, то в ответ ничего не приходит, а если такое имя уже есть, то приходит злобный ответ от хозяина.

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

Цель широковещательных запросов - узнать IP или MAC адрес тачки с нужным нетбиосовским именем. Microsoft для решения этой проблемы предлагает WINS (Windows Internet Name Service - виндовая интернет служба имен) - сервер, на котором хранится список нетбиосовских имен. Вместо того чтобы спамить сеть широковещательными запросами, станция может обратиться к серверу за нужным IP адресом.

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

И, наконец, можно использовать обыкновенный интернетовский DNS (Domain Name System) - как сервер имен NetBIOS. Правда, в этом случае пользователь уже не сможет так вольно распоряжаться именами. Это не очень удобно.

Все запросы и ответы на них у NetBIOS реализованы в пакете сервиса имен. Этот пакет имеет очень много разных модификаций в зависимости от его назначения: широковещательный запрос, запрос о регистрации имени, запрос для WINS или DNS, или проверка имени на существование. В этой статье хватило места только для того, чтобы дать общий формат пакета и заголовок, подробнее читай в RFC 1002. Кстати, для отправки и получения пакетов именного сервиса используется 137 порт TCP/IP.

Как я уже говорило, удобство именного сервиса NetBIOS в том, что ты можешь назначать имена для станций размером в 16 байт (16 символов). Кроме имени станции есть имя группы, то есть можно послать нетбиосовское сообщение сразу нескольким компьютерам с одним именем группы. Эти имена пользователь может менять по своему усмотрению, главное - чтобы они не конфликтовали между собой, то есть не должно быть дублей!

Кроме этих имен возможно обращение по постоянному (permanent) имени, которое складывается из нулей и MAC-адреса сетевого адаптера. MAC (Media Access Control) - контроль доступа к среде, это физический адрес адаптера, прошитый в него намертво производителем.

Хакеру, который любит сканировать и изучать чужие локальные сети, полезно представлять себе работу службы имен NetBIOS. Такой хакер умеет узнавать по IP имя NetBIOS и наоборот. Имена машин в корпоративной сети могут здорово подсказать хакеру способы взлома. И потом, если хакер получил доступ к протоколу NetBIOS, это значит, что скоро он подберет пароль и получит доступ к диску удаленной тачки.

ИСТОРИЯ ЧЕТВЕРТАЯ (СТУДЕНЧЕСКАЯ)

О сессии NetBIOS

NetBIOS - это протокол с установлением соединения (сессии). Это нужно для того, чтобы можно было восстанавливать потерявшиеся в процессе передачи данные. Вообще-то, TCP тоже протокол с установлением соединения, и он тоже умеет восстанавливать данные, которые не дошли (то есть запрашивать их заново). Но поскольку в NetBIOS все так исторически сложилось, будем разбираться с сессиями.

Прежде чем передавать данные, две станции должны установить соединение. Для этого они обмениваются пакетами. Первым делом вызывающая станция должна по нетбиосовскому имени определить IP или MAC адрес другой станции, для этого она использует пакеты сервиса имен. Эти же пакеты используются для того, чтобы выяснить состояние вызываемой станции, вдруг она отключена.

Когда вызывающая станция определилась с именами и адресами, она отправляет запрос на установление соединения. На этот запрос приходит подтверждение установления соединения, отказ или переадресация. При отказе обязательно передается причина (код ошибки), а при переадресации новый адрес. После того как соединение установлено, в сессионных пакетах высылаются пользовательские данные, а в ответ приходят подтверждения. В RFC 1002 про подтверждения ничего не сказано, может быть, их решили оттуда удалить за ненадобностью либо они закопаны куда-то очень глубоко.

Но в первозданном NetBIOS механизм квитирования есть и работает! Квитирование - подтверждение полученной информации специальными ответными пакетами (квитанциями).

На рисунках ты можешь поглядеть общий формат кадра сессий NetBIOS, чтобы узнать подробнее - читай доки. В случае NetBIOS over TCP/IP сессии устанавливаются через 139-й порт TCP/IP.

Через этот же порт работает излюбленный хакерами WinNuke, эта злобная программа передает в порт срочную служебную информацию (Out Of Band) TCP/IP. NetBIOS путается и виснет. Хотя это, скорее всего, не единственный способ завалить NetBIOS, ведь даже в спецификациях нетбиоса указаны буферы, критичные к переполнению. С незапамятных времен известны случаи зависания нетбиосовского драйвера, который валит за собой всю систему. С выхода Windows 3.11 прошло столько лет, а нюк все еще работает даже на самых современных версиях виндов в той или иной модификации. Поэтому надежнее закрыть вообще все порты NetBIOS, смотрящие в глобальную сеть.

Правда, некоторые фирмы не могут это сделать, поскольку используют NetBIOS и Интернет для объединения офисов в разных концах страны в единую корпоративную сеть через Интернет.

ИСТОРИЯ ПЯТАЯ (ПАТРИОТИЧЕСКАЯ)

В один конец

NetBIOS - очень продвинутый протокол. У него даже есть тип сообщений, которые не требуют подтверждения. Такие сообщения часто используются для того, чтобы быстро передавать какую-нибудь не очень критичную к потере информацию. Сообщения, не требующие подтверждения, называются дейтаграммами. Зачем же они нужны? Допустим, ты отправляешь широковещательный запрос, который получат все станции, и если каждая начнет высылать тебе подтверждение, то сеть перегрузится.

Запросы в NetBIOS бывают трех видов. Direct Unique - это персональный запрос только к одной станции. Broadcast - широковещательный запрос ко всем станциям. Direct Group - запрос к станциям с одним групповым именем. Дейтаграммы работают по 138-му порту.

Дейтаграммы применяются, когда мы не боимся потерять часть информации, но когда для нас критичны задержки и размер отправляемого пакета. Не нужно забывать, что все навороты типа установления соединения увеличивают задержки и размер передаваемой инфы. Поэтому реальное видео и аудио через Интернет передается дейтаграммами. Если ты потеряешь пару кадров или пару звуков - это не критично. Но если изображение или звук будут заедать - это не годится. Получается, что NetBIOS способен передавать изображение и звук в небольших сетях, по нему даже можно устраивать мультимедиа конференции.

Перед посылкой дейтаграмм NetBIOS позволяет проверить способности источника принимать этот вид пакетов. Для этого источнику отсылается пробная дейтаграмма, в ответ должно придти либо сообщение об ошибке, либо подтверждение нормальной работы дейтаграммного сервиса.

ИСТОРИЯ ШЕСТАЯ (ХАКЕРСКАЯ)

Не было печали, купила баба SMB

Казалось бы, зачем нужен этот старый полудохлый NetBIOS? Что все к нему так прицепились и не дают спокойно умереть? А все дело в том, что протокол SMB (Server Message Block) долгое время работал ТОЛЬКО через NetBIOS. Конечно, сказались простота и удобство имен, но главное - это поддержка SMB! Этот протокол позволяет организовать доступ к спецпроцессору. А этот спецпроцессор умеет работать с файлами, принтерами и другими ресурсами Windows. Вшитый в систему троян, одним словом.

Как раз в честь этого протокола назвали юниксовую софтину САМБОЙ (SAMBA). Она умеет работать со станциями под управлением Windows или NetWare и использует протоколы SMB, NetBIOS, IPX. Так что хакеры, которые любят хачить винды через юникс, могут не расстраиваться. Конечно, с настройками Самбы придется покопаться, зато в результате компьютерный безобразник сможет подключать к себе чужие винты.

SMB/NetBIOS позволяет творить с удаленной машиной практически все. Вот примерный список его возможных команд:

  1. Создать каталог.
  2. Открыть файл.
  3. Создать файл.
  4. Закрыть файл.
  5. Выполнить все файлы.
  6. Стереть файл.
  7. Переименовать файл.
  8. Получить атрибут файла.
  9. Установить атрибут файла.
  10. Создать уникальный файл.
  11. Создать новый файл.
  12. Проверить каталог.
  13. Конец процесса.
  14. Начать соединение.
  15. Закончить соединение.
  16. Получить атрибуты диска.
  17. Поиск нескольких файлов.
  18. Возвратить очередь печати.
  19. Послать сообщение.
  20. Послать широковещательное сообщение.
  21. Ретранслировать имя пользователя.
  22. Отменить ретрансляцию.
  23. Получить имя машины.

То есть SMB - это простейший механизм удаленной работы с дисками и периферией станции, подключенной к локальной или глобальной сети. Он очень просто настраивается, и поэтому его так любят пользователи. Пытаться добиться чего-то подобного через TCP/IP - страшный гимор, поскольку этот протокол специально создавался так, чтобы что-то хакнуть было невозможно.

Надо ли говорить, что пароли к общедоступным дискам подобрать не проблема, они вряд ли сложнее, чем "мама" или "Маша". Поэтому, если хакер насканировал открытые порты NetBIOS, значит доступен и SMB. А если доступен SMB, значит хакер может подключить к себе чужой диск как сетевой, а еще сможет воровать оттуда информацию, менять ее, стирать ее, да все что в голову придет. Тут WinNuke покажется детской шалостью. Причем если на твоей обычной домашней машине установлен NetBIOS и открыты его порты - это огромный проход для хакеров в твою систему.

ИСТОРИЯ СЕДЬМАЯ (ПОУЧИТЕЛЬНАЯ)

Да надоел он всем, пристрелили его!

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

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

Содержание  





Предыдущие номера


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

    Rambler's Top100