Этот пост о созданном мною проекте в BitBucket. Проект нацелен на тестирование виртуализации кода это фича современных протекторов. О том для чего нужна виртуализация кода можно почитать в описании продукта Code Virtualizer компании Oreans.
Иногда при изучении компьютерных вирусов требуется отключить синхронизацию времени. Дело в том что некоторые экземпляры malware работают в пределах небольшого промежутка времени, к примеру 3 недели. Нам бы хотелось перед выпуском лекарства суметь за это время изучить работу файла достаточно хорошо, иногда этого промежутка времени может быть мало.
Наверное все привыкли, что олька в чем-то не удобно, а в чем-то это самый удобный инструмент. Меня как-то не вставляла ветка 1.x и я ждал когда же будут плагины к 2-ке! Вот! Вот оно свершилось, теперь оно с плагинами ! ;)))
Итак, как дикая смесь ленивого + системаного программиста + реверсера мне всегда было любопытны технологиии автоматизирующие реверс и поиск чего-либо для решения моих задач в кратчейшее время или чтобы само искалось ))) Но в этот раз технологии, а точнее язык, сам меня догнал и четко сказал мне "Я Python! Меня надо учить!" и сколько бы не убегал от его эгоцентричности, что мол он сказал и ... не убежал. Он твердо сегодня мне заявил: "А теперь я еще и в WinDbg"
О чем это я ? О том что скриптовый язык Python теперь почти в любом в более-менее значимом реверс-инструменте:
Ввиду того что команда cracklab.ru подняли SVN сервак, то я тут же воспользовался этой возможностью ) Поэтому теперь, все мои публичные исходники будут только тут .
Цель проекта:
Сбор существующего или разработка нового кода облегчающего написание приложений или исполнимых модулей, т.е. драйверов или динамических библиотек.
Пока еще все конечно сырое, но в последствии будет куда лучше ;)
Громадное количество реверсеров рано или поздно могут осознать, что им почему-то вдруг стал нужен упаковщик\криптор\протектор. Наступает такое прозрение по разным причинам, вероятно малвару по прятать, может быть это их новая развивающая задача, либо защита софта, но хотел бы отметить последних лиц. Да, речь пойдет о тех людях, которые в силу каких-либо причин решили писать свой протектор и им почему-то не подошли экземпляры существующих на рынке и в свободном доступе протекторы.
Первый представляет собой приложение win32 и позволяет попытаться открыть процессы в стандартном Hiew-шном интерфейсе.
Второй же служит для добавления возможности написания скриптов на Python и использовать их к открытому в Hiew файле.
Этот документ поясняет концепцию "фильтрация" в UPX. В основном фильтрация это метод препроцессинга данных, который может улучшить коэффициент сжатия файлов UPX-ом.
На прошлой неделе вышла моя статья с названием "Некоторые приёмы статического анализа кода из арсенала вирусного аналитика" в журнале "No bunkum". Статья посвящена некоторым полезным приемам использования реверс-тулзы Hiew, которые помогают повысить эффективность и качество работы при анализе исполнимых файлов.
Прошу не судить строго и учесть, что это мой первый опыт написания чего-либо на паблику. Хотя нет, вру, второй ))) Но между первым и вторым был слишком большой промежуток и можно считать эту статью условно первым моим опытом )
Решил сегодня поглядеть внутрь Win32k.sys через Hiew. Этот файл у меня располагается по пути: c:\Windows\winsxs\amd64_microsoft-windows-win32k_31bf3856ad364e35_6.1.7600.16385_none_14e86b61b437d067\win32k.sys
Причем здесь "полиморфизм"? А при том, что если вы детектили полиморфные объекты, то вы должны знать о способе детекта по мусору. Напомню, что суть детекта заключается в подсчете подозрительных(уникальных) инструкций и выдаче статуса "обнаружен", если их количество превысило допустимое значени. Думаю, теперь на лицо "подозрительная" инструкция nop :)
Сегодня удалось подружить VirtualKD и WinXP SP3 поставленную в качестве гостевой системы внутри VMware.
Сначала коротко о том, что же такое VirtualKD ?
Если вы перейдете по следующей ссылке, то вы можете прочесть все сами, но приведу слова тут:
In English:
Welcome to the VirtualKD homepage. This project allows speeding up (up to 45x) Windows kernel module debugging using VMWare and VirtualBox virtual machines. If you have ever noticed that the standard debugging over virtual COM port is irritatingly slow, this software is for you!
In Russian(от меня)
Добро пожаловать на домашнюю страничку VirtualKD. Это проект позволяет провысить скорость(до 45x) отладки модулей ядра Windows используя виртуальные машины VMware и VirtualBox . Если Вы когда-либо замечали что стандартная отладка через виртуальный COM порт раздражающе медленная, то это программное обеспечение для Вас!
Думаю теперь вам цель этого проекта понятно и можно приступить к описанию установки, настройки.
1) Установить собственно Windows внутрь VMware
2) Каким-либо способом передать архив дистрибутива внутрь гостевой системы
3) Запустить "target\vminstall.exe" внутри этой гостевой системы
4) Запустить на хостовой, т.е. там где стоит VMware файл "virtualkd\vmmon.exe"
5) Через кнопку "Debugger path" указать путь к отладчику в проге vmmon.exe
6) Перезагрузить гостевую с выбором варианта отладочной загрузки системы
7) После выбора варианта загрузки, система остановится и не будет грузиться. Это нормально!!!
Для этого в загруженном отладчике нужно сказать "ГОУ", для WinDBG это команда "g" в его командной строке и возможно придется два раза, пока не появится "debugging running"
8) Система загрузилась
Теперь, предпочитаю "сохраниться" ;))) Для этого надо перейти в WinDBG и выбрать в верхнем меню Debug->break. После этого гостевая "замрет" и можно нажать кнопку "save snapshot". В комантариях к снэпшоту укажите что хотите не забыть в будущем, чтобы потом не тупить )
Сбылась, мечта идиота! :))) Это я о том, что и у меня есть проект, в который можно вкладывать душу! ;) Ну а теперь все по порядку.
Давным-давно, у меня была мечта учавствовать в проекте развития программного средства или системы, которое используют очень множество людей. Очень долго зрела идея помогать множеству людей, быть действительно полезным и нужным, чтобы мой труд приносил пользу как можно большему количеству народу. Шло время, а возможности реализации этой идеи все не представлялось. Буквально недавно до меня дошло как же осуществить мою затею :)
До устройства на постоянную работу в ЗАО "Лабораторию Касперского"(далее ЛК) вирусным аналитиком, мне приходилось сталкиваться с анализом исполнимых файлов формата PE исключительно в личных целях, мне было интересно как устроены защиты ПО, как работают вирусы. В то время анализировал файлы только в основном с помощью небольшого множества инструментов, туда входили Hiew, OllyDebugger, PE-Tools, WinHex. Думаю, вы заметили что я не упомянул IDA Pro, потому что в то время ее не использовал, в силу сложности ее освоения, также не использовал и WinDbg. С течением времени, будучу сотрудником ЛК освоил множество других инструментов, поменялось почти полностью точка зрения на техники исследования. Страшно представить, какое количество файлов пересмотрел, проанализировал, сколько всего узнал работая вирусным аналитиком. Среди большого количества нового, интересного и полезного выделяется одна маленькая утиллита, весом не больше 200 КБ и называется она "Hiew". Именно о ней говорит множество системных программистов и реверсеров, потому что она имеет довольно простой интерфейс и множество весьма полезных возможностей.
Идея заключается в том, что не только я выделяю Hiew, но и множество других вирусных аналитиков. Принимать участие в разработке плагинов, а также написание документирущих возможности инструмента. Именно этим и буду заниматься в ближайшее время, писать статьи и разрабатывать плагины.
На данный, момент разработал плагин "mbytes2csrc", цель которого выделенные байты в режимах Hex, Code скопировать в буфер обмена оформленых в виде исходников на Си.
Получил тут листинг, который ребята получили в результате копирования в режиме Code из Hiew. Чтобы удобней было анализить, т.е. юзать IDA pro и ставить коменты в ходе анализа, то написал небольшой скрипт на Perl:
extract_code.pl:
#!/usr/bin/perl use strict; use warnings;
sub ParseFile { open (SRCFILE, $_[0]) or die "Can't open source file"; open (DESTFILE, ">$_[1]") or die "Can't create destination file";
Тут будут публиковать ссылки на источники для тех, кто интересуется устройством вредоносных объектов содержащих полиморфный и метоморфный код, а также методами борьбы с подобными исчадиями ада.
[!!!]Будьте осторожны, по ссылкам может оказаться вредоносная программа, поэтому лучше скачайте wget'ом и посмотрите что залилось в Hiew и только потом уже юзайте.