В этой статье представлено руководство для начинающих специалистов, которые хотят глубже разобраться во всех нюансах работы на Linux. Оно поможет читателям познакомиться с функциями и возможностями этой оперативной системы, узнать ее положительные и отрицательные черты.
Чаще всего операционные системы используются для выполнения определенных задач. Когда дело доходит до тестирования на проникновение, операционные системы на базе Linux станут прекрасным выбором. Эта статья поможет ближе познакомиться с основами работы Linux.
Почему для пентестинга используют именно Linux?
Linux обладает гораздо более высоким уровнем контроля операционной системы, не говоря уже о том, что она имеет открытый исходный код. Это также делает работу Linux довольно прозрачной и понятной. Прежде чем пытаться что-то взломать, необходимо понимать, как работает этот механизм, вот почему прозрачность в Linux – это огромный плюс.
Поскольку Linux очень популярна среди сообщества пентестеров, большинство используемых инструментов и фреймворков тестирования на проникновение также создаются именно для этой ОС.
Техническое обслуживание – сравнительно легкое, так как программное обеспечение может быть установлено из нужного хранилища. ОС также очень стабильна по сравнению с традиционными операционными системами, такими как Windows.
Основные команды в Linux
Пользователи используют ежедневно Windows, создавая папки, перемещая файлы, копируя данные – это все основные функции данной ОС. В этой же статье будут представлены такие же повседневные операции, связанные с работой Linux.
Большую часть времени пользователь будет проводить в терминале, который является интерфейсом командной строки операционной системы. Здесь будет необходимо вводить команды для выполнения нужных ему операций.
Команда «pwd»
Прежде чем начать, нужно знать, в каком каталоге работает пользователь и где будут храниться файлы, которые он создает. Команда «pwd» – это один из способов определить каталог, в котором находится человек.
Итак, в данном случае пользователь обнаружил, что находится в корневом каталоге /root.
Команда «whoami»
Используя команду «whoami», пользователь видит, от имени какого пользователя он вошел в систему. В данном случае он вошел в систему как администратор.
Изменение каталога | cd
Чтобы изменить каталоги с помощью терминала, пользователь использует команду «cd». Пора изменить текущий каталог на рабочий стол.
cd Desktop/
Перечисление содержимого | ls
Чтобы увидеть содержимое каталога, используется команда «ls» (очень похожая на команду «dir» для Windows).
Команда «help»
Почти каждая команда, приложение и утилита в Linux имеет специальный файл справки, в котором есть руководство по ее использованию. Если пользователь хочет узнать больше о конкретной команде или он просто запутался, команда «help» (- h, – help) станет настоящим спасением.
Настала пора узнать больше о фреймворке волатильности.
volatility --help
Просмотреть страницы руководства | manв
В дополнение к файлу справки большинство команд и приложений также имеют специальную страницу руководства, доступ к которой можно получить, введя «man» перед нужной командой.
Как видно ниже, он предоставляет описание и все теги, которые могут быть использованы с командой «ls».
man ls
Поиск ключевых слов | locate
При необходимости поиска определенного ключевого слова один из самых простых способов сделать это – использовать команду «locate». Следует ввести «locate», а затем ключевое слово в терминале. Он будет искать его по всей файловой системе.
Хотя есть несколько недостатков использования «locate», поскольку он предоставляет слишком много информации, а база данных, которую он использует, обновляется один раз в день, поэтому пользователь не сможет найти файлы, созданные несколько минут или часов назад.
К примеру, пользователь ищет ключевое слово «CTF»:
locate CTF | more
Поиск двоичных файлов | whereis
Стоит сперва сказать, что такое двоичные файлы.
Файлы, которые могут быть выполнены, подобно .exe в Windows, называются двоичными файлами. Эти файлы обычно находятся в каталогах /usr/bin или /user/sbin.
Утилиты, такие как ls, cd, cat, ps (в данной статье будут рассмотрены некоторые из них), также хранятся в этих каталогах.
При поиске двоичного файла пользователь может использовать команду «whereis». Она показывает путь к двоичному файлу, а также его man-страницу.
Поиск двоичного файла: git.
whereis git
Поиск двоичных файлов | which
Команда «which» является более конкретной и возвращает только расположение двоичного файла в переменной PATH в Linux.
Поиск двоичного файла: git.
which git
Фильтрация с помощью grep
Очень часто при использовании командной строки хочется выполнить поиск по определенному ключевому слову, именно здесь появляется grep.
К примеру, пользователь ищет слово «echo» в файле simple_bash.sh, введя следующую команду:
grep -I "echo" simple_bash.sh
Самый распространенный вариант использования grep – это передать ему вывод данных с ключевыми словами для фильтрации самого вывода.
Здесь пользователь использует grep только для того, чтобы получить IP-адрес его машины, а не какую-то другую информацию, которая была бы получена при выполнении команды «ifconfig».
ifconfig | grep inet
Поиск с помощью команды «find»
Команда «find» является самой мощной и гибкой из всех утилит поиска. Она может иметь различные параметры, в том числе имя файла (что и так очевидно), дату создания и / или его изменения, владельца, группу, разрешение и размер.
Здесь пользователь использует теги -type и -name, которые помогут найти тип файла, который он ищет, а также его имя. Обратная косая черта ( / ) указывает на корневой каталог, в котором он хочет его обнаружить.
find / -type f -name hacking_articles
Результат поиска выглядит следующим образом:
Это происходит таким образом, потому что команда «find» также выполняет поиск по каталогам, к которым у учетной записи пользователя нет разрешения на доступ. Следовательно, для более чистого результата он использует 2>&1, который отправляет все ошибки с отказом в разрешении в /dev/null, а затем с помощью grep отфильтровывает нужный файл из выходных данных.
find / -type f -name hacking_articles 2>&1 | grep -v "Permission Denied"
Команда «cat»
Пользователь использует команду «cat» для вывода содержимого файла в терминал. К примеру, он использует ее относительно «hacking-articles.txt»:
cat hacking-articles.txt
Создание файла | touch
Команда «touch» позволяет пользователю создать новый файл. Простое указание имени файла после команды touch приведет к созданию этого файла.
Нужно создать новый текстовый файл и назвать его «hacking-articles-2.txt»:
touch hacking-artciles-2.txt
Создание каталога | mkdir
Чтобы создать каталог, просто нужно указать имя каталога после команды «mkdir».
Нужно создать каталог: ignite.
mkdir Documents/ignite
Копирование файлов | cp
Для копирования файлов пользователь использует команду «cp», которая создает дубликат файла в указанном месте. Нужно скопировать текстовый файл, который был создан ранее, в каталог, который только что был создан. Затем пользователь перечислит все содержимое каталога, чтобы убедиться, что файл был скопирован.
Чтобы скопировать файл, который нужен, следует ввести следующую команду:
cp hacking-articles-2.txt Documents/ignite
Перемещение или изменение имя файла | mv
Пользователь может использовать команду «move: mv» не только для перемещения файлов в указанное место, но и для изменения их имени. Теперь стоит попробовать переместить скопированный файл в папку ignite в другое место.
mv hacking-articles-2.txt /root/Documents/
Удаление файлов | rm
Чтобы удалить файл, пользователь может просто использовать команду «rm». К примеру, он хочет удалить файл «hacking-articles-2.txt».
Как можно увидеть на картинке, файл больше не существует.
rm hacking-artcles-2.txt
Удаление каталога | rmdir
Чтобы удалить каталог, пользователь будет использовать команду «rmdir», которая расшифровывается как «удалить каталог». Нужно удалить каталог «ignite_screenshot».
Пользователи используют rm -r для каталогов с содержимым внутри них, где r означает рекурсивный.
rmdir ignite_screenshots/
Манипуляции с текстом
В Linux почти все, с чем пользователь будет иметь дело, будет представлять собой файл, чаще всего текстовый файл; например, файлы конфигурации. Таким образом, изучение того, как манипулировать текстом, становится решающим при управлении Linux и его приложениями.
Захват начала файла
При работе с большими файлами пользователь может использовать команду «head», которая по умолчанию отображает первые 10 строк файла. К примеру, в данном случае пользователь просмотрит первые 10 строк файла etter.dns.
*etter.dns – это файловая конфигурация файла инструмента под названием Ettercap, который используется для спуфинга DNS и проведения ARP-атак.
head /etc/Ettercap/etter.dns
Захват конца файла
Подобно команде «head», команда «tail» используется для просмотра последних строк файла. К примеру, пользователь просмотрит нижние строки файла etter.dns.
tail /etc/ettercap/etter.dns
Нумерация строк | nl
Пользователь может использовать команду «nl» для нумерации строк, пока он выводит их в окне терминала. Снова задействовав файл etter.dns, пользователь пронумерует все строки.
nl /etc/Ettercap/etter.dns
Поиск и замена текста | sed
Команда «sed» позволяет искать вхождение слова в тексте, а затем выполнять над ним некоторые действия. Здесь пользователь будет проводить поиск вхождения WW и /g для их глобальной замены на www.
sed s/WWW/www/g hacking-artciles.in
Управление отображением файлов | more
Команда «more» отображает страницу файла и позволяет прокручивать ее вниз с помощью клавиши ENTER. Пользователь просматривает файл etter.dns с помощью этой команды.
more /etc/ettercap/etter.dns
Отображение и фильтрация файлов | less
Команда «less» очень похожа на «more», но она имеет дополнительную функциональность фильтрации ключевых слов. Пользователь откроет файл etter.dns, используя «less». Далее он может нажать обратную косую черту ( / ) на клавиатуре, а затем ввести ключевое слово, которое хочет найти. В данном примере пользователь искал свой собственный IP-адрес.
less /etc/ettercap/etter.dns
Установка и удаление программного обеспечения
Пользователям часто приходится устанавливать программное обеспечение, которое не было в комплекте с их дистрибутивом Linux, или удалять совсем ненужное ПО.
В дистрибутивах Linux на базе Debian, таких как Kali Linux (тот, который используется в практических примерах), менеджером программного обеспечения по умолчанию является Advance Packaging Tool или сокращенно apt. Точно так же, как пользователи открывают Appstore, чтобы загрузить приложение на их телефон, у них есть репозитории Linux. В данной части статьи пользователи узнают, как получить доступ к этому хранилищу, искать в нем программы и устанавливать их.
Поиск пакета для установки
Прежде чем загрузить какой-либо программный пакет, нужно проверить, доступен ли он в репозитории, где операционная система Linux хранит информацию. Пользователь будет использовать инструмент «apt».
Он введет «apt-cache search», а затем имя пакета, который хочет найти. В данном примере он ищет Hydra, инструмент взлома логина.
Он видит тот инструмент, который ему нужен.
apt-cache search hydra
Установка пакета
Теперь пользователь установит нужные ему пакеты. На этот раз он будет использовать команду apt-get, за которой последуют install и имя пакета.
К примеру, он установит git, который позже позволит ему извлекать репозитории из Github для установки дополнительных инструментов.
apt-get install git
Удаление пакета
Чтобы удалить любой пакет с компьютера, нужно ввести «remove» после apt-get с именем пакета.
К примеру, удаление пакета git. (Рекомендуется нажать на «n», чтобы прервать этот шаг).
apt-get remove git
Очистка пакета
Иногда пакет, который только что удалили, оставляет после себя остаточные файлы (например, файлы конфигурации) Чтобы полностью стереть его данные, используется опция очистки с помощью apt-get.
К примеру, пользователь попробует убрать остаточные файлы git (снова можно нажать на «n», чтобы прервать это действие).
apt-get purge git
Обновление содержимого репозитория
Рекомендуется обновлять репозитории, поскольку они обычно пополняются новым программным обеспечением или более новыми версиями существующего программного обеспечения. Эти обновления должны быть запрошены и могут быть осуществлены путем ввода «update» после apt-get.
Стоит обновить этот репозиторий. (Примечание: обновление не применяет новые изменения, а только загружает их).
apt-get update
Обновление репозитория
Чтобы принять изменения, которые были скачаны выше, пользователь должен запустить apt-get с тегом «upgrade». Затем он устанавливает все новые обновления, которые уже были загружены в систему.
Примечание: обновление может занять много времени.
apt-get upgrade
Добавление репозиториев в файл sources.list
Сервер, на котором хранится информация о программном обеспечении для конкретных дистрибутивов Linux, известен как репозиторий. Пользователь может добавить новые репозитории по следующему пути: /etc/apt/sources.list.
Ниже виден репозиторий, который используется в данном Kali Linux.
nano /etc/apt/sources.list
Получение разрешений
Прежде чем изучить команды Linux для игр с разрешениями, стоит сначала узнать о разрешении файлов и каталогов в Linux.
Как уже известно, в Linux пользователь root (администратор) полностью всемогущий, он может делать в системе все, что угодно. Другие пользователи имеют ограниченные возможности и обычно кооперируются в группы, которые владеют аналогичной функцией.
Например, есть группа команды разработчиков, группа развертывания и группа администраторов для инициирования различных уровней доступа и разрешений.
Все файлы и каталоги в Linux имеют три уровня разрешений:
- R-разрешение: позволяет пользователю получить доступ к открытию и просмотру файлов.
- W-разрешение: позволяет пользователю просматривать и редактировать файлы.
- X-разрешение: позволяет пользователю запустить файл.
Предоставление разрешения отдельному пользователю
Администратор может изменить владельца файла, чтобы новый пользователь, которому он принадлежит, мог контролировать права доступа к нему. Здесь он будет использовать команду «chown» для смены владельца.
Администратор сменит владельца файла hacking-artciles.txt с самого админа на Raj.
chown Raj hacking-articles.txt
Предоставление разрешения целой группе
Чтобы передать право собственности на файл группе, нужно использовать команду «chgrp». Чтобы гарантировать, что только член команды ignite получит право собственности, следует изменить группу файла на ignite.
chgrp ignite hacking-articles.txt
Проверка того, кто владеет файлом
Как можно увидеть на скриншотах выше, пользователь использует команду ls с тегом l для просмотра разрешений, предоставленных файлам и каталогам.
Можно увидеть:
- Тип файла
- Права доступа к файлу для владельца, группы и отдельных пользователей соответственно
- Количество ссылок
- Владелец файла, пользователь и группа
- Размер файла в байтах
- Когда файл был создан или изменен последний раз
- Имя файла
Выделен раздел, в котором указано, кто владеет файлом.
Изменение разрешений
Администратор использует команду «chmod» для изменения прав доступа к файлу.
Пользователь мог бы ввести chmod 777 $filename, чтобы дать файлу все разрешения, или просто chmod 111 $filename, чтобы дать ему разрешение на выполнение файла.
Другой способ сделать это – chmod +x $filename, как показано ниже.
Пользователь видит, как меняется цвет файла, указывая на то, что он теперь является исполняемым.
chmod +x hacking-articles.txt
Предоставление разрешения с помощью SUID
SUID bit дает возможность любому пользователю выполнить файл с разрешениями владельца, но эти разрешения не выходят за рамки использования этого конкретного файла.
Чтобы использовать эту функцию, нужно ввести 4 перед обычными разрешениями, так что новое результирующее разрешение 644 станет: 4644.
К примеру, пользователь добавит SUID bit к файлу «hacking-articles.txt».
chmod 4644 hacking-articles.txt
Предоставление разрешения администратору группы с помощью SUID
Аналогично, SGID также предоставляет временное разрешение и для владельца группы.
Чтобы получить разрешение SGID, нужно ввести 2 перед обычным разрешением.
К примеру, пользователь добавит SGID к файлу «hacking-articles.txt».
chmod 2466 hacking-articles.txt
Управление сетями
Управление сетями – это важная тема для любого начинающего пентестера. Ему придется много раз тестировать сеть или какие-то ее элементы. Следовательно, важно знать, как люди подключаются и взаимодействуют с их сетевыми устройствами.
Пора начать изучение различных инструментов и утилит для анализа и управления сетями.
Ifconfig: анализ сетей
Команда «ifconfig» является одним из основных инструментов для взаимодействия с активными сетевыми интерфейсами. Пользователь использует «ifconfig» и видит IP-адрес, который сопоставляет с 2 сетевыми интерфейсами: eth0 и lo.
Он также способен увидеть сетевую маску и широковещательный адрес подключенного сетевого интерфейса, а также mac-адрес.
(lo является локальным хостом и всегда сопоставляется с 127.0.0.1)
Iwconfig: проверка устройств беспроводной сети
Если у человека есть устройство, подключенное по беспроводной сети, он может использовать команду «iwconfig» для сбора важной информации, такой как его IP-адрес, MAC-адрес, режим работы. Поскольку в данном практическом примере такого беспроводного адаптера нет, результат следующий.
Изменение IP-адреса
Чтобы изменить IP-Адрес, нужно ввести «ifconfig», выбрать интерфейс, для которого следует изменить адрес, и ввести новый адрес, который необходимо ему назначить. К примеру, пользователь изменит свой IP-адрес на 192.168.1.13.
При запуске «ifconfig» он видит полученные изменения.
ifconfig eth0 192.168.1.13
Спуфинг MAC-адреса
Пользователь также может использовать «ifconfig» для изменения своего MAC-адреса. Поскольку MAC-адрес уникален и часто используется в качестве меры безопасности, чтобы удержать хакеров от атак или даже отслеживать их действия, подделка своего MAC-адреса почти тривиальна – она поможет сохранить анонимность.
Для того, чтобы изменить свой MAC-адрес на 00:11:22:33:44:55, придется спуститься вниз по интерфейсу, изменить MAC-адрес, а затем снова подняться по нему.
ifconfig eth0 down
ifconfig eth0 hw ether 00:11:22:33:44:55
ifconfig eth0 up
Использование DHCP-сервера для назначения новых IP-адресов
Linux имеет сервер протокола динамической конфигурации хоста (DHCP), который запускает daemon – процесс, работающий в фоновом режиме, называемый daemon DHCP. Этот DHCP-сервер назначает IP-адреса всем системам в подсети, а также хранит лог-файлы таких систем.
Стоит запросить IP-адрес у DHCP, просто вызвав DHCP-сервер с помощью команды «dhclient» и сетевого интерфейса, который пользователь хочет изменить.
Он видит, что IP-адрес изменился.
dhclient eth0
Изучение DNS с помощью «dig»
DNS – это сервис, который переводит доменное имя на соответствующий IP-адрес. Пользователь может использовать команду «dig» с дополнительными опциями, такими как «mx» (почта сервера), «ns» (имя сервера), чтобы собрать больше информации о домене.
Нужно воспользоваться командой «dig» в отношении «www.hackingarticles.in». На картинке видно, как доменное имя преобразуется в IP-адрес.
dig www.hackingarticles.in
Далее проводится поиск почты сервера «hackingatricles.in»:
dig hackingarticles.in mx
Поиск имени сервера:
dig hackingarticles.in ns
Изменение DNS-сервера
Информация о DNS-сервере хранится в файле /etc / resolv.conf, поэтому для изменения DNS-сервера необходимо отредактировать этот файл. Пользователь может просто использовать nano или vim, которые являются одними из распространенных текстовых редакторов Linux.
В данном примере он будет использовать команду «echo» и «>» для перезаписи файла resolv.conf. Можно заметить, как это изменение отражается при чтении с помощью cat.
*публичный DNS-сервер Cloudflare, пользователи также могут использовать Google, DNS-сервер которого 8.8.8.8.
echo "nameserver 1.1.1.1" > /etc/resolv.conf
Мэппинг IP-адресов
В системе есть файл «hosts», который также выполняет преобразование доменного имени в IP-адрес. Файл находится по пути: /etc/hosts. Пользователь может сопоставить любой домен с IP-адресом по его выбору, это может быть полезно хакеру для перенаправления трафика из сети на вредоносный веб-сервер.
Стоит заглянуть в сам файл. Здесь пользователь видит localhost и kali, сопоставленные с определенными IP-адресами. Он может составить карту www.hackingarticles и войти на свой IP-адрес. Теперь, если кто-то в сети перейдет по этому URL-адресу, он будет перенаправлен на нужный IP-адрес. Пользователь также может дополнительно запустить сервер Apache и развернуть вредоносный веб-сайт, обманув пользователей в Интернете.
nano /etc/hosts
Управление процессами
Процесс — это просто программа, которая работает в системе и потребляет ресурсы. Бывают случаи, когда определенный процесс должен быть остановлен (потому что он неисправен или пентестер хотел бы остановить работу антивирусного приложения или межсетевого экрана). В этом разделе читатели узнают, как выявить такие процессы и управлять ими.
Просмотр процессов
Для того, чтобы управлять процессами, нужно иметь возможность просматривать их. Основным инструментом для этого является «ps».
Простой ввод «ps» в shell bash приведет к перечислению всех активных процессов.
*PID – это идентификатор процесса, он уникален для каждого вызываемого процесса.
Просмотр процессов для всех пользователей
Запуск команды «ps» вместе с «aux» будет отображать все запущенные процессы для всех пользователей, так что нужно сделать это:
ps aux
Здесь пользователь видит PID, пользователя, который вызвал процесс, %CPU и %MEM.
Фильтрация процесса по его имени
Как читатели узнали ранее, можно передать вывод ps aux в grep и отфильтровать конкретную информацию.
Стоит открыть «msfconsole», популярный интерфейс для использования фреймворка Metasploit.
ps aux | grep msfconsole
Поиск самого «жадного» процесса | top
В некоторых случаях, когда пользователь хочет знать, какой процесс использует больше всего ресурсов, используется команда «top». Она отображает процессы, упорядоченные по используемым ресурсам. В отличие от «ps», результаты команды «top» обновляются динамически – каждые 10 секунд.
Изменение приоритета с помощью команды «nice»
Когда пользователь запускает процесс, он может установить его уровень приоритета с помощью команды «nice». Стоит увеличить приоритет /usr/bin/ssh-агента на 10 с помощью тега «n».
nice -n -10 /usr/bin/ssh-agent
Команда «renice»
Команда «renice» принимает абсолютное значение от -20 до 19 и устанавливает приоритет на этот конкретный уровень. Для этого также требуется PID (идентификатор процесса).
К примеру, пользователь придаст процессу PID 6242 более высокий уровень приоритета.
renice 20 6242
Самая смертоносная команда | kill
Иногда, когда процесс проявляет необычное поведение или потребляет слишком много системных ресурсов, он становится «зомби». Чтобы остановить подобные процессы, используется команда «kill».
Команда «kill» имеет 64 различных сигнала, каждый из которых означает что-то свое.
1 означает «повесить трубку» и предназначен для остановки процесса, в то время как 9 является «полным убийством», он заставляет процесс остановиться, отправляя свои ресурсы в /dev/null.
Нужно остановить процесс номер 6242.
kill -1 6242
А также принудительно остановить процесс номер 4378.
kill -9 4378
Запуск процессов в фоновом режиме
Если необходимо переместить процесс, работающий в фоновом режиме, на передний план, можно использовать команду «fg». Человек введет «fg», а затем добавит идентификатор процесса.
Чтобы увидеть фоновые процессы в системе, используется команда «jobs».
nano hacking-articles.txt &
Планирование процесса
Часто требуется запланировать процессы для запуска в определенное время суток. Команда «at» — это daemon-фоновый процесс, который полезен для планирования выполнения задания один раз в какой-то момент в будущем. В то время как для работы, которая выполняется каждый день, больше подходит «crond».
Следует выполнить scanning_script.sh в 9:30 вечера.
at 9:00pm
/root/simple_bash.sh
Переменные среды пользователя
Понимание переменных среды является обязательным условием при попытке получить максимальную отдачу от системы Linux, ведь крайне важно иметь возможность управлять ими для оптимальной производительности. Переменные — это просто строки в парах ключ-значение. Существует два типа переменных: среда и оболочка, в то время как переменные оболочки действительны только для конкретного сеанса, переменные среды являются общесистемными.
Просмотр всех переменных
Пользователь может просмотреть все переменные среды из любого каталога по умолчанию, введя «env» в свой терминал, например:
set | more
Фильтрация для просмотра конкретных переменных
Опять же, используя передачу выходных данных в grep, пользователь может отфильтровать нужные ему переменные.
К примеру, он отфильтрует HISTSIZE (размер истории).
Как видно, размер истории установлен на 1000.
set | grep HISTSIZE
Временное изменение значения переменной
Пользователь может изменить значения переменных, просто введя переменную и приравняв ее к новому значению, но это новое значение будет изменено только для данного конкретного сеанса, если он откроет новое окно терминала, оно вернется к своему значению по умолчанию.
После запуска этой программы пользователь увидит, что когда он нажимает клавиши со стрелками вверх/вниз, чтобы вспомнить свои предыдущие команды, ничего не происходит, так как он изменил количество команд, которые сохраняются, на 0.
HISTSIZE = 0
Сделать эти изменения постоянными
При изменении переменных всегда лучше хранить значение по умолчанию, к примеру, в текстовом файле. Таким образом, пользователь всегда может отменить свои изменения.
Нужно перенести это значение в текстовый файл valueofHISTSIZE и сохранить его в рабочем каталоге.
Следует добавить «~/».
echo $HISTSIZE ~/valueofHISTSIZE.txt
Теперь, как и в прошлый раз, пользователь изменит значение HISTSIZE, но теперь выполнит другую команду «export», что сделает это изменение постоянным.
HISTSIZE=0
export HISTSIZE
Создание пользовательских переменных
Пользователь также может создать свои собственные, определяемые пользователем переменные, просто присвоив значение новому имени значения по его выбору.
Следует создать новую переменную с именем URL, которая имеет значение www.hackingarticles.in.
url_variable="www.hackingarticles.in"
Пользователь также может удалить эту переменную с помощью команды «unset». Просто введя «unset» и имя переменной, удаление пройдет успешно.
Как видно, несмотря на выполнение команды «echo», результат такой, как нужен.
unset url_variable
Основы написания скриптов Bash
Хакерам часто приходится автоматизировать определенные команды, иногда компилировать их из нескольких инструментов, этого можно добиться, написав небольшие компьютерные программы. Настала пора учиться писать эти программы или скрипты в bash.
Возвращаясь к основам, shell – это интерфейс между пользователем и операционной системой, который помогает ему взаимодействовать с ней. Есть несколько различных shell, доступных для Linux, ту, которую будет использовать пользователь, называется bash.
Bash shell может запускать любые системные команды, утилиты и приложения. Единственное, что нужно для начала, – это текстовый редактор (например, nano, vim). Пользователь может выбрать любой текстовый редактор, так как это не имеет никакого значения.
Shebang: #!
Нужно создать новый файл: first_script. Чтобы сообщить операционной системе, что пользователь использует bash для написания скрипта, нужно ввести команду shebang ( # !), а затем /bin/bash, как показано ниже. Открывается файл и вводится следующее:
#! /bin/bash
Echo
Как следует из названия, пользователь использует его для получения эхо-ответа на сообщение или тест, который он хочет. К примеру, это будет «Hello World».
#! /bin/bash/
echo "Hello World"
Запуск скрипта
Прежде чем пользователь сможет запустить его скрипт, он должен получить разрешение на это. Как читатели узнали ранее, использование «chmod» с тегом +x должно дать исполняемому файлу нужное разрешение.
Добавление «. /» перед именем файла сообщает системе, что пользователь хочет выполнить этот скрипт «first_script».
Чтобы добавить больше функциональности в скрипт bash, нужно обсудить переменные.
Переменная, похожая на ведро, может содержать некоторое значение в памяти. Это значение может быть любым текстом (строками) или четными числами.
Следует создать еще один скрипт, в котором пользователь научится принимать пользовательский ввод и назначать переменные.
echo "What is your name?"
read name
echo "Welcome, $name"
Теперь, наконец, можно увидеть волшебные переменные, когда пользователь запускает этот скрипт (обязательно сначала следует предоставить исполняемому скрипту разрешения).
Создание простого сканера
Стоит создать скрипт, который будет еще более полезен. Пользователь заставит его сканировать всю сеть на наличие активных хостов, подключенных к ней, и узнавать их IP-адреса.
Для этого пользователь будет использовать nmap. Это очень простой инструмент, когда речь заходит о тестировании проникновения сети.
Он используется для обнаружения открытых портов системы, служб, которые она запускает, а также способен определить операционную систему.
Синтаксис Nmap: nmap <тип сканирования> <конечный IP>.
Пользователь создает скрипт, который позволит ему сканировать все IP-адреса устройств, подключенных к его сети. Для этого он будет использовать тег-sp nmap. Это позволит ему выполнить простое сканирование ping, которое проверит все соединения в сети.
Он создает новый файл: scanner и начинает работу.
echo "Enter the ip address"
read ip
nma -sp $ip/24 | grep scan | cut -d "" -f 5 | head -n -1
Нужно дать новому исполняемому скрипту bash разрешения и запустить его.
Вводится свой IP-адрес:
Теперь пользователь видит, какие устройства подключены к его сети.
Планирование своих задач
Иногда требуется запланировать задачи, такие как резервное копирование данных системы. В Linux пользователь устанавливает задачи, которые хочет выполнить, без необходимости делать это вручную.
Crond – это daemon, который работает в фоновом режиме, он проверяет таблицу cron – crontab и есть ли какие-либо конкретные команды для запуска в указанное время. Изменение crontab позволит выполнить задачу в определенное время.
Файл таблицы cron находится в файле /etc / crontab. Он имеет в общей сложности 7 полей, где первые 5 используются для указания времени его запуска, 6-е поле – для указания пользователя, а последнее – для указания пути к команде, которую нужно запустить.
Планирование запуска скрипта bash scanner
Во-первых, нужно проверить, работает ли daemon cron или нет, введя:
service cron status
Поскольку он неактивный, нужно запустить службу, введя:
service cron start
Теперь пользователь откроет таблицу cron, чтобы отредактировать ее. Он введет crontab в терминале, а затем добавит флаг «-e» (e означает edit).
crontab -e
Это дает ему возможность выбрать любой текстовый редактор. Он будет использовать nano (вводит 1).
Теперь пользователь прокрутит вниз и просто заполнит все 7 полей, о которых было сказано ранее, чтобы запланировать задачу.
Допустим, он хочет увидеть все устройства, подключенные к нашй сети, перед сном, поэтому будет выполняться скрипт сканирования каждый день в 11:55 вечера автоматически. Вводится следующее:
55 23 * * * /root/scanner
Инициирование команды jobs при запуске с помощью rc-скриптов
Всякий раз, когда пользователь включает свою машину Linux, запускается ряд процессов, которые помогают в настройке среды, которую он будет использовать. Запускаемые скрипты называются rc-скриптами.
При загрузке машины ядро включает daemon, известный как init.d, который отвечает за запуск этих сценариев.
Следующее, что нужно знать, – это уровни запуска Linux.
Linux имеет несколько уровней запуска, которые сообщают системе, какие службы должны быть запущены при загрузке.
Теперь нужно добавить службу в rc.d. Это можно сделать с помощью команды update-rc.d. Она позволяет добавлять или удалять службы из rc-скрипта.
Пользователь включит MySQL для его запуска каждый раз, когда он загружается. Нужно написать MySQL после обновления – ру.D и следовать ее значениям по умолчанию.
Теперь, когда пользователь перезапустит систему, он увидит, что MYSQL уже запущен.
update-rc.d mysql defaults
Он может проверить это с помощью команды ps aux в grep.
Использование служб Linux
Службы в Linux — это распространенный способ обозначения приложения, которое работает в фоновом режиме. На компьютере Linux предустановлено несколько служб, одна из наиболее распространенных – Apache Web Server, которая помогает создавать и развертывать веб-серверы, или OpenSSH, который позволяет подключаться к другой машине.
Игры со службами (пуск, остановка, их состояние, перезагрузка)
Прежде чем начать, нужно знать, как управлять этими службами.
Основной синтаксис для этого таков: service <service_name> <start|stop|restart|status>
Нужно запустить сервер apache2.
service apache2 start
Теперь пользователь использует тег состояния, чтобы проверить, работает ли служба.
service apache2 status
Чтобы остановить эту службу, нужно ввести:
service apache2 stop
Иногда, когда служба запускается неправильно или была изменена ее конфигурация, можно перезапустить ее, чтобы принять изменения. Это возможно сделать с помощью опции перезапуска.
Создание веб-сервера HTTP с помощью Apache
Более 60% мировых веб-серверов используют Apache, это один из наиболее популярных сервисов. Пентестеру важно понять, как работает Apache. Итак, настала пора развернуть собственный веб-сервер и познакомиться с Apache.
Следует запустить службу apache2, и теперь пользователь перейдет к HTML-файлу, который будет отображаться в браузере, веб-страница apache по умолчанию находится по адресу: /var/www/html/index.html
Следует открыть его с помощью nano и написать немного своего HTML-кода.
nano /var/www/html/index.html
Видно, что html-код присутствует по умолчанию.
Пользователь сохранит файл. Чтобы увидеть, что отображает сервер apache, можно перейти в браузер и ввести:
http://localhost
Знакомство с OpenSSH
Secure Shell или ssh – это в основном то, что позволяет безопасно подключаться к терминалу удаленной системы. В отличие от своего предка telnet, который использовался довольно давно, канал ssh, используемый для связи, зашифрован и, следовательно, более безопасен.
Опять же, прежде чем начинать использовать ssh-сервис, нужно сначала запустить его.
Теперь, чтобы подключиться к удаленной системе и получить доступ к ее терминалу, вводится «ssh» с последующим <username>@<ip address>. Так пользователь подключится к главной машине.
ssh ignite@192.168.0.11
Пользователь успешно подключился к другой машине под названием «ubuntu» с пользователем ignite.
Работа с FTP
Следует сказать о протоколе передачи файлов или FTP. Этот протокол обычно используется, как следует из названия, для передачи файлов через командную строку. Здесь пользователь попробует подключиться к ftp-серверу и скачать с него файлы с помощью команды ftp.
Чтобы получить доступ к ftp-серверу, он вводит ftp, а затем доменное имя или IP-адрес. Вот хороший пример:
ftp ftp.cesca.es
Теперь он попросит пользователя ввести имя, он может ввести «anonymous», так как этот сервер позволяет сделать.
Теперь он запросит пароль, также вводится «anonymous».
Как видно, пользователь успешно вошел в систему. Теперь с помощью основных навигационных команд, которые он изучил, можно перечислить содержимое.
Он найдет файл, который хочет загрузить. Попробует также скачать файл по адресу: ubuntu/release/favicon.ico.
get favicon.ico
Чтобы выйти из сеанса ftp, пользователь введет «bye». Теперь он может просмотреть файл, который только что загрузил.
Автор переведенной статьи: Karan Bhandari.
Важно! Информация исключительно в учебных целях. Пожалуйста, соблюдайте законодательство и не применяйте данную информацию в незаконных целях.
ЧИТАТЬ ВСЕ СТАТЬИ НА САЙТЕ | ПОДПИСЫВАЙТЕСЬ НА НАШ TELEGRAM КАНАЛ