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

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

Создание автоматизированного сканера уязвимостей Android‑устройств в Termux с использованием Nmap и Python‑скриптов

Подробное руководство по созданию сканера уязвимостей Android‑устройств в Termux с помощью Nmap и Python‑скриптов: установка, настройка, автоматизация и анализ результатов.

Мобильные устройства на базе Android часто используют открытые порты и сервисы, которые могут стать точками входа для злоумышленников. В Termux можно собрать лёгкий, но мощный сканер уязвимостей, используя nmap для сетевого анализа и Python‑скрипты для автоматизации обработки результатов. Термин "start" в английском языке означает «начать», что подтверждается словарями merriam-webster.com и cambridge.org.

Необходимые инструменты

  • Termux (Android‑эмулятор командной строки)
  • Пакетный менеджер pkg в Termux
  • Сканер сети nmap
  • Python 3 и библиотеки subprocess, re, json
  • Termux‑модуль termux-job-scheduler (для планировщика задач)

Установка Termux и базовых пакетов

pkg update && pkg upgrade -y
pkg install python git curl -y

После установки убедитесь, что Python 3 доступен:

python3 --version

Установка Nmap

pkg install nmap -y

Проверьте версию:

nmap --version

Создание Python‑скрипта сканера

Скрипт будет выполнять сканирование диапазона IP‑адресов, извлекать открытые порты и сохранять результаты в JSON‑файл.

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

# Параметры сканирования (можно изменить)
TARGET_SUBNET = '192.168.1.0/24'   # подсеть вашего Wi‑Fi
OUTPUT_DIR = '/data/data/com.termux/files/home/scanner_results'
os.makedirs(OUTPUT_DIR, exist_ok=True)

def run_nmap(target):
    """Запускает nmap и возвращает вывод в виде строки."""
    cmd = ['nmap', '-sV', '-oG', '-', target]
    result = subprocess.run(cmd, capture_output=True, text=True)
    return result.stdout

def parse_nmap(grep_output):
    """Парсит вывод nmap в формате grepable и формирует список dict."""
    hosts = []
    for line in grep_output.splitlines():
        if line.startswith('Host:'):
            parts = line.split('\t')
            ip = re.search(r'Host: (\S+)', parts[0]).group(1)
            ports = []
            for part in parts[1:]:
                if part.startswith('Ports:'):
                    ports_info = part[6:].split(',')
                    for p in ports_info:
                        port_data = p.split('/')
                        ports.append({
                            'port': int(port_data[0]),
                            'state': port_data[1],
                            'service': port_data[2]
                        })
            hosts.append({'ip': ip, 'ports': ports})
    return hosts

def main():
    raw = run_nmap(TARGET_SUBNET)
    parsed = parse_nmap(raw)
    out_path = os.path.join(OUTPUT_DIR, 'scan_' + TARGET_SUBNET.replace('/', '_') + '.json')
    with open(out_path, 'w') as f:
        json.dump(parsed, f, indent=2)
    print(f'Scan completed. Results saved to {out_path}')

if name == 'main':
    main()

Сохраните скрипт, например, как android_vuln_scanner.py, и сделайте его исполняемым:

chmod +x android_vuln_scanner.py

Автоматизация сканирования

Для регулярного запуска сканера используем встроенный планировщик Termux. Сначала создаём файл задачи:

cat > $HOME/.termux/boot/start_scanner.sh <<'EOF'
#!/usr/bin/env bash
$HOME/android_vuln_scanner.py
EOF
chmod +x $HOME/.termux/boot/start_scanner.sh

Затем регистрируем задачу в termux-job-scheduler (пример – запуск каждый день в 03:00):

termux-job-scheduler --add --execute "$HOME/.termux/boot/start_scanner.sh" --interval 86400000 --exact --time 03:00

Для более гибкой периодичности можно использовать crontab (установить через pkg install cronie) и добавить запись:

0 3   * $HOME/android_vuln_scanner.py

Анализ результатов

Полученный JSON‑файл удобно просматривать через jq или импортировать в инструменты SIEM. Пример фильтрации открытых портов:

cat $OUTPUT_DIR/scan_192.168.1.0_24.json | jq '.[] | select(.ports != []) | {ip, open_ports: [.ports[] | select(.state=="open") | .port]}'

Выявленные сервисы можно сопоставить с базой CVE, используя публичные API (например, cve.circl.lu).

Безопасность и ограничения

  • Запускайте сканер только в своей сети или с согласия владельца целевых устройств.
  • Не храните результаты в открытом виде без шифрования – используйте gpg для подписи/шифрования.
  • Обновляйте nmap и Python‑библиотеки, чтобы получать актуальные сигнатуры.

Заключение

С помощью Termux, Nmap и небольшого Python‑скрипта вы получаете полностью автоматизированный сканер уязвимостей Android‑устройств, который легко интегрировать в существующие процессы тестирования безопасности. При необходимости масштабировать решение, добавить веб‑интерфейс или настроить централизованную отчетность, команда RybinskLab готова предоставить профессиональные услуги по разработке, аудиту и поддержке подобных систем.

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

Нужна помощь с настройкой Termux, Linux и серверов?

Я оказываю ИТ-услуги: настройка серверов, автоматизация, безопасность, помощь с Linux и инфраструктурой. Материалы сайта — только в ознакомительных и образовательных целях.

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