• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

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

Программирование на Android

Уметь ловко писать сценарии на хороший навык, но ограниченный. В Termux репозитории имеются пакеты языков программирования (ЯП), например, , , , , а так же , , , , , . Давайте напишем нашу однофункциональную программу на всех вышеперечисленных языках, которая поприветствует пользователей портала Сodeby.

Код:
$ pkg install python golang elixir php rust perl ruby scala brainfuck #установка ЯП, bash/java уже предустановленные среды.

Программирование.png


Пруфы. Успешное выполнение программ на всех вышеперечисленных ЯП (а как думают читатели: много ли времени я затратил ради этого скриншота?).

Хорошие новости: можно обучаться и практиковать/поддерживать навыки владения ЯП прямо с гаджета, например, проходя курсы программирования по Python на Codeby или на Stepik, решая задачи где бы ты не находился.

В реальности же имеются технические ограничения. Например, на Python «нельзя» писать и запускать ПО, требующего многопроцессорного параллельного вычисления напрямую в Termux (параллельные вычисления на нескольких ядрах CPU, не путать с многопоточностью (и не касается, например СИ-программ)). Скрипты, которые размашисто потребляют ОЗУ, несмотря на избыточно-свободную память могут аномально снижать скорость вплоть до замирания. Простой пример воспроизведения проблемы на Python с распараллеливанием кода на CPU(s).

Код:
$ python
Python:
import concurrent.futures as pool

e = pool.ProcessPoolExecutor(max_workers=2, mp_context=None, initializer=None, initargs=())

#Приведёт к следующей ошибке:
#>>>raise ImportError("This platform lacks a functioning sem_open" + ImportError:
#This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770.

По той же причине не встанет, например, и библиотека и импортирующее её ПО:
$ pip install numpy #установка не завершится и приведёт к ошибке

Но если очень надо....
Вмешаемся в сам интерпретатор Python, заменив многопроцессорные параллельные вычисления на многопоточные.

Код:
$ nano ../usr/lib/python3.10/multiprocessing/synchronize.py
заменяем ~28 строку:
from _multiprocessing import SemLock, sem_unlink
на
В таком случае можно запускать параллельные вычисления в потоках, а не процессах.

Программирование2.png

Пруф, библиотека numpy установлена и работает!

Proot-distro

Компромисс. Если пользователь располагает достаточно свободным дисковым пространством (±10 Гб) на своем гаджете, то он может установить в Termux один из дистрибутивов GNU/Linux (например, termux-ubuntu и п.д.).

proot-distro.png


И запускать не только скрипты, требующие распараллеливания кода на CPU(s), но и юзать GUI-софт, например, .

, метафорично выражаясь — это сила Temux и ни -у и ни далеко им всем сейчас. Вся Termux-стихия заключена в 4-х строчках ниже, но обойдя одни ограничения, обязательно натыкаешься на другие (overkill abstractions).

Код:
$ pkg install proot-distro $ proot-distro list $ proot-distro install ubuntu $ proot-distro login ubuntu

Сравнение пакетов

mutt & smtplib

Для работы с электропочтой в Termux имеется пакет:

Код:
$ pkg install mutt
$ nano ../usr/etc/Muttrc # конфига в CLI/nano для тех у кого не рут прав.
$ mutt #запуск

mutt.png

Скриншот: входящие письма на Яндекс почте.

Работа с email требуется, например тогда, когда произошло какое-либо событие, и в случае успеха или ошибки автоматическая отправка репорта на email. Я не могу похвалить или раскритиковать mutt не предвзято т.к. пользуюсь в подобных скрипто-делах Python с библиотекой , которая работает стабильно и без нареканий.

Сравнение пакетов: html2tetx* vs links

А вот пример, когда сторонний софт перспективнее местного. В Termux имеется в наличии пакет «html2text», который позволяет выводить очищенные от тегов web-страницы в CLI. У данного пакета имеются нюансы с автовыбором кодировки: например, русскоязычные символы отображаются кракозяброй и на мой взгляд не самое лучшее форматирование текста. В Python имеется альтернативный пакет с тем же названием и аналогичным функционалом, но ИМХО, разработкой на порядок выше. Сравним эти два пакета от разных разработчиков написанных на разных языках, но выполняющих одну и ту же функцию (примечание — html2text популярные утилиты и представлены на многих ЯП, не только на Python и Perl).

Код:
$ pkg install html2text #установка из репозитория Termux
# тесты
$ pip install html2text #установка из репозитория (каталог ПО Python)
# тесты

Запуск разных html2text-пакетов на примере обработки одной и той же русскоязычной статьи:
$ curl https://habr.com/en/post/488432/ | html2text

html2text.png


Выхлоп утилит на одной и той же статье: слева — пакет html2text из репозитория Termux, справа — python пакет html2text. В данном случае наблюдаем, что python-пакет по умолчанию верно определяет кодировку, а для нормального отображения русскоязычного текста при работе с пакетом из репозитория Termux необходимо явно указывать флаг кодировки, например, «-from_encoding windows-1251»; «-from_encoding utf-8».

Альтернативный, возможно даже более удобный, способ получить текстовую версию web-страницы очищенную от тегов — это использовать cli-браузер, например, .

Код:
$ pkg install links $ links # «g» открыть url --> файл --> Сохранить форм. документ

html2text_links.png


