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

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

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

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

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

Категории

Все категории
Loading categories
AudioServer-Voip-Recorder — 🔬 Продвинутый исследовательский инструмент для Android для захвата VoIP-аудио в реальном времени (Uplink/Downlink) путём динамического хука libaudioflinger.so. Протестирован и собран на WhatsApp, Signal и Telegram на Android 14. | Kitploit
Инструменты/GitHubGitHub/nighthawkk/audioserver-voip-recorder
Безопасность AndroidОбратная инженерияМобильная безопасность
GitHubnighthawkk/audioserver-voip-recorder

AudioServer-Voip-Recorder

🔬 Продвинутый исследовательский инструмент для Android для захвата VoIP-аудио в реальном времени (Uplink/Downlink) путём динамического хука libaudioflinger.so. Протестирован и собран на WhatsApp, Signal и Telegram на Android 14.

Репозиторий

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
31991 месяц назадЕщё не проверено

Цель: Продемонстрировать захват VoIP-потока путем перехвата audioserver в Android (конкретно libaudioflinger.so) и записи PCM-буферов восходящего (микрофон) и нисходящего (динамик) каналов, когда система находится в коммуникационном режиме.

Дизайн проекта и методология

Архитектура:

  • Приложение-контроллер (Android)
    Интерфейс с 9 кнопками для управления настройкой политики SELinux, инъекцией payload, перемещением данных и воспроизведением.

  • Payload (libaudiohook.so)
    C++-библиотека (собирается как часть проекта приложения), которая перехватывает внутренние методы AudioFlinger с помощью Dobby и записывает сырые PCM-буферы в директорию сессии.

  • Постобработка
    Дополнительный инструмент tools/audioparser.py преобразует сырые файлы .ac (Downlink)/.bc (Uplink) в WAV. Файловый менеджер приложения также может конвертировать и воспроизводить их прямо в приложении.

  • Исследовательские утилиты
    Frida-скрипты для первоначального трассирования функций и поиска смещений; файлы анализа для символов/смещений и другие фрагменты.

Приложение-контроллер

Это Android-приложение предоставляет графический интерфейс для управления записью VoIP через audioserver. Оно интегрируется с нативным payload, который перехватывает аудиостек Android для захвата звука с микрофона и динамика от VoIP-приложений.

Приложение служит центром управления: позволяет внедрять необходимые политики SELinux, запускать/останавливать мониторинг, управлять записанными данными и воспроизводить захваченные VoIP-аудиофайлы.

Возможности

Главная активность содержит 9 кнопок управления:

  1. Инъекция политик
    Внедряет необходимые политики SELinux для совместной работы audioserver и этого приложения.

  2. Запуск мониторинга
    Внедряет payload (общую библиотеку) в audioserver, включая захват VoIP-аудио через перехват RecordTrack и PlaybackTrack. Для инъекции в процесс используется AndKittyInjector.

  3. Остановка мониторинга
    Перезапускает процесс audioserver, останавливая мониторинг и удаляя внедренные хуки.

  4. Копирование данных
    Копирует захваченный сырой PCM-аудио из временной директории /data/local/tmp/voip в /sdcard/voip.

    • После этого очищает временную директорию.
  5. Просмотр журналов
    Отображает журналы, связанные с инъекцией, перехватом и статусом записи.

  6. Включить SELinux
    Восстанавливает enforcing-режим SELinux.

  7. Отключить SELinux
    Переводит SELinux в permissive-режим. Используйте, если внедренные политики не срабатывают.

  8. Воспроизведение аудио
    Открывает собственный VoIP-файловый менеджер (/sdcard/voip/):

    • Преобразует сырые PCM-файлы в формат WAV в памяти.
    • Воспроизводит преобразованное аудио прямо в приложении.
  9. Удаление данных
    Удаляет все аудиоданные из /data/local/tmp/voip и /sdcard/voip. ПРИМЕЧАНИЕ: После удаления данных необходимо повторно выполнить инъекцию в audioserver, чтобы создать директорию для сохранения данных.

+----------------------+    
|                      |    
|   App MainActivity   |    
|                      |    
|                      |    
|(9 Control Buttons UI)|    
|                      |    
|                      |    
+----------+-----------+    
           |                
           |                
           |                
+----------v-----------+    
|                      |    
|       JNI Layer      |    
|                      |    
| Selinux, Process Inje|    
| ction,               |    
|                      |    
|                      |    
+----------------------+    

Перехватывающий Payload

