26 декабря 2012 г.

Алгоритм SHA-2 подвид SHA-256

А сегодня мои маленькие любители биткоинов будет небольшой вам подарок на новый год, мы рассмотрим основополагающий алгоритм этой криптовалюты под названием SHA-2 подвид SHA-256 на ассемблере. Да и в коментах к SHA-1 просили. В принципе со стороны коденья на асме, он даже немного легче чем SHA-1 ибо тут плоский матан, один только геморрой - набить небольшую кучку констант(копипаста утомляет).

Пока идут рождественские выходные - накидал небольшую програмку с алгоритмом SHA-2.
Итак, для тех, кто хочет узреть этот алгоритм, прошу под кат.

21 декабря 2012 г.

pastebin и модерация



Забавно, но исходник с алгоритмом Луна, который я использовал для "генератора" кредитных карт и который я выложил на pastebin.com удалили. Незнаю правда почему, вроде инфа об алгоритме открытая да и используется во многих местах.

20 декабря 2012 г.

SHA-1 BrutForcer

Продолжим тему про брутфорсеры. Написал на асемблере программу для взлома SHA1 хешей. Алгоритм вычисляется на проце, а не на видео карте, так как не разбирался с работой CUDA и т.п. движков на асме. По этому алгоритм достаточно медленный по сравнению с вычислениями на видео картах, но зато работает на любом компе.

Как обычно, программа исключительно для ознакомления и использование на свой страх и риск, к стати  по этому алгоритм намеренно замедлен, но ускорить его не проблема, выкинув некоторое количество кода. Естественно алгоритм и код можно улучшить, так что на истину в последней инстанции не претендую.

21 ноября 2012 г.

Errors keygenme

Выдалась свободная минутка и я написал тут намедни свой keygenme, выложил неделю назад на http://crackmes.de наконец заапрувили его.
Находится keygenme на этой странице: http://crackmes.de/users/bearchik/errors_keygenme/
Как напишут солюшен на него, выложу описание и исходники его.

24 октября 2012 г.

Проблема с crackmes.de

Что то на этой неделе совсем не работает сайт crackmes.de и это очень печально. Интересно что с ним случилось, у меня показывает везде просто белую страницу.

22 октября 2012 г.

Генератор кредитных карт

Наткнулся тут на такой алгоритм под названием "Алгоритм Луна" который применяется для первичной верификации пластиковых банковских карт, а так же можно использовать для всяких медицинских страховок и прочих вещей где есть ручной ввод и человеческий фактор. Этот алгоритм защищает только от ошибочного ручного ввода, в любом случае банковская карта после этого проходит верификацию в процессинговом центре.

Так что AHTUNG! ALARM! ВНИМАНИЕ! генератор не работает и подсовывать с него номера пытаясь расплотиться в интернет магазинах - не надо, карта не сработает! Считайте, что я вас предупредил и любое использование этого генератора где то кроме изучения алгоритма - на свой страх и риск.
Для тех кто хочет узнать что за алгоритм и как написать программу для генерирования - под кат.

11 октября 2012 г.

Алгоритм SHA-1 на ассемблере.

Начнем с небольшой теории из педевикии:
(Нудным и гнусявым голосом) Алгоритм был создан в 1995 году прошлого века, насколько я понимаю в замену алгоритма MD5. По внутренней структуре алгоритм очень похоже на MD5, но имеет на мой взгляд более простую реализацию и вроде как более защищен от возникновения коллизий. Хотя в 2005 году математики из Китая придумали как провести полноценную атаку на SHA-1 причем менее чем за 2 в 69 степени операций. Что лучше, чем так называемая атака Дней рождения. За подробностями рекомендую обратиться в гугл, может в будующем я реализую алгоритм атаки Дней рождения, но сейчас поговорим как реализовать SHA-1 на ассемблере.
Понадобился мне SHA-1 для одного моего креатива, об котором я позже напишу.
Итак, простыми словами базовый алгоритм:

3 сентября 2012 г.

