20100908

Symantec Antivirus Crash

Как-то недавно занимался проблемой CFF Font Type 2. И тестировал некоторые PDF. Написан был парсер и генератор фонтов. Ну адобу нагнуть таким вариантом (который я выкладываю) не удалось. Но потом был тест сабжа на virustotal. И в списке антивирусов, проверивших мой сабж - не оказалось Symantec антивируса.
Это наводит на следующие мысли
1) В аверах появились парсеры фонтов для адоб пдф формата.
2) Скорее всего Symantec нагнулся (упал, возможно даже в r0 с эксплуатацией - не проверял).
3) Индусы наверно сейчас ругаются матом (или их ругают).
www.virustotal.com (тест файла)
Выкладываю вам на обозрение сэмпл, чтоб не было пустословия. (возможно к моменту публикации - зарелизили обнолвение).

20100723

Путь, продвижение

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

20100611

Практика отладки инжектов через WinDbg

По просьбам трудящихся, и для новичков любимого форума WASM.RU посвящается.

В данной статье будет рассмотрен прием отладки кода DLL в уже запущенном целевом процессе. Будет показано, как отлаживать инжект имея исходные коды DLL приложения. Вам понадобится заготовка DLL модуля,  среда разработки Microsoft Visual Studio (рекомендую 2003 и выше), и отладчик WinDbg. Предполагается, что читатель уже умеет настраивать проект на сборку DLL, и знает как пишутся DLL модули. Исходник модуля DLL можно взять по ссылке в конце статьи. Так же прилагаю загрузчик (тоже с исходником) инжектирующий DLL в адресное пространство процесса. Загрузчик простой, для тех, кому лень читать и писать что-либо дополнительного.

Настройте среду разработки на генерацию Debug версии DLL, в компиляторе поставьте опцию /MTd (Runtime Library - Multithread debug). Когда будет собран, модуль, без ошибок, можете приступать к чтению следующей части статьи.
Запускаем целевой процесс. Для этих целей можно использовать calc.exe. Далее запускаем WinDbg. Заходим в меню  File->Attach to Process (или просто жмем F6). Выбираем в списке calc.exe. Запоминаем ID процесса.
Далее приводится снимок экрана выбора процесса в WinDBG:

После выбора процесса, не забудем запустить его (нажимаем F5), так как после присоединения отладчика, процесс останавливается (как обычно в ntdll -> DbgBreakPoint).
У вас должно получиться следующее:

Воспользуемся загрузчиком. Загрузчик консольный, требует два параметра. Первый – ID процесса, второй – полный путь к DLL, которую будем отлаживать. Можно конечно обойтись без полного пути, если DLL лежит в системном каталоге (%WINDIR%\system32).
Запускаем:  LoaderDll.exe 7036 D:\DLLForInj.dll
Если процесс завершился без ошибок – значит DLL внедрилась успешно. Если же ошибок нет, а DLL все еще не внедрилась в процесс – то это говорит о том, что проблема с путем или именем DLL модуля. Заглянем в отладчик. Вы должны были заметить, что в исходнике есть инструкция int 3. Она позволит остановиться отладчику на нужном нам месте. Если DLL все таки загрузилась (бинго?), отладчик примет следующий вид:

Дальше можете шагать по комндам по F8 или F10 в зависимости от того, нужно ли входить вам в процедуру.
Важный момент, если вдруг у вас не появилось окна с исходным кодом, попробуйте прописать путь к символам и к исходнику. Для установки путей к символам, необходимо зайти в File->Symbol File Path (либо нажать Ctrl-S). Не забываем включить чекбокс “Reload”. Чтобы символы перезагрузились в рантайме. Чтобы установить путь к исходникам, необходимо зайти в File->Source File Path (либо нажать Ctrl-P). Если вам и это не помогает (карма?), тогда просто попробуйте открыть исходник в ручную File-Open Source File (либо нажать Ctrl-O).
Конечно, “маловато будет” ©, но я надеюсь, что данный материал будет полезен, и подтолкет новичков к более глубокому изучению такого прекрасного инструмента как WinDbg.

