« -: Sep 21, 2013, 01:13 »
Няма никакъв смисъл от това, ама все пак да си кажа.
В последните няколко месеца си играя с изследване на сигурността на GSM. Всичко, което научавам в процеса така брутално ме отвращава от цялата идея, че съвсем сериозно мисля (макар да го ползвам само да си говоря с близките ми, най-вече жена ми, при това рядко и по важни поводи), да отеба това, поне за известно време.
Почти навсякъде където нещо може да бъде осрано, то вече е осрано. Ще започна с криптографията, която ми е любимата тема, обаче проблемите с GSM далеч не се изчерпват с криптографията, всъщност това е малък проблем на фона на останалите.
Значи GSM позволява грубо казано 3 варианта за криптиране на комуникацията: A5/1, А5/2 и A5/0 (последното е просто неизползване на криптография, с други думи всичко минава в чист вид).
A5/2 е нещо, което в днешно време (освен вероятно в Сирия, Северна Корея и Иран) не се ползва. Това е нарочно отслабен поточен шифър, създаден с идеята да се продава в ембаргови държави. Ключът ефективно е толкова къс, че може да се разбие относително бързо на десктоп машина и това не е интересно. Никой не ползва A5/2. Където и да се е ползвало в нормалния свят, вече не се ползва.
А5/1 е по-забавна история. Това е отново поточен шифър, толкова жестоко малоумен, колкото само французин може да измисли. Няма нужда да изпадам в детайли, детайлите ги има в уикипедия, ползваме 3 LFSR регистъра, някаква схема за clock-ване спрямо състоянието им, която да осигури нелинейност.И ключа, и състоянието са 64 битови, това означава че е измислен да е точно толкова дълъг, колкото бай хуй преди 20 години да не може да си играе да го троши и трибуквения бай не-хуй да може. Проблемът е че идеята е тъпа, clocking и tapping битовете са подбрани тъпо, няма достатъчно нелинейни операции в цялата работа, резултатът е че съществуват варианти където комплексността на атаката в сравнение с тривиалната брутфорс такава е нещо от сорта на 2^47 срещу 2^64, с други думи близо 1 милион пъти улесняване на цялата драма. Всичко това дава възможност за пасивни атаки с трошене на криптографията.
Аз това и направих - Karsten Nohl преди 2-3 години като пионер е избрал варианта с rainbow таблици, които пичовете са смятали в продължение на месеци. Аз си харесах друга атака, разработена от (ирония) французин преди 13 години, подобрих я и сега просто предлагам алтернатива, вместо да ползваш 2TB rainbow таблици, можеш да строшиш ключа за няколко часа върху high-end видеокарта.
Това не е толкова интересно, интересен е крайният резултат - при пасивно слухтене на GSM трафика, на нас ни трябват или няколко терабайта дисково пространство или няколко часа изчислително време за да строшим ключа и да декриптираме който и да било разговор или SMS в мрежата, който сме прихванали.
Прихващането е елементарно и става със софтуерно радио. Под софтуерно радио може да се разбира и определен USB DVB-T адаптер с определен чипсет, който се продава навсякъде и струва около 30-40 лева. Софтуерът е написан вече. Няма нужда от специализирана USRP железария за над 3000 лева. Има и малко по-забавен вариант със стар Motorola телефон и custom firmware, който спестява доста занимавки, но дори и DVB-T джаджата върши работа.
Това е най-потресаващото в цялата работа, с десктоп машина за общо около 2000 лева на практика пасивно можеш да изслухтиш и декриптираш произволна комуникация в GSM мрежата. Единствените пречки са две: ползването на frequency hopping (за което има решение) и ползването на plaintext randomization (което никой оператор не прави щото му се свидят CPU ресурси).
Пасивните атаки са подли и коварни, защото жертвата няма никакъв шанс да се усети какво става. Операторът тоже. Полицията и тя. На практика, в момента, при добро желание, мога да слухтя GSM комуникациите, протичащи в квартала и никой не може да разбере че го правя. Че ми трябва (доста) дисково пространство за да пазя прихванатия трафик ОК и че ми трябва изчислително време за да го правя също е ОК. Сега ако бях престъпен елемент, сигурно щях да се възползвам от това за да изнудвам хора, за да прихващам пароли за електронно банкиране, пратени по SMS и т.н.
Обаче още по-забавни са активните атаки и тук нещата стават забавни, защото не се налага да се троши криптография и наистина всеки бай хуй (или Цветан Цветанов) може да прави големи поразии. Причината се корени в следното: абонатът никога не автентицира мрежата, единствено мрежата автентицира абоната. Това става по следния начин: при установяването на комуникация, базовата станция праща една случайно генерирана стойност и абонатът при наличие на master ключ, пазен върху сим картата (и HLR-а на оператора хаха) връща резултат, вид challenge-response механизъм. Оттам следва груб и прост handshake на криптографските алгоритми, подобно на това което става при SSL.
Откъдето идват следните проблеми: теоретично операторът може да каже "не подържам нищо освен A5/0", демек липса на криптография. Операторът няма да го каже, но някой, който подкара фалшива клетка, имитираща истинската, но с по-силен сигнал, ще го направи. Оттам му трябва просто някак да рутира разговора (дори върху VoIP) и да слухти. Те това е което правят IMSI catcher-ите и цецомобилите.
Другият проблем (по-големия според мен) е в липсата на forward perfect secrecy. Съвсем теоретично ако някой се сдобие с ключа от HLR-а на оператора, може да разбие която и да е изслухтяна комуникация преди и след това. На практика единствено законите и морала на операторите защитават от това и в България това нищо не означава. Това на практика означава че веднъж вземеш ли ключа, можеш колкото си искаш пъти да слухтиш нещо и няма как да се отчиташ (чисто технологично). Дали това се прави, не знам, надявам се операторите да отказват такива мераци, но чисто технологично това си стои като възможност.
В случай че не стане обаче, IMSI catcher-ите са относително лесни за откриване при добро желание. Тук идва следващият проблем, всичко което GSMА прави е това "лесно" да не е толкова лесно. Примерно телефоните по принцип трябва да предупреждават когато не използват криптирана комуникация. Забавно, това го правят само стари телефони произведени отпреди 7-8 години. А защо да го правят след като по стандарт, ciphering индикатора е активен само когато определен бит върху СИМ картата е вдигнат. И да, познайте - на практика няма оператор който да раздава СИМ карти с този бит вдигнат.
Тук трябва да се вметне цялата простотия с проследяването на абонати, как по стандарт съществуват "скрити" SMS-и, как можеш да page-неш абонат и да не му заделиш TCH канал само и само за да го знаеш в обхвата на коя клетка е и т.н.
Наскоро излезе и другата забава, всъщност, СИМ картите въобще не са малоумни устройства и могат да изпълняват силно орязан Java код Така градските легенди за СМС-а от оператора, който карал телефона да приема "тихо" разговори и така да се слухти какво става наоколо, въобще не са научна фантастика. Макар това да е силно зависимо от хардуера.
А, да, понеже някъде някой беше казал че ако ползваме само 3G, проблемите са ни решени, това донякъде е така, ама само донякъде. Проследяването на абонати работи перфектно в UMTS мрежа, единствено MItM атаката с IMSI catcher-ите не. Макар че ако лошите имат Ki ключа от HLR-а на оператора, заеби. Също заеби ако някога, ама само веднъж, минеш обратно на GSM. Също така ако (с позволението на оператора) почнат да правят мизерии на A интерфейса, не на Um. UMTS не е решение, защото единствено прецаква бай хуй, лошите не биват прецакани. Но в крайна сметка не е толкова лоша идея.
В крайна сметка, ебем ти мобилната революция. С кеф ще се изсера в устата на всички, които ми я навират в лицето.