Загрузка данных


Antarctic Wallet — Reverse Engineering Отчёт
Дата анализа: 2026-08-21 Анализируемый файл: antarctic-wallet.apk (146 MB, MD5 — см. ниже) Тип приложения: Android криптовалютный кошелёк (React Native / Hermes) Аналитик: NekoFree RE Toolkit
1. Идентификация приложения
Параметр
Значение
Имя пакета
app.antarcticwallet (предположительно)
Формат
APK (Android Package), Gradle-built
Архитектура
ARM64-v8a
Фреймворк
React Native (Hermes engine)
Hermes Bytecode
Version 96
JS Bundle
assets/index.android.bundle (14.5 MB, скомпилирован Hermes)
JS функций
61 142 (после дизассемблирования)
Строк
115 029 уникальных строк
Версия
1.3.1 (по versionName в manifest)
App Store ID
6755539152 (iOS: apps.apple.com/kz/app/antarctic-wallet/id6755539152)
Схема deeplink
antarctic://
OneLink (AppsFlyer)
antarcticwallet.onelink.me/Juvy
2. Структура APK
antarctic-wallet.apk
├── AndroidManifest.xml          (binary AXML, 33 KB)
├── classes.dex … classes5.dex   (5 DEX файлов, ~40 MB total)
├── resources.arsc
├── assets/
│   ├── index.android.bundle     ← Hermes v96 bytecode (14.5 MB) **главный**
│   ├── fonts/
│   ├── mlkit_barcode_models/
│   ├── face_detection_short_range.tflite  (ML Kit — Face ID)
│   ├── dexopt/                  (предоптимизированные DEX)
│   └── com/                     (Google-services, branding)
├── lib/arm64-v8a/               (~50 MB native)
│   ├── libhermesvm.so           (Hermes JS VM)
│   ├── libcrypto.so / libssl.so (BoringSSL)
│   ├── libQuickCrypto.so        (react-native-quick-crypto)
│   ├── libquickbase64.so
│   ├── libNitroMmkv.so / libmmkv.so (зашифрованное key-value хранилище)
│   ├── libtoolChecker.so        ← **RootBeer native anti-root**
│   ├── libtensorflowlite_jni.so (ML Kit)
│   ├── libVisionCamera.so       (react-native-vision-camera)
│   ├── libskia / libreanimated / libworklets (UI)
│   └── libc++_shared.so
├── kotlin/                      (Kotlin metadata)
├── okhttp3/                     (HTTP client resources)
├── META-INF/                    (подписи)
└── res/                         (drawables, layouts)
3. Шифрование и криптография
3.1. Симметричные алгоритмы
Алгоритм
Режимы
Применение
AES
CBC, CTR, GCM, ECB, OCB
Шифрование keystore, чувствительных данных
AES Key Wrap
AES-KW, AES-KWP
Обёртка ключей
ChaCha20-Poly1305
AEAD
WalletConnect v2 transport
3.2. Асимметричные
Алгоритм
Применение
Ed25519
Подписи (Solana, некоторые L2)
secp256k1
BTC, ETH, EVM chains (BIP32/BIP44)
curve25519 / x25519
ECDH, WalletConnect session keys
BLS12-381
BLS подписи (ETH2, advanced chains)
P-256 / P-521
WebCrypto API совместимость
RSA-2048
Public key встроен в AndroidManifest (см. ниже)
3.3. Хэши и MAC
SHA-1, SHA-256, SHA-512
Keccak-256 (Ethereum)
BLAKE2b / BLAKE2s
MD5 (legacy)
RIPEMD-160 (BTC addresses)
HMAC-SHA256, HMAC-SHA512
3.4. KDF (Key Derivation Functions)
Функция
Применение
PBKDF2
keystore JSON (Ethereum Web3 Secret Storage)
scrypt (N, r, p)
keystore JSON, параметры: crypto.kdfparams.{n,r,p,salt,dklen}
Argon2 (i, d, id)
современный password hashing
HKDF
WalletConnect session derivation
BIP39
mnemonic → seed
BIP32 / BIP44
HD-wallet derivation paths
3.5. Keystore JSON (Web3 Secret Storage Definition)
Стандарт Ethereum keystore:
crypto.cipher = "aes-128-ctr"
crypto.cipherparams.iv
crypto.ciphertext
crypto.kdf = "pbkdf2" | "scrypt"
crypto.kdfparams.{dklen, n, r, p, salt, prf}
crypto.mac = keccak256(derivedKey[16:32] || ciphertext)
Строки-подтверждения в бандле: _encryptKeystore, _decryptKeystoreJson, encryptKeystoreJsonSync, aes-128-ctr, crypto.kdfparams.*.
3.6. Публичный RSA ключ (в AndroidManifest.xml)
-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlwEiFvAdFqfd5OH8xyVG
40dLchyv6vYnCVSnVPW7cp58b9YDW30jrYfG0A92uiKMlKRq4zAqlGgJZ4XeQ7dr
G+39m1Y+Jnq9hoxOgMMRYF7K5UdUFl431T4uOsgSDrFuTidhPZ9htGIG/7w8gIKG
o0B/CS/hfT91q/gAqjFs1+sx1iIzlpRmJausc7EwgQ5f0GIVRY2QTpmju+1g5IJy
7yCX+1C4QNJHSSWh3lG4x7dvLrzapTjVB5Rj80/W10KhQ5sdel9Y4CZ1MYY7QXJ2
lsgMA37wmf8VUUR2HsKE4OsMSvnguOpIUnIX1trwsT1X6WzoI02JybB9APH/GmvA
dK0bvZo78nF9RqWNJvSaQsAjrJJx2gOHnwoTJiW3EjiYZ4RjAZzXgtdrphyPJ5qC
EltQtqokFnBKFiZOU5Qxmc+o507UmVthMKnLZw2K63/tgsm/FZZSFWhEmYHlf6zM
CsOzUgRaptHkChbYk8+GSZ+u2hbgdn18uILn1cTRokLHW8Ocg8vXOUFAKVLdjjIg
W+CBIQSsyRNv/d2RMsf7mSfc4ddIdLEGZp/9zS8Zc+rR/O93nMCkHgSjo9KuILgG
oUnARba7bmDlg5uYyhDA9L4V6DlGirbBaeR7jyWXhi6sT3vovyH4q//CgL4BnSUj
SOpegIBIy8p1+KaOzgGUwx8CAwEAAQ==
-----END PUBLIC KEY-----
Назначение: вероятно, верификация подписей App Links / deep links, либо валидация лицензионных данных.
3.7. Биометрия и аппаратное хранилище
BiometricPrompt / FaceID / Fingerprint — разблокировка кошелька
Android Keystore (hardware-backed, StrongBox где доступен)
Fingerprint hash — дополнительная привязка к устройству
Строки: DEVICE_PASSCODE_OR_BIOMETRICS, AuthenticationWithBiometricsDevicePasscode
4. Хранилище данных
Технология
Назначение
MMKV (зашифрованный)
Основное key-value хранилище; native lib libmmkv.so + libNitroMmkv.so
AsyncStorage (SQLite)
Fallback, миграция, legacy данные
Keystore JSON
Seed/private keys (AES-128-CTR + scrypt/PBKDF2)
5. Сеть и API
5.1. Backend endpoints
URL
Окружение
https://api.mobile.awalltest.xyz
Production (main API)
https://api.qa.awalltest.xyz
QA
https://api.stage.awalltest.xyz
Staging
https://app.dev.awalltest.xyz
Dev
5.2. Blockchain RPC
Провайдер
Сети
Chainstack
eth-mainnet, bsc-mainnet, polygon-mainnet (*.core.chainstack.com)
Alchemy
eth-mainnet, base-mainnet, arb-sepolia, base-sepolia, base-goerli (*.g.alchemy.com)
TronGrid
TRON mainnet (api.trongrid.io)
Public
polygon-rpc.com, pulse.walletconnect.org, rpc.walletconnect.org
Explorers API
Etherscan, BscScan, Arbiscan, Polygonscan, BaseScan, Tronscan
5.3. Third-party сервисы
Сервис
Назначение
SumSub
KYC (/api/v2/kyc/sumsub/access_tokens)
AppsFlyer
Аналитика и атрибуция (onelink.me/Juvy)
Firebase
Push, Analytics, Cloud Messaging
PostHog
Feature flags
WalletConnect v2
dApp подключения
IPFS (gateway.ipfs.io)
Децентрализованный контент
5.4. API структура (175 эндпоинтов)
v2: auth, transfers, swap, sell, buy, cashback, AML, KYC, disputes, payouts, SBP, phone/steam topup, WalletConnect, saved_contacts, sessions, user settings, 2FA
v3: accounts, banana_cards, buy/sell orders, contracts, worldcards, referrals, required_actions, topup RUB
v4: compliance cases, consent, security check, personal data, phone management, RU verification (ESIA/UPRID), vcard, contract signing
Полный список: _reverse_antarctic/endpoints.txt.
6. Anti-Tampering и Security
Механизм
Реализация
Root detection
libtoolChecker.so (RootBeer native), ищет su, Magisk binaries
Emulator detection
$is_emulator, emulator strings
Debug detection
isDebug, isDebuggedMode
Bundle integrity
bundle may be corrupted or tampered, integrity check failed
SSL
BoringSSL в libssl.so; строка InvalidSslCertificate (неясно, есть ли pinning)
Hot Updater
libhotupdater_recovery.so — CodePush-like механизм обновлений JS bundle
7. Поддерживаемые блокчейны
Bitcoin, Ethereum, Binance Smart Chain, Polygon, TRON, TON (Toncoin), Solana (частично), Base, Arbitrum, Kaia.
8. Инструменты реверса
Инструмент
Версия
Применение
hbctool (Hamzamn19 fork)
Hermes 96 support
Disassemble index.android.bundle → HASM
jadx
1.5.1
DEX → Java source
dex2jar
2.4
DEX → JAR (резерв)
aapt / apktool
—
Manifest / resources (не использованы — нет Java)
Portable JRE 17
Eclipse Temurin
Runtime для jadx/dex2jar
Артефакты:
/home/user/NekoFree/_reverse_antarctic/apk/ — распакованный APK
/home/user/NekoFree/_reverse_antarctic/bundle-hasm/ — 269 MB HASM (61k функций)
instruction.hasm — дизассемблированный код
string.json — 115k строк (string table)
metadata.json — Hermes header, function headers, tables
9. Рекомендации для дальнейшего анализа
API security: протестировать /api/v2/auth/* на auth bypass, IDOR на /api/v3/user/*, race conditions на /api/v2/transfer/* и /api/v3/sell/*.
Keystore extraction: изучить instruction.hasm вокруг _encryptKeystoreJson — где хранится пароль/ключ шифрования keystore.
MMKV encryption key: нативно через libNitroMmkv.so — фрида-хук на mmkvWithID даст ключ.
RootBeer bypass: стандартный (frida script, переименование su, Magisk Hide).
Hot Updater: проверить, подписан ли bundle обновления — если нет, возможен JS injection через MitM.
RSA public key: найти, что подписано этим ключом (проверить App Links / Asset Links).
Compliance endpoint: /api/v4/compliance/cases — интересная цель для IDOR (доступ к чужим материалам дел).
10. Выводы
Стандартный RN-кошелёк с качественной криптографией (современный стек: Argon2, ChaCha20-Poly1305, secp256k1, Ed25519).
Нет обфускации Hermes bundle — дизассемблируется штатными инструментами.
Anti-tamper минимален — только RootBeer (легко бходится).
SSL pinning не обнаружен в строковых таблицах (требует подтверждения динамическим анализом).
Backend awalltest.xyz — публично доступный API, требует тестирования на авторизацию/IDOR.
KYC через SumSub — токены генерируются на бэке, фронтенд только получает.
Мультичейн — 9+ сетей, значит большая поверхность для багов в derivation path / signature generation.