Часы eZ430-Chronos от Texas Instruments

Для того чтобы привлечь разработчиков к своему железу и софту в один прекрасный момент фирма Texas Instruments выпустила такую вещь как часы eZ430-Chronos. Из себя эта платформа разработчика выглядит следующим образом:
1. Сами часы с радиомодулем CC430
2. Плата беспроводной связи по хитрому стандарту который подключается к кардиологическому оборудованию, тренажерам, шагометрам и прочему мед и спорт оборудованию имеющему радиомодуль на чипе СС1111
3. Отладочная плата, для подключения часов напрямки в USB, для заливки например прошивки.
Какие сенсоры есть:
1. Акселерометр
2. Датчик давления
3. Датчик температуры
4. Датчик батареи.
Выглядит все это следующим образом:

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

29 августа 2012 г.

Программа для криптографии/криптоанализа CrypTool

Копался сегодня в интернетах и нашел интересную программу, под названием CrypTool. Посмотрев ютубы решил скачать и поглядеть живьем, больно она затейная оказалась. На ютубе показывалась первая версия, а я скачал вторую. Послу установки пришлось гдето с час поковыряться чтобы разобраться как она работает, оказалась что программа очень полезная как криптографу так и для криптоанализа, да и вообще интересно понаблюдать за всякими шифрами тем кто хоть както интересовался криптографией. Банальный пример перебора кода Цезарь у меня на скриншете, хотя я делал и подбор AES естесвенно не целиком ибо на это уйдет времени до окончания солнечной системы, но самое главное оно работает и работает очень наглядно.

Программа умеет работать с синхронными/асинхронными шифрами, хэшами, WEP шифрованием, перехватывает пакеты и многое многое другое, что бывает полезно в криптоанализе или в попытке сломать какойнить протокол. Скачать ее можно тут:

28 августа 2012 г.

Пишем пакер, ну или основу криптора. (Часть 4)

И наконец последняя часть креатива про пакер/анпакер. Предыдущие Глава1, Глава2, Глава3
У нас остается 2 вещи которые необходимо сделать, это сохранить данные для востановления и загрузки оригинального файла и сам алгоритм распаковки.

Данные для распаковски потребуются следующие:

23 августа 2012 г.

OllyDbg 2.01 beta 2

После почти года без новостей, появилась новая версия OllyDbg 2, вроде поправили некоторые баги, да и виснуть стала реже, не то что предыдущая. С плагинами как жопа была так и осталась, так, что от первой OllyDbg плагины не подходят. Качать собственно новую версию можно тут:

21 августа 2012 г.

Пишем пакер, ну или основу криптора. (Часть 3)

Итак третья часть зловещей пьесы про пакер/криптор. Предыдущие 1 глава и 2 глава.
Что у нас осталось, необходимо доделать секции, разместить информацию в PE заголовке, создать таблицу импорта, закопировать все данные и декриптора, ну и написать сам декриптор.

Начнем потихоньку.

15 августа 2012 г.

Пишем пакер, ну или основу криптора. (Часть 2)

А вот и вторая часть про пакер/криптор.

Так как у нас все данные из старого файла будут находиться в одной секции, необходимо их склеить, потом закриптовать/упаковать и выяснить размер. Я не стал писать функцию криптования или упаковки, так как это достаточно просто, да и лень что то стало, ограничился только склеиванием и измерением размера. В любом случае, тут не нужно файловое выравнивание и секция получается меньше, чем в оригинальном файле.
Немножко кода:

14 августа 2012 г.

Пишем пакер, ну или основу криптора. (Часть 1)

Давно была у меня задумка написать пакер/криптор. Ковыряясь намедник очередной раз в формате PE я всетаки скрепился и начал писать пакер. Имея некоторый опыт в распаковке всяких  пакеров типа UPX/ASPack и немного в ASProtect. Я взял за основу болванки - UPX.

