Search
Write a publication
Pull to refresh
10
0
Виктор @VictorAl

Разработчик АСУНО

Send message

Обходим детектирование виртуальной машины программами в VMWare

Reading time3 min
Views147K
Разработчики вирусного ПО и просто разработчики, не желающие, чтобы их программу пытались реверсить, на этапе запуска или установки проводят проверки на виртуальную машину, и в случае её обнаружения отказываются работать, а то и вовсе самоликвидируются. Под катом описан способ, как можно попробовать решить эту проблему.
Читать дальше →

Подпись объектного кода сертификатом от StartSSL. По шагам — заплатил, получил, подписал

Reading time4 min
Views11K

Приветствую! Хочу поделиться своим опытом как я получил сертификат для подписи объектного кода. Много статей и постов написано о цифровой подписи, и бюджетном StartSSL. Я решил потратив почти $ 60, попробовать пройти по этому пути и поделиться с обществом своим опытом.
Относиться все ниже изложенное исключительно к моему личному опыту и относится к ОС Windows.
Ну, начинаем...

Удаление цифровой подписи PE-файла

Reading time2 min
Views23K
Для подписи PE-файлов (exe, dll, sys и другие) в большинстве случаев используется утилита signtool.exe, но какую утилиту использовать, если цифровую подпись нужно удалить из файла? А такой утилиты официально нет. Можно только подписать или переподписать (поставить свою подпись поверх существующей), но не удалить. Как же быть, если файлик нужно подправить в Hex или PE-редакторе и не хочется оставлять файл с заведомо повреждённой цифровой подписью?
Читать дальше →

Аутентификация в OpenVPN c помощью Рутокен ЭЦП

Reading time4 min
Views33K
image
OpenVPN — кроссплатформенное, гибкое и удобное решение для организации VPN. Для допуска в виртуальную сеть, построенную на базе OpenVPN, клиент должен авторизоваться. В OpenVPN это можно сделать 3 способами:
  • по логину и паролю
  • по ключу и сертификату в файлах
  • по ключу и сертификату на «борту» криптографического USB-токена или смарт-карты
Последний способ является наиболее безопасным. В топике будет описана авторизация в OpenVPN с помощью криптографического USB-токена Рутокен ЭЦП. Рутокен ЭЦП надежно защищен PIN-кодом от несанкционированного доступа и блокируется при исчерпании попыток ввода PIN-кода, поэтому злоумышленник не попадет в VPN даже в случае кражи токена. Кроме того, в Рутокен ЭЦП аппаратно реализованы алгоритмы ГОСТ и RSA, поэтому аутентификация производится «на борту» токена. Благодаря этому закрытый ключ никогда не покидает токен и его невозможно украсть из оперативной памяти компьютера с помощью троянов.

В топике будет показано, как развернуть тестовый VPN, а также корпоративный УЦ на базе open source приложения XCA. С помощью УЦ будет создан ключ и сертификат сервера OpenVPN и произведена инициализация токена клиента. Затем настроим клиент OpenVPN таким образом, чтобы пользователь мог авторизоваться в OpenVPN с помощью Рутокен ЭЦП.
Читать дальше →

Тегирование EXE файлов без повреждения цифровой подписи

Reading time5 min
Views21K


Всем привет!

Мы хотим рассказать о нашем опыте исследования цифровых подписей Windows PE файлов и возможном варианте использования их особенностей в своих целях. Если вам интересны технические подробности или просто чтиво о, казалось бы, давно известных вещах, добро пожаловать под кат.
Читать дальше →

Как переменная может быть не равной её собственному значению

Reading time3 min
Views32K
Недавно мой друг показал мне ошибку, которая проявляется в простой функции, вычисляющей полиномиальный хеш от строки с переполнением int'a. Она возвращала отрицательное число, хотя не должна была. Вот сама функция:

unsigned MAX_INT = 2147483647;
 
int hash_code(std::string x) {
    int h = 13;
    for (unsigned i = 0; i < 3; i++) {
        h += h * 27752 + x[i];
    }
    if (h < 0) h += MAX_INT;
    return h;
}

На некоторых строках, в частности, на строке «bye», и только на сервере (что интересно, на своем компьютере все было в порядке) функция возвращала отрицательное число. Но как же так, ведь в случае, если число отрицательное, к нему прибавится MAX_INT и оно должно стать положительным.
Читать дальше →

Каламбуры типизации функций в C

Reading time8 min
Views23K

У C репутация негибкого языка. Но вы знаете, что вы можете изменить порядок аргументов функции в C, если он вам не нравится?


#include <math.h>
#include <stdio.h>

double  DoubleToTheInt(double base, int power) {
    return pow(base, power);
}

