• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Статья Код Доступа Termux ч.1-я

Обложка.gif


Эта и другие ниже по тексту gif были созданы в Termux

Статья посвящается любителям CLI в знак солидарности лучшего терминала на OS Android, который испытывает «кошмарную» монополию Google.

plan.png


Эта диаграмма создана в Termux

Termux — это Android приложение под свободной GPL3+ лицензией: эмулятор терминала для среды GNU/Linux, которое работает напрямую без необходимости рутирования. Минимальный базовый функционал устанавливается автоматически, расширенные возможности подтягиваются с помощью менеджера пакетов и установкой стороннего ПО с git, а продвинутая деятельность на телефоне достигается за счёт рут-прав пользователя и установкой proot дистрибутивов GNU/Linux.

Сам Termux весит ~100 Мб (расширяется на Гб) работает на OS Android v7-11.

Termux-среда — киберпанковские разработки и некоторые пакеты содержат кучу ошибок, исправлением которых при случае занимается сам пользователь или сообщество, что является (по шкале красноглазия) нормой в open source среде (стандартные пакеты так же как и приложение распространяются под свободными, но разными лицензиями — это требования сопровождающих packages). В целом, качество и популярность приложения поддерживается на достаточно высоком уровне в мировом масштабе (звёзды на Github-е; рейтинг/отзывы на GP). В настоящее время технические политики GP vs Termux конфликтуют между собой в результате чего у пользователей новичков может ничего не получаться в CLI с минимальным базовым функционалом из коробки. RTFM и ещё раз RTFM. На Github-е с рекурсией на документацию частые проблемы и их решения достаточно технически-просто расписаны сообществом, по этому стоит лишний раз заглянуть в местную wiki перед постингом своей проблемы на профильном форуме.

Опыт использования Termux
Я уже не помню точно когда и каким образом Termux стал инструментом моей души, но изучать и юзать это чудо стал со времён Android 6. Накопился личный опыт, которым я хотел бы поделиться с читателями и по возможности самому освоить что-то новое (пишите в комментах ваш уникальный опыт использования этого терминала).

В данном мини-цикле статей вербализация пойдет о нижеизложенном со всеми остановками:
  • управлять серверами через ssh;
  • скачивать ролики/отрывки с YouTube;
  • нарезать видео, создавать gif;
  • воспроизводить музыку/радио прямо в CLI;
  • нарезать mp3-бигфайлы (аналогов приложений на Android попросту нет);
  • редактировать документы;
  • проверять орфографию: как txt-документов, так и различных статей по url, например, проверка орфографии статей на Codeby;
  • генерировать словари различной сложности;
  • создавать блок-схемы; графики и даже 3d-визуализацию;
  • тестировать интернет соединение/интерфейс (требуется частично Root);
  • снифить/сканировать сети (требуется частично Root);
  • запускать и управлять TOR-сетью;
  • управлять приложениями и процессами в ОС Android (требуется Root);
  • защищать любые данные от случайного редактирования/уничтожения;
  • автоматически бэкапить/шифровать по ночам любые данные в своё облако;
  • проводить аудит безопасности (об опасности сердить скрипт-кидди с их любимыми: «снифть, парсить, брутить, дампить, сканить, фишить»);
  • работать с электропочтой;
  • изучать UNIX/shell;
  • программировать на Android (на выбор пользователя. В Termux портированы несколько интерпретируемых и компилируемых языков программирования);
  • запускать python/php/npm скрипты;
  • работать с криптографией; стеганографией и цифровыми подписями;
  • парсить данные;
  • и даже запускать GNU-gui-софт из CLI.
Со всем этим великолепием читатели могут ознакомиться в едином произведении: Код Доступа Termux, разбитым на несколько частей.

Дисклеймер