Я не смотрел исходники дабы не плагиатить подсознательно код и делал пакер разбираясь по ходу  в коде и заголовке упакованного файла и имея только бинарники.
Для изучения алгоритмов я использовал следующие программы:
IDA Pro - по большей части чисто как дизассемблер
OllyDbg - для дебага
Explorer Suite (CFF Explorer) - для изучения заголовка PE, секций и т.п.
Для начала теория.
Один из вариантов работы пакера/криптора:

31 июля 2012 г.

Наглядное представление PE файла.


Наткнулся на наглядно нарисованный формат PE файла, есть даже русская версия, смотреть тут - http://code.google.com/p/corkami/wiki/PE101?show=content
Ну и еще неплохо ознакомиться с каноничным мануалом от микрософта как загружаются в память исполняемые файлы - http://msdn.microsoft.com/en-us/magazine/cc301727.aspx

12 июля 2012 г.

Посмотреть на рандом.

Бывает интересно посмотреть на алгоритм псевдо генератора рандом не просто в цифрах, а в виде картинок и подобрать параметры которые больше всего нравятся. Не всегда есть желание и возможность провести полноформатное тестирование с его монстроподными формулами и прочим да и не особа это нужно если не разрабатывать новые алгоритмы для криптографии. По этому решил я написать небольшую программку которая выводит в фаил нули и единицы которые генерятся нв выходе алгоритмов.

10 июля 2012 г.

Алгоритм словарной компрессии LZ78

На http://crackmes.de/ тишина и интересных крякмисов нет, так что мучаясь от безделья решил покопать алгоритмы компрессии. Арифметическая компресия мне не особа понравилась, да и както мутный там достаточно алгоритм для кодирования, решил поковырять словарную компрессию. Выбор пал на достаточно актуальные алгоритмы созданные Якобом Зивом и Абрахамом Лемпелом под общим названием LZ.


26 июня 2012 г.

ICMP Chat

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



18 июня 2012 г.

SSH Bruteforcer

На прошлой неделе было нечего делать, написал небольшой многопоточный SSH брутфорсер по словарю для Win консоли. Я в курсе, что есть вагон таких программ, но практически все они имеют вижуальный интерфейс. А тут небольшая консольная программка на ASM.

4 июня 2012 г.

OllyDbg и windows 7 x64

Нашел всетаки версию которая более менее стабильно работает на Windows Seven x64. Называется она OllyDbg Final 2.00.01. На сайте OllyDbg ее нет(там альфа4 только), что это за версия не очень понятно, но по крайней мере работает. Можно поискать ее в инетрнетах, ну или пока ссылка не протухнет - скачать здеся: http://depositfiles.com/files/rdwc2cogd
Но к сожалению плагины она не умеет, так что имеем некоторые ограничения на отладку.

28 мая 2012 г.

Введение в реверс инженеринг используя IDA - Глава 5

Продолжим иследовать программы при помощи IDA Pro и мегаполезного мануала от Рикардо Нарваха который можно посмотреть на русском тут. Сегодня займемся главой 16 где рассматривается вычисление серийника на основе имени пользователя. В принципе я уже рассматривал такой случай в предыдущей статье под названием "Разбираем crackme - XYZ_KeygenMe20110405". Этот же пример будет гораздо проще, так как там используются стандартное Win API, а не извращенства от китайского друга :)
Итак берем crackme из 1 Главы по ссылке.
Открываем его в IDA Pro и смотрим снова, что мы там можем сделать.

 

23 мая 2012 г.

Разбираем crackme - XYZ_KeygenMe20110405

От скуки зашел на сайт http://crackmes.de, тыкнул на угад в поисках чтоб поломать и выпал мне crackme от китайского товарища по имени Xia Yuanzhong. Ну чтож, написанно что очень легкое, вот и потренируемся в ломании и написании генератора ключей.

 

21 мая 2012 г.

Введение в реверс инженеринг используя IDA - Глава 4

Переходим к следующей части серии лекций от Рикардо Нарваха которая идет под номером 15. Посмотреть перевод ее можно на томже wasm.ru по вот этой ссылке.

