eXeL@B —› Вопросы новичков —› Дешифрация трафика |
Посл.ответ | Сообщение |
|
Создано: 31 мая 2016 23:48 · Личное сообщение · #1 Доброго дня! Есть сниффер, который ловит пакеты между клиентом и сервером. Вот пример нешифрованного пакета: 19 00 2e 00 01 00 00 00 00 00 00 00 00 05 00 31 00 31 00 31 00 31 00 31 00 где 19 00 - длина всего пакета 05 00 - длина сообщения, в данном случае сообщение "11111" далее 3 пакета уже после шифрации: C3 09 4F 5F 70 41 D3 09 23 A6 F1 89 A7 52 D7 07 57 BE 77 8A EB F2 7C 1F 3B F9 ED F6 51 35 01 BA 28 12 93 D1 06 D8 7F 6A E9 D9 2C 8D CB 59 9C C3 77 8B 6C 2F D7 06 37 B4 CF EB E7 BF 5E 02 FB 41 0F 62 82 66 70 8D 38 C1 BD A3 8F DB EE 44 AD 5B 9B DF 2B B6 6B 33 8B 3B F2 31 01 A4 22 3A 90 4D 59 2F 77 7A 20 08 это все тот же пакет, отправлен и считан после шифрации 3 раза. Вопрос: Возможно ли определить алгоритм шифрации по таким данным? |
|
Создано: 01 июня 2016 05:16 · Личное сообщение · #2 |
|
Создано: 01 июня 2016 07:47 · Личное сообщение · #3 |
|
Создано: 01 июня 2016 10:38 · Личное сообщение · #4 А мне сильно напоминает протоколы онлайн игр. И восстановлению подлежит - дергайтесь. Но нужно изучать код игры(программы). Сейчас зачастую шифровка накрывается виртуальными машинами и проще зацепить свою длл к процессу для перехвата уже расшифрованных данных. | Сообщение посчитали полезным: dabrys |
|
Создано: 01 июня 2016 11:12 · Личное сообщение · #5 Да, скорее всего так и есть, только в программе куча длл и не понятно в какой из них накрывается шифровка виртуальной машиной + сам алгоритм не понятен + инфы для чтива тоже не найти, поэтому и пытался снимать пакеты с сетевой карты и их дешифровать. Подскажите плз в каком направлении двигаться. Я так понимаю примерно так: - изучить способы декомпиляции длл, чтоб прочитать код; - изучить способы шифрации через вирт. машины; - написать свою длл и заинжектить ее в нужную программу; |
Ранг: 281.8 (наставник), 272thx Активность: 0.25↘0.01 Статус: Участник Destroyer of protectors |
Создано: 01 июня 2016 12:16 · Личное сообщение · #6 |
|
Создано: 01 июня 2016 12:54 · Личное сообщение · #7 |
|
Создано: 01 июня 2016 14:10 · Личное сообщение · #8 |
|
Создано: 01 июня 2016 15:53 · Личное сообщение · #9 dabrys пишет: только в программе куча длл и не понятно в какой из них накрывается шифровка виртуальной машиной + сам алгоритм не понятен + инфы для чтива тоже не найти Если бряк/хук на CryptAcquireContext() не выявляет её использования, то можно поочерёдно загружать модули в иду и проверять на наличие функций openSSL - ида их должна распознавать и называть. Возможны модификации различных известных криптоалгоритмов и самопалы, незнакомые иде. Тут только реверс. dabrys пишет: инфы для чтива тоже не найти По криптографии есть ----- IZ.RU |
|
Создано: 01 июня 2016 15:53 · Личное сообщение · #10 |
|
Создано: 01 июня 2016 21:23 · Поправил: dabrys · Личное сообщение · #11 |
|
Создано: 02 июня 2016 04:44 · Поправил: Gideon Vi · Личное сообщение · #12 |
|
Создано: 02 июня 2016 13:17 · Личное сообщение · #13 dabrys пишет: Я так понимаю нужно сначала изучить С++? Не помешало бы, но совсем не обязательно. Из Си надо всего усвоить как передаются аргументы в функции, описанные в MSDN - конвенции: __stdcall, __cdecl, __fastcall, типы: int, char, char*, wchar_t, wchar_t*, unsigned int... и немного асма. Знаете базовый английский - с асмом проблем не будет и без чтива доков по нему - мнемоника инструкций представляет собой либо сокращения действий, которые они производят, либо абрревиатуры и до их смысла можно догадаться по названиям/экспериментам/контексту примера... только по инструкциям jnz/jnz, jb/jbe/jae(jnb)/ja(jnbe), jl/jle/jg(jnle)/jge(jnl) и ещё по нескольким следует доки прочесть. Дальше - коннекты на сервер происходят неминуемо через api-ф-цию connect()/WSAConnect(). Часто перед этим происходит dns-запрос, чтоб сопоставить ip-адрес доменному имени. Для http/https-серверов часто пользуются WinInet API - ловите функцию HttpSendRequest() тогда. Знаете домен - есть вероятность, что в одном из модулей Вы его найдёте. Если домена нет - то либо зашифрован, либо ip-адрес передаётся без резолвинга имени домена перед коннектом, и можно попробовать найти 32-битный ip-адрес в одном из модулей. Чаще всего для удобства оставляют его в памяти в биг-ендиан кодировке, но так как байты ip-адреса нужно для функции connect() переворачивать, то может быть и сразу в литтл-ендиан.... И т.д. Нет ничего нерешимого здесь. И виртуальные машины имеют свои закономерности... но для их самостоятельного боевого изучения без хорошего знания асма не обойтись. Не так страшен лев, как его рисуют! Но если это всё для Вас сложно, то да - в поиск специалистов. ----- IZ.RU | Сообщение посчитали полезным: dabrys |
|
Создано: 02 июня 2016 22:49 · Личное сообщение · #14 |
|
Создано: 02 июня 2016 22:54 · Поправил: dosprog · Личное сообщение · #15 |
|
Создано: 03 июня 2016 00:24 · Личное сообщение · #16 |
|
Создано: 03 июня 2016 00:34 · Поправил: plutos · Личное сообщение · #17 |
|
Создано: 03 июня 2016 01:53 · Личное сообщение · #18 |
|
Создано: 04 июня 2016 16:07 · Личное сообщение · #19 dabrys пишет: Однако вычитал, что Win32 API уже устарело Не так поняли! Win32 API никогда не устареет! Добавлено спустя 0 минут .NET как раз вовсю им пользуется ----- IZ.RU | Сообщение посчитали полезным: dabrys |
|
Создано: 04 июня 2016 16:47 · Поправил: dabrys · Личное сообщение · #20 |
|
Создано: 20 июня 2016 14:32 · Личное сообщение · #21 |
eXeL@B —› Вопросы новичков —› Дешифрация трафика |