Содержание. __ от редакции. Биография сетевого периметра в картинках
Скачать 5.92 Mb.
|
1. Определение структуры 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100 102 02 04 06 08 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 Подобный эффект возникает при использовании шифрования путем наложения константной гаммы очень большой длины. И самый попу- лярный алгоритм шифрования, который именно так работает, — RC4. 3. Атака на потоковый шифр с константным ключом Если несколько сообщений зашифрованы c использованием одно- го и того же ключа (а значит, и гаммы), можно попытаться раскрыть фрагменты этих сообщений, поXORив их между собой. И в тех местах, где в одном из сообщений были нулевые байты, в другом проявится открытый текст. Взяв файлы AutoInstall и WebUI, получим интересные результаты: 00000000: EB 3C 90 6D 6B 64 6F 73 66 73 00 00 02 04 01 00 л<ђmkdosfs ☻♦☺ 00000010: 02 00 02 F8 0F F8 03 00 20 00 40 00 00 00 00 00 ☻ ☻ш☼ш♥ @ 00000020: 00 00 00 00 00 00 29 6E 1F 3B 15 47 43 54 2D 4C )n▼;§GCT-L 00000030: 54 45 20 20 20 20 46 41 54 31 32 20 20 20 0E 1F TE FAT12 ♫▼ 00000040: BE 5B 7C AC 22 C0 74 0B 56 B4 0E BB 07 00 CD 10 ѕ[|¬"Аt♂Vґ♫»• Н► 00000050: 5E EB F0 32 E4 CD 16 CD 19 EB FE 54 68 69 73 20 ^лр2дН▬Н↓люThis 00000060: 69 73 20 6E 6F 74 20 61 20 62 6F 6F 74 61 62 6C is not a bootabl 00000070: 65 20 64 69 73 6B 2E 20 20 50 6C 65 61 73 65 20 e disk. Please 00000080: 69 6E 73 65 72 74 20 61 20 62 6F 6F 74 61 62 6C insert a bootabl 00000090: 65 20 66 6C 6F 70 70 79 20 61 6E 64 0D 0A 70 72 e floppy and♪◙pr 000000A0: 65 73 73 20 61 6E 79 20 6B 65 79 20 74 6F 20 74 ess any key to t 000000B0: 72 79 20 61 67 61 69 6E 20 2E 2E 2E 20 0D 0A 00 ry again ... ♪◙ 000000C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00008800: 02 43 44 30 30 31 01 00 00 20 00 20 00 20 00 20 ☻CD001☺ 00008810: 00 20 00 20 00 20 00 20 00 20 00 20 00 20 00 20 По этим двум фрагментам можно предположить, что один из файлов является образом дискеты FAT12, а другой — образом CD-ROM. 4. Получение начала гаммы Современные сотовые модемы любят при подключении создавать виртуальный CD-ROM, с которого можно установить драйверы или сопутствующее ПО. Вероятно, и тут использована та же идея. Правда, при подключении модема к современным операционным системам (Windows 7/8, Linux, MacOS X) этот CD-ROM или не появ- ляется вообще, или присутствует всего долю секунды, после чего исчезает. Пришлось найти ноутбук 2002 года с Windows XP, где при подключении модема CD-ROM тоже исчезал вскоре после появ- ления, но это занимало целых 5 секунд. За это время можно было успеть прочитать все сектора логического тома и получить образ размером 606 208 == 0x94000 байт, что соответствует размеру файла AutoInstall. И значение MD5 от прочитанного образа оказалось рав- но 897279F34B7629801D839A3E18DA0345, что соответствует значению тега 0x0004 для этого файла. Теперь остается поXORить прочитанный образ с содержимым AutoInstall и получить первые 600 килобайт гаммы. Этой гаммой мы можем расшифровать начала файлов CPUImage и WebUI (имеющих длину 4 971 976 и 2 093 056 байт соответственно). 5. Реконструкция образа FDD Если расшифровать начало файла WebUI (первые 606 208 байт), а остальное заполнить нулями, и проинтерпретировать все как образ FAT, будет видна структура файловой системы и даже доступно со- держимое некоторых файлов: Name | Size | Date | Time bru | Folder | 31.05.12 | 22:17 cgi-bin | Folder | 31.05.12 | 22:17 cors | Folder | 31.05.12 | 22:17 css | Folder | 31.05.12 | 22:17 eng | Folder | 31.05.12 | 22:17 img | Folder | 31.05.12 | 22:17 js | Folder | 31.05.12 | 22:17 ru | Folder | 31.05.12 | 22:17 name.html | 2248 | 31.05.12 | 22:17 easyXDM.js | 101924 | 31.05.12 | 22:17 easyXDM.debug.js | 113900 | 31.05.12 | 22:17 easyXDM.min.js | 19863 | 31.05.12 | 22:17 easyXDM.Widgets.js | 11134 | 31.05.12 | 22:17 easyXDM.Widgets.debug.js | 11134 | 31.05.12 | 22:17 easyXDM.Widgets.min.js | 3114 | 31.05.12 | 22:17 json2.js | 17382 | 31.05.12 | 22:17 easyxdm.swf | 1758 | 31.05.12 | 22:17 MIT-license.txt | 1102 | 31.05.12 | 22:17 Если при подключенном модеме зайти браузером на веб-интер- фейс по адресу http://<имя хоста для модема>/dir, то будет видна в точности такая же файловая система, и любой файл можно будет скачать. Таким образом, чтобы восстановить образ диска WebUI, надо разло- жить скачанные через веб-интерфейс файлы по тем местам, где они должны быть в соответствии с данными в boot-секторе, таблице FAT и описаниях директорий. Единственная сложность — папка «ru» в кор- не. Кластер с описанием файлов в этой папке не попадает в первые 606 208 байт, и его содержимое надо воссоздавать вручную. Согласно информации из веб-интерфейса, в директории «ru» должны быть следующие файлы: Name | Size | Date | Time Manualupdate.html | 3981 | 31.05.12 | 22:17 Index.html | 5327 | 31.05.12 | 22:17 Network.html | 3328 | 31.05.12 | 22:17 К счастью, в корне есть папка «eng», в которой располагаются файлы с такими же именами и датами создания. И чтобы получить правиль- ные данные для папки «ru» надо всего лишь исправить: + номер стартового кластера текущей директории, + размер каждого файла, + номера стартовых кластеров каждого файла. Номер кластера директории «ru» (0x213) можно узнать из корневой директории. Размеры файлов (3981==0xF8D, 5327==0x14CF и 3328==0xD00 соот- ветственно) узнаем из веб-интерфейса. Номера стартовых кластеров для файлов придется угадывать, но это не очень сложно. Согласно информации в boot-секторе, каждый кластер занимает 4 сектора или 2048 байт. Для директории «ru» до- статочно одного кластера, для файлов Manualupdate.html и Network. html — двух, и для Index.html понадобится три кластера. Поскольку кластеры при записи на пустой диск обычно выделяются последо- вательно, файлы будут начинаться в кластерах 0x214, 0x216 и 0x219 соответственно. Восстановленные данные для директории «ru» будут выглядеть так: 00000000: 2E 20 20 20 20 20 20 20 20 20 20 10 00 00 2C AA . ► ,к 00000010: BF 40 BF 40 00 00 2C AA BF 40 13 02 00 00 00 00 ┐@┐@ ,к┐@‼☻ 00000020: 2E 2E 20 20 20 20 20 20 20 20 20 10 00 00 2C AA .. ► ,к 00000030: BF 40 BF 40 00 00 2C AA BF 40 00 00 00 00 00 00 ┐@┐@ ,к┐@ 00000040: 42 68 00 74 00 6D 00 6C 00 00 00 0F 00 56 FF FF Bh t m l ☼ V 00000050: FF FF FF FF FF FF FF FF FF FF 00 00 FF FF FF FF 00000060: 01 6D 00 61 00 6E 00 75 00 61 00 0F 00 56 6C 00 ☺m a n u a ☼ Vl 00000070: 75 00 70 00 64 00 61 00 74 00 00 00 65 00 2E 00 u p d a t e . 00000080: 4D 41 4E 55 41 4C 7E 31 48 54 4D 20 00 00 2C AA MANUAL1HTM ,к 00000090: BF 40 BF 40 00 00 2C AA BF 40 14 02 8D 0F 00 00 ┐@┐@ ,к┐@¶☻Н☼ 000000A0: 41 69 00 6E 00 64 00 65 00 78 00 0F 00 33 2E 00 Ai n d e x ☼ 3. 000000B0: 68 00 74 00 6D 00 6C 00 00 00 00 00 FF FF FF FF h t m l 000000C0: 49 4E 44 45 58 7E 31 20 48 54 4D 20 00 00 2C AA INDEX1 HTM ,к 000000D0: BF 40 BF 40 00 00 2C AA BF 40 16 02 CF 14 00 00 ┐@┐@ ,к┐@▬☻╧¶ 000000E0: 41 6E 00 65 00 74 00 77 00 6F 00 0F 00 98 72 00 An e t w o ☼ Шr 000000F0: 6B 00 2E 00 68 00 74 00 6D 00 00 00 6C 00 00 00 k . h t m l 00000100: 4E 45 54 57 4F 52 7E 31 48 54 4D 20 00 00 2C AA NETWOR1HTM ,к 00000110: BF 40 BF 40 00 00 2C AA BF 40 19 02 00 0D 00 00 ┐@┐@ ,к┐@↓☻ ♪ 00000120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Аккуратно собрав реконструированную папку «ru» и содержимое всех файлов, полученных из веб-интерфейса, в образ диска (с уче- том того, что первый кластер соответствует сектору 0x23), мы полу- чаем plain-text-версию файла WebUI, значение MD5 для которого совпадает с 48D1C3194E45472D28ABFBEB6BBF1CC6 из заголовка обновления. Теперь у нас есть расшифрованные файлы AutoInstall и WebUI, и мы знаем первые 2 093 056 байт гаммы. 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100 102 02 04 06 08 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 эмуляция и перехват sim-команд ЧЕРЕЗ SIM TOOLKIT НА ANDROID 5.1 И НИЖЕ (CVE-2015-3843) Артем Чайкин habrahabr.ru/company/pt/blog/280095/ перехват Представьте, что на SIM-карте есть небольшое приложение, кото- рое получает сообщение от оператора связи и показывает его на экране вашего Android-устройства. Если покопаться в исходниках Android, можно наткнуться на класс com.android.internal.telephony. cat.CatService, который отвечает за передачу команд между ОС и сло- ем радиоинтерфейса (Radio Interface Layer, RIL). public void handleMessage (Message msg) { CatLog.d(this, "handleMessage[" + msg.what + "]" ); switch (msg.what) { case MSG_ID_SESSION_END: case MSG_ID_PROACTIVE_COMMAND: case MSG_ID_EVENT_NOTIFY: case MSG_ID_REFRESH: CatLog.d(this, "ril message arrived,slotid:" + mSlotId); String data = null; if (msg.obj != null) { AsyncResult ar = (AsyncResult) msg.obj; if (ar != null && ar.result != null) { try { data = (String) ar.result; } catch (ClassCastException e) { break ; } } } mMsgDecoder.sendStartDecodingMessageParams(new RilMessage (msg.what, data)); break ; case MSG_ID_CALL_SETUP: mMsgDecoder.sendStartDecodingMessageParams(new RilMessage (msg.what, null)); break ; case MSG_ID_ICC_RECORDS_LOADED: break ; case MSG_ID_RIL_MSG_DECODED: handleRilMsg((RilMessage) msg.obj); break ; case MSG_ID_RESPONSE: handleCmdResponse((CatResponseMessage) msg.obj); break ; Из всех типов сообщений нас интересует MSG_ID_RIL_ MSG_ DECODED. private void handleRilMsg (RilMessage rilMsg) { if (rilMsg == null) { return ; } // dispatch messages CommandParams cmdParams = null; switch (rilMsg.mId) { case MSG_ID_EVENT_NOTIFY: я обнаружил эту уязвимость, исследуя возможность перехвата од- норазовых паролей, которые отправлялись банком поставщику те- лекоммуникационных услуг, а затем поступали на специальное при- ложение SIM-карты и выводились на пользовательский интерфейс Android. if (rilMsg.mResCode == ResultCode.OK) { cmdParams = (CommandParams) rilMsg.mData; |