Недавняя история с устройством для подбора pin-кода к iPhone так впечатлила известного хакера и разработчика jailbreak для iOS Мажида Альфхайли, что он задумался – а нельзя ли всё-таки сделать программный подбор pin-кода к устройству, да ещё и быстрее, чем один pin за 40 секунд? Оказалось – можно. Единственное требование – устройство должно быть подвергнуто jailbreak.
Сначала разработчик написал следующий код для перебора всех паролей с 0000 до 9999:
(void)bruteforce {
NSString *numString;
NSString *oneZeroString = @"0";
NSString *twoZeroString = @"00";
NSString *threeZeroString = @"000";
for (int i = 1; i <= 9999; i++)
{
numString = [NSString stringWithFormat:@"%d", i];
switch ([numString length])
{
case 1:
{
numString = [threeZeroString stringByAppendingString:numString];
break;
}
case 2:
{
numString = [twoZeroString stringByAppendingString:numString];
break;
}
case 3:
{
numString = [oneZeroString stringByAppendingString:numString];
break;
}
default:
break;
}
NSLog(@"code : %@", numString);
}
}
Затем в дампе SpringBoard он нашёл класс SBDeviceLockController с методом
(BOOL)attemptDeviceUnlockWithPassword:(id)password appRequested:(BOOL)requested;
Затем он сделал библиотеку, подключающуюся к процессу SpringBoard и запускающую вышеуказанный код по окончанию процесса, и вызывающую attemptDeviceUnlockWithPassword:appRequested для каждого нового pin-кода.
Всё работало, за исключением того, что после 10 попыток телефон блокировался. После дополнительного исследования хакер нашёл в классе SBFDeviceLockController методы
(bool)_temporarilyBlocked;
(bool)isPasscodeLockedOrBlocked;
(bool)isBlocked;
После переопределения этих методов таким образом, чтобы они возвращали NO, код заработал в полную силу. 10 попыток не блокируют устройство, проверка одного pin-кода занимает 5 секунд – то есть, проверка всех четырёхзначных кодов займёт не более 14 часов. Теперь хакер работает над автоматической утилитой, которая сможет отправлять этот код на устройство через USB.
Вывод: чем длиннее и сложнее пароль, тем выше ваша безопасность. Впрочем, это и так было очевидно.