Возмем crackme под названием SAMBO, его можно скачать тут. Открываем в IDA Pro фаил sambo.exe и видим мало приятную картину:



14 мая 2012 г.

Введение в реверс инженеринг используя IDA - Глава 3

Сегодня займемся разборкой следующей главы Рикардо Нарваха под номерм 14, которая рассматривает еще один вид жестко прописанного серийника в коде программы, но реальный серийник будет вычилятся. Посмотреть эту статью на русском можно на сайте wasm.ru например тут.

12 мая 2012 г.

Исключения в Windows.

А сегодня поковыряемся в темных закоулках исключений Windows. Они созданы для того, чтобы обрабатывать всякие ошибки, например если возникает деление на ноль или запись в ячейку памяти которая защищена от записи. По умолчанию мы получим сообщение типа "Application Error.", а в Windows Vista/Seven вообще можно ничего не получить, программа просто закроется.

Итак, как это можно использовать в своих целях, ну например для антиотладки и запутывания логики программы. Для начала небольшая теория:

10 мая 2012 г.

Немного про антиотладку.

Решил поколупать всякие простенькие приемчики антиотладки, конечно с плагинами которые вешаются на дебаггеры типа OllyDBG и IDA они не шибко помогут, но остановят начинающего крякера, да и самому интересно стало поковыряться.

7 мая 2012 г.

Введение в реверс инженеринг используя IDA - Глава 2

И снова начало тяжелой рабочей недели и чтобы немного скрасить рабочий понедельник, займемся исследованием очередного crackme при помощи IDA.  Сегодня рассмотрим главу Рикардо Нарвахо под номером 13. Почитать ее на русском можно здесь.

Глава повествует как найти жестко прописанный серийник в программе. Для начала необходимо скачать файлы для испледования, например тут.

2 мая 2012 г.

Введение в реверс инженеринг используя IDA - Глава 1

 В основном я всегда для отладки пользовался отладчиком всех времен и народов OllyDbg. Это шикарный деббагер, который очень удобен и прост одновременно обладающий очень мощным функционалом. Но, в последнее время я все больше сталкиваюсь х64 программами, да и домашний компьютер у меня поднят на х64 операционной системе, а OllyDbg версии 1.10 не корректно работает на такой операционной системе, теряет точку входа и вообще печально все. Попытки использовать более новую версию 2.01а тоже не увенчались успехом, так как она виснет в неожиданный момент и перестает отвечать, можно конечно накатить кучу патчей от китайских друзей и более менее оживить дебагер, но все равно огромное количество багов и похоже прекращение разработки(с августа 2011 года никаких подвижек) заставило меня посмотреть в сторону Interactive Disassembler, сокращенно IDA. Это мощнейший инструмент для отладки и исследования программ который обладает кучей нужных и не очень не нужных свистелок и перделок.
 Но он тоже обладает некоторыми минусами, которые меня всегда останавливали для изучения сего мощного инструмента:
1. Мало вменяемой документации, есть конечно книги от уважаемого господина К. Касперски, но они настолько древние, что читать их смысл есть, но в текущих реалиях не шибко большой, в основном для общего развития.
2. Цена сего продукта у X-Rays - стартовая лицензия более 500 австралийских долларов и это без X-Rays Decompiler, который стоит совсем каких то неадекватных денег.
Но разочарование OllyDbg  возобладало над жабой и здравым смыслом и я решил заняться всетаки изучением IDA.

27 апреля 2012 г.

Сеть Фейштеля

Иной раз необходимо зашифровать какойнить кусочек, причем желательно не банальным XOR, так как он расшифровывается без проблем частенько даже при наличии бумажки с ручкой, а чем нибудь более стоящим. Посложнее XOR но полегче и попроще чем AES или MD5.
Для этого один из американских ученых по фамилии Фейштель разработал алгоритм, в последствии который стал называться сетью Фейштеля. Он до сих пор используется в в качестве основного движка во многих алгортмах шифрования, да хотябы в том же MD5. Я рассмотрю основной движек, без навороченных навесок типа перемешивания и прочего.
Смысл его в чем:

