Введение
Будучи профессионалами или же учениками в своей сфере, мы используем дистрибутив линукса Kali Linux в качестве арсенала для тестирования на проникновение, поэтому должны знать, как обращаться с данной системой. Мы рассмотрим наиболее распространённые команды а также утилиты для более красивого взаимодействия. Цель данной статьи структуризировать информацию для быстрого понимания, а также сохранить важное на одной странице.
Информация о хосте Linux
Чтобы отобразить имя хоста Kali Linux, просто введите команду hostname в окне терминала.
Bash:
hostname
Если вы хотите изменить имя хоста kali, то вам нужно отредактировать файл конфигурации (/etc/hostname)
Информация об ОС Linux
Знание информации об ОС хоста Linux имеет решающее значение для повышения привилегий. Таким образом вы узнаете, уязвима ли версия.
Чтобы отображать информацию об ОС Linux, можно использовать команду uname или выведите содержимое файла /etc/issue.
Вот красивая схема, где показано какие файлы конфигурации открывать для просмотра информации.
Если вы хотите красивое оформления вывода информации о вашей системе, установите neofetch.
Arch-дистрибутивы:
Bash:
sudo pacman -S neofetch
Bash:
sudo apt-get install neofetch
Управление запущенными сервисами
Сервисы - это серверы, которые могут работать в вашем Linux, такие как SSH, web, FTP и т.д. (я их называю демонами)
Есть несколько способов запустить демона:
Базовый -
systemctl start ssh
Упрощённый -
service ssh start
Чтобы получить статус демона, можно ввести следующую команду:
[B]systemctl status ssh[/B]
Убить демона:
systemctl stop ssh
Перезапустить демона:
[B]systemctl restart ssh[/B]
Включить автоматический запуск демона при старте системы:
[B]systemctl enable ssh[/B]
Выключить автоматический запуск демона при старте системы:
systemctl disable ssh
Используйте ключ --now чтобы не запускать демона после активирования его в автозапуск
Управление пакетами
Файл конфигурации для репозитория Kali находится по адресу /etc/apt/sources.list.
Для того, чтобы обновить нашу систему нужно ввести две команды:
Bash:
sudo apt-get update
Bash:
sudo apt-get upgrade -y
Bash:
sudo apt-get update && apt-get upgrade
где, -у - ключ который соглашается на всё за нас.
В чём разница между update и upgrade?
Команда update только обновляет список пакетов последними версиями, но не устанавливает или обновляет сами пакеты. А upgrade обновит и установит последнии версии пакетов, которые были получены с помощью команды update.
Также возможно обновление системы полностью:
sudo apt update && sudo apt full-upgrade -y
Чтобы вывести список всех установленных пакетов, используйте команду:
dpkg -l
А как устанавливать пакеты на свой Linux? Есть 2 способа: Первый - с помощью команды apt install, второй - dpkg.
Если первый крайне простой:
sudo apt-get install [ИМЯ ПАКЕТА]
то, во втором способе немного сложнее:
sudo dpkg -i [ИМЯ ПАКЕТА]
Но перед тем как установить данный пакет, его нужно найти в интернете. Файлик с расширением .deb .
Удаление происходит практически таким же методом как и установки.
sudo apt remove [ИМЯ ПАКЕТА]
В некоторых случаях вам потребуется применить способ установки configure/make, в таком случае используйте эти команды:
./configure && make && make install
Как найти пакет? Можно выполнить поиск пакетов репозитория:
sudo apt-cache search keyword [Ключевое слово для поиска]
Если вы хотите установить пакет и не уверены, что существует он в репозиториях, используйте эту команду:
sudo apt-cache show [ИМЯ ПАКЕТА]
Управление процессами
Для управления процессами мы можем использовать предустановленный top. Но как по мне его вывод не очень красив, поэтому мы потратим пару секунд и установим его лучшую версию.
sudo apt install htop -y
После установки пишем просто htop и теперь мы можем ведить список запущенных процессов.
Если вы внимательно читали начало этой статьи, то задались вопросом. На картинке для отображения процессов используют команду ps, мы используем htop и top. Почему? Просто потому что удобнее) Можно также использовать ps с ключами и выводить информацию, а если добавить команду grep, мы сможем находить процессы и убивать их.
ps aux | grep '[ИМЯ ПАКЕТА]'
Кстати, а как их убивать?
kill -9 [PID ПАКЕТА]
Что-то вроде диспетчера задач windows.
Управление пользователями и группами в Linux
Понимать команды для управления пользователями и группами важно, поскольку вы будете использовать эту информацию для повышения привилегий в будущем.
Пользователи с низким уровнем привилегий должны добавлять к командам sudo для выполнения системных команд(и пользователь с низким уровнем привелегий должен входить в группу sudo для выполнения sudo). Вам будет предложено ввести пароль вашей учётной записи, если вы захотите использовать команду sudo.
Давайте создадим нового пользователя и добавим его в группу sudo (эти команды будут работать только от root или от пользователя уже состоящему в группе sudo):
useradd -m username -G sudo -s /bin/bash
Пароль:
passwd username
Для того чтобы понять, с какими вы правами сейчас авторизованы, посмотрите на свой никнейм в терминале, вы увидите похожее на это:
delifer@kali ~$
Чтобы узнать права текущего пользователя в контексте команды sudo, можно ввести:Где, $ - обычный пользователь с малыми правами, # - пользователь с большими правами.
sudo -l
Также можно посмотреть список пользователей, которые в настоящее время вошли в систему, используйте:
who
Чтобы удалить пользователя:
sudo userdel username
Можно также посмотреть последних авторизованных пользователей с помощью команды last.
Вся информация о пользователях в системе Linux храниться в файле конфигурации /etc/passwd. Используя команду cat, мы можем посмотреть содержимое.
Для создания и добавления пользователей в группы используйте следующие команды:
sudo groupadd [ИМЯ ГРУППЫ]
sudo usermod -aG [ИМЯ ГРУППЫ] [ПОЛЬЗОВАТЕЛЬ]
Чтобы вывести список всех групп созданных в системе, прочитайте файл /etc/group.
Чтобы перечислить все учётные данные пользоваьтеля в Linux, вы можете прочитать файл /etc/shadow. Используйте команду grep, чтобы получить учётные данные пользователя для пользователя user.
Основные команды Linux
Если вам нужна справка по любой команде, которую вы хотите выполнить, то просто добавьте к ней -h или --help (некоторые команды требуют, чтобы вы использовали только одну из них).
Например, если хотите увидеть различные параметры команды cat, то введите cat --help.
ls | просмотр файлов в директории |
cd | перемещение по директориям |
exit | Выход из терминала/пользователя |
cat\less | просмотр содержимого файла |
mv | переместить файл\переименовать |
cp | копировать файл |
nano\vim | консольные текстовые редакторы |
reboot\poweroff | Перезагрузка\Выключение ПК |
sudo | Выполение команды с высокими правами |
chmod | Установить параметры доступа к файлам\директориям |
touch | Создать файл |
Права доступа в Linux
В правах доступа для файлов и каталогов применяется одинаковый принцип. В целях упрощения права доступа разделены на три категории:
r - чтение: 4;
w - запись: 2;
x - исполнение: 1;
Для установки прав доступа используется такой шаблон:
[User:r/w/x] [Group:r/w/x] [All:r/w/x]
Для просмотра прав для файла\директории\скрипта используйте команду:
ls -la | grep '[ИМЯ ФАЙЛА\ДИРЕКТОРИИ\СКРИПТА]'
Редактировать права можо командой chmod:
chmod 774 [ИМЯ ФАЙЛА\ДИРЕКТОРИИ\СКРИПТА]
Почему 774? Ответ: Мы прибегли с следующей формуле User/Group/All:4+2+1, где 4 - чтение, 2 - запись, 1 - исполнение. 4+2+1=7
Поиск файлов в Linux
Существует несколько способов поиска файлов в Linux. Три основых - это команды locate, find и which.
Команда locate хранит свои данные в базе данных, потому при поиске работает быстрее.
Для начала нужно её обновить:
updatedb
Теперь можем использовать команду locate:
locate [ИМЯ ФАЙЛА]
Если результатов слишком много, используйте ключ -n для того, чтобы ограничить вывод. Комбинируйте это с командой grep.
Чтобы найти путь к файлу, введите команду which. Она использует переменную среды $PATH для поиска результатов.
Преимущество команды find является её возможность добавлять более детальные фильтры, что найти что-то.
Например, чтобы найти файл в корневом каталоге, можно использовать:
find /home/user/ -name "file.txt"
Или, если вы хотите найти большие файлы, то можно воспользоваться ключом -size:
find / -size +1G 2> /dev/null
Можно также найти файлы setuid в Linux для повышения привелегий:2> /dev/null очистит вывод и отфильтрует ошибки
find / -perm -u=s -type f 2>/dev/null
SSH
Запуск SSH и добавление его в автозагрузку делается следующими командами:
sudo systemctl enable ssh --now
Для остановки демона замените start на stop, для перезапуска restart, для вывода статуса - status.
По умолчанию порт работы SSH - 22.
По умолчанию, все пользователи, кроме root, могут удалённо осуществлять вход по SSH:
ssh username@IP -p 22
Пока что мне некуда подключаться
Как пользоваться SSH без пароля?
С помощью открытого и закрытого ключей удалённый пользователь может войти в систему по SSH. Это более безопасно, чем использовать пароль, так как никто не сможет использовать метод брутфорс.
Сначала мы генерируем открытый и закрытый кллюч на нашей клиентской ОС:
shh-keygen -t rsa -b 4096
При выполнении этих шагов у нас запросили ввести кодовую фразу. Эта фраза будет использована для повышения безопасности при удалённом входе по SSH.где, -t rsa - обозначает тип ключа, который нужно сгенерировать. RSA наиболее распространённый алгоритм. -b 4096 - этот ключ, указывает кол-во бит в создаваемом ключе.
Проверим директорию, в которой эти файлы были сохранены (/home/<USER>/.ssh/).
Теперь нужно отправить копию файла открытого ключа id_rsa.pub на kali.
В этом примере мы будем использовать имя пользователя и пароль root для копирования файла открытого ключа:
ssh-copy-id root@148.85.5.228
Проверить, что ключ действительно был добавлен можно в файле authorized_keys.
Затем мы можем отредактировать файл конфигурации SSH(/etc/ssh/sshd_config) в Kali, чтобы разрешить аутентификацию с открытым ключом:
Bash:
PubkeyAuthentication yes
PasswordAuthentication no
Git
Как настоящий специалист, мы обязаны уметь пользоваться git, хотя бы создавать и загружать и клонировать репозитории.
Начнём с создания файла с кодом:
touch script.py
и инициализируем git
git init
Далее добавляем файлы которые мы хотим загрузить:
git add script.py
Комментируем наше изменение:
git commit -m "First version"
Теперь добавим ветку мастер в нашу директорию чтобы он сразу загружался туда:
git remote add origin https:/exmaple.org/Delifer313/some_code.git
и делаем пуш нашего кода на сервер.
Готово, теперь научимся клонировать репозитории:
git clone https://github.com/nmap/nmap
На этом всё, код клонирован и можно изучать, менять, запускать.
Работа с архивами
Мы часто будем обмениваться какими-то файлами, будто с основной машино, будто с сервером и т.д. Поэтому для экономии места и нервов, мы будем осваивать архивы. Итак, как создать архив с какими-то файлами?
tar -cvf archive.tar file1.txt file2.c
Для просмотра содержимого внутри архива используем команду:
tar -tf archive.tar
Ну и распаковываем:
tar -xvf archive.tar
Для того, чтобы распаковать файлы в определённую директорию используйте ключ -С:
tar -xvf archive.tar -С /home/delifer/Desktop
Но это обычные архивы, а мы собираемся отправлять эти файлы по сети, нам нужно их сжать, и gzip с этим отлично справится.
tar -czvf archive.tar.gz file1.txt file2.c
Ну и распаковка:
tar -xzvf archive.tar.gz
Заключение
Данная статья начальный путь, толчок в мир Linux и Пентеста для совсем уж новеньких ребят. Я надеюсь что для кого-то она будет полезной. Раздел Работы с архивами остался без картинок ибо я превысил лимит по картинкам =(. Больше о Linux и крутых утилитах для пентеста в сообществе The Codeby в Telegram!!!
Всем пока!