Русские Блоги
CFF Explorer Просмотр / изменение файловых ресурсов PE
CFF Explorer Просмотр / изменение файловых ресурсов PE
Эта статья взята из:https://www.jb51.net/softjc/514548.htmlЭто только для изучения резервного копирования, без плагиата, если автор считает, что что-то не так, пожалуйста, свяжитесь со мной, это должно быть обработано правильно! В то же время, я надеюсь, читатели смогут просмотреть оригинальную статью!
CFF ExplorerЭто отличный инструмент ресурсов PE. Вы можете легко просматривать и редактировать ресурсы PE (EXE / DLL) с помощью CFF Explorer. Подобные инструменты ресурсов PE включают eXeScope и ResHacker.
Название программного обеспечения:
PE tool CFF Explorer v 8.0 Китайская зеленая версия
Размер программного обеспечения:
Используя CFF Explorer, вы можете просматривать и изменять ресурсы PE-файлов, вы можете просматривать функции, которые могут вызывать dll-файлы, и изменять адрес входа функции для достижения цели создания функции защиты от сбоев. CFF Explorer имеет функцию анализа зависимостей типа DEPENDS / шестнадцатеричный редактор / быструю разборку и другие функции. Подробности см. На следующем рисунке:
Файлы PE (Portable Execute) называются переносимыми исполняемыми файлами. Общие EXE, DLL, OCX, SYS и COM являются файлами PE. Файлы PE являются программными файлами в операционной системе Microsoft Windows (могут выполняться косвенно, например: DLL)
Как реализовать API HOOK под Windows 7
Малварь на просвет. Учимся быстро искать признаки вредоносного кода
Содержание статьи
В целом, если говорить про анализ исполняемых файлов, можно выделить два подхода — это статический анализ и динамический анализ.

Статический анализ предполагает анализ файла без его запуска на выполнение. Он может быть базовым — в этом случае мы не анализируем непосредственно инструкции процессора в файле, а производим поиск нетипичных для обычных файлов артефактов (например, таких как строки или названия и последовательности API-функций), либо расширенным — в этом случае файл дизассемблируется и производится исследование инструкций, поиск их характерных для вредоносных программ последовательностей и определение того, что именно делала программа.
Динамический анализ заключается в исследовании файла с его запуском в системе. Он тоже может быть базовым и расширенным. Базовый динамический анализ — это исследование файла с его запуском без использования средств отладки, он заключается в отслеживании событий, связанных с этим файлом (например, обращение к реестру, дисковые операции, взаимодействие с сетью и т. п.). Расширенный динамический анализ заключается в исследовании поведения запущенного файла с применением средств отладки.
В этой статье я расскажу о базовых техниках статического анализа. Его преимущества:
Основной недостаток базового статического анализа — это его низкая эффективность при анализе и распознавании сложных вредоносных программ, например упакованных неизвестным упаковщиком или использующих полное либо частичное шифрование файла с применением продвинутых алгоритмов.
Инструментарий
HEX-редакторы
Один из основных инструментов статического базового анализа — это HEX-редактор. Их много, но в первую очередь необходимо отметить Hiew. Это безусловный лидер и бестселлер. Помимо непосредственно функций HEX-редактора, в нем реализовано еще много дополнительных возможностей, связанных с анализом файла: это и дизассемблер, и просмотрщик секций импорта и экспорта, и анализатор заголовка исполняемых файлов. Главный недостаток — все это не бесплатно (хотя и весьма недорого — от 555 рублей).
Если не хочется тратить деньги, то можно обратить внимание, например, на Hex Editor Neo (есть бесплатный вариант) или на HxD Hex Editor.
Детекторы упаковщиков
Если есть подозрение, что файл упакован, то с помощью детектора упаковщиков можно попытаться определить, какой упаковщик при этом использовался, и попробовать распаковать исследуемый файл. Долгое время безусловным лидером здесь была программа PEiD, и в принципе можно пользоваться и ей, однако поддержка давно прекращена и новых сигнатур для определения типов упаковщика уже никто не выпускает. Альтернатива — Exeinfo PE.
Эта программа, помимо детекта упаковщиков, имеет еще много других функций для анализа исполняемых файлов Windows, и во многих случаях можно обойтись ей одной.
Специализированные утилиты для исследования исполняемых файлов Windows
Так что настоятельно рекомендую CFF Explorer, тем более что программа бесплатная.
Python-модуль pefile
Python-модуль pefile позволит обойтись при анализе PE-файлов исключительно интерпретатором Python. С ним практически все операции по базовому статическому анализу можно реализовать путем написания небольших скриптов. Прелесть всего этого в том, что заниматься исследованием PE-файлов можно в Linux.
Модуль присутствует в PyPi, и установить его можно через pip:
Ну и в завершение всего списка весьма популярный и востребованный инструмент, ставший своеобразным стандартом в среде антивирусной индустрии, — проект Yara. Разработчики позиционируют его как инструмент, который помогает исследователям малвари идентифицировать и классифицировать вредоносные сэмплы. Исследователь может создать описания для разного типа малвари в виде так называемых правил, используя текстовые или бинарные паттерны.
Меры предосторожности
Чтобы обезопасить систему при проведении базового статического анализа подозрительных файлов, необходимо:
Можно обойтись этими мерами и не использовать виртуальную среду, хотя для полной безопасности можешь установить, например, Virtual Box и проводить анализ в нем (тем более что при динамическом анализе без виртуалки, как правило, не обойтись).
Определение типа файла
Посмотреть это все можно несколькими способами. Первый — с помощью HEX-редактора.