int main() {
    // приводим к указателю на функуцию с обратным порядком аргументов
    double (*IntPowerOfDouble)(int, double) =
        (double (*)(int, double))&DoubleToTheInt;

    printf("(0.99)^100: %lf \n", DoubleToTheInt(0.99, 100));
    printf("(0.99)^100: %lf \n", IntPowerOfDouble(100, 0.99));
}

Этот код на самом деле никогда не определяет функцию IntPowerOfDouble — потому что функции IntPowerOfDouble не существует. Это переменная, указывающая на DoubleToTheInt, но с типом, который говорит, что ему хочется, чтобы аргумент типа int шел перед аргументом типа double.


Вы могли бы ожидать, что IntPowerOfDouble примет аргументы в том же порядке, что и DoubleToTheInt, но приведет аргументы к другим типам, или что-то типа того. Но это не то, что происходит.


Попробуйте — вы увидите одинаковый результат в обоих строчках.


emiller@gibbon ~> clang something.c 
emiller@gibbon ~> ./a.out 
(0.99)^100: 0.366032 
(0.99)^100: 0.366032 
Читать дальше →

Безопасность прошивок на примере подсистемы Intel Management Engine

Reading time10 min
Views107K


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

Встречайте – подсистема Intel Management Engine, самая загадочная составляющая архитектуры современных x86-платформ.

Читать дальше →

Control Flow Guard. Принцип работы и методы обхода на примере Adobe Flash Player

Reading time16 min
Views23K

Компания Microsoft не оставляет попыток победить в бесконечной войне с эксплоитописателями, раз за разом реализуя новые техники по защите приложений. На сей раз разработчики операционной системы Windows подошли к решению данного вопроса более фундаментально, переведя свой взгляд на корень проблемы. Работа почти каждого эксплоита так или иначе нацелена на перехват потока исполнения приложения, следовательно, не помешало бы "научить" приложения следить за этим моментом.
Концепия Control Flow Integrity (целостность потока исполнения) была описана еще в 2005 году. И вот, 10 лет спустя, разработчики из компании Microsoft представили свою неполную реализацию данного концепта — Control Flow Guard.


Что такое Control Flow Guard


Control Flow Guard (Guard CF, CFG) — относительно новый механизм защиты Windows (exploit mitigation), нацеленный на то, чтобы усложнить процесс эксплуатации бинарных уязвимостей в пользовательских приложениях и приложениях режима ядра. Работа данного механизма заключается в валидации неявных вызовов (indirect calls), предотвращающей перехват потока исполнения злоумышленником (например, посредством перезаписи таблицы виртуальных функций). В сочетании с предыдущими механизмами защиты (SafeSEH, ASLR, DEP и т.д.) являет собой дополнительную головную боль для создателей эксплоитов.

Читать дальше →

Исходные тексты банковского трояна TinyBanker утекли в сеть

Reading time2 min
Views16K
Несколько лет назад наши коллеги из CSIS Security Group первыми написали о самом маленьком банковском трояне «Tiny Banker» (a.k.a Tinba, Zusy), который был известен на тот момент. Размер исполняемого файла составляет всего около 20KB, так как авторы использовали для написания ассемблер. Подобно многим банковским троянам, он использует технику внедрения (инжекции) своего кода в браузер и перехватывает там необходимые API-вызовы для кражи конфиденциальных банковским данных через механизм форм-граббинга и веб-инжектов (т. н. атака Man-in-the-Browser). Обнаруживается ESET: Win32/Tinba, Microsoft: Trojan:Win32/Tinba.A, Symantec: Trojan.Tinba.

Недавно на одном из подпольных форумах появилась информация о том, что тексты первой версии Tinba доступны для загрузки. Архив включает в себя исходные тексты бота, а также панели управления, которую злоумышленники могут использовать для получения информации о работе ботов. Tinba ориентирован на популярные веб-браузеры MS Internet Explorer, Mozilla Firefox и Google Chrome, что и подтверждается исходными текстами.


Рис. Исходные тексты бота Tinba. Видны файлы, отвечающие за форм-граббинг браузеров.
Читать дальше →

Gray Hat Python — Immunity Debugger

Reading time17 min
Views18K

Intro


Рассмотрев создание и использования отладчика на чистом Python’е в виде PyDbg, пришло время изучить Immunity Debugger, который состоит из полноценного пользовательского интерфейса и наимощнейшей Python-библиотекой, на сегодняшний день, для разработки эксплойтов, обнаружения уязвимостей и анализа вредоносного кода. Выпущенный в 2007 году, Immunity Debugger имеет хорошее сочетание возможностей как динамической отладки, так и статического анализа. Помимо этого он имеет полностью настраиваемый графический интерфейс, реализованный на чистом Питоне. В начале этой главы мы кратко познакомимся с отладчиком Immunity Debugger и его пользовательским интерфейсом. Затем начнем постепенное углубление в разработку эксплойта и некоторых методов, для автоматического обхода анти-отладочных приемов, применяемых в вредоносном ПО. Давайте начнем с загрузки Immunity Debugger и его запуска.

