Сейчас на форуме: jinoweb (+4 невидимых)

 eXeL@B —› Программирование —› SDK Android Emulator - установка своего сертификата
Посл.ответ Сообщение

Ранг: 7.3 (гость)
Активность: 0=0
Статус: Участник

Создано: 24 августа 2015 21:40
· Личное сообщение · #1

* Проблема

При установке сертификата в корень доверенных, подписанные им сертификаты для сайтов - все равно не действительны. Уточняю, что интересует именно оф. эмулятор из SDK, так как есть нюансы при работе с другими эмуляторами или реальным устройством.

Стоит отметить, что подразумеваю рутованный эмулятор (на всякий случай, вдруг что то в посте это подразумевает). Для оф. эмулятора это еще нужно сделать.

Проблему разделяю на несколько под-проблем:
- Правильная установка сертификата;
- Правильная подпись SSL сертификатов ключом корневого сертификата, что был установлен на устройство;
- Методы определения программ, которые делают дополнительные проверки сертификата;
- Правильная проксификация эмулятора, если нужно.

* Установка сертификата:

На реальном устройстве можно добавить открыв ссылку на загрузку сертификата в браузере или через настройки WI-FI, или через настройки Безопасность - предварительно положив файл сертификата на диск (я так и не разобрался в каком формате и как называть файл). Этот способ доступен в андроиде только после задания пароля или пин-кода на устройство. На сколько я понимаю так работает зашифрованный контейнер где-то внутри системы. Некоторые эмуляторы типа BlueStacks не дают возможность задать пароль или пин код. Так сложилось что я пошел искать другой способ.

Подготавливаем и закачиваем сертификат на устройство:
- Преобразуем в файл HASH.0 bat'ником andrd_prepcert.bat
- Загружаем на устройство
Code:
  1. adb shell su busybox mount -o remount,rw /system
  2. adb push HASH.0 /system/etc/security/cacerts


* Правильная подпись

Установка сертификата все равно не решает проблем, например при попытке просмотреть трафик используя метод mitm, даже браузер говорит что сертификат без доверия.

- Гугл подсказал что иногда спасает правильная дата на эмуляторе, относительно нашего хоста. Насколько я понял, это проблема если мы подписываем сертификат сайта и указываем текущее время? Поигрался и не увидел в этом проблемы;
- В поле сертификата есть сайт, которому мы выдаем этот сертификат (чей трафик снифаем), или нужно что-то еще?
- Certificate Pinning - это проверка всей цепочки сертификатов в текущем (на сколько я понимаю). В случае если наш сертификат добавлен, то можем ли мы рассчитывать, что хотя бы в браузере андроида этот самый pinning будет пройден? Не могут же все (даже оф.) приложения держать свое хранилище доверенных сертификатов. Что я подразумеваю под «можем ли мы рассчитывать»? Могу ли сразу же отбросить проблему «Certificate Pinning» если оф браузер кричит на сертификат подписанный тем что есть в хранилище доверенных, и искать проблему в другом?

* Программы, что делают дополнительные проверки сертификата

Ну ясно что в программу может быть добавлен свой корневой сертификат, для проверки ответов от сервера. Может быть просто проверка полей сертификата сервера (который мы подсовываем). Но вот незадача, если использовать метод по которому работает программа типа Packet Capture.apk, там метод mitm для ssl использует то что дает сам андроид - установка VPN соединения, так вот здесь все прокатывает и ни одна прога из тестируемых ни пикнула, что сертификат плохой.

И так проблема, как же правильно установить сертификат, что бы работать по методу mitmproxy, Fiddler, Burp программ, т.е. сниффать трафик эмулятор на хосте, без использования прог на эмуляторе?

* Правильная проксификация эмулятор

Возможно проблема где-то на уровне проксификаторов и программ для mitm атаки? Использовал эмуляторы: BlueStacks, Genymotion, SDK эмулятор, вместе с ProxyCap и Proxifier, для mitm - Fiddler и Burp. В этот раз руки не дошли до mitmproxy, хотя ранее с ним тоже была проблема с недоверием сертификату.

Если проблема есть, то я не могу ее понять. Но у некоторых прог ssl траффик обрывается на этапе «рукопожатия», т.е. не принят сертификат. ProxyCap показывает в логах ошибку winsock, но что это мне дает? Ничего.