Удачной вам отладки.
Файлы к статье

20100515

Эх, работа

В всязи с кошмаром работой (новой). Статья откладывается на неизвестное мне время. Извиняюсь. Но, по просьбам трудящихся выложу сюда
1) Ссылки на литературу и другую полезную информацию.
2) Некую болванку с которой можно начинать трудится самим.

и так

Литература и другая полезная информация.

1) Мануалы интела. А именно: Intel 64 and IA-32 Architectures Software Developer`s Manual. Volum 3B: System programming Guide Part 2 (start from Chapter 19)
2) http://bluepillproject.org/
nbp-0.32-public (blue pill). От великого 90210 (привет, если вдруг ты это читаешь) и Рутковской. Написано на С\asm. Довольно специфично, но познавательно.
IsGameOver.ppt - красиво и доходчиво оформлено.
3) http://www.securevm.org/bitvisor.html
Японский виртуализатор. Сложен для начинающих, но зато более полный и законченный по функционалу. (Сайт можете перевести гуглом)
4) http://northsecuritylabs.com/
Детектор виртуалок, и руткитов на основе виртуализации. Для изучения работы - сойдет.
5) http://virusinfo.info/showthread.php?t=6287&page=5
Тут можно найти Rootkit Unhooker - детектор руткитов и всяких зловредов. Отслеживаются новые версии. 

Собственно этого должно хватить для изучения виртуализации. Советую начать вначале с манов интела и из реального режима перейти в 32\64 битный и включить эту виртуализацию. Поиграться с ней там. И потом уже хорошенько думать над тем, как заставить виндовс (а кому линукс?) перейти в режим гостевой ОС. Кстати довольно интересно - попробуйте сделать свой miniOS и запустите ее параллельно с Window OS. Ну и как говорится - почувствуйте силу.

Болванка
Это простой 32 битный драйвер. Включает и выключает режим виртуализации. Работает под Windows NT (проверял на XP и 7). Собрано на masm32. С использованием заголовочных файлов из KmdKit (Four-F и вам привет большой).
Вывод можете ловить windbg или debugview. Но лучше сделайте вывод в COM порт своими силами. Пригодится в будущем (кстати эта процедура есть в nbp если хорошо поищите).
Файлы тут
Сборка:

D:\ASM\masm32\BIN\ML.EXE /nologo /c /coff "Virtualize.asm"
 Assembling: Virtualize.asm
D:\ASM\masm32\BIN\LINK.EXE /nologo /driver /base:0x10000 /align:32 /out:ndissin.sys /subsystem:native /ignore:4078 /OUT:"Virtualize.sys" "Virtualize.obj"

На этом пока все.

20100311

Приступил к статье

И так, с этого дня я начинаю писать статью по виртуализации в процессорах Intel. Информации на нашем великом и могучем очень мало, а на английском, в основном, только мануалы. Есть разные источники, но они либо не полны, либо довольно сложны для начинающих.
Ну как бы дело не пошло, что-нибудь да выйдет. Ждите новостей, а так же статьи на Wasm.ru.
А чтобы вам было вдвойне интересно, дам кусочек результата вывода в WinDBG, при запуске виртуализационного драйвера под Windows 7 x86:

-------DriverEntry------
-------Driver Load Success------
-------VMX is present------
-------VMX Lock bit is set------
-------VMX inside bit is clear------
-------Setting VMXE------
-------VMXE set success------
-------VM Revision ID = 0x5a08000000000d------
-------VMX is On. Region PhysAddr  = 0x397469a4------
-------DriverUnload------ 
 :)

20100201

Путь

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

20100114

Heap Overflow в наборе кодеков K-Lite Codec Pack

С чего все началось
Многие наверно используют в своей повседневной жизни Total Commander. Очень удобная программа, к тому же поддерживает плагины. Так же многие используют набор кодеков K-Lite Codec Pack. Поддерживает многие форматы видео и аудио файлов, собственно по этому и пользуется большой популярностью. Но мало кто знает, что будучи установлены по умолчанию, эти два продукта, могут сыграть с вами злую шутку. Существует вероятность очень "удачного" стечения обстоятельств. А именно переполнение хипа. И так, как же оно было обнаружено.
Как вы знаете в Total Commander есть встроенное средство быстрого просмотра содержимого файлов (по нажатию F3). Если к файлу привязано какое-либо расширение, есть возможность открыть как мультимедиа - то есть, в нашем случае, K-Lite зарегистрировал свои расширения и fourcc коды и Total Commander попытается воспроизвести файл, а не просмотреть его содержимое допустим в HEX. Это все справедливо для настроек по умолчанию.
И так, во время экспериментов с MP4 видеофайлом (Metasploit для winamp), у меня рухнул Total Commander - ошибка работы с хипом Runtime C++ Error...
Исследование
Приведу общую конфигурацию системы, где все это происходило:
OS Windows 7 Ultimate x86
Total Commander 7.04a
K-Lite Codec Pack (klcodec520f.exe):
    MP4/3GP/MOV splitter (Haali Media Splitter) [version 1.9.42.1]
    For parsing the MP4/MOV/3GP containers (. Mp4. M4v. Hdmov. Mov .3 gp files).
При разборе падения было выяснено, что Total Commander создает граф в котором есть фильтр MP4Splitter.ax. В нем и происходит падение. 
Привожу часть дампа мною созданного файла. который инициирует падение:


5460h: 60 C2 D0 80 0C 0A 48 48 48 48 48 48 48 48 48 48  `ÂЀ..HHHHHHHHHH
5470h: 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48  HHHHHHHHHHHHHHHH
5480h: 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48  HHHHHHHHHHHHHHHH
5490h: 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48  HHHHHHHHHHHHHHHH
54A0h: 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48  HHHHHHHHHHHHHHHH
54B0h: 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48  HHHHHHHHHHHHHHHH 