23 апреля 2012 г.

Длинная арифметика: Сравнение

Для следующей арифметической операции под названием деление, а именно вычисления модуля числа, нам необходима процедурка - сравнение. В принципе она очень проста, алгоритм заключается в следующем, сначала мы сравниваем длину числа в байтах, то число которое длиннее - всегда будет больше чем короткое. Если длина чисел равна, то сравниваем пару сатрших цифр в числах, если цифра в числе 1 больше, то значит число 1 больше и наоборот, если же они тоже равны то сдвигаемся на одну в право и повторяем сравнение,пока какая то цифра не окажется больше или меньше. Если все цифры закончились, но так и не найдено большее число, тогда считаем что оба числа равны.
А теперь все это на ASM:

20 апреля 2012 г.

Длинная арифметика: Умножение

Ну вот добрались до одной из основных операций в криптографии, это умножение. На текущий момент мы умеем с некоторым оговорками складывать и вычитать. Теперь необходимо разобраться как умножать, операция несколько сложнее чем две предыдущие.
Вспомним опять же 3ий класс и умножение столбиком.

18 апреля 2012 г.

Длинная арифметика: Вычитание

Продолжим работу с длинными числами, в текущий момент мы можем складывать числа произвольной длинны, а теперь нам необходимо научиться вычитать эти числа.
Опять же вспоминаем 3ий класс и как производятся вычитание при помощи столбика:

16 апреля 2012 г.

Длинная арифметика: Сложение

В криптографии часто возникает случаи когда необходимо работать с длинными числами, например необходимо вычислить 256 в 512 степени. А также сделать с этими числами некие арифметические операции. В текущий момент регистры в современных компьютерах, на 64 битных операционных системах, позволяют хранить знаковое число +-9223372036854775807 ну или беззнаковое - умножить это число на 2. С такими числами размеров 64бита можно проводить стандартные операции вычитания, деления и с некоторыми условями - умножение и сложение. Но как быть если число как я написал например 256 в 512 степени, это приблизительно - 1.04 * 10 в 1233 степени. Тоесть такое число будет занимать больше килобайта, если на каждый символ отдавать по 1 байту. Понятно, что килобайт это ничто в текущих реалиях, а если там будет 100 тысячная степень или еще больше? Тут к нам приходят на помощь алгоритмы длинной арифметики.

26 марта 2012 г.

Генератор псевдо случайных чисел.

Для начала, попробуем напрограммить что нибудь простое, нуууу например генератор псевдо случайных чисел. Сегодня поговорим про псевдо случайные числа и для чего они нужны, про реальный генератор случайных чисел будет отдельная статья. Ключевое слово тут "псевдо", так для чего он нужен?

23 марта 2012 г.

Краска кода.

Обнаружил, что для блогспота нет такой вещи как расскраски кода для ассемблера, так что придется пользоваться сторонними сервисами типа http://tohtml.com/asm/ А то совсем нечитабельные куски кода получаются.
В итоге при помощи этого сервиса получается что то типа того, вроде читабельно:

strlen proc String:BYTE
    lea edi, text
    mov ecx, 2048
    mov eax, 0
    repne scasb
    dec edi
    sub edi, offset text
    lea ebx, len
    ret
strlen endp

Новый блог.

Иногда руки чешутся и хочется сделать что нибудь такое, что интересно и раньше не делал, ну.... например изобрести велосипед, да не с двумя колесами, а с 5ю и чтобы ездил по шпалам с асинхронной тряской. Вообщем стандартный непоседский ум русского человека. Вот по этому и был создан этот блог. В нем я буду размещать куски кода в основном надеюсь на ассемблере. Почему на асме, а например не на с++, C# или допустим Python? На них же все это пишется проще и быстрее. А просто так, ну прет меня иной раз написать, что нибудь на низком уровне, чтобы было архималенькое, мало жрало в памяти, не требовало 80мб .net и левых библиотек.