<?xml version="1.0" encoding="UTF-8"?>        <rss version="2.0"
             xmlns:atom="http://www.w3.org/2005/Atom"
             xmlns:dc="http://purl.org/dc/elements/1.1/"
             xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
             xmlns:admin="http://webns.net/mvcb/"
             xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
             xmlns:content="http://purl.org/rss/1.0/modules/content/">
        <channel>
            <title>
									Мобильная безопасность - HackExpert.ru Форум				            </title>
            <link>https://hackexpert.ru/community/%d0%bc%d0%be%d0%b1%d0%b8%d0%bb%d1%8c%d0%bd%d0%b0%d1%8f-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d1%81%d1%82%d1%8c/</link>
            <description>HackExpert.ru Доска обсуждений</description>
            <language>ru-RU</language>
            <lastBuildDate>Tue, 27 Oct 2026 09:34:48 +0000</lastBuildDate>
            <generator>wpForo</generator>
            <ttl>60</ttl>
							                    <item>
                        <title>подмена стикера</title>
                        <link>https://hackexpert.ru/community/%d0%bc%d0%be%d0%b1%d0%b8%d0%bb%d1%8c%d0%bd%d0%b0%d1%8f-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d1%81%d1%82%d1%8c/%d0%bf%d0%be%d0%b4%d0%bc%d0%b5%d0%bd%d0%b0-%d1%81%d1%82%d0%b8%d0%ba%d0%b5%d1%80%d0%b0/</link>
                        <pubDate>Tue, 03 Feb 2026 06:00:20 +0000</pubDate>
                        <description><![CDATA[Коллеги, ловите вектор для офлайн-фишинга: злоумышленник может незаметно наклеить свой NFC-стикер поверх легитимного на терминале. Прикладывая телефон, жертва может невольно инициировать сес...]]></description>
                        <content:encoded><![CDATA[<p><span>Коллеги, ловите вектор для офлайн-фишинга: злоумышленник может незаметно наклеить свой NFC-стикер поверх легитимного на терминале. Прикладывая телефон, жертва может невольно инициировать сессию с враждебным чипом, что открывает возможности для подмены данных, крабы сессий (теор.) или сбора логов. Всегда проверяйте терминал на лишние "слои" пальцем. Встречали подобное в дикой природе? </span></p>]]></content:encoded>
						                            <category domain="https://hackexpert.ru/community/%d0%bc%d0%be%d0%b1%d0%b8%d0%bb%d1%8c%d0%bd%d0%b0%d1%8f-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d1%81%d1%82%d1%8c/">Мобильная безопасность</category>                        <dc:creator>tarantas</dc:creator>
                        <guid isPermaLink="true">https://hackexpert.ru/community/%d0%bc%d0%be%d0%b1%d0%b8%d0%bb%d1%8c%d0%bd%d0%b0%d1%8f-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d1%81%d1%82%d1%8c/%d0%bf%d0%be%d0%b4%d0%bc%d0%b5%d0%bd%d0%b0-%d1%81%d1%82%d0%b8%d0%ba%d0%b5%d1%80%d0%b0/</guid>
                    </item>
				                    <item>
                        <title>Тёмные уголки Android 14: тихие смерти Permission Guard и странности с CredentialManager</title>
                        <link>https://hackexpert.ru/community/%d0%bc%d0%be%d0%b1%d0%b8%d0%bb%d1%8c%d0%bd%d0%b0%d1%8f-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d1%81%d1%82%d1%8c/%d1%82%d1%91%d0%bc%d0%bd%d1%8b%d0%b5-%d1%83%d0%b3%d0%be%d0%bb%d0%ba%d0%b8-android-14-%d1%82%d0%b8%d1%85%d0%b8%d0%b5-%d1%81%d0%bc%d0%b5%d1%80%d1%82%d0%b8-permission-guard-%d0%b8-%d1%81%d1%82%d1%80/</link>
                        <pubDate>Sat, 10 Jan 2026 04:10:16 +0000</pubDate>
                        <description><![CDATA[Всем салют. Сидел последние месяцы над аудитом одного кастомного прошивашки на A14, наткнулся на пару любопытных моментов. Может, кому интересно будет копнуть или уже видели подобное.
1. Pe...]]></description>
                        <content:encoded><![CDATA[<p class="ds-markdown-paragraph"><span>Всем салют. Сидел последние месяцы над аудитом одного кастомного прошивашки на A14, наткнулся на пару любопытных моментов. Может, кому интересно будет копнуть или уже видели подобное.</span></p>
<p class="ds-markdown-paragraph"><strong><span>1. Permission Guard или где теряются </span><code>android.permission.POST_NOTIFICATIONS</code></strong></p>
<p class="ds-markdown-paragraph"><span>Все знают про Runtime Permissions (тайгеры). Но в A14 появился этот </span><code>PermissionGuard</code><span> сервис, который должен проверять, не держит ли процесс разрешение дольше, чем надо (типа для защиты от снапшота). Так вот, если в момент запроса пермишена (</span><code>ActivityResultLauncher</code><span>) вызвать </span><code>finishAffinity()</code><span> и быстро воссоздать активность в определенном состоянии (речь про флаги </span><code>FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TOP</code><span>), проверка в </span><code>PermissionGuard</code><span> может не успеть обновиться. В логах висит </span><code>Permission grant no longer needed</code><span>, но диалог пользователю всё равно показан. Пользователь жмёт "Разрешить", а разрешение в </span><code>settings dump</code><span> не записывается. Система думает, что разрешения нет. </span><strong><span>Реальный баг?</span></strong><span> Похоже на race condition в </span><code>PermissionController</code><span>. Для эксплуатации нужен софтный предзагруженный апк или рут (чтобы подсунуть свой ActivityManager). Но сам вектор — забавный.</span></p>
<p class="ds-markdown-paragraph"><strong><span>2. CredentialManager и биометрика: когда </span><code>setUserAuthenticationRequired(true)</code><span> не работает</span></strong></p>
<p class="ds-markdown-paragraph"><span>Новая штука </span><code>CredentialManager</code><span> для пассвордов и ключей. Кинул свой </span><code>CreateCredentialRequest</code><span>, привязал к </span><code>BiometricPrompt</code><span>. Всё ок. Но если в манифесте для активити выставить </span><code>android:screenOrientation="portrait"</code><span>, а сам </span><code>BiometricPrompt</code><span> вызвать после принудительного поворота в ландшафт (через </span><code>setRequestedOrientation</code><span>), то в некоторых кастомных сборках (OEMs, тут смотрю на тебя, Xiaomi и Samsung) коллбэк </span><code>onAuthenticationSucceeded</code><span> срабатывает </span><strong><span>до</span></strong><span> фактической верификации отпечатка. </span><code>CryptoObject</code><span> потом, правда, не работает, но факт прохода аутентификации — есть. Логи показывают, что </span><code>Keyguard</code><span> посылает </span><code>BIOMETRIC_SUCCESS</code><span> раньше, чем </span><code>BiometricService</code><span> обновляет внутренний стейт. Это баг в реализации </span><code>AuthService</code><span> от вендора или в AOSP? Копаю.</span></p>
<p class="ds-markdown-paragraph"><strong><span>3. Старое доброе: интенты </span><code>PendingIntent</code><span> в </span><code>Notification.Action</code></strong></p>
<p class="ds-markdown-paragraph"><span>Да, это известная тема, но в A14 её "починили" только наполовину. Если в </span><code>PendingIntent</code><span> для действия в нотификации засунуть </span><code>Intent</code><span> с </span><code>FLAG_ACTIVITY_NEW_TASK</code><span> и экспортируемым бродкаст-ресивером, который есть в системном апк (например, </span><code>com.android.settings</code><span>), можно ещё прыгать. Система проверяет только целевой пакет, но не цепочку вызовов. Ведёт к leak of system broadcast. Уже зарепортил, но фикса нет.</span></p>
<p class="ds-markdown-paragraph"><strong><span>Вопросы коллегам:</span></strong></p>
<ul>
<li>
<p class="ds-markdown-paragraph"><span>Кто-то смотрел в сторону </span><code>PackageInstaller</code><span> сессий и </span><code>adb install -t</code><span> (тестовые пакеты) на последних прошивках? Есть подозрение, что можно подменить пакет во время инсталляции, если успеть между </span><code>CMD_CHECK_FORWARD_LOCK</code><span> и </span><code>CMD_VERIFY_SESSION</code><span>.</span></p>
</li>
<li>
<p class="ds-markdown-paragraph"><span>Может, есть наработки по срыву </span><code>FGS</code><span> (Foreground Service) через манипуляции с </span><code>JobScheduler</code><span>? Типа довести до state </span><code>FORCE_STOPPED</code><span> и вызвать </span><code>ANR</code><span> в системном процессе.</span></p>
</li>
</ul>
<p class="ds-markdown-paragraph"><strong><span>Дисклаймер:</span></strong><span> Всё выше — исследование в образовательных целях на своём устройстве. Не ломайте то, что вам не принадлежит.</span></p>
<p class="ds-markdown-paragraph"><strong><span>Теги:</span></strong><span> </span><code>#android14 #aosp #bug_hunting #permissions #biometric #credentialmanager #oem</code></p>]]></content:encoded>
						                            <category domain="https://hackexpert.ru/community/%d0%bc%d0%be%d0%b1%d0%b8%d0%bb%d1%8c%d0%bd%d0%b0%d1%8f-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d1%81%d1%82%d1%8c/">Мобильная безопасность</category>                        <dc:creator>elmirzz</dc:creator>
                        <guid isPermaLink="true">https://hackexpert.ru/community/%d0%bc%d0%be%d0%b1%d0%b8%d0%bb%d1%8c%d0%bd%d0%b0%d1%8f-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d1%81%d1%82%d1%8c/%d1%82%d1%91%d0%bc%d0%bd%d1%8b%d0%b5-%d1%83%d0%b3%d0%be%d0%bb%d0%ba%d0%b8-android-14-%d1%82%d0%b8%d1%85%d0%b8%d0%b5-%d1%81%d0%bc%d0%b5%d1%80%d1%82%d0%b8-permission-guard-%d0%b8-%d1%81%d1%82%d1%80/</guid>
                    </item>
				                    <item>
                        <title>Нужен разраб по С++</title>
                        <link>https://hackexpert.ru/community/%d0%bc%d0%be%d0%b1%d0%b8%d0%bb%d1%8c%d0%bd%d0%b0%d1%8f-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d1%81%d1%82%d1%8c/%d0%bd%d1%83%d0%b6%d0%b5%d0%bd-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1-%d0%bf%d0%be-%d1%81/</link>
                        <pubDate>Mon, 08 Dec 2025 10:30:45 +0000</pubDate>
                        <description><![CDATA[в мой проект требуется разраб С++ .Задача мигрировать крупный проект С++03 на С++ 2015-2020.Проект с имеет сторонние библиотеки SDK .Если кто то согласиться ,будет иметь доход 40 %(30-80к в ...]]></description>
                        <content:encoded><![CDATA[<p><span>в мой проект требуется разраб С++ .</span><br /><span>Задача мигрировать крупный проект С++03 на С++ 2015-2020.</span><br /><span>Проект с имеет сторонние библиотеки SDK .</span><br /><br /><span>Если кто то согласиться ,будет иметь доход 40 %(30-80к в месяц,зависит от сезона.) от сумм доната игроков.</span><br /><span>подробности </span>vk.com/id663897841</p>]]></content:encoded>
						                            <category domain="https://hackexpert.ru/community/%d0%bc%d0%be%d0%b1%d0%b8%d0%bb%d1%8c%d0%bd%d0%b0%d1%8f-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d1%81%d1%82%d1%8c/">Мобильная безопасность</category>                        <dc:creator>bbbf</dc:creator>
                        <guid isPermaLink="true">https://hackexpert.ru/community/%d0%bc%d0%be%d0%b1%d0%b8%d0%bb%d1%8c%d0%bd%d0%b0%d1%8f-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d1%81%d1%82%d1%8c/%d0%bd%d1%83%d0%b6%d0%b5%d0%bd-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1-%d0%bf%d0%be-%d1%81/</guid>
                    </item>
				                    <item>
                        <title>Подмена SSl в мобильном банке</title>
                        <link>https://hackexpert.ru/community/%d0%bc%d0%be%d0%b1%d0%b8%d0%bb%d1%8c%d0%bd%d0%b0%d1%8f-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d1%81%d1%82%d1%8c/%d0%bf%d0%be%d0%b4%d0%bc%d0%b5%d0%bd%d0%b0-ssl-%d0%b2-%d0%bc%d0%be%d0%b1%d0%b8%d0%bb%d1%8c%d0%bd%d0%be%d0%bc-%d0%b1%d0%b0%d0%bd%d0%ba%d0%b5/</link>
                        <pubDate>Fri, 08 Aug 2025 15:02:26 +0000</pubDate>
                        <description><![CDATA[Обнаружил дичь в одном популярном мобильном банке (не буду светить какой) через инжект в WebView можно подменить SSL-сертификат и слушать все HTTPS-запросы. Сам в шоке, что в 2025 еще есть п...]]></description>
                        <content:encoded><![CDATA[<p class="ds-markdown-paragraph">Обнаружил дичь в одном популярном мобильном банке (не буду светить какой) через инжект в WebView можно подменить SSL-сертификат и слушать все HTTPS-запросы. Сам в шоке, что в 2025 еще есть приложения, которые не включают certificate pinning. Кто сталкивался?</p>
<p class="ds-markdown-paragraph">Короче, берешь прокси (Burp/Fiddler), настраиваешь MITM, подсовываешь свой сертификат в доверенные на девайсе (на рутованном вообще без проблем), а потом через инжект JS в WebView заставляешь приложение тупо игнорить ошибки сертификата. И вуаля все сессии пользователя у тебя в логах. Самый прикол, что это работает даже если в нативном коде pinning есть WebView живет своей жизнью.</p>
<p class="ds-markdown-paragraph">Кто-нибудь тестил подобное на других банковских приложениях? Интересуют способы обхода более жестких защит (типа реактивного блокирования при изменении сертификата).</p>
<p class="ds-markdown-paragraph">Готов обменяться на годный скрипт для автоматизации этой херни. P.S. А разработчикам: если у вас в WebView стоит<span> </span><code>setWebContentsDebuggingEnabled(true)</code><span> </span>или<span> </span><code>onReceivedSslError</code><span> </span>с игнором ошибок вас уже наверняка грабят.</p>]]></content:encoded>
						                            <category domain="https://hackexpert.ru/community/%d0%bc%d0%be%d0%b1%d0%b8%d0%bb%d1%8c%d0%bd%d0%b0%d1%8f-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d1%81%d1%82%d1%8c/">Мобильная безопасность</category>                        <dc:creator>DildoMan2</dc:creator>
                        <guid isPermaLink="true">https://hackexpert.ru/community/%d0%bc%d0%be%d0%b1%d0%b8%d0%bb%d1%8c%d0%bd%d0%b0%d1%8f-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d1%81%d1%82%d1%8c/%d0%bf%d0%be%d0%b4%d0%bc%d0%b5%d0%bd%d0%b0-ssl-%d0%b2-%d0%bc%d0%be%d0%b1%d0%b8%d0%bb%d1%8c%d0%bd%d0%be%d0%bc-%d0%b1%d0%b0%d0%bd%d0%ba%d0%b5/</guid>
                    </item>
				                    <item>
                        <title>Разбираем уязвимость в Android-приложении: Insecure Storage + Backdoor-Activity</title>
                        <link>https://hackexpert.ru/community/%d0%bc%d0%be%d0%b1%d0%b8%d0%bb%d1%8c%d0%bd%d0%b0%d1%8f-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d1%81%d1%82%d1%8c/%d1%80%d0%b0%d0%b7%d0%b1%d0%b8%d1%80%d0%b0%d0%b5%d0%bc-%d1%83%d1%8f%d0%b7%d0%b2%d0%b8%d0%bc%d0%be%d1%81%d1%82%d1%8c-%d0%b2-android-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8%d0%b8-insecur/</link>
                        <pubDate>Wed, 06 Aug 2025 08:25:06 +0000</pubDate>
                        <description><![CDATA[Недавно анализировал приложение &quot;SecureBank v2.1&quot; (нашел на GitHub как тренировочный стенд) и обнаружил две критические уязвимости:
1. Insecure Data Storage (SharedPreferences в plain text)...]]></description>
                        <content:encoded><![CDATA[<p class="ds-markdown-paragraph">Недавно анализировал приложение<span> </span><strong>"SecureBank v2.1"</strong><span> </span>(нашел на GitHub как тренировочный стенд) и обнаружил две критические уязвимости:</p>
<h3><strong>1. Insecure Data Storage (SharedPreferences в plain text)</strong></h3>
<p class="ds-markdown-paragraph">Приложение хранит токены и PIN-коды в<span> </span><strong>/data/data/com.securebank/shared_prefs/config.xml</strong><span> </span>без шифрования. Достаточно иметь root-доступ (или эмулятор с<span> </span><code>adb shell</code>):</p>
<div class="md-code-block md-code-block-light">
<div class="md-code-block-banner-wrap">
<div class="md-code-block-banner md-code-block-banner-lite">
<div class="_121d384">
<div class="d2a24f03"><span class="d813de27">bash</span></div>
<div class="d2a24f03">
<div class="efa13877"> </div>
</div>
</div>
</div>
</div>
<pre contenteditable="false">adb shell
<span class="token function">su</span>
<span class="token function">cat</span> /data/data/com.securebank/shared_prefs/config.xml</pre>
</div>
<p class="ds-markdown-paragraph"><strong>Фикс:</strong><span> </span>Использовать<span> </span><code>EncryptedSharedPreferences</code><span> </span>или Keystore.</p>
<h3><strong>2. Backdoor-Activity (Скрытый функционал)</strong></h3>
<p class="ds-markdown-paragraph">В<span> </span><code>AndroidManifest.xml</code><span> </span>нашёл активность<span> </span><strong><code>com.securebank.debug.AdminPanel</code></strong><span> </span>с правами<span> </span><code>android:exported="true"</code>. Через ADB можно вызвать её без авторизации:</p>
<div class="md-code-block md-code-block-light">
<div class="md-code-block-banner-wrap">
<div class="md-code-block-banner md-code-block-banner-lite">
<div class="_121d384">
<div class="d2a24f03"><span class="d813de27">bash</span></div>
<div class="d2a24f03">
<div class="efa13877"> </div>
</div>
</div>
</div>
</div>
<pre contenteditable="false">adb shell am start <span class="token parameter variable">-n</span> com.securebank/.debug.AdminPanel</pre>
</div>
<p class="ds-markdown-paragraph">Открывается панель с сбросом паролей пользователей — классический бэкдор!</p>
<h3><strong>Инструменты</strong></h3>
<ul>
<li>
<p class="ds-markdown-paragraph"><strong>JADX</strong><span> </span>— для декомпиляции APK.</p>
</li>
<li>
<p class="ds-markdown-paragraph"><strong>Frida</strong><span> </span>— динамический анализ (перехват<span> </span><code>SharedPreferences</code>).</p>
</li>
<li>
<p class="ds-markdown-paragraph"><strong>MobSF</strong><span> </span>— автоматическое сканирование.</p>
</li>
</ul>
<h3><strong>Вопрос</strong></h3>
<p class="ds-markdown-paragraph">Кто-нибудь сталкивался с подобными кейсами в реальных Bug Bounty программах? Интересно, как реагируют компании на такие находки.</p>]]></content:encoded>
						                            <category domain="https://hackexpert.ru/community/%d0%bc%d0%be%d0%b1%d0%b8%d0%bb%d1%8c%d0%bd%d0%b0%d1%8f-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d1%81%d1%82%d1%8c/">Мобильная безопасность</category>                        <dc:creator>DedikShop</dc:creator>
                        <guid isPermaLink="true">https://hackexpert.ru/community/%d0%bc%d0%be%d0%b1%d0%b8%d0%bb%d1%8c%d0%bd%d0%b0%d1%8f-%d0%b1%d0%b5%d0%b7%d0%be%d0%bf%d0%b0%d1%81%d0%bd%d0%be%d1%81%d1%82%d1%8c/%d1%80%d0%b0%d0%b7%d0%b1%d0%b8%d1%80%d0%b0%d0%b5%d0%bc-%d1%83%d1%8f%d0%b7%d0%b2%d0%b8%d0%bc%d0%be%d1%81%d1%82%d1%8c-%d0%b2-android-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6%d0%b5%d0%bd%d0%b8%d0%b8-insecur/</guid>
                    </item>
							        </channel>
        </rss>
		