Чтобы не запутаться, я изменил этот диапазон на последовательность типа “AA..AABB..BBCC..CC”. В результате переполнение хипа в модуле MP4Splitter.ax в OllyDbg, будет выглядеть так:
1) До вызова HeapFree()

2) После вызова HeapFree()
Как видим, при освобождении, идет затирание структуры хипа (см, правый нижний квадрат - дамп хипа). Замечаем важную особенность - указатель на хип содержится в esi регистре..
Эксплуатация
И так, в общем случае, цель - это хип, перейти туда можно по команде jmp esi. Опкод команды \xE6\xFF.


03D0h: 00 00 00 00 00 00 00 00 00 00 00 31 2E 32 34 00  ...........1.24.
03E0h: 55 50 58 21 0C 09 05 0A 7B F4 8E F8 24 E1 9F 99  UPX!....ôŽø$៙
03F0h: 4D 49 32 00 64 A5 0E 00 00 B6 2C 00 26 7A 00 DF  MI2.d¥...¶,.&z.ß
0400h: FF 67 E6 FF 03 07 42 6F 6F 6C 65 61 6E 01 00 09  ÿgæÿ..Boolean...
0410h: 10 40 00 05 46 61 6C 73 65 04 BE CD FE FB 54 72  .@..False.¾ÍþûTr
0420h: 75 65 8D 1B 02 04 43 68 61 72 37 FF 3E 90 01 08  ue...Char7ÿ>.. 

Найдя его и переписав хип так, чтобы управление передалось на нужный байт, цель будет достигнута. Так как я собрался эксплуатировать именно Total Commander, то найдем в нем нужную нам последовательность. Я был приятно удивлен, что в заголовке Total Comander (а он пожат UPX) была найдена эта последовательность. И мало того, плюс еще 14 совпадений, что дает возможность морфить код эксплоита.
Проблемы с правильным затиранием хипа, и его защитой, типа SafeGuard, я оставлю вам на самостоятельное рассмотрение.
P.S.: Данная информация была написана исключительно для размышления. Автор, то есть я, никакой ответственности за эту информацию не несу. Никаких сплоетов и исходников не прилагаю.

С уважением.

20100105

Здравствуйте

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