Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги хакеры / журнал хакер / специальные выпуски / Специальный выпуск 47_Optimized

.pdf
Скачиваний:
16
Добавлен:
20.04.2024
Размер:
11.92 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

Поверженный сервер

ти и вычистить все логи. В бинарных журналах наш герой не наследил, поэтому ему нужно было подтереть /var/log/messages и еще парочку текстовых логов, а также не забыть о WWW-журнале access_log (туда здорово наследил эксплоит от TESO). Но прежде чем манипулировать логами, взломщик поставил на сервер руткит. В то время в узких хакерских кругах юзался комплект shv4. Он до сих пор приватный, поэтому ссылку я не дам :). Чтобы установить кит, достаточно выполнить команду «./setup пароль порт», и на указанном порту откроется поддельный демон sshd. Как ты догадался, пароль для соединения взломщик передал скрипту setup. Напоследок сетевой партизан напи-

сал unset HISTFILE, чтобы стереть лог команд, и покинул консоль.

Прицепившись на фейковый демон, хакер стер компрометирующие журналы, а также вычистил /var/log/www/access_log от странных обращений к сценарию index.php. Теперь он полностью поработил сервер Никиты и мог делать с ним все что угодно :). Надо сказать, что хакер очень долго развлекался с этим серваком - доступ прикрыли только после полной переустановки системы.

РУССКИЙ ПРОВАЙДЕР - БАЖНЫЙ ПРОВАЙДЕР

Ни один провайдер не застрахован от уязвимостей, и российский в том числе. Несмотря на свежие версии сервисов некоему взломщику

Магическая заливка через STDIN

Как видишь, если долго мучиться, что-нибудь получится. Но чтобы добиться этого «что-то», хакер должен обладать некоторыми качествами:

1.Внимательность. Взломщик никогда не упустит деталей, даже мелких. Из мелочей может сложиться довольно неплохой результат. Это видно в случае, когда хакер грамотно пропарсил .bash_history и обнаружил там рутовый пароль.

2.Невидимость. Хакер должен заботиться о собственной безопасности, поэтому в его «реквизитах» обязательно присутствуют такие софтины, как SocksCap и SocksChain. Помимо этого, грамотный взломщик никогда не забывает чистить за собой логи.

3.Упертость. Нужно никогда не терять надежду и насиловать сервер по полной программе. Как говорится, настоящий хакер набирает пароль до тех пор, пока сервер не ответит, что он правильный :).

59

Установка приватного руткита

удалось порулить сервером крупного московского провайдера. Удаленная атака была нацелена на бажный WWW-проект, в результате чего злоумышленник получил небольшие права на машине. Все началось с того, что нашего героя заинтересовал проект wtboard. Этот форум выпускается более пяти лет и заслужил доверие многих. Хакер поставил свежую версию борды у себя на машине и начал над ней издеваться - искать какие-ни- будь баги, тестировать на различные WWW-атаки и т.п. Сперва у злоумышленника ничего не получалось, но вскоре ему улыбнулась удача. Наш герой нашел бажную процедуру, которая позволяла интерпретировать зна- чения системных переменных. Скажем, захочется хакеру вставить в CGIпоток переменную data (она является системной), и результат будет роковым - изменится значение $data, что приведет к ошибке при открытии конфига. Это в лучшем случае :). В худшем хакер просто войдет в admin-зо- ну форума без знания пароля. Я укажу два небольших запроса, выполнив которые хакер оказался в админке форума.

http://www.host.com/cgibin/wtb/data?fid=root;;root;;a;;&oper=admininterface&login=root&pass=root&data=/tmp

http://www.host.com/cgibin/wtb/data?fid=root;;root;;a;;&oper=admininterface&login=BDADM FID=root&pass=root&wtbadmin=../../../../../../../../../../../../tmp/wtwrong.txt.

Налицо обычная подмена, в ре-

 

зультате которой будет создан

 

журнал /tmp/wtwrong.txt. Обраще-

 

ние к нему повлечет за собой счи-

 

тывание информации из лога и дос-

 

тупу к админке.

»

 

Админка во всей красе

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

* N I X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Í Å Ï Ð È Ñ Ò Ó Ï Í Û É

 

John The Ripper умеет осуществлять перебор на одни цифры. Для этого используй параметр - i:digits.

Brutus умеет производить брутфорс как по FTP-, так и по HTTPпротоколу (перебор зна- чений различных форм). Кроме этого, переборщик позволяет подключать внешние плагины, которые ты можешь написать сам :).

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

* N I X

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

Í Å Ï Ð È Ñ Ò Ó Ï Í Û É

 

 

 

 

 

 

 

Руткит shv4 ты можешь найти и в публич- ных источ- никах. Правда, это не так-то просто сделать :).

Дырявые скрипты в наше время не редкость. Как правило, хакеры находят их по нестандартным поисковым запросам.

60 ВЗЛОМ ОПАСНАЯ ПРАКТИКА

Удостоверившись, что баг работает, хакер полез на google.com и отправил запрос wtboard. В ответ на поисковой реквест взломщик получил множество ссылок. Одна из них вела на страницу провайдера из Москвы. Это очень заинтересовало нашего героя, и вот он проник на страницу администрирования. Обратившись к разделу темплейт-кода, злоумышленник вбил SSI-запрос, выполняющий системную команду.

<!--exec cmd=”uname -a”-->.

Но взломщика не интересовал файл с аккаунтами. Он закачал wget’ом простой perl-бэкдор и запустил. В результате на порту 37900 открылся шелл, стартующий /bin/sh в интерактивном режиме. Так сетевой партизан получил WWW-права. К сожалению, добиться рутовых привилегий оказалось непросто – ядро было пропатче- но фиксом от grsecurity, а система практически не содержала уязвимых сервисов (оно и понятно: дистрибутив носил гордое имя SlackWare :)).

За абсолютные права хакер готов был пойти на любые извращения. Он решил попробовать один из методов локальной атаки, который заключается в поиске важных данных в системных логах. Сперва взломщик пропарсил /var/log/messages, однако ничего интересного он не обнаружил. Не думай, что наш герой надеялся увидеть там пароли в чистом виде. Он пролистал messages, чтобы найти информацию о каких-нибудь интересных демонах. Последние любят писать аккаунты в свои журналы. К сожалению, поиск не увенчался успехом, поэтому взломщик перешел в каталог /usr/www/logs и открыл редактором документ access_log. Дело в том, что на провайдерском сервере крутился биллинг, позволяющий просмотреть состояние счета. Все бы ничего, да вот только соединение инициировалось по небезопасному протоколу, а в качестве метода передачи использовался GET. Все условия для отлова паролей. Кстати, обычные пользователи в биллинг не пускались - скрипт

