Основы написания сценариев оболочки BASH для начинающего хакера


Привет, начинающий хакер!

Если ты хочешь стать действительно толковым хакером, ты просто обязан уметь писать сценарии. Нет, не те которые к фильмам, а те которые автоматизируют выполнении некоторых действий. В идеале ты должен научиться писать сценарии используя какой-нибудь язык программирования, например Python или Ruby. Но начинать надо с простого, поэтому сегодня поговорим о сценариях оболочки. Я попытаюсь объяснить тебе базовые основы написания таких сценариев, на конкретном примере. На первый взгляд это может показаться очень сложным, но если понять основную концепцию и разобраться в синтаксисе, то можно создавать вполне толковые вещи.

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

notepad

Писать сценарий можно в любом текстовом редакторе. Это дело вкуса)

Сценарий начинается с ввода символов #! — это шебанг, благодаря ему система понимает, что всё что идет после него это интерпретатор, который мы хотим использовать в нашем сценарии, соответственно теперь надо указать какой мы хотим использовать интерпретатор: /bin/bash — это говорит системе, что мы хотим использовать интерпретатор оболочки BASH

Теперь переходим непосредственно к самому сценарию:

echo "Enter subnet:" 
read subnet

команда echo выводит на экран наше сообщение. В кавычках пишем, то что хотим сказать пользователю, в нашей ситуации мы предлагаем ввести адрес подсети. Используя команду read, мы поместим данные введенные пользователем в переменную subnet. (Переменная — это область памяти в которой мы можем хранить какие-либо данные, названия переменных можно придумывать произвольные)

echo "Enter port:"
read port

теперь мы предложили пользователю ввести интересующий его номер порта, который мы будем искать в подсети. И, как и в предыдущем случае, поместили введенные данные в переменную read.

bash script

теперь нам нужно запустить сканирование подсети, для этого мы будем использовать утилиту nmap:

nmap -p $port -sT $subnet -oG res

$ — будет использовать значение хранящееся в переменной, после чего указывается имя переменной;
-oG res — создаст файл res и поместит туда результаты;

Однако в такой концепции мы поместим в файл res все результаты полученные утилитой nmap, и, естественно, никого удобства от использования сценариев не ощутим, поэтому следующим шагом можем отфильтровать результаты и вывести только необходимые нам данные:

cat res |grep open >result
cat result

по сути, если бы мы обращались к человеку, то этими командами мы говорим: » (cat) открой файл res и
(grep) отфильтруй результаты, сохранив строки с результатом open в файл result

nmap

Теперь наш скрипт можно сохранить и использовать. Но перед тем как его запускать, давай перейдём в терминале в каталог с нашим файлом, и введем команду ls -l

chmod

в результате у нашего файла мы увидим разрешения rw-r — r— т.е. запись и чтение, а вот запуска нет (x — запуск), это легко исправить одной командой:

chmod 755 имя_файла
linux
Разрешение на запуск (х) получено

Теперь можем запустить наш скрипт:

nmap
Вводим адрес подсети и номер порта

После того как nmap закончит работу, в каталоге с нашим скриптом появиться файл result, с результатами работы:

nmap
найден один IP с открытым 139 портом

Для первого знакомства с написанием сценариев, я думаю достаточно. Общий принцип я объяснил, для лучшего понимания попрактикуйся с другими утилитами, придумай какой-нибудь свой сценарий, а в следующих уроках мы продолжим изучение и перейдем к более продвинутым функциям.

Твой Pul$e.

Следующий урок — КЛАЦ