Recent Blogs

Title
Rating
Replies
Last Message

    Виртуализация для самых маленьких #1: гипервизор - что, зачем и почему

    Jun 15, 2020

    [ATTACH] Развитие технологий аппаратной виртуализации (Intel VT-x и AMD-V) открывает широкие возможности по контролю выполнения кода на самом низком уровне. Привычные всем гипервизоры (Hyper-V, KVM, VMware или VirtualBox) позволяют запускать операционные системы в изолированном окружении: это становится возможным, благодаря способности процессоров работать в специальном режиме, в котором они контролируют доступ к ресурсам и обрабатывают выполнение заданных инструкций и событий. При...
    Читать далее
    Лайков +15 Комментариев18 Просмотров8,906

    Мета-программирование С++ и обфускация

    Jun 13, 2020

    Здравствуйте, друзья, это - моя первая статья на Wasm'е, не судите строго. Надеюсь она же станет первой статьей в цикле, в котором я рассмотрю возможности мета-программирования разных ЯП и компиляторов применительно к обфускации кода. Первым пациентом у нас будет великий и могучий, ненавидимый многими программистами по всему миру, прородитель buffer overflow и use after free багов - добрый дядька С++. Когда то очень давно, а именно в 2013 году, когда в компиляторы С++ начали завозить...
    Читать далее
    Лайков +5 Комментариев6 Просмотров7,788

    Квантовая сепарация или разбираемся с Win32PrioritySeparation

    Mar 9, 2020

    В этой заметке речь пойдёт об известной настройке планировщика - Win32PrioritySeparation, позволяющей настраивать количество квантов времени, выделяемых фоновым (background) и активным (foreground) процессам. Этот параметр - поле в реестре с типом REG_DWORD: HKLM\System\CurrentControlSet\Control\PriorityControl\Win32PrioritySeparation Во многих источниках есть описания возможных значений без объяснения внутреннего устройства этого параметра - эти пробелы и призвана закрыть эта статья....
    Читать далее
    Лайков +3 Комментариев2 Просмотров17,942

    Введение в реверсинг с нуля, используя IDA PRO. Часть 67. Часть 2.

    Jun 19, 2019

    Проблема в том, что эта секция будет использоваться источником, и вам нужно скопировать данные до SEH, а затем завершить ввод, поэтому происходит сбой чтения перед копированием всего стека и сбой в стеке ядра. Я поставлю эту IDA на паузу на одну минуту и открою другую, где у меня есть драйвер. Одна вещь, которую я не видел и допустил ошибку - это то, что буфер назначения [ATTACH] Мы видим, что он инициализируется байтами 0x1FF, но непосредственно перед обнулением байта, который находится...
    Читать далее
    Лайков +6 Комментариев3 Просмотров10,729

    Введение в реверсинг с нуля, используя IDA PRO. Часть 65. Часть 3.

    Jun 13, 2019

    Мы видим, что есть две разные операции и SEND. Мы должны изучить обе операции, чтобы увидеть, какая из них работает и почему. [ATTACH] В этом компиляторе резервируются 4 QWORDS над пространством переменных, так что дочерняя функция хранит аргументы, которые передаются через регистры. [ATTACH] Таким образом, поскольку дочерняя функция имеет 5 аргументов, 5-й будет VAR_248. Я переименую переменную в CONST_0, так как программа пишет туда ноль. [ATTACH] Давайте сначала проанализируем...
    Читать далее
    Лайков +1 Комментариев0 Просмотров4,234

    Введение в реверсинг с нуля, используя IDA PRO. Часть 65. Часть 2.

    Jun 11, 2019

    [ATTACH] Но мы можем считать, что программа возвращает значение, которое является случайным и увеличивается, и это значение делится на константу 0x7D0. [ATTACH] И результат сохраняется в EAX, остаток - в EDX. [ATTACH] Поэтому COUNTER_GUITA на этом этапе будет меньше, чем CONTADOR_GUITA₂. [ATTACH] И когда COUNTER_GUITA будет меньше 30000, а COUNTER_GUITA_2 будет больше, программа изменит вывод на желтый, то же самое произойдет, когда COUNTER_GUITA будет меньше 10000, а COUNTER_GUITA_2...
    Читать далее
    Лайков +2 Комментариев0 Просмотров3,384

    Введение в реверсинг с нуля, используя IDA PRO. Часть 67. Часть 1.

    Apr 24, 2019

    Метод, который мы не рассмотрели, чтобы эксплуатировать одну из уязвимостей драйвера HACKSYS. Мой друг попросил у меня несколько разъяснений о методе, используемом для обхода COOKIE на 32-битных машинах, когда у нас есть переполнение стека в ядре, и мы можем перезаписать адрес возврата, но есть COOKIE, который мешает нам завершить выполнение кода. Очевидно, что если у нас есть другая уязвимость, которая допускает утечку данных, мы могли бы прочитать значение COOKIE и затем использовать его...
    Читать далее
    Лайков +1 Комментариев0 Просмотров4,546

    Введение в реверсинг с нуля, используя IDA PRO. Часть 66. Часть 1.

    Apr 19, 2019

    ТУТОРИАЛ ДЛЯ РЕШЕНИЯ ЗАДАНИЯ NICO ИЗ EKOPARTY 2018 - ЧАСТЬ 2. Давайте сделаем скрипт на PYTHON для решения конкурсной задачи NICO, которую мы реверсировали в предыдущей части. Cкрипт основан на реверсинге, который мы делали, а также на решении, которое прислал мой дружбан LUCAS KOW, особенно это видно в части про ROP, и мы объясним, как это сделать. [ATTACH] Если я запускаю скрипт LUCAS, я вижу что останавливается счетчик de la fuga de capitales(сложно понять без запуска про что он...
    Читать далее
    Лайков +2 Комментариев0 Просмотров3,177

    Введение в реверсинг с нуля, используя IDA PRO. Часть 65. Часть 1.

    Apr 18, 2019

    ТУТОРИАЛ ДЛЯ ЗАДАНИЯ NICO ДЛЯ EKOPARTY 2018 - ЧАСТЬ 1 Давайте отреверсим шаг за шагом задание NICO для EKOPARTY 2018. Это сервер скомпилированный 64-битным компилятором и работающий конечно на WINDOWS. Для начала я посмотрю на него в WINDOWS 7. В любом случае, часть статического реверсинга будет похожей. При запуске мы видим следующее. [ATTACH] Описание находится здесь. https://labs.bluefrostsecurity.de/blog/2018/09/11/bfs-ekoparty-2018-exploitation-challenge/ [ATTACH] Резервные...
    Читать далее
    Лайков +1 Комментариев0 Просмотров4,142

    Введение в реверсинг с нуля, используя IDA PRO. Часть 64. Часть 2.

    Apr 12, 2019

    Проблема здесь заключается в том, что в первом вызове MEMCPY функция DESTINATION является P_DEST, откуда она получает значение, возможно, наше, с размером 0x20, но здесь не ясно, кто является источником MEMCPY, кажется, что программа вычисляет его в той же функции, поэтому нам придется немного проанализировать её, чтобы увидеть, откуда исходит SRC и, конечно, наше значение, которое будет в первом WORD этого буфера, как SRC, так и DESTINATION, так как программа копирует в другие первые 0x20...
    Читать далее
    Лайков 0 Комментариев0 Просмотров3,694

    Перекрытие кода с переходом вперед по коду программы. Часть 10.

    Apr 9, 2019

    Перед рассмотрением этой части следует изучить две предыдущие. Рассмотрим программу 7.5, в которой применена технология перекрытия кода, но с переходом вперед по коду программы. Программа 7.5.include win64a.inc .data .code WinMain proc sub rsp,28h; mov rbp,rsp mov ax,05EBh jmp $ + 5 ; перепрыгивает свои 2 байта и 3 байта dec r9 dec r9 ; 49:FFC0 inc r10 ; выполняем с этой команды mov r8,1 mov eax,06EB0000h jmp $ + 6 ; перепрыгивает свои 2 байта и следующие 4 dec cl ; FEC9 dec al ;...
    Читать далее
    Лайков 0 Комментариев0 Просмотров3,074

    Перекрытие кода с переходом назад по коду программы. Часть 9.

    Apr 9, 2019

    Рассмотрение этой части невозможно без изучения предыдущей части. При рассмотрении программы, в котором применена технология перекрытия кода необходимо с начала открыть отладчик, т.к. только в нем приведены все коды операций и данные в машинном представлении. В программе 7.4 применена технология перекрытия кода с переходом назад по коду программы. Программа 7.4.include win64a.inc .code WinMain proc sub rsp,28h; mov rbp,rsp mov ax,05EBh jmp $ - 2 ; пропуск 2 байтов EB 05 и остановка на EB...
    Читать далее
    Лайков 0 Комментариев0 Просмотров2,557

    Перекрытие кода. Часть 8.

    Apr 9, 2019

    Хороший программист не брезгует ассемблером. А тот, кто умеет использовать прием "перекрытие кода", тот уже близок к профессионалу. Осталось к уже изученному освоить приемы скрытия вызова функций, самомодификации кода, исполнения кода в стеке, шифрование кода или его части и еще чуть чуть – и вы профессионал или программист-фокусник! Суть метода перекрытия кода состоит в том, что часть одной машинной команды может быть другой командой. Например, команда mov может загрузить в регистр число,...
    Читать далее
    Лайков +1 Комментариев0 Просмотров3,042

    Внедрение кода. Добавление новой секции. Часть 7.

    Apr 5, 2019

    Основной алгоритм добавления новой секции Решение проблемы доступного пространства при помощи добавления новой секции имеет некоторые недостатки. Практически все антивирусы опознают нестандартные секции, и если, к тому же, там есть полный набор флагов на чтение/запись/выполнение, то эта ситуация выглядит еще более подозрительно. Но такой способ дает огромное преимущество в объеме внедренного кода. В начале проведения внедрения необходимо получить общие сведения о файле: определение языка...
    Читать далее
    Лайков +1 Комментариев1 Просмотров5,624

    Внедрение кода в ехе-файл в конец секции c добавлением API-функций. Часть 6

    Apr 5, 2019

    Общие сведения При внедрении как внешнего кода, так и тем более дополнительных функций в этом коде, сначала необходимо выяснить размер секции кода и количество свободных в ней байт. Даже для обычных учебных программ свободного места в секции для внедрения функций может уже и не хватать. Внедрение новых API-функций в чужой код не очень сильно отличается от внедрения команд. При внедрении API-функций необходимо не только знать количество и назначение входящих в них параметров, но и как эти...
    Читать далее
    Лайков +2 Комментариев1 Просмотров13,152

    Исследуем эксплоит CVE-2012-0158

    Mar 29, 2019

    Всем привет. Сегодня мы будем исследовать rtf эксплоит CVE-2012-0158, и посмотрим как он работает изнутри. Для исследований нам понадобится хекс редактор (я использую 010-Editor), отладчик (я использую OllyDbg) и просмотрщик составных OLE файлов (я использую SS Viewer). Для тестирования - Word 2007. Итак приступим. В описании написано что эксплоит использует переполнение буфера для запуска кода в стеке используя уязвимость в MSCOMCTL.OCX, подменяя адрес возврата. Данные для исследования...
    Читать далее
    Лайков +1 Комментариев0 Просмотров3,000

    «Hello world» в машинных кодах

    Mar 29, 2019

    Всем привет. Как известно большинство из нас создают программы используя языки высокого уровня, некоторые также используют ассемблер. Сегодня мы с вами напишем программу используя только HEX редактор. Подразумевается что читатель знает строение исполняемых файлов хотя бы поверхностно, поэтому я не буду углубляться в детали, к тому же я уже приводил небольшой обзор загрузчика EXE файлов на VB6. Итак поехали... Для начала определимся с функциональностью приложения и используемыми...
    Читать далее
    Лайков +1 Комментариев0 Просмотров11,631

    Внедрение кода в ехе-файл в конец секции без добавления API-функций. Часть 5

    Mar 22, 2019

    Алгоритм внедрения кода Технология внедрения кода в ехе-файл применяется для изменения исходного функционирования программы при отсутствии исходного текста программы. При низкой подготовке хакера внедрение кода может вызвать проблемы и ошибки в приложениях. Эту технологию часто используют и вредоносные приложения. Фактически, внедрение кода – это грязный взлом. Но в учебных целях технологию внедрения знать необходимо хотя бы по тому, что необходимо представлять этот механизм и противостоять...
    Читать далее
    Лайков 0 Комментариев0 Просмотров5,734

    Реверсинг программы с парольной защитой на С++. Часть 4

    Mar 22, 2019

    Рассмотрим пример исследования программного кода для анализа вводимого пароля и вывода сообщения о регистрации. Для начала рассмотрим очень простую консольную программу (программа 2.8). Программа 2.8. #include <iostream> #include <stdio.h> #include <process.h> #include <conio.h> using namespace std; void main() { cout << " Enter pssword " << endl; int pass; cin >> pass; if (pass==999) //пароль 999 { cout << " OKEY!!! ;) " << endl; getch(); } else { cout << " WRONG!!! "...
    Читать далее
    Лайков +1 Комментариев0 Просмотров3,986

    Реверсинг программы с использованием строковых команд. Часть 3

    Mar 22, 2019

    Для сравнения вводимого пароля с эталонным значением чаще всего применяют строковые команды. Достоинством применения таких команд, в данном случае, является сокращение кода. Учитывать быстродействие при выполнении сравнения и медленном клавиатурном вводе как-то не уместно. В программе 2.5 применена процедура Pas1 proc, которая влияет только на оформление программы. Но если процедур будет достаточно много, то это сильно повлияет на поиск пароля. А если при этом предположить, что и сравнение...
    Читать далее
    Лайков +1 Комментариев0 Просмотров2,624