Хакерски Underground копиране и фалшифициране на метрото билети

Знаеш ли желание за решаване на всички загадки, за да отворите всички, но защитата на московското метро? Съставено, например, "вечното завръщане"? Но експерти Метро постоянно намират по-сложни начини за защита. Метални жетони бяха заменени с пластмасови, те, от своя страна, магнитни билети и безконтактни карти, за да заместят магнитен пристигнал. Много изследователи отпусна ръце - като че ли митрополит стана непревземаема крепост. Но който и да е защита може да се заобиколи. И често, то е, за да отворите в пъти по-лесно, отколкото да се изгради ...







Как започна всичко

Запознайте се с "свръхлеки"

Да започнем с това, разбира се, просто е необходимо някъде да се получи четец за безжична карта, която поддържа "свръхлеки". Имаше две възможности: или да се повиши (което ще отнеме много време), или да си купят готови устройство. Когато мисля за втория вариант, като се има предвид три-годишни цени, отидох настръхнеш. Но аз все пак са решили да видите цени. И не е чудно! Бях приятно изненадан да науча, че можете да си купите напълно функционално устройство (Omnikey CardMan 5321), който поддържа един куп жични и безжични карти на атрактивна цена - 4000 рубли. Разбира се, не е малко, но от друга страна, не е 10 000; Освен това, закупуване на готови четец направи възможно незабавно да се фокусира върху изследването на билети, а не на дизайна и отстраняване на грешки на желязо, което може да се проточат с неопределен срок. Заедно с читателя в една и съща фирма (ISBC) е закупен много удобно SDK оригинален местното производство. Той отново позволи да не се губи време и енергия за писане nizkourovnevki и отстраняване на грешки операция софтуер с читателя, и да се фокусира директно върху билетите.

Така че, за няколко дни спокойно кодиране роден малка програма, чрез които е било възможно по удобен начин да се следи и управлява цялата вътрешната структура на "свръхлеки". След това започнах да уча билетите.

калкан

Всичко това зоопарк съм събрал с една цел - да се определи ясно структурата и формата на запис на данни върху билета. Разбира се, някои области са видими веднага с невъоръжено око, но други не. Например, аз не осъзнавах, където записва метро номер на билета (този, който е отпечатан върху него). Реализацията дойде съвсем случайно. Фактът, че аз (и мисля, че повечето от нас), гледайки в шестнадесетичен, използвани, за да се приведе в съответствие с информация байт и да се мисли, поне байта. Оказа се, че този подход не е наред. Гледайки билет сметище, което трябва да се мисли по-малки единици - преносим компютър, а понякога и бита. Аз го разбрах, когато "видя" на последния номер на билета - той бе изместен от 4 бита по отношение на байт, а останалите 4 бита на тази страна и на другите стаи за ръце са заети от друга служебна информация.

След известно време, формат за запис на данни на билета е станала почти напълно ясно. Това стана ясно къде и как да съхранявате всички дати, броячи, идентификатори. Оставаше само няколко полета, целта на които не беше ясно, просто защото на сметището да зареже данните в тях са едни и същи.

Но това е радостта и над - би било глупаво да се предположи, че тези билети са оставени незащитени. Всяка дупка е 32 бита на различна информация, не се съпоставят с останалата част от съдържанието. Предположих, че е някаква контролна "хеш" на данните, записани върху билета. Всички опити за оценка или изчисляват 32-битов обърнаха пълен провал (по-специално, че се предполага, че това е някаква форма CRC32, с нестандартно полином и начална стойност). Когато се опитате да промените най-малко един и половина бита информация в терминала билет проверка на метрото светна "BAD БИЛЕТ" тежък жак zakolachivaya последните пирони в ковчега. Разбира се, имаше опити за заобикаляне на системата и по други начини, например, се опитват да копират билет за чиста карта едно към едно (тук, уви, предотвратено номерът на производителя, който, както се оказа, е участвал в производството на "хеш") или да зададете заключване на бита, така че да се забрани турникет да променя съдържанието на билета. Проверка терминал като "вечен" билет призна, но не позволи на въртящата се врата ... Така че, аз се блъсна в стената. Това голям, силен бетонна стена, на която много от тях имат навика да бъдат убити с начало на работа. Не е намирането на форумите и табла за съобщения никаква информация, реших, че това ми проучвания са завършени - има не повече песни, както и да поставят точка на мазнини. Както се оказа, напразно ...

странна фамилиарност

ICQ контакт от само в случай, аз се отстраняват, почистват в същото време списъка с контакти на сървъра и да разчистите трупи (здравей отново, параноя). В крайна сметка, той пише отново, ако това. Но колкото повече не съм написал ...







Феноменът на софтуерни хората

Така че, взех Disassembler и отиде да работи. Механизмът се състои от два файла - CryptKeyRef.dll и keys.d (само "хитър" файл в цялата програма, която, освен на тези, с ключовете, нищо друго не харесва). И да се използва всичко това добро изпълнение-bpl'ina SmLayout.bpl. Тази библиотека е божи дар за изследванията ми - тя съдържа класове за работа с вътрешното съдържание на билети. Тъй като това е по време на работа, BPL, че е достатъчно само да го погледнете изнася на масата да има 60 на сто, за да се разбере какво е това, което. По-подробен анализ ще постави всичко на мястото си. Не забравяйте, че в началото на тази статия, аз говорих за това в "свръхлеки" структура все още има редица области, целта на които не е ясно? Една от тези области - така наречената "оформление идентификатор." В действителност, всички метро билети са изградени от заглавната част на фиксирани и променлива част данните. Така че, това поле е «Разпределение» в заглавната част е само определя колко и какви данни се намира в останалата част на билета. Има няколко оформления (всеки под собственото си вид билет) и SmLayout.bpl всеки един от тях има свой собствен клас (плюс общ родител клас, които са методи за работа с въведението). Ето защо, за да разберете кои полета във всяка оформление за този отговор е прост (все още, говорейки с някои имена метод в износа!).

