Одним из примеров слабой, обратимой схемы кодирования является схема, используемая операционной системой для защиты системного пароля: запутанный преобразованиями пароль сохраняется в системной памяти. К тому же этот пароль часто передается через последовательный или инфракрасный порт во время операции HotSync, которую легко контролировать. В консультации Кингпина (Kingpin) «Декодирование и извлечение пароля операционной системы Palm» («Palm OS Password Retrieval and Decoding») (www.atstake.com/research/advisories/2000/a092600-1.txt) показано, как можно легко определить фактический пароль. Пароль устанавливается законным пользователем при помощи приложения Palm «Security». Его максимальная длина составляет 31 символ ASCII. Независимо от числа образующих пароль символов в результате получается блок закодированной информации длиной 32 байта. В зависимости от длины пароля используются два метода кодирования пароля ASCII. В качестве примера рассмотрим схему для паролей из четырех символов и менее. Контролируя при помощи PortMon передаваемые через последовательный порт данные во время выполнения операции HotSync и сравнивая закодированные блоки различных коротких паролей, было определено, что 32-байтовый блок закодированной информации получается в результате выполнения простой логической операции XOR «Исключительное ИЛИ» над блоком пароля ASCII и 32-байтовым константным блоком. Для расшифровки закодированного таким способом пароля оказалось достаточно выполнить операцию XOR над константным и закодированным блоками.
Let A = Original ASCII password
Let B = 32-byte constant block
Let C = 32-byte encoded password block
Для пароля из четырех символов или менее константа B может быть следующей:
09 02 13 45 07 04 13 44 0C 08 13 5A 32 15 13 5D D2 17 EA D3 B5 DF 55 63 22 E9 A1 4A99 4B 0F 88
Сначала вычислим начальный индекс j, определяющий позицию в константном блоке, начиная с которой будут выбираться данные для операции XOR по модулю 32. Индекс j вычисляется по следующему правилу: к количеству символов пароля добавляется десятичное значение первого символа в кодировке ASCII. Например, если паролем является слово «test», то количеством символов пароля или его длиной является число 4, к которому будет добавлено число 116 (десятичное значение символа «t» в кодировке ASCII равно 116) по модулю 32. Таким образом, в этом примере операция XOR начнется с 24-го символа 32-байтового константного блока.
j = (A[0] + strlen(A)) % 32;
Затем 32 раза выполняется простой цикл, в котором выполняется операция XOR над содержимым исходной строки пароля, индексированной переменной j, и константного блока, индексированного переменной i. Начальное значение индекса j вычисляется по описанному выше правилу, а начальное значение индекса i равно 0. После каждой операции значение индексов i и j увеличивается на 1. Полученный результат сохраняется в массиве C.
for (i = 0; i < 32; ++i, ++j)
{
// wrap around to beginning
if (j == 32) j = 0;
C[i] = A[i] XOR B[j];
}
В результате в блок C записывается закодированное значение пароля. В случае, если значение пароля было равно «test», то результат кодирования представлен ниже. Обратите внимание, что только 4 байта закодированного пароля отличаются от содержимого приведенного выше константного блока. Так выглядит закодированная версия пароля.
56 8C D2 3E99 4B 0F 88 09 02 13 45 07 04 13 44 0C 08 13 5A 32 15 13 5D D2 17 EA D3 B5 DF 55 63
Зная константный блок и закодированное значение пароля, можно легко определить первоначальный пароль ASCII. Для этого надо сравнить два блока, циклически сдвигая константный блок до тех пор, пока не совпадут все похожие байты, а затем по отдельности выполнить операцию XOR над каждыми различающимися байтами. Например, 0x56 XOR 0x22 = 0x74 (что соответствует символу «t»), 0x8C XOR 0xE9 = 0x65 («e»), 0xD2 XOR 0xA1 = 0x65 («s») и т. д.
Необходимый набор инструментов
Необходимый для хакинга набор инструментальных средств отличается от средств, используемых для сетевого или программного анализа. Для реализации большинства способов хакинга аппаратных средств не требуются лаборатории мирового класса. Очевидно, что современные методы требуют современного оборудования (типа химикатов для удаления эпоксидной смолы и вскрытия интегральных схем), но большинство исследований могут быть выполнены минимальным количеством ресурсов.
Начальный комплект инструментальных средств
В состав арсенала инструментальных средств хакинга аппаратных средств обязательно должен входить следующий начальный комплект инструментальных средств:
• цифровой универсальный измерительный прибор (мультиметр).
Читать дальше
Конец ознакомительного отрывка
Купить книгу