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

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

Автоматизированный аудит безопасности Android‑устройств через скрипты Bash в Termux

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‑устройств.

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

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

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

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

Связаться со мной