Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/ge0rg/memorizingtrustmanager
Безопасность AndroidОборонительные ИнструментыСетевая безопасностьКриптографияМобильная безопасностьАутентификация
GitHubge0rg/memorizingtrustmanager

MemorizingTrustManager

"Плагин" для Android Java, позволяющий спрашивать пользователя о SSL-сертификатах.

Репозиторий
1818933 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

MemorizingTrustManager - поддержка приватных облаков для вашего приложения

MemorizingTrustManager (MTM) — это проект, позволяющий сделать использование SSL на Android более безопасным и осмысленным. При обнаружении неизвестного SSL-сертификата он спрашивает пользователя, принять ли сертификат однократно, постоянно или прервать соединение. Это шаг к предотвращению атак вида «человек посередине», которые возможны при слепом принятии любых недействительных, самоподписанных и/или просроченных сертификатов.

MTM нацелен на бесшовную интеграцию в ваше Android-приложение, а исходный код доступен под лицензией MIT.

Скриншоты

MemorizingTrustManager dialog MemorizingTrustManager notification MemorizingTrustManager server name dialog

Статус

MemorizingTrustManager используется в продакшене в yaxim XMPP-клиенте. Он пригоден к использованию и легко интегрируется, хотя пока не поддерживает проверку имени хоста (Java API делает её интеграцию сложной).

Интеграция

MTM легко интегрировать в ваше собственное приложение. Выполните следующие шаги или посмотрите демонстрационное приложение в каталоге example.

1. Добавьте MTM в ваш проект

Скачайте исходный код MTM с GitHub или добавьте его как git-подмодуль:

root@kitploit:~
# plain download:
git clone https://github.com/ge0rg/MemorizingTrustManager
# submodule:
git submodule add https://github.com/ge0rg/MemorizingTrustManager

Затем добавьте зависимость от библиотечного проекта в default.properties:

root@kitploit:~
android.library.reference.1=MemorizingTrustManager

2. Добавьте (всплывающую) Activity MTM в манифест

Отредактируйте ваш AndroidManifest.xml и добавьте элемент activity MTM непосредственно перед закрывающим тегом </application>.

root@kitploit:~
		...
		<activity android:name="de.duenndns.ssl.MemorizingActivity"
			android:theme="@android:style/Theme.Translucent.NoTitleBar"
			/>
	</application>
</manifest>

3. Подключите MTM как TrustManager по умолчанию для вашего типа соединения

Подключение MemorizingTrustManager в HTTPS-соединениях:

root@kitploit:~
// register MemorizingTrustManager for HTTPS
SSLContext sc = SSLContext.getInstance("TLS");
MemorizingTrustManager mtm = new MemorizingTrustManager(this);
sc.init(null, new X509TrustManager[] { mtm }, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(
	mtm.wrapHostnameVerifier(HttpsURLConnection.getDefaultHostnameVerifier()));

Для SSLSocket следует сделать следующее:

root@kitploit:~
// register MemorizingTrustManager for all SSLSockets
SSLContext sc = SSLContext.getInstance("TLS");
MemorizingTrustManager mtm = new MemorizingTrustManager(this);
HostnameVerifier hv = mtm.wrapHostnameVerifier(new org.apache.http.conn.ssl.StrictHostnameVerifier());
sc.init(null, new X509TrustManager[] { mtm }, new java.security.SecureRandom());
SSLContext.setDefault(sc);

// connect a socket
SSLSocket s = ...;
s.startHandshake();
if (!hv.verify(your_domain_name, sslSocket.getSession())) {
    throw new CertificateException("Server failed to authenticate as " + your_domain_name);
}

Или, для Smack, вы можете использовать setCustomSSLContext():

root@kitploit:~
org.jivesoftware.smack.ConnectionConfiguration connectionConfiguration = …
SSLContext sc = SSLContext.getInstance("TLS");
MemorizingTrustManager mtm = new MemorizingTrustManager(this);
sc.init(null, new X509TrustManager[] { mtm }, new java.security.SecureRandom());
connectionConfiguration.setCustomSSLContext(sc);
connectionConfiguration.setHostnameVerifier(
	mtm.wrapHostnameVerifier(new org.apache.http.conn.ssl.StrictHostnameVerifier()));

По умолчанию MTM обращается к системному TrustManager, прежде чем спросить пользователя. Если вы не доверяете стандартному поведению, вы можете принудительно вызывать диалог при каждом новом соединении, передав конструктору параметр defaultTrustManager = null:

root@kitploit:~
MemorizingTrustManager mtm = new MemorizingTrustManager(this, null);

Если вы хотите использовать другой нижележащий TrustManager, например AndroidPinning, просто передайте его в конструктор MTM:

root@kitploit:~
X509TrustManager pinning = new PinningTrustManager(SystemKeyStore.getInstance(),
	new String[] {"f30012bbc18c231ac1a44b788e410ce754182513"}, 0);
MemorizingTrustManager mtm = new MemorizingTrustManager(this, pinning);

4. Профит!

Логирование

MTM использует java.util.logging (JUL) для ведения журнала. Если вы не настроили Handler для JUL, Android по умолчанию будет записывать все сообщения уровня Level.INFO и выше. Чтобы также получать отладочные сообщения (уровня Level.FINE и ниже), необходимо соответствующим образом настроить Handler. Пример проекта MTM содержит de.duenndns.mtmexample.JULHandler, который позволяет включать и отключать отладочное журналирование во время выполнения.

Альтернативы

MemorizingTrustManager — не единственное подобное решение.

NetCipher — это Android-библиотека, созданная Guardian Project для повышения сетевой безопасности мобильных приложений. Она включает StrongTrustManager для более тщательной проверки сертификатов, независимое хранилище корневых CA-сертификатов и код для простой маршрутизации вашего трафика через сеть Tor с помощью Orbot.

AndroidPinning — ещё одна Android-библиотека, написанная Moxie Marlinspike, которая позволяет закреплять (pinning) сертификаты сервера, повышая защиту от MitM-атак масштаба государства. Используйте её, если ваше приложение предназначено для общения с конкретным сервером!

Участие в разработке

Пожалуйста, помогите перевести MTM на другие языки!

Скачать инструмент