Довършителни напълно цялата Layout 8 (която се използва в "свръхлеки") и двойна проверка дали всички полета в структурата на билета, имах право идея, взех ключовият механизъм. Всъщност, той е отговорен за образуването на "диез". Как механизмът е напълно ясно, след изучаване на метод работи, отговарящ за изчисляване на "диез".

На първо място, от файл с ключовете (keys.d) е избран правилния ключ. Системата е проектирана така, че всеки вид билет е със собствен идентификатор (включени присъства пълна маса с документи за самоличност и имената на билети в текстов файл с разделени със запетая стойности). Тя се състои от идентификатор на зона (заявлението) и типа на идентификатора на карта. Така че, въз основа на тези номера в ключов файл избран ключодържател, в рамките на които могат да бъдат няколко клавиша (в случая, когато се въвежда нов ключ, а старите билети все още в употреба). Записване на нов билет идва с първия, и проверка за валидност - с помощта на всички ключове в keyringe. На следващо място, избрано Ключът е разшифрован използване CryptKeyRef.dll (защо те се съхраняват шифровани, аз никога няма да разбереш). След това, разшифрован ключа и почти всички данни на билета, както и неговия сериен номер хардуер, а броят на (метод за генериране на "диез", който е предназначен за keyringa в keys.d) - са прехвърлени на функцията ckCalcHashCode, който е в една и съща CryptKeyRef.dll. На изхода получаваме стойността, на която аз по едно време и "заби" - една и съща "хеш". Разбира се, аз написах една малка програма, която, като се използват тези функции от CryptKeyRef.dll и keys.d файл може да се провери и, ако не друго, да преизчисли "хеш" във всяка дупка. Аз проверили всичко в рамките на няколко сметища, и получи положителен резултат, наляво, се радвам да спи.

Фаул ключове

Въпреки успеха теоретичен, исках да видя всичко, така да се каже, "в битката." На следващия ден, на връщане от работа, аз специално купих прясно "свръхлеки" за едно пътуване, за да видите дали ключовете ми са, или не са по-дълги (очевидно, те са били малко по-стар). Можете, разбира се, веднага се опитайте писмена форма "изфабрикувани" "свръхлеки" и да се провери, но в този момент се натъкнах на празна карта и малко страшно става "на случаен принцип" - изведнъж? На дома пристигането си на първо място, дори и без да си измие ръцете, гледайки се втурнаха да се провери си билет за прясна ключ. И тук чаках голям лентяй - "диез", написана върху билета не преминава върху някой от бутоните. Следователно, ключът наистина вече е лош, а те бяха заменени с нови. Това довежда до премахване на цялата ми работа. Чувствах тъжно. Аз сварено зелен чай, играе малко по пиано (да), и седна на недовършената такса за разплод ...

Не всичко е загубено

Вече без капка съмнение, че занитени моята собствена Väsby (за щастие, имах сметища от този тип, които от време на време опрости задачата - Току-що промених датите на сметището и броя) и "хеш" изчисляват с помощта на ключа. Така че, това е изпитание за време (особено, тъй като аз просто си купих малко прозрачна пластмаса).

Въвеждане на фоайето, за първи път постави "билет" към терминала за тест. На таблото светна валидността на билета, която имам, и зеленият светодиод светва. Вследствие на това на строителните работи. Осъществяване гримаса по-прости и крие снежнобяла пластмасов кожух, се приближих до въртящата се врата, сложил ръката си на валидатора и ... тихо отиде на едно забавно зелено се запали. Това постави окончателната победа.

Каква е следващата стъпка?

И тогава започва експериментите, в които беше установено, много интересни неща. Например, като "ляво" Väsby може да отиде само два или три дни. Факт е, че числото, което е вътре в билета, цитирам "от булдозера", всеки пропуск се съхранява в паметта на главата на турникет, а след известно време изпратен с останалата част на центъра за данни. Там, системата не е действително издаден билет с този номер и той влиза в стоп-списък, който след това се разпространява във всички въртележката на метрото. И така трябва да се прави с всички видове билети, не само Vasby - в допълнение към "хеш" и често променящи се ключовете е много добра защита. Най-заобиколно е, по очевидни причини, не е възможно. То се наблюдава също така, че създаването или не на заключването на бита не е от значение на факта, че работи на билета или не. Единственото изключение е малко OTP заключване на площ, турникет, който, както изглежда, винаги проверява, въпреки факта, че за написването на OTP няма да.

По-късно аз взех metroshny и автобусни гари, ги поведе в ред, изучавано и започна на пейката. Сега, за да се тества следващата предположение, вече няма да работи с прясно изпечен мутант билет в метрото, и стана възможно да ги тестваме "на място". Особено терминал на метрото е на същите стари (всичко останало и бъги), като ми ключовете. Така че мога да се опитам да "работят" и всякакви други видове билет "Ultralight" - нещо, което никога не може да се направи "на живо" в метрото.

Накрая обобщи

метро система, и по-специално, новите билети "свръхлеки", противно на мнението и догадки, са добре защитени. Много доволен, че разработчиците използват надежден и изпитан стандарт, а не изобретяваме колелото. С такава защита на фалшив билет "Ultralight" без достъп до поверителни данни (ключова информация), е просто невъзможно. Забележително е проектирана и система от сменяеми бутони, както и стоп механизъм листове.