Читать дальше →

Gray Hat Python — DLL и Code Injection

Reading time19 min
Views31K

Intro


Порой, когда вы реверсите или атакуете программу, полезно иметь возможность загрузить и выполнить свой код в контексте исследуемого процесса. Крадете ли вы хэши паролей или получаете доступ к удаленному рабочему столу целевой системы, методы внедрения кода и dll-библиотек предоставляют мощные возможности. Мы создадим несколько простых утилит на Питоне, которые позволят вам использовать оба метода. Эти методы должны входить в арсенал каждого разработчика программ, эксплойтов, шелл-кодов и пентестеров. Мы будем использовать внедрение DLL (DLL injection) для запуска всплывающего окна внутри другого процесса. Так же мы будем использовать внедрение кода (code injection), чтобы протестировать шелл-код, разработанный для уничтожения какого-либо процесса основываясь на его PID. Под конец главы мы создадим и скомпилируем Trojan’a (с функционалом backdoor’a) полностью написанного на Python. В большей степени он будет опираться на внедрении кода и использовании некоторых других скрытых тактик, которые должен использовать каждый хороший бэкдор. Давайте начнем с рассмотрения темы создания удаленных потоков, которые являются основой для обоих методов внедрения.
Читать дальше →

Исследование простого crackme

Reading time3 min
Views23K
Здравствуйте Хабралюди. В этом топике я расскажу как я исследовал простой crackme. Этот крякмис предназначен, в первую очередь, для новичков, желающих попрактиковаться в реверсинге. Я планирую продолжать цикл статей этой тематики, двигаясь постепенно от простого к сложному.
Читать дальше →

Исследование простого crackme (часть 2)

Reading time6 min
Views7.9K
Здравствуйте, Хабралюди!
Этот топик является продолжением цикла статей о исследовании крякмисов (часть 1). В этой статье мы рассмотрим крякмис по-сложнее, чем в предыдущей статье. Основная сложность будет заключаться в алгоритме шифровки. Однако, всё равно, многим он покажется слишком простым.
Читать дальше →

Иследование несложных crackme's (часть 3)

Reading time7 min
Views13K
Здравствуйте, Хабралюди.
Представляю вам третью часть из моего цикла статей о исследовании крякмисов. В этом топике мы поговорим с вами о ручной распаковке некоторых пакеров и о преодолении не сложных антиотладочных методов.
Читать дальше →

CrackMe от нашей компании

Reading time1 min
Views2.3K
Привет, Хабр!

Вот и закончились новогодние каникулы, начались трудовые будни, за две неполных недели все мы, по мере возможностей, вернулись в рабочий ритм.
Самое время начать конкурс!

Что предстовляет собой CrackMe?

Это CLI-апплет, демонстрирующий возможности двух наших продуктов: C3 Cloud Licensing и Stringer.
Читать дальше →

Разбор простого криптографического keygenme

Reading time4 min
Views33K
Привет, хабрахабр.

Листая одним декабрьским вечером различные хабы, я заметил, что нигде давненько не бывало статей о реверсинге. А разборов crackme/keygenme – и подавно. И вдруг меня осенило: почему бы не написать свой туториал?



Тех, кого интересует разбор простенького криптографического keygenme и что же в итоге получилось, прошу под кат.

Читать дальше →

Анализ keygenme от Ra$cal на базе виртуальной машины

Reading time5 min
Views11K

0. Инфо


Страница KeygenMe на crackmes.de
Crackme with simple vm. Key check algorithm is simple, so main target — vm.
difficult of pcode is growing from start to end. first part seems like emulator, but then it looks like like machine with another logic, registers, commands =)
Good luck and have fun.
Difficulty: 4 — Needs special knowledge
Platform: Windows
Language: C/C++
Читать дальше →

Сломай меня полностью (ZeroNights 2013)

Reading time10 min
Views23K
Привет всем Хабровчанам! Меня зовут Дарвин и сегодня я расскажу вам о том, как решал крякми от ZeroNights 2013 и Лаборатории Касперского для форума r0 Crew и его полу-приватной Киевской встречи.

Немного информации о крякми:
  • Файл: ZeroNightsCrackME.exe
  • Платформа: Windows 7 (64 bit)
  • Упаковщик: Отсутствует
  • Анитотладка: Не натыкался
  • Решение: Валидная пара Mail / Serial

Инструменты:
  • OllyDbg SnD 2.2
  • IDA Pro 6.1
  • Немного серого вещества

Приступим к решению…

Читать дальше →

Information

Rating
Does not participate
Location
Саратов, Саратовская обл., Россия
Date of birth
Registered
Activity