Преимущество cli-браузера перед curl/html2text-пакетами — это гарантия корректного форматирования текста. В links можно сохранить масштабируемый/форматированный текст по любой/заданной ширине, используя легкий жест двумя пальцами по cli-экрану.

Для общего развития просто сравните выхлоп команд на смартфоне, а не на планшете и покажите мне в комментариях.
Код:
$ links wttr.in/kolomna && curl wttr.in/kolomna
«Ожидание...»

Yaspeller

Как было выше написано: сторонний cli-git-софт — это не только python-скрипты. Например, установим в Termux полезный для авторов-редакторов npm-пакет yaspeller, написанный на JS русскоязычным разработчиком, который позволяет проверять ru-en орфографию локальных txt-данных, так и данных по url в два касания.

Код:
$ pkg install nodejs $ npm install yaspeller -g $ yaspeller https://habr.com/ru/post/647267/ #указываем любой url для проверки ошибок

yaspeller.png


Скриншот Yaspeller. Yaspeller мгновенно подозревает/обнаруживает орф.ошибки, а в скобках справа предлагает исправления.

Обычно материалы на портале Хабр считаются в рунете достаточно грамотными и качественными: авторы текстов заботятся о своей репутации, в т.ч. модераторы постоянно следят за статьями. Но иногда там можно встретить и такую жалость, как на скрине. Орфографический анализ yaspeller информирует в целом и о низкой квалификации автора, статью которого, впрочем, сообщество оценило по достоинству: загнав в глубокий минус автора и его материалы.

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

Снифить, парсить, брутить, дампить, сканить, фишить (3я-4я части)

В одной жизни Вы - Томас Андерсон, программист в крупной уважаемой компании. У Вас есть медицинская страховка, Вы платите налоги и еще - помогаете консьержке выносить мусор. Другая Ваша жизнь - в компьютерах. И тут Вы известны как хакер Нео. Вы виновны практически во всех уголовно наказуемых компьютерных преступлениях. У первого - Томаса - есть будущее. У Нео - нет.​

Pipal

Следующий инструмент, о котором не стыдно публично сообщить написан на ruby. Вы находите утечки, он рассказывает вам интересные истории.

Возможно, читатели не раз встречали в сети новости о том, что в интернет выложена очередная утечка паролей: «дамп из некого диджекорп». И разные издания из рук в руки перепечатывали анализ и выводы экспертов не вникая в суть деталей. Давайте немного побудем экспертом и сами проанализируем одну из публичных утечек паролей с помощью .

Итак, что делает Pipal? Самый простой способ объяснить — выборочно показать вывод, полученный при разборе списка утекших паролей. Я нагуглил список паролей из утечки «...», которую я взял «...» (многоточия проставлены по этическим причинам).

Код:
$ pkg install ruby $ git clone https://github.com/digininja/pipal $ cd pipal $ ./pipal.rb dump.txt #dump.txt — утечка/словарь содержащий пароли

pipal.png

Скриншот, выборочный анализ данных из утечки.

Из работы pipal видим, что утечка данных внушительная: содержит ~426K утекших паролей и из них ~78% уникальных паролей. По классике самым популярным паролем является пароль «123456», но и встречается он довольно редко менее чем 0,5% от общего дампа. Популярная длина паролей от 6-10 символов и пользователи в основном очень любят использовать простой буквенный пароль в нижнем регистре (33%). На скрине видно и топ 10 базовых слов (это частые слова что-то вроде корней, без префикса и суффикса если такие встречаются чаще остальных). Внешний список (external list) - что-то вроде базовых слов, только их задает сам пользователь на основе мета-информации об утечке БД. Предварительный вывод: высока вероятность реальной утечки данных, а не вброса.

Описательная статистика прежде всего интересна тем шифропанкам, кто работает со словарями и занимается обогащением баз данных.

Продолжая темпу пентеста было бы нечестно не затронуть инструменты и на родном .

Фишинг

Почему пользователям стоит обращать внимание на подозрительные ссылки и по возможности их избегать покажу на примере инструмента zphisher

Код:
$ git clone git://github.com/htr-tech/zphisher.git $ cd zphisher $ bash zphisher.sh $ git pull #обновление

Инструмент примечателен тем, что атакующий может отказаться от «ngrock» и не вникать в связанные с ним ограничения чтобы туннелировать фишинговую ссылку.

zphisher.png


Использование фишинга на примере Instagram. Ключи команд отсутствуют, атакующий выбирает все действия цифрами: что именно он будет использовать. Выбрав в качестве примера Instagram, а в качестве инициализации туннельный клиент cloudflared, а не ngrock получил на выбор две рандомные, но рабочие фишинг-ссылки. Открыв, например, обфусцированную ссылку на своём устройстве жертва предоставляет атакующему свой ip-адрес. Дизайн страницы Instagram реалистичный (жертве стоило бы обратить внимание на url). И если атакуемый, поддавшись манипуляции и коварству социальной инженерии, введёт свои данные (или рандомные), они тут же будут перехвачены атакующим, а фишинговая страница перенаправит скомпрометированного пользователя на официальный сайт Instagram для авторизации (создав ложное впечатление о том, что юзер просто ошибся при вводе логина/пароля, а повторный ввод логина/пароля авторизует нерадивого пользователя, усилив его предположение об ошибке).

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

Часть 5-я
 
Последнее редактирование:
  • Нравится
Реакции: Mogen, Dzen и artem00n
Мы в соцсетях:

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