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

Приветствую! Хочу поделиться своим опытом как я получил сертификат для подписи объектного кода. Много статей и постов написано о цифровой подписи, и бюджетном StartSSL. Я решил потратив почти $ 60, попробовать пройти по этому пути и поделиться с обществом своим опытом.
Относиться все ниже изложенное исключительно к моему личному опыту и относится к ОС Windows.
Удаление цифровой подписи PE-файла
Аутентификация в OpenVPN c помощью Рутокен ЭЦП
OpenVPN — кроссплатформенное, гибкое и удобное решение для организации VPN. Для допуска в виртуальную сеть, построенную на базе OpenVPN, клиент должен авторизоваться. В OpenVPN это можно сделать 3 способами:
- по логину и паролю
- по ключу и сертификату в файлах
- по ключу и сертификату на «борту» криптографического USB-токена или смарт-карты
В топике будет показано, как развернуть тестовый VPN, а также корпоративный УЦ на базе open source приложения XCA. С помощью УЦ будет создан ключ и сертификат сервера OpenVPN и произведена инициализация токена клиента. Затем настроим клиент OpenVPN таким образом, чтобы пользователь мог авторизоваться в OpenVPN с помощью Рутокен ЭЦП.
Тегирование EXE файлов без повреждения цифровой подписи

Всем привет!
Мы хотим рассказать о нашем опыте исследования цифровых подписей Windows PE файлов и возможном варианте использования их особенностей в своих целях. Если вам интересны технические подробности или просто чтиво о, казалось бы, давно известных вещах, добро пожаловать под кат.
Как переменная может быть не равной её собственному значению
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
У 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

В предыдущей статье был описан ход исследования безопасности прошивок промышленных коммутаторов. Мы показали, что обнаруженные архитектурные недостатки позволяют легко подделывать образы прошивок, обновлять ими свитчи и исполнять свой код на них (а в некоторых случаях — и на подключающихся к свитчам клиентах). В дополнение, мы описали возможности закрепления внедряемого кода на устройствах. Подчеркнули низкое качество кода прошивок и отсутствие механизмов защиты от эксплуатации бинарных уязвимостей.
Мы обещали привести реальный пример сильной модели безопасности прошивок, где модификация исполнимого кода является очень нетривиальной задачей для потенциального злоумышленника.
Встречайте – подсистема Intel Management Engine, самая загадочная составляющая архитектуры современных x86-платформ.
Control Flow Guard. Принцип работы и методы обхода на примере Adobe Flash Player

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

Рис. Исходные тексты бота Tinba. Видны файлы, отвечающие за форм-граббинг браузеров.
Gray Hat Python — Immunity Debugger
Intro
Рассмотрев создание и использования отладчика на чистом Python’е в виде PyDbg, пришло время изучить Immunity Debugger, который состоит из полноценного пользовательского интерфейса и наимощнейшей Python-библиотекой, на сегодняшний день, для разработки эксплойтов, обнаружения уязвимостей и анализа вредоносного кода. Выпущенный в 2007 году, Immunity Debugger имеет хорошее сочетание возможностей как динамической отладки, так и статического анализа. Помимо этого он имеет полностью настраиваемый графический интерфейс, реализованный на чистом Питоне. В начале этой главы мы кратко познакомимся с отладчиком Immunity Debugger и его пользовательским интерфейсом. Затем начнем постепенное углубление в разработку эксплойта и некоторых методов, для автоматического обхода анти-отладочных приемов, применяемых в вредоносном ПО. Давайте начнем с загрузки Immunity Debugger и его запуска.
Gray Hat Python — DLL и Code Injection
Intro
Порой, когда вы реверсите или атакуете программу, полезно иметь возможность загрузить и выполнить свой код в контексте исследуемого процесса. Крадете ли вы хэши паролей или получаете доступ к удаленному рабочему столу целевой системы, методы внедрения кода и dll-библиотек предоставляют мощные возможности. Мы создадим несколько простых утилит на Питоне, которые позволят вам использовать оба метода. Эти методы должны входить в арсенал каждого разработчика программ, эксплойтов, шелл-кодов и пентестеров. Мы будем использовать внедрение DLL (DLL injection) для запуска всплывающего окна внутри другого процесса. Так же мы будем использовать внедрение кода (code injection), чтобы протестировать шелл-код, разработанный для уничтожения какого-либо процесса основываясь на его PID. Под конец главы мы создадим и скомпилируем Trojan’a (с функционалом backdoor’a) полностью написанного на Python. В большей степени он будет опираться на внедрении кода и использовании некоторых других скрытых тактик, которые должен использовать каждый хороший бэкдор. Давайте начнем с рассмотрения темы создания удаленных потоков, которые являются основой для обоих методов внедрения.
Исследование простого crackme
Исследование простого crackme (часть 2)
Этот топик является продолжением цикла статей о исследовании крякмисов (часть 1). В этой статье мы рассмотрим крякмис по-сложнее, чем в предыдущей статье. Основная сложность будет заключаться в алгоритме шифровки. Однако, всё равно, многим он покажется слишком простым.
Иследование несложных crackme's (часть 3)
Представляю вам третью часть из моего цикла статей о исследовании крякмисов. В этом топике мы поговорим с вами о ручной распаковке некоторых пакеров и о преодолении не сложных антиотладочных методов.
CrackMe от нашей компании
Вот и закончились новогодние каникулы, начались трудовые будни, за две неполных недели все мы, по мере возможностей, вернулись в рабочий ритм.
Самое время начать конкурс!
Что предстовляет собой CrackMe?
Это CLI-апплет, демонстрирующий возможности двух наших продуктов: C3 Cloud Licensing и Stringer.
Разбор простого криптографического keygenme
Листая одним декабрьским вечером различные хабы, я заметил, что нигде давненько не бывало статей о реверсинге. А разборов crackme/keygenme – и подавно. И вдруг меня осенило: почему бы не написать свой туториал?

Тех, кого интересует разбор простенького криптографического keygenme и что же в итоге получилось, прошу под кат.
Анализ keygenme от Ra$cal на базе виртуальной машины
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++
Анализ KeygenMe#2 от Paic_Citron
You have to find a valid serial.
The only protection is the serial ...!
This is a kind of headache… :D
Good luck
Difficulty: 5 — Professional problem to solve
Platform: Windows
Language: Borland Delphi
Сломай меня полностью (ZeroNights 2013)
Немного информации о крякми:
- Файл: 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