анализировал IP-адрес, а лишь затем принимал решение о допуске, но даже это не мешало паролям храниться в текстовом журнале. Так хакер обнаружил пароль от логина alpha. Этот юзер являлся системным и имел рабочий шелл. Хакер предпочитал шпионить в консоли под полноценным аккаунтом, а не под web-правами, поэтому быстро залогинился под alpha. Теперь он мог полноценно передвигаться по домашней директории юзера. В каталоге не было интересных файлов, кроме лога .bash_history. Взломщик всегда проверял его содержимое, надеясь набрести на интересные команды. Он поспешно открыл журнал редактором оболочки mc и стал исследовать лог. В журнале действительно было много интересной информации. Хакер быстро понял, что alpha следит за WWW-ресур- сами, так как вся его работа проводилась в каталоге /usr/www. Помимо этого, работник знал пароль от суперпользователя, посему активно юзал команду su. А зря. Иногда alpha ошибался в команде, а затем «сорил» паролем в консоль. Теперь взломщику ничего не мешало поиметь законные рутовые права. Ведь он подсмотрел пароль, а также имел нулевой gid. Последний позволял переклю- чить права с помощью /bin/su.

Одним зарутанным провайдером стало больше :). Все из-за того, что админ вовремя не настроил фаервол. Фаервол отпугивает хакера: если бы alpha следил еще и за ним, то взломщик вряд ли смог порутать WWW-сер- вер. Хотя кто знает, ведь существует много способов обхода даже самых навороченных фаерволов...

ВТОРЖЕНИЕ К БУРЖУЙСКИМ СТУДЕНТАМ

Бывает, что хакер находит баг, который не позволяет поднять привилегии без использования какого-нибудь заковыристого метода. Так случилось при взломе сервера одного иноземного университета trinity.edu. Хакер даже не знал, в какой точке планеты этот университет, он ломал сервер по заказу. Надо сказать, взлом не обошелся без использования самого хардкорного метода. Сперва хакер начал сканировать Web. Так вышло, что на роутере стоял фаервол, фильтрующий все порты, кроме 21, 22 и 80. Баннер FTPD

Неправильный лог для правильной атаки

 

Все аккаунты как на ладони!

SSI over Web

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Пароль для root занесен в историю

показал, что на сервере крутится SunOS 5.9, которая по тем временам была самой надежной из Солярок. Соответственно, первый метод (использование эксплоита) отпадал сразу. Итак, хакер начал с WWW. Бегло просмотрев скрипты, состряпанные студентами, взломщик наткнулся на занятный сценарий с названием view.cgi, которому передавался всего один параметр - название файла. По-видимому, скрипт создавался, чтобы показывать сишные проекты (когда взломщик ткнул по ссылке, перед ним появился исходник файла project). Особо не надеясь на успех, наш герой изменил значение параметра на /etc/passwd, но это привело к фатальной ошибке. Интерпретатор ругался на то, что не может найти файл /www/students/cgi/ projects/etc/passwd.cpp. Потирая руки, сетевой партизан еще раз поменял значение опции на «../../../../../etc/passwd%00», и сервер без проблем показал файл с аккаунтами. Почему так произошло? Все просто: из-за нулевого байта расширение «.cpp» не было приплюсовано к открываемому документу - функции open() передавался файл /etc/passwd%00.cpp, что факти- чески открывало системный passwd.

Взломщик увидел, что в системе прописаны порядка сотни учетных записей. В таком случае целесообразно применить перебор на пару «login:login», ведь особо одаренные студенты любят устанавливать пароль, равный логину (либо не зада-

ХАКЕРСПЕЦ 10(47) 2004

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

Brutus готов к работе

вать его вообще). Хакер скормил имена студентов специальному скрипту и передал список пар переборщику Brutus. В качестве сервиса был выбран FTP, ибо другие порты фильтровались сетевым экраном. Спустя пару минут, Brutus сообщил, что несколько студентов действительно выбрали пароль, равный логину. Не медля наш герой прицепился к шеллу по SSH и был готов к повышению своих прав.

Поиск информации в логах ни к чему путному не привел. Доступ к историям команд админов был закрыт от посторонних глаз, логи студентов-ламеров не содержали ничего интересного. Наконец, взломщик вспомнил, что пароль может содержаться в .htpasswd. Команда locate .htpasswd показала три подобных конфига. Два из них имели атрибут 400, а последний не содержал полезных хэшей (в документе хранилась строка guest:пароль, но юзер guest вообще не присутствовал в /etc/passwd). Второй поисковый запрос был направлен на нахождение конфигов .htaccess. Их было больше, и почти все хакер мог посмотреть. В одном из таких файлов наш герой нашел ссылку на базу с паролями, который назывался .secure. В нем он обнаружил все юзерские хэши. Этакий дубликат /etc/shadow. Оставалось взять из него рутовый пароль и расшифровать его прогой John The Ripper. Джоник запускался на мощной 4-процес- сорной тачке, которую хакер купил за $100 якобы для математических вы- числений :). Брутфорсер запускался в трех режимах - single, wordlist и all. Стартовый скрипт, который обращался к John, содержал всего три строки.

start.sh - çапуск John The Ripper в разных режимах

./john -single passwd >> crk_passwd

./john -w:big_wordlist.txt -rules passwd >> crk_passwd

./john -i:all passwd >> crk_passwd

Загрузив все четыре камня, взломщик отошел от компа, надеясь, что к его возвращению пароль успешно раскриптуется. Спустя час пароль действительно был расшифрован. Взломщику повезло: в качестве пароля выступало слово «Street00». Кстати, подобное словечко было получено благодаря опции - rules, которая извращает словарные слова, подставляя к ним всякие нулики и меняя регистр букв. Вот, собственно и все. Теперь злоумышленник вошел на сервер под рутом, благо sshd разрешал подобные операции. Проверив, что пароль действительно совпадает с системным, наш герой обменял системный аккаунт на пару сотен WMZ.

ХОЧЕШЬ ЕЩЕ?

Все комбинации методов взлома в рамках одного материала не описать. Бывают случаи, когда взломщику приходится удивляться неработоспособности атак, отработанных годами. Подобные аномалии случаются, если на сервере стоит какая-нибудь антихакерская приблуда (например, IDS). Слу- чается, что бдительные админы сразу пресекают хакерские действия, отключая узел от сети. Если хочешь быть в курсе грамотных взломов, рекомендую читать ежемесячную рубрику «Нашумевшие истории крупных взломов» в журнале Х. E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

P

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Джоник-победитель :)

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

62 ВЗЛОМ ОХОТА ЗА БАГАМИ

