Termux — полноценная Linux‑среда на Android, позволяющая запускать Bash‑скрипты, использовать пакеты из репозиториев и автоматизировать практически любые задачи. В этой статье мы разберём, как построить автоматизированный аудит безопасности Android‑устройства, используя только Bash и стандартные утилиты Termux.
Что потребуется
- Установленный
Termux(Google Play или F-Droid). - Базовые пакеты:
git,curl,jq,openssh,termux-api(для уведомлений и отправки отчётов). - Доступ к
termux-job-scheduler(для планового запуска) илиcron(черезcronie). - Базовые знания Bash и понимание типовых уязвимостей Android.
Подготовка окружения
pkg update && pkg upgrade -y
pkg install -y git curl jq openssh termux-api cronie
termux-setup-storage # предоставляем доступ к файловой системе
После установки убедитесь, что crond запущен:
sv-enable crond
sv up crond
Структура скрипта аудита
Скрипт разбит на несколько логических блоков:
- Инициализация — создание каталога отчётов, установка переменных.
- Сбор данных — проверка root‑прав, анализ разрешений файлов, проверка обновлений, сканирование открытых портов и т.д.
- Формирование отчёта — формируем JSON, затем при желании преобразуем в HTML.
- Уведомление — отправляем push‑уведомление и/или e‑mail.
Пример Bash‑скрипта
#!/usr/bin/env bash
# Автоматический аудит безопасности Android‑устройства в Termux
set -euo pipefail
# ---------- Инициализация ----------
LOG_DIR="$HOME/termux_audit"
mkdir -p "$LOG_DIR"
REPORT_JSON="$LOG_DIR/report_$(date +%F_%H%M%S).json"
> "$REPORT_JSON" # создаём пустой файл
# Функция для добавления записи в JSON (простая, без вложений)
json_append() {
local key=$1
local value=$2
if [ -s "$REPORT_JSON" ]; then
echo "," >> "$REPORT_JSON"
fi
echo "\"$key\": \"$value\"" >> "$REPORT_JSON"
}
# ---------- 1. Проверка root‑прав ----------
if [ "$(id -u)" -eq 0 ]; then
ROOT_STATUS="Rooted"
else
ROOT_STATUS="Not rooted"
fi
json_append "root_status" "$ROOT_STATUS"
# ---------- 2. Анализ разрешений критичных файлов ----------
CRITICAL_FILES=(
"/system/bin/su"
"/system/xbin/su"
"/system/app/Superuser.apk"
)
for file in "${CRITICAL_FILES[@]}"; do
if [ -e "$file" ]; then
PERM=$(stat -c "%a" "$file")
json_append "perm_$(basename $file)" "$PERM"
fi
done
# ---------- 3. Проверка устаревших пакетов ----------
OUTDATED=$(apt list --upgradable 2>/dev/null | tail -n +2 | wc -l)
json_append "outdated_packages" "$OUTDATED"
# ---------- 4. Сканирование открытых портов (netstat) ----------
PORTS=$(netstat -tuln | grep LISTEN | awk '{print $4}' | paste -sd "," -)
json_append "listening_ports" "$PORTS"
# ---------- 5. Проверка SELinux статуса ----------
SELINUX=$(getenforce 2>/dev/null || echo "unknown")
json_append "selinux_status" "$SELINUX"
# ---------- 6. Поиск потенциально опасных приложений ----------
DANGEROUS_APPS=$(pm list packages -f | grep -i "com\.example\.danger" | wc -l)
json_append "dangerous_apps" "$DANGEROUS_APPS"
# ---------- Формирование финального JSON ----------
# Оборачиваем в фигурные скобки
sed -i '1s/^/{/' "$REPORT_JSON"
echo "}" >> "$REPORT_JSON"
# ---------- Уведомление через termux-notification ----------
termux-notification --title "Audit Completed" --content "Report saved: $REPORT_JSON" --priority high
# ---------- Отправка отчёта по e‑mail (по желанию) ----------
# Для примера используем ssmtp, предварительно настроенный в Termux
# echo "Subject: Android Security Audit" > /tmp/mail.txt
# cat "$REPORT_JSON" >> /tmp/mail.txt
# ssmtp your@email.com < /tmp/mail.txt
exit 0
Автоматизация запуска
Чтобы скрипт исполнялся регулярно, создаём задачу в crontab:
(crontab -l 2>/dev/null; echo "0 2 * $HOME/termux_audit/audit.sh") | crontab -
Для более надёжного планирования на Android рекомендуется использовать termux-job-scheduler:
# Создаём XML‑описание задачи (~/termux_audit/job.xml)
cat > ~/termux_audit/job.xml <<'EOF'
android_audit
periodic
86400000
com.termux.app.TermuxService
EOF
termux-job-scheduler --add ~/termux_audit/job.xml
Обработка и визуализация отчётов
Полученный JSON‑файл удобно преобразовать в HTML‑таблицу с помощью jq и небольшого шаблона:
jq -r 'to_entries|map("\(.key) \(.value) ")|.[]' report.json \
| sed '1iПараметр Значение ' \
-e '$a
' > report.html
Сгенерированный report.html можно открыть в любом браузере Android или отправить по e‑mail.
Лучшие практики
- Запускайте скрипт без привилегий root, если это возможно – так вы сохраняете целостность системы.
- Храните отчёты в зашифрованном каталоге (например, используя
gpg). - Регулярно обновляйте пакеты Termux:
apt update && apt upgrade -y. - Добавляйте новые проверки: проверка сертификатов, анализ журналов
logcat, сканирование уязвимостей CVE с помощьюnmapиvulscan.
Заключение
Автоматизированный аудит безопасности Android‑устройства в Termux позволяет регулярно получать подробный обзор потенциальных рисков без необходимости установки тяжёлых GUI‑инструментов. При правильной настройке скриптов, планировщика и системы уведомлений вы получаете полностью автономный процесс, который легко интегрировать в корпоративные процедуры контроля.
Компания RybinskLab предлагает профессиональные услуги по настройке и поддержке подобных решений, разработке кастомных скриптов под ваши требования, а также проведение комплексных аудитов мобильных инфраструктур. Свяжитесь с нами, чтобы обеспечить максимальную защиту ваших Android‑устройств.