Новые публикации

Заголовок
Оценка
Ответов
Последнее сообщение

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

    13 июн 2020

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

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

    9 мар 2020

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

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

    19 июн 2019

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

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

    13 июн 2019

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

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

    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.177

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

    24 апр 2019

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

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

    19 апр 2019

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

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

    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 Просмотров3.881

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

    12 апр 2019

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

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

    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 Просмотров2.921

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

    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.386

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

    9 апр 2019

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

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

    5 апр 2019

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

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

    5 апр 2019

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

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

    29 мар 2019

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

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

    29 мар 2019

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

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

    22 мар 2019

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

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

    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!!! "...
    Читать далее
    Лайков 0 Комментариев0 Просмотров3.691

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

    22 мар 2019

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

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

    22 мар 2019

    Применение базовых команд не дает никакого преимущества перед использованием API-функции lstrcmp. В этом случае достигается не только разнообразие вариантов программ с запросом пароля, но и детализация внутреннего алгоритма проверки вводимых символов пароля. Особенностью программы можно считать применение функции WriteConsole, которую так же надо было применить в программе 2.1. Эта функция выводит сообщение с просьбой ввести пароль в консольном окне. В связи с тем, что эта программа является...
    Читать далее
    Лайков 0 Комментариев0 Просмотров2.339