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

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

Автоматизация аудита безопасности мобильных устройств через скрипты в Termux

Мобильные устройства становятся всё более привлекательной целью для злоумышленников. Быстрая и повторяемая проверка их безопасности требует автоматизации, а Termux предоставляет полноценную Linux‑среду непосредственно на Android‑телефоне. В этой статье мы разберём, как собрать набор скриптов, интегрировать проверенные инструменты и запустить их по расписанию.

Почему именно Termux?

  • Полный набор пакетов из репозиториев apt и pkg.
  • Поддержка bash, python, perl и других интерпретаторов.
  • Встроенный планировщик cron (через cronie).
  • Отсутствие необходимости в рут‑праве – скрипты работают в пользовательском пространстве.

Подготовка среды

Для начала установим базовые пакеты и настроим окружение.

pkg update && pkg upgrade -y
pkg install -y git curl wget python python-pip nano
pkg install -y nmap netcat openssl
pkg install -y cronie

Запускаем crond и убеждаемся, что сервис будет стартовать при каждом открытии Termux:

sv enable crond
sv start crond

Базовый набор аудиторских утилит

  • nmap – сканирование открытых портов и сервисов.
  • netcat – проверка сетевых соединений.
  • openssl – проверка сертификатов и TLS‑конфигураций.
  • apktool (устанавливается через pip) – декомпиляция APK.
pip install apktool

Пример скрипта аудита

Создадим файл audit.sh, который будет выполнять несколько проверок и сохранять результаты в каталог ~/audit_reports.

#!/usr/bin/env bash

REPORT_DIR="$HOME/audit_reports"
mkdir -p "$REPORT_DIR"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
REPORT="$REPORT_DIR/report_$TIMESTAMP.txt"

echo "=== Отчёт аудита $TIMESTAMP ===" > "$REPORT"

# 1. Сканирование локального Wi‑Fi (IP‑адрес устройства)
IP=$(ip addr show wlan0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
echo "
[+] Сканирование $IP (nmap)" >> "$REPORT"
nmap -sS -Pn -T4 "$IP" >> "$REPORT"

# 2. Проверка открытых TCP‑портов
echo "
[+] Проверка открытых портов (netcat)" >> "$REPORT"
for PORT in 22 80 443 8080; do
  nc -zvw2 "$IP" $PORT &>> "$REPORT" && echo "Порт $PORT открыт" >> "$REPORT"
done

# 3. Проверка сертификата HTTPS (если порт 443 открыт)
if echo "$REPORT" | grep -q "443/tcp open"; then
  echo "
[+] Проверка сертификата (openssl)" >> "$REPORT"
  echo | openssl s_client -connect "$IP:443" -servername "$IP" 2>/dev/null | openssl x509 -noout -dates >> "$REPORT"
fi

# 4. Вывод краткого резюме
echo "
=== Краткое резюме ===" >> "$REPORT"
grep -E "open|valid" "$REPORT" >> "$REPORT"

echo "Отчёт сохранён в $REPORT"

Сделаем скрипт исполняемым и протестируем:

chmod +x audit.sh
./audit.sh

Автоматический запуск через cron

Добавим задачу в crontab, чтобы аудит выполнялся каждый день в 02:00.

(crontab -l 2>/dev/null; echo "0 2   * $HOME/audit.sh") | crontab -

Проверить расписание можно командой:

crontab -l

Лучшие практики написания скриптов

  • Логирование. Записывайте всё в отдельный файл, чтобы в случае сбоя было понятно, на каком этапе произошла ошибка.
  • Проверка зависимостей. Перед выполнением проверяйте наличие нужных утилит: command -v nmap >/dev/null || { echo "nmap не установлен"; exit 1; }.
  • Изоляция прав. Не храните пароли в открытом виде. При необходимости используйте keychain или pass.
  • Обновление баз данных. Регулярно обновляйте сигнатуры nmap и списки уязвимостей.

Расширение функционала с помощью Python

Для более сложных проверок удобно писать скрипты на Python. Ниже пример небольшого скрипта, который проверяет наличие известных уязвимостей в версиях OpenSSL.

#!/usr/bin/env python3
import subprocess, re, json

def get_openssl_version():
    result = subprocess.run(['openssl', 'version'], capture_output=True, text=True)
    return result.stdout.strip()

def check_vuln(version):
    # Пример простого сопоставления; в реальном проекте используйте CVE‑базу.
    vulnerable = [
        r'OpenSSL 1\.0\.[0-9]+',
        r'OpenSSL 1\.1\.0[0-2]'
    ]
    for pattern in vulnerable:
        if re.search(pattern, version):
            return True
    return False

ver = get_openssl_version()
report = {
    'openssl_version': ver,
    'vulnerable': check_vuln(ver)
}
print(json.dumps(report, ensure_ascii=False, indent=2))

Сохраните файл как check_openssl.py, сделайте его исполняемым и добавьте в основной аудитный скрипт.

Заключение

Termux открывает возможность выполнять полноценный аудит мобильных устройств без необходимости в отдельном ноутбуке или сервере. Сочетание привычных Linux‑утилит, планировщика cron и возможности писать скрипты на Bash и Python позволяет построить полностью автоматизированный процесс проверки, который будет работать даже в офлайн‑режиме.

Если вам нужен индивидуальный набор аудиторских скриптов, интеграция с SIEM‑системами или проведение комплексного «red‑team» тестирования мобильных инфраструктур, обратитесь к экспертам RybinskLab. Мы поможем разработать кастомные решения, настроить автоматизацию и обеспечить постоянный мониторинг безопасности ваших Android‑устройств.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен экспертом RybinskLab.

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

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

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

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