Докучаев Дмитрий aka Forb (forb@real.xakep.ru)

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Í Å Ï Ð È Ñ Ò Ó Ï Í Û É * N I X

ОХОТА ЗА БАГАМИ

АВТОМАТИЗИРОВАННЫЙ СБОР УЯЗВИМОСТЕЙ

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

автоматизируют. И воображение их не ограничивается банальным сканером портов под Windows :).

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

Ð

аботу хакера выполня-

безопасности. В отличие от автору-

ют многочисленные

тера, сканер - менее активный

сканеры безопасности,

инструмент, после обнаружения

рутеры и прочие отно-

уязвимости он оповещает о ней

сительно интеллекту-

злоумышленника (интерактивно ли-

альные утилиты. Они круглыми сутка-

бо через лог), а не использует тот-

ми трудятся на шеллах и десктопах,

час же эксплоит. Предмет сканиро-

старательно записывая каждую най-

вания может быть любым: www-

денную уязвимость в журнал.

скрипт, порт дырявого демона, хост

О том, какие реализации автомати-

или даже целая подсеть!

зированного поиска багов встречают-

Помимо сканеров и «комплектов

ся, я поведаю далее.

злых бинарников» существуют гиб-

 

 

 

 

кие эксплоиты. Принцип их работы

ИХ РАЗЫСКИВАЮТ ХАКЕРЫ

немного схож с алгоритмом автору-

 

 

Начнем с классификации софта

тера, однако весь вражеский код за-

 

 

для поиска уязвимостей.

шит в один-единственный файл.

 

Самыми популярными программка-

Гибкий эксплоит тоже сканирует не-

ми являются авторутеры. В их зада-

который диапазон адресов на пред-

чу входит сканирование указанного

мет уязвимости и применяет свой

диапазона адресов на предмет уяз-

арсенал для всех найденных тачек.

вимой службы, проникновение на

Под Windows отличным примером та-

сервер с помощью эксплоита, добав-

кой программки служил бы kaht2

ление нового пользователя с 0-уи-

(RPC DCOM-эксплоит).

дом и запись информации в журнал.

Самое обидное, что автоматические

Главным недостатком подобного

сканеры и авторутеры редко попада-

софта является огромное количест-

ют в публичные источники. Как пра-

во следов (если можно назвать сле-

вило, их выкладывают, только когда

дом нового юзера с правами админа

баг теряет актуальность, либо публи-

:)), им оставляемых на машине-жерт-

куют в урезанном варианте. Собран-

ве. Избавиться от этого достаточно

ную мною коллекцию, уже довольно

серьезного изъяна можно путем мо-

старенькую, ты сможешь найти на

дифицирования shell-кода (подроб-

моем сайте (http://kamensk.net.ru/forb/).

нее об этом читай в Спеце

 

 

 

 

#08.04(45)), например, встроив в не-

ОПОЗНАТЬ И ВЗЛОМАТЬ!

го код, создающий LKM для сокры-

 

 

Хотелось бы рассказать о неко-

 

 

 

 

тия присутствия хакера и т.п.

торых нашумевших в свое время

Не менее распространенными в ха-

авторутерах. Даже если какой-ни-

керских кругах являются сканеры

будь из них уже потерял былую ак-

 

 

 

 

 

 

 

туальность, никто не

 

 

 

 

 

помешает тебе переде-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

лать его под новый

 

 

 

 

 

áàã.

 

 

 

 

 

 

 

С год назад я добыл

 

 

 

 

 

аккаунт на каком-то ха-

 

 

 

 

 

 

 

керском FTP и вытащил

 

 

 

 

 

оттуда файл под назва-

 

 

 

 

 

 

 

íèåì mass-scan.tar.gz. Â

 

 

 

 

 

 

 

архиве оказался авто-

 

 

 

 

 

рутер, да не простой, а

 

 

 

 

 

комбинированный.

 

 

 

 

 

Эксплуатировал автору-

 

 

 

 

 

 

 

тер целых четыре уяз-

 

 

 

 

 

 

 

вимости в bind, lpd, ftpd

Красочный авторутер для бага в sshd

 

 

 

и rpc.*! Последний баг,

 

 

 

 

 

 

 

 

кстати, до сих пор актуален для древних машинок на SunOS, IRIX и HP-UX. В общем, такой мощный пакет заслуживал доверия. Но, как известно, все познается на практике, поэтому я решил проверить работу этого авторутера. Мне пришлось поставить на свою машину дырявый ProFTPD, а затем натравить на него бинарник r00t. Даже не просто натравить, а заставить просканировать весь сегмент. Автоматизированная система выдержала все испытания и успешно справилась с задачей, взломав меня без каких-либо проблем.

Следующий интересный авторутер использовал известный баг в OpenSSH. Ты, наверное, помнишь множество поколений эксплоита x2. Так вот, комплект xssh.tgz содержал в себе сплоит x2, а также два бинарника: Xnet и Xirc.

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

Xirc делал нечто куда более оригинальное. Он заходил в IRC и пытался найти жертву там! Xirc join’ился на определенный канал и проверял всех присутствующих на предмет уязвимости в OpenSSH. Найдя ее, запускал эксплоит и далее по тому же принципу, что и в Xnet.

Этот авторутер успешно тестировался мной в локальной сети одного университета. Практически все демоны в университетской локалке были уязвимы, поэтому Xnet подарил мне целых шесть рутов!

СКАНИРОВАНИЕ МЕСТНОСТИ

Но на все уязвимости авторутеров не напасешься, да и обнаружить их все не так-то уж просто. Тут на помощь приходят сканеры безопасности.

Под *nix-системы существует много различных сканеров, но самый известный из них - nessus. Этот пакет сос-

ХАКЕРСПЕЦ 10(47) 2004

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

Nessus работает!

тоит из двух частей - серверной и клиентской. Перед тем как сканировать сеть на уязвимости, необходимо сконфигурировать nessusd.conf и создать нового пользователя (командой nessus-adduser). Затем можно запускать демон nessusd с параметром - D (в режиме демона). Далее с настройкой можно разобраться и без бутылки: запускаем клиент и в удобных Иксах конфигурируем параметры nessus. Не забудь указать логин и пароль того юзера, которого ты создал консольным nessus-adduser. Пожалуй, после этих шагов nessus готов к автоматизированному сканированию. К каждому найденному багу прилагается подробное описание включая ссылку на багтрак, так что ты всегда будешь знать, каким эксплоитом можно атаковать дырявого пингвина!

Следующий хакерский сканер поможет найти уязвимость по заданному баннеру. Известный grabbb от TESO умеет сканировать сетевую местность с записью в журнал баннеров указанных служб - стоит лишь запустить его в бэграунд с полным логгин-

гом. Именно с помощью grabbb я искал уязвимые FTPD.

Также не могу не рассказать о чудесном сканере strobe, который до недавнего времени вообще был приватным. Он необходим при определении неизвестного сервиса на открытом порте (портах). Кстати, strobe и grabbb объединяет один недостаток – невозможность сканирования диапазонов сетевых адресов. И тот, и другой сканеры понимают лишь отдельные IP-адреса, которые генерируются спе-

циальными утилитами с последующей записью в специальный hostфайл. Как ты догадался, этот файл

èпередается сканеру в качестве параметра.

Strobe умеет находить активный порт и комментировать сервис исходя из записи в /etc/services. Отсутствие всяких рюшечек и тюнингов, надо признать, очень неплохо отразилось на скорости поиска - в тестовом режиме strobe просканировал 254 адреса всего за 20 секунд (сканирование велось по пяти портам). И, наконец, классика. Не стоит забывать о таких монстрах, как nmap.

Этот проект не даром засветился во второй «Матрице»: он прочно вошел в доверие многих хакеров. Ты и без меня знаешь достоинства nmap: сканирование в различных режимах, поддержка диапазонов адресов и портов, спуфинг адреса отправителя и многое другое. Если ты еще не юзал nmap на практике – немедленно иди на www.insecure.org/nmap

èбери свежий релиз сканера. Не пожалеешь :).

НЕ ЗАБУДЬ ПРО WINDOWS!

Но не всегда удобно пользоваться Unix-консолью (элитные чу- ваки сидят под любимой Виндой, а *nix видят только в окошке Virtual PC :)). Многие люди предпочитают интеллектуальные сканеры под Винду. К примеру, такие сканеры способны не только определить сервис на открытом порте, но и обнаружить уязвимость в сервисе, привести ссылку на багтрак! Самый популярный в рунете среди них, пожалуй, XSpider.

