Взлом резервных копий смартфонов iPhone

Для нача­ла немно­го тео­рии.

Как хра­нят­ся паро­ли в опе­ра­ци­он­ных систе­мах, веб­сай­тах, и т.д. Не откры­тым тек­стом, разу­ме­ет­ся. Они хра­нят­ся в виде хешей. Хеш — это стро­ка опре­де­лён­ной дли­ны, полу­ча­е­мая при обра­бот­ке вво­да (паро­ля в дан­ном слу­чае) хеш-функ­ци­ей. До недав­не­го вре­ме­ни (да и сей­час кое-где) исполь­зо­вал­ся алго­ритм MD5. Так, хеш MD5 сло­ва «password» пред­став­ля­ет собой стро­ку 5f4dcc3b5aa765d61d8327deb882cf99.

Поэто­му когда ты логи­нишь­ся на веб­сайт, пароль обра­ба­ты­ва­ет­ся алго­рит­мом MD5, и срав­ни­ва­ют­ся хеши. Если на выхо­де 5f4dcc3b5aa765d61d8327deb882cf99, то всё нор­маль­но. Вин­да дела­ет немно­го по-дру­го­му: хеш гене­ри­ру­ет­ся пря­мо на кли­ен­те, и пере­сы­ла­ет­ся не пароль, а сра­зу хеш. Это цуцуть без­опас­нее. Ещё хеш солят, но про это в дру­гой раз.

Что­бы взло­мать пароль, надо сна­ча­ла украсть хеш паро­ля. Взлом паро­лей пере­би­ра­ет все воз­мож­ные ком­би­на­ции, хеши­ру­ет их и срав­ни­ва­ет хеши. Но это тупой пере­бор, есть вари­ан­ты поин­те­рес­нее, типа сло­ва­рей, ком­би­на­ций заме­ны букв на циф­ры, и мате­ма­ти­че­ско-ста­ти­сти­че­ские мето­ды, типа цепей Мар­ко­ва. Но подроб­ное раз­би­ра­ние этих мето­дов — это мате­ри­ал для огром­но­го отдель­но­го поста.

Я уже дав­но люб­лю про­грам­му кото­хеш (hashcat) для взло­ма паро­лей. У неё исклю­чи­тель­но высо­кая про­из­во­ди­тель­ность, так как она исполь­зу­ет видео­кар­ту для рас­чё­тов вме­сто цен­траль­но­го про­цес­со­ра. Нет, она и про­цес­сор может исполь­зо­вать, про­сто на видео­кар­те быст­рее, там этих про­цес­со­ров тыся­чи, а хеши­ро­ва­ние исклю­чи­тель­но хоро­шо рас­па­рал­ле­ли­ва­ет­ся.

Сло­ма­ем MD5 хеш 5f4dcc3b5aa765d61d8327deb882cf99:

hashcat.exe ‑m 0 ‑a 3 hash.txt ?l?l?l?l?l?l?l?l

И мень­ше, чем за секун­ду всё сло­ма­но.

На моей уже ста­рень­кой 1070GTX поиск хешей MD5 про­ис­хо­дит со ско­ро­стью око­ло 8 мил­ли­ар­дов ком­би­на­ций в секун­ду.

Даже если сме­нить пароль на более слож­ный, типа P@$$w0rd, то 8‑значный пароль взла­мы­ва­ет­ся в обо­зри­мые сро­ки, даже на не очень новом желе­зе — за несколь­ко дней.

НО. Подоб­ные сро­ки — они для паро­лей, хеши­ро­ван­ных MD5. От кото­ро­го вез­де отка­зы­ва­ют­ся как могут. Он счи­та­ет­ся крип­то­гра­фи­че­ски нестой­ким: во-пер­вых, он под­вер­жен кол­ли­зи­ям (т.е. два совер­шен­но раз­ных паро­ля могут дать оди­на­ко­вый хеш), а во-вто­рых он име­ет недо­ста­точ­ную вычис­ли­тель­ную слож­ность. Т.е. тот факт, что даже на моём ста­ром желе­зе я могу пере­би­рать восемь мил­ли­ар­дов паро­лей в секун­ду — он из-за это­го про­ис­хо­дит.

А недав­но я попро­бо­вал сло­мать бекап смарт­фо­на Apple. Для тёщи, кото­рая рас­ко­ка­ла теле­фон вдре­без­ги, успев, прав­да, неза­дол­го до сде­лать ему бекап. Но вот беда — она забы­ла пароль от бека­па! Она толь­ко зна­ла, что пароль вось­ми­знач­ный.

Хеш паро­ля для айфон­но­го бека­па берёт­ся в фай­ле Manifest.plist. Этот файл скарм­ли­ва­ет­ся вот это­му сай­ту, напри­мер, и тебе дают хеш.

Так вот хеш там — какой-то про­при­е­тар­ный. И име­ет настоль­ко высо­кую вычис­ли­тель­ную слож­ность, что на моей видео­кар­те кото­хеш пере­би­ра­ет ком­би­на­ции со ско­ро­стью… 83 вари­ан­та в секун­ду. Надо отдать долж­ное чув­ству юмо­ра раз­ра­бот­чи­ков кото­хе­ша: во вре­мя рабо­ты оно пока­зы­ва­ет, сколь­ко вре­ме­ни оста­лось до пере­бо­ра всех вари­ан­тов. Так вот в дан­ном слу­чае оно гово­рит, что рабо­та про­грам­мы закон­чит­ся после сле­ду­ю­ще­го Боль­шо­го Взры­ва 😀

Вот так вот Плот­нег лосос­нул тун­ца.

Огром­ный респек­ти­щ­ще Эпплу — я в оче­ред­ной раз убе­дил­ся, что уж с чем-чем, а с надёж­но­стью шиф­ро­ва­ния у них всё все­гда было в пол­ном поряд­ке. Огром­ным плю­сом явля­ет­ся то, что Эппл кон­тро­ли­ру­ет весь цикл про­из­вод­ства теле­фо­на — от желе­за до соф­та. Поэто­му что, как и каким спо­со­бом — все­гда было хоро­шо извест­но и задо­ку­мен­ти­ро­ван­но. Ну и тра­ди­ци­он­но, пнём Вед­ро­ид 🙂 На Вед­ро­и­дах, кто шиф­ру­ет что и как — а хер его зна­ет! Кто из про­из­во­ди­те­лей как захо­тел, тот так и шиф­ру­ет. И ска­жи ещё спа­си­бо, если задо­ку­мен­ти­ро­ва­но. А могут и тово, на хрен послать.