Шифрование в NQ Vault оказалось обычным XOR-ом, и это не самое плохое

в 10:19, , рубрики: epic fail, mobile development, NQ Vault, security by obscurity, XOR, информационная безопасность, Разработка под android, шифрование, метки:

NQ Vault — довольно популярное (30 млн. пользователей) Android приложение (есть версия и для iOS), позволяющее зашифровать выбранные SMS, фотографии и видео на устройстве. Просмотреть зашифрованный контент можно через приложение, введя пароль. Приложение получило хорошие отзывы и обзоры в ведущих ИТ изданиях.

Пользователь GitHub ninjadoge24 решил проверить, насколько хорошо приложение защищает приватные данные.

Исследователь начал с того, что создал простой PNG файл размером 1х1 пиксель и добавил в конец файла сигнатуру «NINJADOGE24». Далее он загрузил файл на устройство и зашифровал с помощью NQ Vault с простым паролем. В базе данных приложения (в формате SQLite) было найдено расположение зашифрованного файла. Сравнение зашифрованных данных с исходными показало первый fail.

Исходный файл

0000000: 8950 4e47 0d0a 1a0a 0000 000d 4948 4452  .PNG........IHDR
0000010: 0000 0001 0000 0001 0802 0000 0090 7753  ..............wS
0000020: de00 0000 0970 4859 7300 0003 b100 0003  .....pHYs.......
0000030: b101 f583 ed49 0000 0007 7449 4d45 07df  .....I....tIME..
0000040: 0401 0319 3a3d ca0b 0c00 0000 0c69 5458  ....:=.......iTX
0000050: 7443 6f6d 6d65 6e74 0000 0000 00bc aeb2  tComment........
0000060: 9900 0000 0f49 4441 5408 1d01 0400 fbff  .....IDAT.......
0000070: 00ff 0000 0301 0100 c706 926f 0000 0000  ...........o....
0000080: 4945 4e44 ae42 6082 4e49 4e4a 4144 4f47  IEND.B`.NINJADOG
0000090: 4532 340a                                E24.

Зашифрованный файл

0000000: 8d54 4a43 090e 1e0e 0404 0409 4d4c 4056  .TJC........ML@V
0000010: 0404 0405 0404 0405 0c06 0404 0494 7357  ..............sW
0000020: da04 0404 0d74 4c5d 7704 0407 b504 0407  .....tL]w.......
0000030: b505 f187 e94d 0404 0403 704d 4941 03db  .....M....pMIA..
0000040: 0005 071d 3e39 ce0f 0804 0404 086d 505c  ....>9.......mP
0000050: 7047 6b69 6961 6a70 0404 0404 04b8 aab6  pGkiiajp........
0000060: 9d04 0404 0b4d 4045 500c 1905 0004 fffb  .....M@EP.......
0000070: 04fb 0404 0705 0504 c302 966b 0404 0404  ...........k....
0000080: 4945 4e44 ae42 6082 4e49 4e4a 4144 4f47  IEND.B`.NINJADOG
0000090: 4532 340a                                E24.

Что это? Сигнатура в конце файла осталась нетронутой! А шифрование других участков подозрительно напоминает простую замену. Применив операцию XOR между исходным и шифротекстом, исследователь получил ключ: 0x04. Да, именно так, XOR однобайтовым ключом, то есть простая замена. Напоминает детство, «школьные» шифры со сдвигом на несколько букв по алфавиту, не так ли? И это в приложении, имеющем платную версию за $7.99 в год!

Оставалось выяснить, почему сигнатура в конце файла осталась неизменной. После написания на скорую руку скрипта для шифровки/дешифровки и еще одного эксперимента с JPEG файлом, открылась еще одна печальная истина: шифруются только первые 128 байт файла, остальное остается нетронутым. А зачем, если первых 128 байт достаточно? Заголовок испорчен, файл не откроется стандартными приложениями, чего еще неискушенному пользователю нужно. Да и по скорости шифрования видео NQ Vault наверное рвет всех конкурентов на тряпки.

И последний штрих. Как из пароля, введенного пользователем, возможно довольно сложного, получается однобайтовый ключ? Исследователь попытался нащупать алгоритм, перебирая различные пароли, но потом плюнул, сделав разумный вывод: зачем тратить на это время, если можно применить брутфорс и просто перебрать 256 возможных вариантов. Любое, даже самое древнее Android устройство отлично с этим справится.

Полный отчет о тестировании.

Заключение

Таких приложений, наверное, тысячи, как в Google Play, так и в AppStore. Просто его сумели удачно раскрутить, а другие нет. Но вот что примечательно в этой истории. Во-первых, насколько легко пользователи доверяют обещаниям безопасности. В сознании пользователя нет большой разницы между приложением для быстрого выкладывания фоток куда-нибудь и приложением, шифрующим файлы или хранящим данные кредитных карт. Нет понимания, что к приложениям связанным с безопасностью, нужно применять особые критерии выбора. Просто обещаний, хорошего внешнего вида, удобного интерфейса и даже тысяч положительных отзывов тут недостаточно.

Во-вторых, насколько можно доверять обзорам в специализированных изданиях? Понятно, что большинство из них оплачены, и это само по себе неплохо, приложения нужно продвигать. Главное, чтобы они были более-менее объективными. И солидные издания действительно стараются писать объективные обзоры. Но если дело касается безопасности, простого обзора опять-таки недостаточно. Нужно привлекать экспертов, способных протестировать эту часть.

Автор: ComodoHacker

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js