Второй — используя CFF Explorer или Exeinfo PE. Они наглядно показывают значения указанных сигнатур.
Третий способ — использовать возможности Python, запустив такой скрипт:
Или можешь использовать вот такое правило для Yara:
Поиск в VirusTotal по хешу
Отправить на VirusTotal для проверки можно не только сам файл, но и его хеш (md5, sha1 или sha256). В этом случае, если такой же файл уже анализировался, VirusTotal покажет результаты этого анализа, при этом сам файл на VirusTotal мы не засветим.
Думаю, как узнать хеш файла, ты прекрасно знаешь. В крайнем случае можно написать небольшой скрипт на Python:
Результат подсчета хеша шлем на VirusTotal либо применяем мои рекомендации из статьи «Тотальная проверка. Используем API VirusTotal в своих проектах» и автоматизируем этот процесс с помощью небольшого скрипта на Python.
Как видишь, скрипт получает значение хеша, переданного в виде аргумента командной строки, формирует все нужные запросы для VirusTotal и выводит результаты анализа.
Если VirusTotal выдал в ответ какие-нибудь результаты анализа, это значит, что исследуемый файл уже кто-то загружал для анализа и его можно загрузить туда повторно и получить более актуальные результаты, на чем анализ можно и завершать. Но вот если VirusTotal не найдет файла в базах, тогда есть смысл идти дальше.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
0day Wednesday – исследование новейшего вредоноса
Кто-то может назвать это безумие. Для меня это просто среда.
Попытка анализа в IDA [2] завершается ошибкой:
Похоже, что тот засранец, который это делал, скорее всего знал, что некто вроде меня попытается провести анализ. В любом случае, существует не так уж много вариантов модификаций exe, которые сводят с ума дизассемблер, но при этом игнорируются Windows.
Исследуя exe-файл в CFF Explorer, мы видим ошибку в одном из NT-заголовков, а именно в «Data Directories» на значении Delay Import Directory RVA. CFF прекрасен тем, что сразу подсвечивает значение 0x00000040 как неверное. Зануляем его, чтобы исправить ошибку.
Приложение, само собой, запаковано. Память запакована. Никаких модифицированных заголовков секций, банальная запакованная память.
Что ж, статический анализ — не вариант. Для дальнейшего исследования необходим динамический анализ. Шашки Immunity наголо!
Перед тем как погрузится в Immunity и виртуальную машину, стоит отметить пару небезынтересных вещей, которые не видны в IDA, однако были замечены в CFF Explorer. Для начала, есть пару файлов, которые, на радость Капитану Очевидности, скрыты в директории ресурсов.
Первый — это PNG файл:
Второй — HTML страница:
Странно. Загрузив PNG файл в IrfanView (лучший вьювер для изображений, между прочим) мы видим небольшой черный прямоугольник, что не совсем вяжется с его размером в 55 КБ. Наверняка что-то спрятано внутри. Стеганография?
Теперь посмотрим на HTML-страницу. Загрузив и почистив его в Notepad++, получаем что-то похожее на скрипт определения типа браузера.
Почему все это находится в секции ресурсов, да еще и в незапакованном виде — остается загадкой. К секции ресурсов мы еще вернемся. А пока продолжим распаковку.
Запускаем Immunity Debugger и Virtual Box и подгружаем анти-анти-отладочный python плагин.
После того, как процесс завершится, можно слить память и заняться её анализом:
Я заметил несколько областей памяти, помеченных как Read Write Execute (RWE). Одна из них по адресу 0x00910000, еще одна — 0x00930000, следующая — 0x00940000 и, наконец, последняя — по адресу 0x00970000. Дальнейший анализ показывает, что только 3 из 4 содержат программы. Однако, три программы прятать в одну? Неплохая пасхалка.
Теперь сдампим наши программы для дальнейшего анализа. Подгружаем OllyDumpEx и скармливаем наши 0090 области. Видно, что программы по адресам 0x00910000 и 0x00970000 совпадают с оригинальной, судя по их размеру, заголовкам секций и характеристикам. А область по адресу 0x00950000 отличается от них: другие заголовки секций, другие размеры. Должно быть, это то самое золотое яйцо (я оставил буквальный перевод, т.к. в дальнейшем автор использует golden egg в своих скриншотах — прим. перев.).
Сдампим наш exe используя Binary (Raw) режим вместо режима Rebuild, чтобы сохранить целостность дампа.
Новый exe примерно на 40 КБ больше и распакован корректно, так что теперь мы наконец можем скормить его IDA. Взглянув на строки, видим интересные вещи.
Это же HTTP запрос. Похоже, эта штука отсылается домой мамочке, используя POST запрос.
Вы можете спросить — а как же C&C сервер? Не похоже, чтобы он содержался в программе в plain text виде. Помните, я просил вас не забывать про секцию ресурсов? Заглянем в секцию ресурсов нашего golden_egg.exe
Наверное вам интересно, что же происходит, когда выполняется основное приложение. Давайте посмотрим:
Во время загрузки, оно автоматически закрывает мой Process Explorer и на любые попытки загрузить диспетчер задач отвечает сообщением «диспетчер задач был отключен администратором» перед тем как почти мгновенно закрыться. Я хотел было сделать скриншот, но оказалось, что я не настолько быстр. Обратившись к Immunity, мы видим, что оригинальная программа «golden_egg.exe» уже завершилась. Взамен — какая-то другая программа с именем «zpNvNKSi.exe», запущенная из темповой директории. Сравниваем хэши — и, похоже, они одинаковы:
(Понравился мой хэшер? Скачать можно тут без регистрации и смс)
Рекламная пауза окончена, теперь понятно что делает программа — отключается диспетчер задач, убивает «неугодные» приложения и запускается из темповой директории. Проверка msconfig показывает 2 новых записи в автозагрузке:
Я проверил оба файла и они байт в байт совпали с оригинальной программой.
Аттачимся к программе с помощью Immunity, смотрим на память и количество потоков (нажатием клавиши «t») — видим, что программа многопоточная. Я насчитал 12 потоков.
Предполагаю, что каждый поток следит, не убит ли один из других потоков. Однако, приостановив выполнение процесса, мы можем заглянуть в его память, используя Process Explorer. Анализ показывает, что существуют строки, которые не были показаны в IDA:
Внезапно. Я думаю, что программа проверяет эти утилиты и принудительно закрывает их, если они запущены. Это объясняет то, почему я не мог воспользоваться Process Explorer’ом, пока была запущена программа. Вполне себе способ усложнить запуск любой из этих утилит, моментально убивая их. В списке можно найти regedit, LordPE, Wireshark, regmon, filemon, procmon, tcpview, taskmgr и даже Windows Defender. Сурово. Правда, я не вижу двоюродного брата Process Explorer’a — Process Hacker.
Возвращаясь к нашим баранам нашей памяти: очевидно, что программа либо обфусцирует строки, либо дважды пакует их. В любом случае, давайте разберемся.
Анализ новых строк раскрывает перед нами больше функциональности вредоносной программы.
Учитывая то, что наши попытки запустить Wireshark будут блокированы программой, необходимо найти функцию, отвечающую за принудительное завершение программ, и пропатчить её. Как это сделать? Поищем вызов api TerminateProcess().
Используя IDA, это не так уж сложно. В секции импорта находим ссылку на TerminateProcess.
Похоже на некий цикл, который просматривает имена процессов с помощью вызова CreateToolhelp32Snapshot и, если они удовлетворяют некому условию, завершает их. Похоже, что список имен процессов, который мы видели ранее, используется именно тут.
Засучим рукава. Я предпочитаю патчить с помощью Immunity — это довольно просто, да и знаком я этим получше. Начнем с поиска подпрограммы в нашем exe. Инструкция с условным переходом находится по адресу 0x00401D4E. Нопаем всю область — таким образом, мы сразу переходим к выполнению ret вместо перехода по адресу 0x00401D2C, где происходило завершение неугодных процессов.
Возобновляем выполнение программы и пробуем запустить одну из запрещенных программ. Похоже на то, что все работает, раз regedit запустился, а Process Explorer не был принудительно завершен.
Наконец, можно провести детальный анализ сетевой активности, используя Wireshark, а также активности в файловой системе и реестре, используя procmon, да и вообще поиграться с работающей программой в Process Explorer.
Process Explorer показывает, что был отправлен SYN [5] пакет к нашему C&C серверу (да, тому самому, адрес которого мы вытащили из секции ресурсов) на 80й порт.
Wireshark дает немного больше информации. Тут мы видим не только SYN пакеты, отправляемые нашему HTTP C&C серверу, но еще и большое количество DNS запросов для получения информации о странных доменах. Что дальше?
Сервер продолжит стучаться домой, но мне это не нужно. Я мог бы модифицировать секцию ресурсов в нашем «golden_egg.exe» так, чтобы завернуть его на мой собственный HTTP сервер и исследовать его функциональность, но это довольно трудозатратно. У нас уже есть довольно многое: C&C сервер, распакованная программа, её HTTP сигнатура, а также мы знаем о её поведении. Дело закрыто. Еще одна 0day среда пришла и ушла.
Если вам хочется скачать вредонос и повозиться с ним, то можете взять его тут. Пароль «infected».
Надеюсь, это небольшое исследование окажется вам полезным. Удачного крякинга!
1. ↑ 0day (англ. zero day) — термин, обозначающий вредоносные программы, против которых еще не разработаны защитные механизмы или уязвимости, которые не устранены.
2. ↑ IDA Pro Disassembler (англ. Interactive DisAssembler) — интерактивный дизассемблер, который широко используется для реверс-инжиниринга.
3. ↑ Пакет Microsoft Foundation Classes (MFC) — библиотека на языке C++, разработанная Microsoft и призванная облегчить разработку GUI-приложений для Microsoft Windows путем использования богатого набора библиотечных классов.
4. ↑ UPX (the Ultimate Packer for eXecutables) — упаковщик исполняемых файлов, поддерживающий несколько различных платформ и форматов файлов.
5. ↑ SYN — пакет, отправляемый клиентом серверу для установки соединения.
Explorer Suite III (CFF Explorer VII)
– Fixed a lot of bugs
– Fixed a minor bug in the MetaData tables
– Fixed minor resizing bug on Vista
– General improvements
– Significantly improved the interface
– Improved Resource Editor
– Improved Rebuilder (added checksum update and strip debug directory)
– Improved Data Directories viewer
– Improved Hex Editor
– Improved Sections Dialog (added section’s hex view)
– Improved MetaData Tables
– Extended the SDK
– Added powerful very scripting language
– Added documentation for the scripting language
– Added security features for the scripting language
– Added support for generic files
– Added Name Unmangler
– Added Debug Directory
– Added Dependency Walker
– Added Quick Disassembler (x86, x64)
After months of work I finally have a release.
9 thoughts on “Explorer Suite III (CFF Explorer VII)”
Wahoo!!
Impressive all these new features.
Hey Daniel! New version looks great! Can’t wait to try it out! 🙂
Missing you in #reactos though. 😐
Thanks to you both!
stefan, sorry for my absence, but there are various reasons for it. First of all I got sick and have been loaded of work to do. Second, the project is going a road which doesn’t interest me too much. This doesn’t mean that I won’t give contribute. In fact, there are certain things I need to code anyway someday, so why don’t contribute to the reactos? However, right now I really don’t have the time for educational project, I’m really out of time and going through major crisis, which affect me through my family. If despite of this you’d like to talk to me, my msn contact is: ntoskrnl@passport.com.
P.S. florent this applies to you to, of course. You can add me if you’d like to your contacts.
Thank you for the V4E update! 🙂
I’ve just a note: I do not find very clear the difference between “Uncheck” and “Disable”
What does each mean? Which result in use?
P.S. : English isn’t my native tongue thus I will have difficulties of speaking to you on MSN Live. :s
Thank you florent! Uncheck does the opposite, meanwhile disable doesn’t do anything.
Nice day to you too!
P.S. You could write in french, I’d still understand you, but I’d prefer to answer in english, my french is a bit (very) rusty.
Just another suggestion for the next V4E release: could one extend the window (at least vertically)?
Thank you for the explanation.
Yep, good suggestion. I’ll write it on the todo list.
Another suggest for the next release: an baml resource editor.
i have heavy problems to remove a public key token reference from xaml files (later baml, because they are compiled).
or maybe anyone knows how i can do this?!
please drop me a mail at
bernhard.millauer *no@spam* gmx.at
Yes, I thought of implementing a baml resource editor, the problem is this:
the baml file format is (as usual) undocumented and I’m tired of wasting my time in analyzing with a hex editor every new “technology” microsoft dishes out. I already think that xaml is the ugliest thing I have ever seen.
However, if someone spends his time and documents the baml format, I might consider implementing an editor.
Best regards
Daniel
Tag: CFF Explorer
Preparing a bugfix version of CFF Explorer
It has been many years since the last update of what had started as a hobby side-project when I was 19. I’m sorry that I haven’t updated the CFF for such a long time, given that thousands of people use it every day. A few months ago I stopped working for Hex-Rays to fully dedicate myself to my own company and thus I have decided that I have now the time and the energy (barely) to finally update the CFF.
Over the years I’ve received several bugfix requests, but couldn’t oblige because of the lack of time. If you’re interested that a particular fix goes into the upcoming release, please leave a comment under this blog post or drop me an email to ntcore@gmail.com (feel free to repeat the request, as it might have been lost during the years).
Please don’t include radical changes or improvements, we’ll leave that for later maybe. If your company needs professional PE inspection (not editing), I’d advice you to check out my current commercial product at cerbero.io/profiler, which doesn’t cover ‘just’ the Portable Executable format.
UPDATE: Uploaded new version with the following improvements:
You can continue to leave comments or send me emails. As soon as there are enough new bug reports, I’ll upload a new version. In time, maybe, some small improvements could be included apart from bug fixes.
CFF Explorer 7.9 & Secunia
Today I’ve received a Secunia report email about a buffer overflow vulnerability in the CFF Explorer. I was quite amused =). I mean, I usually get emails sent me by users about bugs in the CFF, never got an email by Secunia before.
However, it’s always good to get bug reports. The bug itself was related to a string overflow in the resource editor. I put string safe functions quite some time ago in the old kernel of the CFF, but apparently I missed one.
CFF & Rebel.NET Update
CFF Explorer update: scripting arguments
Arguments can now be passed through command line just by making them follow the name of the script. E.g.:
“CFF Explorer.exe” “C:\mydir\script.cff” arg1 arg2 “arg 3”
To access the arguments from the scripting part you can use the global variables argv and argc, which are the same thing as in C. Actually, argv would’ve been sufficient as it is a table and its size can be retrieved with “#”, argc is only present for coherence with the C-style.
Explorer Suite update
CFF Explorer:
Improved support for tiny PEs.
Fixed a bug in the Exception Directory which was due to the grid set up.
Task Explorer:
Fixed a minor bug on x64.
Added the Driver List tool.