Этот сканер ведет проверку на многие уязвимости и в конце процесса выводит подробный отчет. Поддерживает эвристические методы определения версии демонов. Журнал пригодится не только бдительному админу сервера, но и хакеру, который только и ждет свежей инфы о багах. Ознакомься с реальными возможностями сканера, стянув его по ссылке http://www.ptsecurity.ru/ download/xs7demo.zip. К сожалению, проект уже давно является коммерческим :(, но демо-версия вполне юзабельна.

63

КОМПАКТНЫЕ ПАРТИЗАНЫ

Я уже упоминал выше о "продвинутых" эксплоитах, которые изредка мелькают на сайтах, посвященных компьютерной безопасности. Они позволяют не только порутать сервер, но и просканить диапазон адресов на баг. К сожалению, обычно подобные вещи ориентированы на Win-уязвимости, поэтому ты наверняка вообще не слышал об автоэксплоитах для Linux.

Тем не менее, подобные вещи есть. Одна из них называется linux_lprngautorooter. Этот эксплоит ориентирован на баг в lpr. Скомпилированный бинарник выполняет сканирование подсети, а затем атакует нужный сервер. После успешного эксплуатирования lprgautorooter открывает

Поиск суидных бинарников

Описание найденных уязвимостей

рутовый шелл. Естественно, что все действия сразу же заносятся в лог взломщика.

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

ОТДАМ В ХОРОШИЕ РУКИ

На этом наше знакомство с программами, автоматизирующими поиск уязвимостей, завершается. Весь упомянутый софт ты можешь скачать с http://kamensk.net.ru/forb/1/x/autoroot. Даже если какой-либо баг, реализованный в авторутерах или автоэксплоитах, уже потерял актуальность, никто не мешает тебе попробовать адаптировать их под новые уязвимости. E

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

* N I X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Í Å Ï Ð È Ñ Ò Ó Ï Í Û É

 

Будь осторожен! Некоторые авторутеры отсылают информацию не только тебе, но и своему автору :).

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

* N I X

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

Í Å Ï Ð È Ñ Ò Ó Ï Í Û É

 

 

 

 

 

 

 

64 ВЗЛОМ БАЗА ДАННЫХ ПОД ПРИЦЕЛОМ

Крис Касперски aka мыщъх

БАЗА ДАННЫХ ПОД ПРИЦЕЛОМ

ВЗЛОМ БД

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Äанные - это основа всего. Тут и номера кредитных карт, и личная информация пользователей, и сведения об угнанных машинах. Содержимое чатов и форумов тоже хранится в БД. Проникновение в корпоративную (военную,

правительственную) базу данных – самое худшее, что только может случиться с компанией. Поразительно, но даже критические сервера зачастую оказываются никак не защищены и взламываются 12-летними любителями командной строки без особых усилий.

 

Ñ

ервера баз данных от-

 

носятся к наиболее

 

 

 

критичным информа-

 

 

 

 

ционным ресурсам и

 

 

 

потому должны разме-

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

Размещать сервер базы данных на одном узле с Web-сервером категори- чески недопустимо не только по техническим, но и по юридическим соображениям (законодательства многих стран диктуют свою политику обращения с конфиденциальными данными, особенно если эти данные хранят информацию о клиентах компании). Тем не менее, совмещение сервера БД с Web-сервером довольно обыч- но из-за экономии. Захватив управление Web-сервером (а практически ни одному Web-серверу не удалось избежать ошибок переполнения буфера и прочих дыр), атакующий получит доступ ко всем данным, хранящимся в базе!

Сервер БД, как и любой другой сервер, подвержен ошибкам проектирования, среди которых доминируют переполняющиеся буфера, позволяющие атакующему захватывать управление удаленной машиной с наследованием администраторских привилегий. Яркий пример тому – уязвимость, обнаруженная в сервере MS SQL и ставшая причиной крупной вирусной эпидемии. Не избежал этой участи и MySQL. Версия 3.23.31 падала на запросах типа select a.AAAAAAA…AAAAAA.b, а на соответствующим образом подготовленных строках – передавала управление на shell-код, причем атаку можно было осуществить и через браузер, передав в URL уязвимому для SQL-инъек- ции скрипту что-то типа: script.php?index=a.(shell-code).b.

Однако даже защищенный брандмауэром SQL-сервер может быть атакован через уязвимый скрипт или

нестойкий механизм аутентификации. Разумеется, я не могу рассказать обо всех существующих атаках, но продемонстрирую пару-тройку излюбленных хакерских приемов.

НЕСТОЙКОСТЬ ШИФРОВАНИЯ ПАРОЛЕЙ

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