Гугл дает ссылки на мануалы, и там все работает. Возможно проблема в том что мой хост это Windows?

* Собственно сам вопрос

Нужно сниффать SSL трафик эмулятора (важно из SDK) на хосте. Подскажите у кого уже был подобный опыт.



Ранг: 3.3 (гость)
Активность: 0=0
Статус: Участник

Создано: 24 августа 2015 23:07
· Личное сообщение · #2

Не понятно что подразумевается под:
"...- Правильная установка сертификата;..."?
Если запросы на валидность сертификата есть или списком отзыва серт компрометирован и это проверяется положительно или отрицательно, то что еще нужно?



Ранг: 7.3 (гость)
Активность: 0=0
Статус: Участник

Создано: 24 августа 2015 23:13
· Личное сообщение · #3

ONIK
Ну значит этот пункт выполняется и возможно проблема в другом. Я расписал все, чтобы было понятно как и где я пытался найти решение проблемы. С другой стороны, я возможно не знаю как работает проверка сертификата из хранилища в Android. Может есть нюансы. Поэтому прошу помощи. Например список отзыва же не может содержать только что созданный мной сертификат, но после установки в хранилище доверенный корневых, у меня все равно проблемы.



Ранг: 3.3 (гость)
Активность: 0=0
Статус: Участник

Создано: 24 августа 2015 23:21 · Поправил: ONIK
· Личное сообщение · #4

Если вы создаете "сертификат" (или может быть будет правильнее сказать запрос на создание сертификата) то без управления приват ключом как такой "серт" может быть рабочим (кем то удостоверен)?
А следовательно такой "серт" не пройдет проверки,даже если списка отзыва не будет.
Или серт создается по защищенному соединению онлайн?
Есть ли понимание как списки отзыва доставляются?



Ранг: 7.3 (гость)
Активность: 0=0
Статус: Участник

Создано: 25 августа 2015 00:59
· Личное сообщение · #5

ONIK
У меня создается впечатление, что кто-то из нас друг друга не допонял Вполне возможно это я.

Я создаю корневой сертификат для подписи других ssl сертификатов сайтов и кидаю его в список доверенных в Андроид. После этого делаю mitm, подписывая этим сертификатом, создаваемые мной временные ssl сертификаты.

Я думаю что достаточно просто добавить сам сертификат (без приватного ключа) в хранилище доверенных, чтобы система стала ему доверять. Ну в упрощенном виде, понятно что программы могут делать дополнительные проверки сертификата своего сервера. Но оф. браузер по идее должен доверять такому сертификату?



Ранг: 3.3 (гость)
Активность: 0=0
Статус: Участник

Создано: 25 августа 2015 04:10 · Поправил: ONIK
· Личное сообщение · #6

Возможно уместно внести понимание, чтобы пролить свет на свой вопрос.
Если все правильно понял, то вы создаете самоподписанный серт.
Далее подписываете ssl сертификаты. Так?
Хранилище сертификатов ОС Андроид позволяет добавлять "без приватного ключа"?
Что по вашему сертификат?
Если это то же что и я подразумеваю (пара ключей - приват и публик заверенная другой парой ключей), то как вы умудряетесь добавить серт без приват ключа?
Вы пишете ... "программы могут делать дополнительные проверки сертификата своего сервера".
Программы ваши? Работающие с сервером который обслуживается вами же?
Если программы и сервер не ваши, то они по логике не должны принимать запросы от "гражданина с паспортом из чужого паспортно визового отдела". Конечно если между этими "отделами" не наведены мосты в виде доверенных отношений.



Ранг: 7.3 (гость)
Активность: 0=0
Статус: Участник

Создано: 25 августа 2015 05:24
· Личное сообщение · #7

> Хранилище сертификатов ОС Андроид позволяет добавлять "без приватного ключа"?

По вашему все корневые сертификаты от 3-их сторон идут с приватными ключами?

> Если это то же что и я подразумеваю
> (пара ключей - приват и публик заверенная другой парой ключей),
> то как вы умудряетесь добавить серт без приват ключа?

Мы о чем с вами вообще разговариваем?
Ладно, если никто не поможет, будем считать что дал некую информацию для размышления новичкам.



