Russian
Интернет находится в нормальном состоянии, крупных эпидемий и других серьезных инцидентов службой мониторинга «Лаборатории Касперского» не зафиксировано. Уровень опасности: 1
Все угрозы
выбрать автора
2010 Янв Фев Мар Апр Май Июн Июл Авг Сен Окт Ноя Дек
Новые
постинги
Топ по
рейтингу
Топ по посещаемости

Станьте автором

Стать автором нашего блога можно, достигнув рейтинга «+100». На ваш рейтинг влияет оценка ваших комментариев другими посетителями сайта.

Новости |Интерпретации байткода для x86 процессоров: подводные камни

Георг Вишерски
Эксперт «Лаборатории Касперского»
опубликовано 29 июл 2010, 11:56  MSK
0
 

В процессе работы по созданию эффективной системы generic-детектирования шелл-кода и проверки результатов на сгенерированных случайным образом входных данных мне пришлось применять фаззинг (fuzzing) для тестирования различных дизассемблеров с открытым исходным кодом. В качестве дизассемблера для своего нынешнего проекта я выбрал библиотеку libdasm, ориентируясь на относительно давнюю историю ее развития и лицензию, относящую ее к категории общественного достояния. Однако очевидно, что написание качественного и полного дизассемблера для x86 процессоров – нетривиальная задача в силу сложности набора команд процессоров, основанных на архитектуре x86.

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

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

[~] Verifying shellcode candidate offset 8eb0f0
  008fe0f0[    67a02232e830] > mov al,[0x30e83222]
  008fe0f6[              61] > popa 
  008fe0f7[              f9] > stc 
  008fe0f8[          ff4038] > inc [eax+0x38]
  008fe0fb[            b269] > mov dl,0x69
  008fe0fd[              52] > push edx
  008fe0fe[              3f] > aas 
  008fe0ff[              5e] > pop esi
  008fe100[    1a3dc31168aa] > sbb bh,[0xaa6811c3]
  008fe106[              59] > pop ecx
  008fe107[              9c] > pushf 
  008fe108[................] <

Инструкция по адресу 008fe0f0 виртуализированной памяти расшифровывается неверно:

  • 67 это вышеупомянутый префикс размера адреса
  • a0 это код операции mov al, moffs8
  • 2232 это 16-разрядный адрес, который должен интерпретироваться как операнд
  • e830 не относится к данной инструкции

Исходя из принципа, что при обнаружении экзотической болезни следует проконсультироваться со вторым врачом, я решил попытать счастья еще с одним дизассемблером – библиотекой udis86:

$ udcli -noff -32 -s `python -c 'print 0x8eb0f0'` -c 10 shellcode/urandom.bin 
67a02232         a16 mov al, [0x3222]    
e83061f9ff       call 0xfffffffffff96139 
40               inc eax                 

Отлично – в этот раз инструкция mov дизассемблировалась правильно. И, поскольку последовательность байт e830 уже не интерпретируется как часть операнда, указывающего на память инструкции mov, она теперь верно дизассемблируется как инструкция call rel32. К сожалению, udis86 – дизассемблер, поддерживающий набор команд x86-64, и он расширяет операнд инструкции call, до 64 битов с сохранением знака, вновь приводя к ошибке при дизассемблировании.

Какие же инструкции в действительности «видит» и исполняет мой процессор? Поскольку мы в любом случае имеем дело с эмуляцией кода, мы можем просто установить точку останова (int 3) в начале блока и начать пошаговую отладку под управлением gdb (за вычетом кое-какого мусора):

Program received signal SIGTRAP, Trace/breakpoint trap.
(gdb) disas $eip, $eip+5
=> 0x0804b0c1:  jmp    0x804b134
(gdb) si
(gdb) disas $eip, $eip+10
Dump of assembler code from 0x804b134 to 0x804b13e:
=> 0x0804b134:  addr16 mov 0x3222,%al
   0x0804b138:  call   0x7fe126d
   0x0804b13d:  inc    %eax
End of assembler dump.
(gdb) si
(gdb) si
(gdb) disas $eip, $eip+10
Dump of assembler code from 0x7fe126d to 0x7fe1277:
=> 0x07fe126d:  Cannot access memory at address 0x7fe126d

Таким образом, процессор действительно видит инструкцию call и пытается ее выполнить. В данном случае это могло бы привести к катастрофическим результатам, поскольку позволило бы коду, использующему уязвимость, дающую возможность повышения привилегий для выполнения произвольного кода (вероятнее всего, шелл-коду) преодолеть защиту, обеспечиваемую виртуализацией. Чтобы можно было корректно обработать файл в виртуализаторе необходимо в программе заменить все инструкции, изменяющие регистр EIP, такие как CALL. Однако если такая инструкция не встречается в дизассемблерном листинге, то мы её не сможем корректно обработать.

После установки патча для libdasm (которая, как оказалось, вообще игнорирует префиксы размера адреса при разборе операндов) получаем правильно дизассемблированный код:

[*] 543 shellcode candidate offsets
[~] Verifying shellcode candidate offset 8eb0f0
  008fe0f0[        67a02232] > mov al,[0x3222]
  008fe0f4[................] <