На практике же во многих серверах БД обнаруживаются грубые ошибки проектирования. Взять хотя бы MySQL версии 3.x. Хэш-функция, используемая для "сворачивания" пароля, возвращает 64-разрядную кодированную последовательность, в то время как длина случайно генерируемой строки (random-string) составляет всего лишь 40 бит. Как следствие, шифрование не полностью удаляет всю избыточную информацию и анализ большого количества перехваченных check-string/random- string позволяет восстановить исходный хэш (пароль восстанавливать не требуется, так как для аутентификации он не нужен).

В несколько упрощенном виде процедура шифрования выглядит так:

//P1/P2 – 4 левых/правый байта парольного хэша соответственно

//C1/C2 – 4 левых/правый байта randomstring соответственно

seed1 = P1 ^ C1; seed2 = P2 ^ C2 ; for(i = 1; i <= 8; i++)

{

seed1 = seed1 + (3*seed2); seed2 = seed1 + seed2 + 33; r[i] = floor((seed1/n)*31) + 64;

}

seed1 = seed1+(3*seed2); seed2 = seed1+seed2+33; r[9] = floor((seed1/n)*31);

checksum =(r[1]^r[9] || r[2]^r[9] || r[7]^r[9] || r[8]^r[9]);

Нестойкие механизмы аутентификации встречались и в других серверах, однако к настоящему моменту практи- чески все они давно ликвидированы.

ПЕРЕХВАТ ПАРОЛЯ

Для авторизации на сайте в подавляющем большинстве случаев используются нестойкие механизмы аутентификации, разработанные непосредственно самим Web-мастером и передающие пароль в открытом виде. Как следствие, он может быть легко перехвачен злоумышленником, забросившим на одну из машин внутренней сети или DMZ-зоны снифер или создавшим точную копию атакуемого Web-сервера, для заманивания довер- чивых пользователей – тогда логин и пароль они введут сами.

Многие сервера хранят информацию об авторизации в кукисах (cookie), находящихся на машинах удаленных пользователей, и, вместо того чтобы ломиться на хорошо защищенный корпоративный сервер, взломщик может атаковать никем не охраняемые клиентские узлы. Главная трудность заключается в том, что их сетевые координаты наперед неизвестны и атакующему приходится тыкаться вслепую. Обычно эта проблема решается массированной рассылкой почтовой корреспонденции с троянизированным вложением внутри по многим адресам – если повезет, то среди пользователей, доверчиво запустивших трояна, окажется хотя бы один корпоративный клиент. Ну а извлечь куки – уже дело техники.

Некоторые серверы баз данных (в частности, ранние версии MS SQL), автоматически устанавливают пароль по умолчанию, предоставляющий

ХАКЕРСПЕЦ 10(47) 2004

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

Пароль к БД, выловленный снифером

полный доступ к базе и позволяющий делать с ней что угодно (у MS SQL этот пароль "sa").

НАВЯЗЫВАНИЕ ЗАПРОСА, ИЛИ SQL-ИНЪЕКЦИЯ

Типичный сценарий взаимодействия с базой данных выглядит так: пользователь вводит некоторую информацию в поля запроса, оттуда ее извлекает специальный скрипт и преобразует в строку запроса к ба-

зе данных, передавая серверу ее на выполнение:

$result = mysql_db_query("database", "select * from userTable

where login = '$userLogin' and password = ‘$userPassword' ");

Здесь $userlogin – переменная, содержащая имя пользователя, а $userPassword – его пароль. Обрати

Инструментарий для наблюдений за SQL

ВСКРЫТИЕ СКРИПТА

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

Подробнее об этом можно прочитать в моей статье "Безопасное программирование на языке Perl" (kpnc.opennet.ru/safe.perl.zip). Исследуя тело скрипта, можно нарыть немало интересного, например, имена полей, названия таблиц, мастер-пароли, хранящиеся открытым текстом, и т.д.

if ($filename eq "passwd") #проверка имени на корректность

65

внимание, что обе переменные размещены внутри текстовой строки, окаймленной кавычками. Это необычно для Си, но типично для интерпретируемых языков вроде Perl и PHP. Подобный механизм называется интерполяцией строк и позволяет автоматически подставлять вместо переменной ее фактическое значение.

Допустим, пользователь введет KPNC/passwd. Тогда строка запроса будет выглядеть так: "select * from userTable where login = 'KPNC' and password = 'passwd'".

Если такой логин/пароль действительно присутствует в базе, функция сообщает идентификатор результата, в противном случае возвращается FALSE.

Хочешь войти в систему под именем другого пользователя, зная его логин, но не зная пароль? Воспользуйся тем, что механизм интерполяции позволяет атакующему воздействовать на строку запроса, видоизменяя ее по своему усмотрению. Посмотрим, что произойдет, если вместо пароля ввести последовательность "fuck' or '1'= '1" (без кавычек): "select * from userTable where login = 'KPNC' and password = 'fuck' or '1' = '1'".

Смотри: кавычка, стоящая после fuck, замкнула пользовательский пароль, а весь последующий ввод попал в логическое выражение, навязанное базе данных атакующим. Поскольку один всегда равен одному, запрос будет считаться выполненным при любом введенном пароле и SQLсервер возвратит все-все-все записи из таблицы (в том числе и не относящиеся к логину KPNC)!

Рассмотрим другой пример: "SELECT * FROM userTable WHERE msg='$msg' AND ID=669".

Здесь msg – номер сообщения, извлекаемого из базы, а ID – идентификатор пользователя, автомати- чески подставляемый скриптом в строку запроса и непосредственно не связанный с пользовательским вводом. Константная переменная использована по соображениям наглядности, в конечном скрипте будет, скорее всего, использована конструкция типа: ID='$userID'. Чтобы получить доступ к остальным полям базы (а не только к тем, чей ID равен 669), необходимо отсечь последнее логическое условие. Это можно сделать, внедрив в строку пользовательского ввода символы комментария ("--" и "/*" для MS SQL и MySQL соответственно). Текст, расположенный правее символов комментария, игнорируется. Если вместо номера сообщения ввести "1' AND ID=666 --", строка запроса примет следующий вид: "SELECT * FROM userTable WHERE msg='1' and ID= 666 --' AND ID=669" .

Как следствие, атакующий получит возможность самостоятельно формировать ID, читая сообщения, пред- »

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

* N I X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Í Å Ï Ð È Ñ Ò Ó Ï Í Û É

 

Размещать сервер базы данных на одном узле с Web-сер- вером категорически недопустимо не только по техническим, но и по юридическим соображениям.

Сервер БД, как и любой другой сервер, подвержен ошибкам проектирования, среди которых доминируют переполняющиеся буфера.

Многие сервера хранят информацию об авторизации в кукисах (cookie), находящихся на машинах удаленных пользователей.

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

* N I X

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

Í Å Ï Ð È Ñ Ò Ó Ï Í Û É

 

 

 

 

 

 

 

Почти 30% всех скриптов в сети подвержены ошибке SQL-инъек- ции.

Запросы, передаваемые методом POST, протестированы значи- тельно хуже, поскольку передаются скрыто от пользователя и не могут быть модифицированы из браузера.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P

 

 

 

 

 

 

NOW!

o

66

ВЗЛОМ

 

БАЗА ДАННЫХ ПОД ПРИЦЕЛОМ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

назначенные совсем для других

 

ОПРЕДЕЛЕНИЕ НАЛИЧИЯ SQL

 

w

 

 

 

 

 

 

 

 

o

 

 

 

 

.

df

 

 

n

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p

 

 

 

.c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-x cha

g

 

пользователей.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Причем одним лишь видоизменени-

 

 

Прежде чем начи-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ем полей SELECT'а дело не огранива-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

íàòü

атаку на

SQL-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ется, и существует угроза прорыва за

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сервер,

неплохо бы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

его пределы. Некоторые SQL-сервера

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

поддерживают возможность задания

 

 

определить его при-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нескольких команд в одной строке,

 

сутствие, а в идеале

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

разделяя их знаком ";", что позволя-

 

 

– еще и распознать

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ет атакующему выполнить любые

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

òèï.

Åñëè

сервер

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SQL-команды, какие ему только заб-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

расположен

внутри

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

лагорассудится. Например, последо-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вательность " '; DROP TABLE

 

 

DMZ (ãäå åìó íàõî-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'userTable' --", введенная в качестве

 

 

диться

íè

â

êîåì

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

имени пользователя или пароля, уда-

 

случае

нельзя), то

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ëÿåò âñþ userTable!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

атакующему

доста-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Еще атакующий может сохранять

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

точно

просканиро-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

часть таблицы в файл, подсовывая

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

базе данных запрос типа "SELECT *

 

 

вать порты.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FROM

userTable INTO OUTFILE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сервер MySQL, прослушивающий 3306 порт

 

 

 

 

 

 

 

 

 

 

 

 

 

'FileName'". Соответствующий ему

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

URL уязвимого скрипта может выгля-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

деть, например, так:

 

 

 

 

ïîðò

 

 

 

 

 

 

 

 

 

сервер

 

 

 

 

 

 

 

 

 

 

 

 

 

www.victim.com/admin.php?op=login&

 

 

1433

 

 

 

 

Microsoft-SQL-Server

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

pwd=123&aid=Admin'%20INTO%20OU

 

 

1434

 

 

 

 

Microsoft-SQL-Monitor

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

TFILE%20'/path_to_file/pwd.txt, ãäå

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1498

 

 

 

 

Watcom-SQL

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

path_to_file – путь к файлу pwd.txt, в

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1525

 

 

 

 

ORACLE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

который будет записан админовский

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1527

 

 

 

 

ORACLE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

пароль. Удобное средство для похи-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1571

 

 

 

 

Oracle Remote Data Base

 

 

 

 

 

 

 

 

 

 

 

 

 

щения данных, не так ли? Главное –

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3306

 

 

 

 

MySQL

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

размесить файл в таком месте, отку-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Порты, прослушиваемые различными серверами БД

 

 

 

 

 

 

 

 

 

 

 

 

 

да его потом будет можно беспрепят-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ственно утянуть, например, в одном

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

из публичных WWW-каталогов. Тогда

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

полный путь к файлу должен выгля-

строке). Здесь table1

 

– имя таблицы,

 

присутствия потенциально опасных

 

 

 

 

 

 

 

 

 

 

 

 

деть приблизительно как:

содержимое которой необходимо

 

 

 

 

 

 

символов (одиночная кавычка, точка

 

 

 

 

 

 

 

 

 

 

 

"../../../../WWW/myfile.txt" (точная

вывести на экран.

 

 

 

 

 

 

 

 

 

с запятой, двойное тире, а для MySQL

 

 

 

 

 

 

 

 

 

 

форма запроса зависит от конфигу-

 

Атаки подобного типа называются

 

еще и символ звездочки) включая и

 

 

 

 

 

 

 

 

 

 

 

 

рации сервера). Но это еще только

SQL-инъекциями (SQL-injection) и яв-

 

их шестнадцатеричные эквиваленты,

 

 

 

 

 

 

 

 

 

 

 

цветочки! Возможность создания

ляются частным случаем атак, осно-

задаваемые через префикс "%", а

 

 

 

 

 

 

 

 

 

 

 

 

 

файлов на сервере позволяет засы-

ванных на ошибках фильтрации и ин-

 

именно: %27, %2A и %3B. Если хотя

 

 

 

 

 

 

 

 

 

 

 

 

лать на атакуемую машину собствен-

терполяции строк. Мы словно впрыс-

 

бы одно из условий фильтрации не

 

 

 

 

 

 

 

 

 

 

 

 

