Объяснительная записка
 
23.03.2004
Андрей Соколов


 
стр. 1
стр. 2 >>

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

В количественном отношении именно такие атаки представляют наибольшую угрозу безопасности пользователям домашних компьютеров. Это основной способ размножения автономных сетевых червей вроде знаменитого MS Blast, принесшего многомиллиардные убытки. Лобовые атаки — первый (и, как правило, единственный) аргумент взломщика-любителя, которому по каким-либо причинам потребовалось получить несанкционированный доступ к чужому компьютеру.

Действительно, не нужно быть семи пядей во лбу, чтобы отыскать, скачать и скомпилировать повсеместно доступные эксплойты2, реализующие ту или иную лобовую атаку на открытый вовне уязвимый сервис ОС Windows. И даже этого часто не требуется: многие эксплойты доступны в виде уже скомпилированных программ класса «нажал кнопку — получил результат».

Стандартный набор сервисов и соответствующих им портов в дефолтной инсталляции ОС Windows XP таков (см. табл. выше).

Не мудрствуя лукаво я скачал из Интернета несколько эксплойтов, реализующих лобовые атаки на сервисы ОС Windows XP. Часть из них была сделана «под Linux», поэтому для их компиляции я использовал среду cygwin, позволяющую портировать ПО из Linux в Windows. Для компиляции «родных» Windows-эксплойтов применялся компилятор Microsoft Visual C++ 6.0.

Тест на проникновение

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

Цель теста на проникновение: обнаружить слабые места в защите, осуществив показательный взлом системы.

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

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

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

Илья Медведовский
[idm at dsec.ru]

В успехе первой атаки можно было не сомневаться: в дефолтной инсталляции ОС Windows XP имеется уязвимость, активно используемая пресловутым сетевым червем MS Blast. Суть ее заключается в возможности переполнения буфера в службе RPC DCOM сервиса SVCHOST3.
Итак, я компилирую программу:

privacy@tinyghost/
$gcc oc192-dcom.c -o oc192-dcom.c
запускаю ее:
D:\cygwin>a.exe -d XXX.X.XXX.XX -t 0 -p 135 -l 2000
RPC DCOM remote exploit — .:[oc192.us]:. Security
[+] Resolving host..
[+] Done.
– Target: [Win2k-Universal]:127.0.0.1:135, Bindshell:2000, RET=[0x0018759f]
и спустя пару секунд, получаю…
[+] Connected to bindshell..
– bling bling –
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\WINNT\system32>
…доступ к командной строке.

Рассматриваемую уязвимость можно, без сомнения, назвать академической. Поэтому рассмотрю эксплойт в подробностях.
-  Создается очередь пакетов для провокации сервиса RPC DCOM по какому-либо из доступных на удаленной системе TCP-портов (в моем случае был выбран дефолтный 135-й) по протоколу RPC DCOM. Подготавливается шеллкод4, который должен исполниться после успешной атаки сервиса (удачное исполнение шеллкода и есть условие успеха атаки).



1 Под сервисом операционной системы понимается особый системный процесс, работающий с правами администратора и находящийся в состоянии приема внешних сетевых соединений. «Вступив в особые взаимоотношения с сервисом», взломщик может добиваться исполнения атакуемым сервисом нужного машинного кода и таким образом получать несанкционированный доступ к системе. Результатом успешной лобовой атаки может быть возврат соединения с командной строкой удаленной системе или создание дополнительного пользователя, которым взломщик может воспользоваться для дальнейшего проникновения в систему.
2 Сообщения о найденных уязвимостях распространяются в двух видах: Proof of Concept Theory (доказательство уязвимости в теории) и Proof of Concept Code (доказательство уязвимости в виде реализующего ее использование программного кода). Под эксплойтом, как правило, понимают последнее.
3 RPC DCOM (Remote Procedure Calls Distributed Common Object Model) — основная служба ОС Windows XP, предоставляющая унифицированный интерфейс доступа к ресурсам операционной системы. Посредством сетевых взаимоотношений через эту службу (tcp- и udp-порты 135, 139 и 445) решается широкий спектр задач, начиная от доступа к файлам и заканчивая администрированием системы.
4 Термин «шеллкод» (англ. shell code), дословно «код оболочки», исторически означает машинный код, предоставляющий доступ взломщику к командной строке взламываемой системы. В настоящее время под ним понимают любой машинный код, отправленный взломщиком и исполняемый на атакуемой системе. Почти все современные шеллкоды «завернуты» в XOR/ROR-обертки, модифицирующие внешний вид кода (но не причиняющие ущерба его содержанию), чтобы избегать специальных символов, которые могут оказаться специальными символами-разделителями (символы NULL, CR/LF, etc.) и спровоцировать буквальное их восприятие функцией, обрабатывающей переполняемый буфер.


 
стр. 1
стр. 2 >>

<<Трое в лодке (не считая эксплойта)
Все материалы номера
Моя ХРепость >>