Emulating 008fe0f4: call 0x894229
Emulating CALL instruction from 8fe0f9.

Усвоенные сегодня уроки:

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

Новости |Фишинг как сервис: небожители и прокси-хакеры

Татьяна Никитина
Блогер
опубликовано 26 июл 2010, 11:31  MSK
Сюжеты: Фишинг
0
 

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

Login Spoofer 2010 предлагается для скачивания на хакерских форумах. Он позиционируется как «бесплатный» софт, доступный для зарегистрированных пользователей. С его помощью можно создавать поддельные страницы регистрации в бесплатной почте, социальных сетях, на игровых и файлообменных сервисах, в Skype, PayPal и т.п., а затем продвигать их в фишинговых рассылках. Однако, в отличие от других аналогичных инструментов, Login Spoofer снабжен функцией бэкдора: все конфиденциальные данные, собранные с его помощью, отсылаются без ведома исполнителей на сервер авторов проекта. По свидетельству экспертов, он создан в Алжире и сопровождается документацией на арабском языке, хотя пользовательский интерфейс выполнен на английском.

Таким образом, владельцам фишингового инструмента не нужно самим заниматься «грязной» работой и проводить фишинговые рассылки. Страницы, создаваемые фишерами-посредниками с помощью Login Spoofer, недолговечны, их быстро вычисляют и блокируют. Однако его центральный репозиторий хостится отдельно от страниц-ловушек; обнаружить и нейтрализовать такую инфраструктуру гораздо сложнее. Рядовые исполнители могут по разным причинам выбыть из игры, но вместо них придут другие охотники попытать счастья с новым инструментом. Ту программу, что попала к исследователям Imperva, скачали более 200 тыс. регистрантов.

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

Ссылки по теме

В глоссарии

0
 

Словенская полиция задержала трех молодых людей, подозреваемых в причастности к созданию вредоносной программы, с помощью которой был построен одиозный ботнет Mariposa (исп. «бабочка»).

Двое из них недавно окончили университет в городе Марибор по специальности «Вычислительная техника», третий – студент того же профиля. Полиция совершила несколько обысков и изъяла компьютеры и сопутствующее оборудование. В расследовании принимает участие ФБР. Если вина мариборчан будет доказана, им по местному законодательству грозит до 1 года тюремного заключения за создание и продажу зловреда, который по непроверенным данным продается за 40 тыс. евро. Им могут также вменить несанкционированный доступ к информационным ресурсам, который карается сроком до пяти лет. Суд, скорее всего, состоится на территории Словении.

Интересно, что покажет дальнейшее расследование, ибо данная вредоносная программа, по отзывам экспертов, написана с большим профессионализмом. Она содержит функционал бэкдора, способна загружать на зараженный компьютер другие программы и весьма эффективно распространяется через р2р-сети, USB-накопители и системы мгновенного обмена сообщениями. В составе ботнета Mariposa было выявлено 12,7 млн. IP-адресов, привязанных к ресурсам 190 стран.

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

Новости |Массовые аресты кардеров в Италии

Татьяна Никитина
Блогер
опубликовано 23 июл 2010, 13:08  MSK
Сюжеты: Кредитные карты
0
 

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

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

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

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

0.1
 

В Хабаровске вынесен обвинительный приговор хакеру, грабившему продавцов мобильных телефонов. За кражу денежных средств и неправомерный доступ к компьютерной информации Алексею Жирнову назначена мера наказания в виде лишения свободы на пять лет – условно.

Для молодого менеджера ОАО «Связной ДВ» карьера хакера началась полтора года назад. Работая в одном из магазинов этой торговой сети, Жирнов скопировал пароли и электронные ключи к платежной системе и вместе с приятелем, бросившим институт, попытался получить доступ к расчетным счетам компании. Служба безопасности оперативно пресекла эту попытку, и заговорщики бежали в Москву.

Весной 2009 года начинающий хакер решил вновь попытать счастья и вернулся в Хабаровск. Он проник в магазины компаний «Связной ДВ» и «Евросеть-Хабаровск», скопировал данные для авторизации в платежных системах «Рапида» и «Киберплат» и повез добычу в столицу. Здесь сообщники нашли добровольцев, которые за солидную долю от «прибыли» предоставили в их распоряжение номера счетов для аккумуляции краденого. Схема отъема денег заработала, когда хакеры через интернет получили доступ к расчетному счету ЗАО «Связной Логистика». Они перевели с него более 10 млн. рублей на подставные счета в новокузнецком отделении Альфа-Банка, но воспользоваться награбленным не успели, так как бдительные сотрудники банка заблокировали подозрительные платежные операции.

Жирнов не угомонился и сделал следующий ход – взломал расчетный счет «Связной Логистика» в коммерческом банке «Платина». С него аферисты вывели 4,5 тыс. рублей на счета абонентов мобильной связи и в другие банки. Прежде чем «Платина» заблокировал незаконные операции, они успели снять 1,6 млн. рублей. Жирнов отбыл в Симферополь и оттуда снял со счета ЗАО еще более 4 млн. рублей.

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