Ранг: 456.3 (мудрец), 340thx
Активность: 0.280.02
Статус: Участник
Android Reverser

Создано: 25 августа 2015 06:18
· Личное сообщение · #8

А как ты собрался расшифровывать ссл траф без приват ключа?
Поставь чарльза, сгенери им серт и добавь его в свой эмулятор и можешь снифать все что хочешь.

-----
SaNX




Ранг: 7.3 (гость)
Активность: 0=0
Статус: Участник

Создано: 25 августа 2015 08:01
· Личное сообщение · #9

SaNX
Приватный ключ не нужен на эмуляторе. Там достаточно файла сертификата в хранилище доверенных. Что тут мне отвечал ONIK, я хрен его знает. Уж извини ONIK.

>Поставь чарльза, сгенери им серт и добавь его в свой эмулятор и можешь снифать все что хочешь.
Я тут такую простыню написал, что такой подход у меня не выходит. Правда я упомянул только mitmproxy, Fiddler, Burp, а Чарли млять забыл упомянуть.

Вот SaNX ты когда последний раз снифал в эмуляторе SSL трафик без проблем? Можно хотя бы версию и название эмулятора, а также версию Андроида. Я скачаю даже Чарли для этого. Я просто уже все перепробовал и нифига не пойму в чем у меня проблема. Сертификаты, которые я генерирую для сайтов «на лету» - невалидные и все. Как буд-то не принимается корневой, который я установил в эмулятор.



Ранг: 456.3 (мудрец), 340thx
Активность: 0.280.02
Статус: Участник
Android Reverser

Создано: 25 августа 2015 08:22 · Поправил: SaNX
· Личное сообщение · #10

now_zorro пишет:
Приватный ключ не нужен на эмуляторе.

он нужен в прокси

now_zorro пишет:
Вот SaNX ты когда последний раз снифал в эмуляторе SSL трафик без проблем?

никогда, я меня тел есть для этого.

-----
SaNX




Ранг: 7.3 (гость)
Активность: 0=0
Статус: Участник

Создано: 25 августа 2015 08:54 · Поправил: now_zorro
· Личное сообщение · #11

SaNX
Тогда зачем ты мне советовал?
> Поставь чарльза, сгенери им серт и добавь его в свой эмулятор и можешь снифать все что хочешь.

> он нужен в прокси
Я в разделе «Вопросы новичков» запостил? Не обращай внимание на разницу в «рангах» и прочитай внимательно мой пост в начале ветки, уверен ты для себя найдешь что-то новенькое и интересное.



Ранг: 456.3 (мудрец), 340thx
Активность: 0.280.02
Статус: Участник
Android Reverser

Создано: 25 августа 2015 10:35 · Поправил: SaNX
· Личное сообщение · #12

now_zorro пишет:
Тогда зачем ты мне советовал?

потому что на теле работает без проблем

now_zorro пишет:
уверен ты для себя найдешь что-то новенькое и интересное.

ога, ты прямо светило в мире андроида. как мы тут без тебя жили, ума не приложу.

ЗЫ: врядли тебе кто-то что-то посоветует, ибо юзать родной тупой эмулятор - это пиздец. нормальные люди покупают гавнасмарт за 1000 рублей и снифают без проблем.

-----
SaNX




Ранг: 7.3 (гость)
Активность: 0=0
Статус: Участник

Создано: 25 августа 2015 11:07
· Личное сообщение · #13

SaNX
Если мне нужно дебажить в разных версиях андроида, делать снапшоты виртуалки, иметь возможность экспериментировать с образом системы, то тут лучше эмулятор.
А так если комп слабый, то лучше дебажить на устройстве, согласен. Так дешевле, хоть и страшно неудобно.



Ранг: 456.3 (мудрец), 340thx
Активность: 0.280.02
Статус: Участник
Android Reverser

Создано: 25 августа 2015 11:23
· Личное сообщение · #14

now_zorro пишет:
А так если комп слабый,

у меня коре-и7, винт ссд, 5 гигов оперативы. эмулятор ради интереса щас запустил - около 5 минут грузился. У меня на виртуалке мак столько времени запускается. Еще мощнее комп надо для этого гугловского говна?

-----
SaNX



 eXeL@B —› Программирование —› SDK Android Emulator - установка своего сертификата
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати