Мобильные устройства становятся всё более привлекательной целью для злоумышленников. Быстрая и повторяемая проверка их безопасности требует автоматизации, а 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‑устройств.