Любые действия и техники исполнения, связанные с рассматриваемыми инструментами в данной статье, являются исключительно ответственностью читателей. Злоупотребление набором инструментов и/или недопонимание может привести к ответственности соответствующих лиц. Автор не несёт ответственность в случае предъявления каких-либо обвинений против каких-либо лиц, злоупотребляющих инструментами/информацией для правонарушений; или сдачи читателями на запчасти своих испорченных гаджетов. Инструменты, упомянутые в этой статье, связанные с бэкапом/пентестом/шифрованием могут нанести ущерб или быть опасными, ознакомьтесь с законами вашей страны/округа и технической информацией. Если вы что-то собираетесь использовать, то используете это на свой страх и риск. Короче, автор ни к чему не призывает, а лишь демонстрирует возможности ПО в ознакомительных целях, что не является руководством к неправомерным действиям или обучающим материалом для сокрытия правонарушений.

Установка и настройка среды Termux

1. Скачиваем и устанавливаем приложение Termux из магазина приложений (Termux в магазине приложений GP больше не поддерживается и не обновляется с осени 2020 года, вся разработка продолжает осуществляется на Github, но релизы выкладываются в F-droid/Github). Причины с рекурсией описаны здесь.

2. $ termux-setup-storage
Этой командой пользователь предоставляет Termux разрешение на «доступ к хранилищу» (обязательный шаг). После предоставления разрешения приложению у пользователя появится доступ из Termux к диску/общедоступным каталогам Android через ~/storage/shared/* и флэш накопителю ~/storage/external-1/*. На Android 11 существуют проблемы с правами: требуется повторно отозвать/дать права «доступ к хранилищу».
* Перейдите в «Настройки Android» -> «Приложения» -> «Termux» -> «Разрешения».
* Отозвать разрешение на хранение
* Предоставьте разрешение на хранение еще раз.
А на Android 12 Termux не способен в принципе нормально работать.

3. Установка ПО из менеджера пакетов

$ pkg list-all #посмотреть стандартные пакеты в менеджере (альтернатива apt/dpkg). Портированных пакетов >1000, не заблудитесь.
$ pkg update && pkg install python wget curl nano git tsu tor cronie grep htop printf #установить необходимый минимум утилит, другие пакеты выбирать и ставить по мере необходимости.

У Termux имеется приятная особенность угадывания: если пользователь запускает какую-либо утилиту (в т.ч. с опечаткой), которая у него не установлена, но присутствует в репозитории, то юзер получает уведомление «угадывания» в терминале: что похожего имеется в репо и что пользователю нужно доставить, а проверить оно ли это ему требуется
$ sqget #ввод ошибочной команды
$ pkg show «оно ли это» #получить мета-информацию о пакете

wget_n_y.png


Пример решения проблем с обновлением/установкой пакетов

Если пользователь Termux сталкивается с ошибкой при 'pkg update' обновлении пакетов из коробки (как повезёт), например из-за цензуры в стране, и/или из-за того, что Termux давно не обновлялся на устройстве пользователя (или того хуже имеется проблема с подписями: Termux ранее был установлен с GP и обновлён/переустановлен с F-droid); из-за компрометации ключей разработчиков, то удаление/установка Termux-приложения не поможет (обязательно нужно вычищать с устройства и все установленные termux-сервисы (termux api; termux boot; termux style), а так же очищать кэш и данные приложения перед удалением версии Termux GP). После же обычного удаления приложения часть данных остаётся на устройстве пользователя в таком случае проблем не избежать.

Установка и настройка среды Termux.png


Первые три скриншота — описание проблемы обновлений Termux (в данном примере проблема обновлений пакетов навязана пользователю из-за internet censorship). Нижние 2 скриншота — решение: применение команды: «termux-change-repo». Данная команда предоставляет пользователю выбрать альтернативное зеркало репозитория: изменить источник обновления пакетов. Если с каким-либо репозиторием проблемы, то пользователь всегда может его заменить на дублёр с другого хостинга.

$ termux-change-repo
Выбрать получение обновлений (для всех репо, их может быть больше одного) с другого хостинга, которое не цензурируется вашим провайдером (на мой взгляд самое стабильное зеркало репозитория в РФ — это зеркало Termux/Github). Эта проблема и ее решение описана в документации, но как видите некоторые юзеры об этом и не догадываются и регулярно задают одни и те же одинаковые вопросы на профильных форумах (обычно такие пользователи вычисляются по количеству минусов над своим вопросом).

4. Кастомизация Termux (необязательно)

4.1. Стиль
Благодаря Fan-сообществу в Termux имеется множество готовых цветовых тем, а не только белый шрифт на чёрном фоне. Для выбора темы пользователю необходимо скачать с дополнение к Termux: Termux-Styling. После установки аддона при длительном нажатии на экран в области CLI появится пункт: more --> style. Можно выбирать/сменять из списка любую, приятную для глаз цветовую тему.

4.2. Настройка приветствия и приглашающей строки (необязательно)

Установка и настройка среды Termux00.png


На скриншоте приветствие и приглашающая строка Termux. Слева — настройки по умолчанию, справа — кастомные настройки пользователя.

Для настройки кастомной, приглашающей строки пользователю необходимо описать переменную «PS1» в файле домашнего каталога ~/.bashrc

Код:
Bash:
$ nano ~/.bashrc -$ # ключ «-$» заставляет nano визуально переносить текст на новую строку
# Наполнение:
HISTSIZE=20000 #сохранять историю команд
HISTFILESIZE=1000 #размер истории в текущей сессии

export HISTTIMEFORMAT='%d.%m.%Y %H:%M:%S' #отображать дату введённой команды в истории (проверка даты --> $ history)

PS1="\[\033[1;34m\]┌──\[\033[0m\]\[\033[1;31m\]boss\[\033[0m\]\[\033[;34m\]──[\[\033[0m\]\[\033[1;35m\]\w\[\033[0m\]\[\033[;34m\]]\[\033[0m\]\n\[\033[1;34m\]└─❕\[\033[0m\]" #настройка переменной приглашающей строки как у автора.

export EDITOR=nano #сделать nano — редактором по умолчанию.

#«ctrl + o» сохранить; «ctrl + x» выход
$ bash

Для настройки приветствия пользователю необходимо отредактировать файл "/data/data/com.termux/files/usr/etc/motd"
Если у пользователя имеются рут-права, то редактирование файла «motd» из-за общего доступа очень простое, например, с помощью Total Commander + QuickEdit.
Если же рута нет, то
$ nano ../usr/etc/motd #две точки означают подняться на каталог выше из текущей директории.

Всё что пользователь набросает в "motd" каждый раз будет отображаться при запуске Termux. В моём случае с помощью утилиты сгенерировал текст «Код Доступа Рай», добавив строкой ниже смайлики цветных кружков и всё это записал в файл «motd».

4.3. Настройка размера отображения вывода в CLI.
По умолчанию Termux отображает 2000 строк, что является невероятно низким значением рендеринга по отношению к мощностям гаджетов. Например, пользователь сильно ограничен при просмотре баз данных, словарей, работой с html/текстами и т.д. Что бы проще было понять проблему её нужно воспроизвести.

Код:
$ seq 2100 #генерация числовых строк от 1..2100 и вывод их на печать. Попробуйте прокрутить CLI до самого верха и вы остановитесь на числе/строке 100 (всё что сгенерировано до числа 100 пользователь не увидит, а увидит строки чисел от 100..2100, вот оно ограничения в 2к строк).

В прошлом году я обратился к разработчикам Termux с предложением расширить ограничения терминала с 2к строк до 5-50к. строк. Проведя тесты, разработчики поддержали предложение и в Termux с v0.114+ доступна пользовательская настройка на рендеринг строк в termux-конфиге.

Код:
$ nano -$ .termux/termux.properties #конфиг, в котором настраиваются некоторые вещи: например, рендеринг строк, клавиши виртуальной клавиатуры, кликабельность ссылок в CLI.
Добавим строки:
Bash:
terminal-transcript-rows=10000 #отображать в CLI 10к строк вместо 2к (доступно с v0.114+)
terminal-onclick-url-open=true #понимать url(s) в CLI (доступно с v0.118+).

Продолжение:
Часть 2-я
Часть 3-я
Часть 4-я

Часть 5-я
 
Последнее редактирование:
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!