ные скрипты (например, скрипт, даю-

киваем в форму запроса к базе дан-

 

 

 

 

 

 

проверяется или проверяется не вез-

 

 

 

 

 

 

 

 

 

 

щий удаленный shell

– "<?

ных собственную команду, прокалы-

 

де (например, остаются не отфильтро-

 

 

 

 

 

 

 

 

 

passthru($cmd) ?>"). Естественно,

вая хакерской иглой тело уязвимого

 

ванными строки URL или cookie), в

 

 

 

 

 

 

 

 

 

 

 

 

 

максимальный размер скрипта огра-

скрипта (отсюда и "инъекции"). Это не

 

скрипте образуется дыра, через кото-

 

 

 

 

 

 

 

 

 

 

ничен предельно допустимой длиной

ошибка SQL-сервера (как часто при-

 

рую его можно атаковать.

 

 

 

 

 

 

 

 

 

 

 

 

 

формы пользовательского ввода, но

нято считать). Это

– ошибка разра-

 

 

 

Впрочем, сделать это будет не так

 

 

 

 

 

 

 

 

 

 

 

это ограничение зачастую удается

ботчиков скрипта. Грамотно спроекти-

 

 

 

 

уж и просто. Необходимо иметь опыт

 

 

 

 

 

 

 

 

 

обойти ручным формированием зап-

рованный скрипт должен проверять

 

программирования на Perl/PHP и

 

 

 

 

 

 

 

 

 

 

 

 

 

роса в URL или использованием

пользовательский ввод на предмет

 

знать, как может выглядеть та или

 

 

 

 

 

 

 

 

 

 

 

 

SQL-команды INSERT

INTO, добавля-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ющей новые записи в таблицу.

 

ПРОТИВОДЕЙСТВИЕ ВТОРЖЕНИЮ

 

 

 

 

 

 

 

 

 

 

 

 

 

Скорректированный URL-запрос мо-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

жет быть таким:

 

 

 

Когда ручной поиск дыр надоедает, взломщики, в сердцах обло-

 

 

 

 

 

 

 

 

 

 

 

 

 

http://www.victim.com/index.php?id=12'

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

жив всех Web-программистов смачным матом, запускают свое сред-

 

 

 

 

 

 

 

 

 

 

 

 

 

или таким:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

http://www.victim.com/index.php?id=12+u

 

 

ство автоматического поиска уязвимостей и идут на перекур.

 

 

 

 

 

 

 

 

 

 

 

 

 

nion+select+null,null,null+from+table1 /*.

 

 

Одним из таких средств является Security Scanner, разработанный

 

 

 

 

 

 

 

 

 

 

 

 

 

Последний запрос работает толь-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ко на MySQL версии 4.х и выше,

 

 

компанией Application Security и официально предназначенный

 

 

 

 

 

 

 

 

 

 

 

 

 

поддерживающей union (объедине-

 

 

для тестирования MySQL на стойкость к взлому. Ну, хакерам офи-

 

 

 

 

 

 

 

 

 

 

 

 

 

ние нескольких запросов в одной

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

циоз не грозит. Как и всякое оружие, Security Scanner может ис-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

пользоваться и во вред, и во благо.

 

 

 

 

 

 

 

 

 

 

 

 

 

Фрагмент PHP Nuke, ответственный за формирование запроса к базе

Он позволяет искать дыры как в самом сервере БД, так и в Webскриптах. При этом БД проверятся на предмет уязвимости к атакам типа Denial of Service, наличия слабых паролей, неверно сконфигурированных прав доступа и т.д. В скриптах сканер позволяет обнаружить ошибки фильтрации ввода, дающие возможность осуществлять SQL-инъекции, что значительно упрощает атаку.

ХАКЕРСПЕЦ 10(47) 2004

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

df

 

 

n

 

 

o

 

МНЕНИЕ ЭКСПЕРТА

 

.

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

-xcha

 

e

 

 

 

 

 

 

 

 

 

 

 

 

Никита Кислицин, редактор рубрики "Взлом" журнала "Хакер":

«Базы данных всегда были лакомым кусочком для хакеров. И в этом нет ничего удивительного: в них можно найти миллионы номеров кредитных карт, пароли к сетевым ресурсам, конфиденциальную информацию и даже планы террористических организаций по захвату цивилизованного мира. Увы, порой администраторы сетевых баз данных не уделяют должного внимания безопасности, часто их подводят и программисты, разрабатывающие программные интерфейсы. Следует знать, что в более чем половине случаев взлома SQL-серверов используется технология SQL-инъекции в разных ее проявлениях, то есть эти проблемы лежат на совести Web-программистов. Однако бывают и вовсе комические случаи. За примером далеко ходить не надо. «Xакер» недавно писал о взломе cygwin.com и экспроприации оттуда вкуснейшей базы данных. Высокопрофессиональный админ этого сервера почему-то решил не указывать вообще никакого пароля к администраторскому аккаунту MySQL, что и позволило нашему партизану при помощи детского бага в скрипте совершить столь дерзкую вылазку».

иная форма запроса и как чаще всего именуются поля таблицы, в противном случае интерполяция ни к чему не приведет. Непосредственной возможности определения имен полей и таблиц у хакера нет, и ему приходится действовать методом слепого перебора (blinding).

Однако большинство администраторов и Web-мастеров слишком ленивы, чтобы разрабатывать все необходимые им скрипты самостоятельно, и ча- ще они используют готовые решения, исходные тексты которых свободно доступны в сети. Причем, большинство этих скриптов дырявы как ведро без дна. Взять, к примеру, тот же PHP Nuke, в котором обнаруживаются все новые и новые уязвимости.

Приблизительная стратегия поиска дыр выглядит так. Скачиваем исходные тексты PHP Nukе (или любой другой портальной системы), устанавливаем их на свой локальный компьютер, проходимся глобальным поиском по всем файлам, откладывая в сторонку все те, что обращаются к базе данных (вызов типа mysql_query/mysql_db_query или типа того). Далее прокручиваем курсор вверх и смотрим – где-то поблизости должна быть расположена строка запроса к базе (например: $query = "SELECT user_email, user_id FROM ${prefix}_users WHERE user_id = '$cookie[0]'"). Определяем имена переменных, подставляемых в базу, находим код, ответственный за передачу параметров пользовательского ввода и анализируем условия фильтрации.

В качестве наглядного примера рассмотрим одну из уязвимостей PHP Nuke 7.3, связанную с обработкой новостей. Соответствующий ей URL выглядит так: modules.php?name=News&file=categories&op=newindex&catid=1. По его внешнему виду можно предположить, что значение catid передается непосредственно в строке запроса к БД, и, если разработчик скрипта забыл о фильтрации, у нас появляется возможность модифицировать запрос по своему усмотрению. Для проверки этого предположения заменим catid с 1, допустим, на 669. Сервер немедленно отобразит в ответ пустой экран. Теперь добавим к нашему URL следующую конструкцию "'or'1'1='1" (полностью он будет выглядеть так: modules.php?name=News&file=categories&op=newindex&catid=669'or'1'='1)

. Сервер послушно отобразит все новостные сообщения раздела, подтверждая, что SQL-инъекция сработала!

Еще можно попытаться вызвать ошибку SQL, подсунув ей заведомо неправильный запрос (например, символ одиночной кавычки), и тогда она может сообщить много интересного. Отсутствие ошибок еще не означает, что скрипт фильтрует пользовательский ввод: быть может, он просто перехватывает сообщения об ошибках, что является нормальной практикой сетевого программирования. Также возможна ситуация, когда при возникновении ошибки возвращается код ответа 500 или происходит переадресация на глав-

Команда

Назначение

 

 

CREATE TABLE

создание новой таблицы

DROP TABLE

удаление существующей таблицы

INSERT INTO

добавление в таблицу поля с заданным значением

DELETE FROM …WHERE

удаление из таблицы всех записей, отвечающих условию WHERE

 

 

SELECT * FROM … WHERE

выборка из базы всех записей, отвечающих условию WHERE

 

 

UPDATE ... SET ... WHERE

обновление всех полей базы, отвечающих условию WHERE

 

 

Основные команды SQL

 

 

 

67

SQL-инъекции через строку URL

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

Анализ показывает, что ошибки фильтрации встречаются в большом количестве скриптов (включая коммерческие), зачастую оставаясь неисправленными годами. Естественно, дыры в основных полях ввода дав- ным-давно заткнуты, а потому рассчи- тывать на быстрый успех уже не приходится. Запросы, передаваемые методом POST, протестированы значи- тельно хуже, поскольку передаются скрыто от пользователя и не могут быть модифицированы непосредственно из браузера, отсекая армаду начинающих "хакеров". Между тем, взаимодействовать с Web-сервером можно и посредством netcat (telnet), формируя POST-запросы вручную.

ЗАКЛЮЧЕНИЕ

SQL-инъекции в очередной раз продемонстрировали миру, что программ без ошибок не бывает. Однако не стоит переоценивать их значи- мость. Мавр сделал свое дело, мавр может удалиться. Администраторы и девелоперы знают об опасности, и количество уязвимых сайтов тает с каждым днем. Реальную власть нас системой дают лишь принципиально новые методики атак, неизвестные широкой общественности. Найти их - наша с тобой задача. Освободи свой разум, перешагни грань неведомого и зайди на сервер с той стороны, с которой на него еще никто не заходил. E

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

* N I X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Í Å Ï Ð È Ñ Ò Ó Ï Í Û É

 

Пример программы, осуществляющей запрос в БД

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

* N I X

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

Í Å Ï Ð È Ñ Ò Ó Ï Í Û É

 

 

 

 

 

 

 

68 ВЗЛОМ СЕТЕВАЯ ДАКТИЛОСКОПИЯ

Антон Карпов (toxa@real.xakep.ru)

СЕТЕВАЯ

ДАКТИЛОСКОПИЯ

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

ТЕХНОЛОГИЯ REMOTE FINGERPRINTING

Èдея удаленно определять версию ОС или запущенного на хосте сервиса не нова. Все знают, что популярный сканер nmap, будучи запущенным с параметром -O, пытается определить версию операционки. Известно также, что около

года назад тот же nmap научился определять и версии сервисов, запущенных на сканируемом хосте. Наша задача - понять технологию работы сканера, а также убедиться в том, что одним лишь nmap'ом понятие fingerprinting не ограничивается.

Статью

Fyodor`a, переведенную на русский язык, можно найти по адресу http://www. insecure.org /nmap/nmap -fingerprint- ing-article- ru.html.

От сканирования nmap'ом могут помочь механизмы в OpenBSD PF, нормализующие трафик.

Анализ типа сервиса может быть затруднен сменой баннеров, текстовых комментариев и кодов ошибок.

»

ПАКЕТНЫЕ ИГРЫ

 

 

Сканер nmap, запу-

 

 

 

 

щенный с повышенной

вербозностью (пара-

метр -vvv), выдает при-

мерно следующее:

TCP/IP fingerprint: SInfo(V=3.55%P=i386-portbld- freebsd6.0%D=7/29%Time=410833C8%O=21 %C=-1) T1(Resp=Y%DF=Y%W=FFFF%ACK=S++%Flags =AS%Ops=MNWNNT)

T2(Resp=N)

T3(Resp=N)

T4(Resp=Y%DF=Y%W=0%ACK=S++%Flags=R

%Ops=)

T5(Resp=N)

T6(Resp=N)

T7(Resp=N)

PU(Resp=N)

Многие не обращают внимания, а ведь в этом кажущемся мусоре и содержится вся сермяжная правда об операционке. Это результаты восьми тестов для определения версии ОС; их, разумеется, намного больше, но мы рассмотрим только стандартные. Никто не сможет рассказать о них более подробно, чем Fyodor в своей статье, которая была опубликована в езине Phrack #54 в далеком 1998 году.

Первая строчка - просто информация о системе, на которой работает nmap, версия сканера, оси, на которой он собран, и т.п.

Далее идет набор из семи тестов (T1T7), каждый из которых заключается в посылке специально сформированного TCP-пакета на целевой хост и изучении ответа.

Итак, первый тест – это отправка пакета с установленным флагом SYN на открытый порт. Это штатный запрос, и система обязана на него прореагировать. Ответ (в скобках) интерпретируется следующим образом. Resp=Y означает, что от системы был получен ответ. DF=Y означает, что бит Don't Fragment, выставленный в отправленном пакете, сохранился. W - размер окна (Window Size) удаленной системы. ACK - значение Acknowledge

Number в ответном пакете, S++ говорит о том, что оно было равно полу- ченному ISN (Initial Sequence Number), увеличенному на 1. Flags - флаги в ответном пакете (в нашем случае это SYN+ACK). Ops - TCP-опции (временная метка, Max Segment Size и про- чее), для nmap важно не только их наличие, но и порядок следования - <MSS><NOOP><WindowScale><NOOP><N OOP><TimeStamp>.

Второй и третий тесты (T2 и T3) посылают NULL-пакет (без единого флага) и пакет с установленными флагами SYN, FIN, PSH и URG на открытый порт. Как видно, система не ответила на эти запросы (Resp=N).

T4 - отправка на открытый порт пакета с установленным флагом ACK. По стандарту, описанному в документах RFC, система должна ответить RST-пакетом, так как отправляемое сканером "подтверждение" (Acknowledgment) не связано ни с одним сеансом. Ответ получен (Resp=Y), бит Don't Fragment выставлен, размер окна - 0, из TCP-флагов установлен только RST (Reset connection), чего и следовало ожидать.

Тесты 5, 6 и 7 - также из серии "ненормальных". Пятый тест (T5) отправляет пакет с флагом SYN (но без ACK)

на закрытый порт машины. Шестой - то же самое, только теперь вместо SYN установлен ACK. Седьмой - отправка пакета с выставленными флагами FIN, PSH, URG все на тот же закрытый порт. Наконец, последний тест (PU) - отправка ICMP-сообщения Port Unreachable на закрытый порт удаленной машины.

В четырех последних случаях ответ от хоста не был получен, но, так как ОС все равно опознана как FreeBSD, можно сделать вывод, что админ включил tcp & udp blackholes (sysctl -w net.inet.tcp.blackhole=2, sysctl -w net.inet.udp.blackhole=1), метод, при котором FreeBSD старательно игнорирует провокации ее неправильными пакетами. Догадка верная, ведь админ - я ;). Кстати, помни, что несанкционированное сканирование часто формально считается попыткой проникновения.

БАННЕРЫ

Самый простой способ fingerprinting, не требующий никаких нестандартных инструментов, - это сбор баннеров (banner grabbing). Сервисы (www, ftp, smtp, pop3) готовы рассказать о себе все в ответ на простое подклю- чение телнетом:

ID-òåãè

ХАКЕРСПЕЦ 10(47) 2004