Эта общая библиотека внедряется в audioserver для обнаружения AUDIO_MODE_IN_COMMUNICATION и захвата VoIP-аудиопотоков напрямую из аудиостека Android для заданного набора имен пакетов.

Для перехвата критических методов внутри libaudioflinger.so используется фреймворк inline-хукинга Dobby.
Аудиопотоки восходящего канала (микрофон) и нисходящего канала (динамик) захватываются и записываются в файлы сессии для последующей обработки.

Точки перехвата

Библиотека устанавливает хуки на следующие функции внутри AudioFlinger и связанных классов:

ФункцияНазначение
AudioFlinger::setModeОтслеживает переходы в/из режима IN_COMMUNICATION (VoIP активен).
RecordTrack::getNextBufferЗахватывает кадры аудио с микрофона (восходящий канал).
PlaybackThread::Track::getNextBufferЗахватывает кадры аудио с динамика (нисходящий канал).
Track::stopЗакрывает и финализирует файл нисходящего канала.
RecordTrack::stopЗакрывает и финализирует файл восходящего канала.

Целевые приложения

Библиотека фильтрует потоки на основе маппинга UID → пакет.

Текущие отслеживаемые приложения:

  • com.whatsapp
  • com.whatsapp.w4b (WhatsApp Business)
  • org.thoughtcrime.securesms (Signal)
  • org.telegram.messenger
  • org.telegram.messenger.web

Вы также можете добавлять другие приложения внутри audioserver_hook.cpp:

static const char* kTargetPackages[] = {  
    "com.whatsapp",  
    "com.whatsapp.w4b",  
    "org.thoughtcrime.securesms",  
    "org.telegram.messenger",  
    "org.telegram.messenger.web"  
};

Вывод файлов

  • При инъекции в audioserver создается директория сессии по пути: /data/local/tmp/voip/audioserver_session_<timestamp>/

  • Файлы сначала создаются с расширением .tmp, затем переименовываются при остановке трека:

    • Uplink (микрофон) → <packageName>_<sampleRate>_<timestamp>.bc
    • Downlink (динамик) → <packageName>_<sampleRate>_<timestamp>.ac
  • Пример сессии:

	/data/local/tmp/voip/audioserver_session_1725389200/
	├── com.whatsapp_48000_1725389201_123456.ac
	├── com.whatsapp_48000_1725389201_123789.bc
	

Смещения (Offsets)

Поскольку целевая библиотека лишена символов (stripped), и методы не экспортируются в libaudioflinger.so, для успешного перехвата нам нужны точные смещения методов и других связанных компонентов.

Эти смещения можно получить из статического анализа с помощью IDA-PRO или из динамического анализа с помощью Frida. Когда смещения известны, их можно заменить в заголовочном файле offsets.h.

Требуемые смещения:
Методы:
  1. AUDIOFLINGER_SETMODE_OFFSET
    • Метод: android::AudioFlinger::setMode(audio_mode_t)
    • Манглированное имя: _ZN7android12AudioFlinger7setModeE11audio_mode_t
  2. RECORDTRACK_GETNEXTBUFFER_OFFSET
    • Метод: android::AudioFlinger::RecordThread::RecordTrack::getNextBuffer(android::AudioBufferProvider::Buffer *)
    • Манглированное имя: _ZN7android12AudioFlinger12RecordThread11RecordTrack13getNextBufferEPNS_19AudioBufferProvider6BufferE
  3. TRACK_GETNEXTBUFFER_OFFSET
    • Метод: android::AudioFlinger::PlaybackThread::Track::getNextBuffer(android::AudioBufferProvider::Buffer *)
    • Манглированное имя: _ZN7android12AudioFlinger14PlaybackThread5Track13getNextBufferEPNS_19AudioBufferProvider6BufferE
  4. TRACK_STOP_OFFSET
    • Метод: android::AudioFlinger::PlaybackThread::Track::stop(void)
    • Манглированное имя: _ZN7android12AudioFlinger14PlaybackThread5Track4stopEv
  5. RECORDTRACK_STOP_OFFSET
    • Метод: android::AudioFlinger::RecordThread::RecordTrack::stop(void)
    • Манглированное имя: _ZN7android12AudioFlinger12RecordThread11RecordTrack4stopEv
Другие смещения:
  1. SAMPLERATE_OFFSET
  2. UID_OFFSET
  3. ISOUT_OFFSET
  4. FORMAT_OFFSET
  5. CHANNELMASK_OFFSET
  6. ATTR_OFFSET
Скачать инструмент