Статья Управление системой Kali Linux как профи

logo.png

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


Информация о хосте Linux
Чтобы отобразить имя хоста Kali Linux, просто введите команду hostname в окне терминала.
Bash:
hostname
hostname.jpg

Если вы хотите изменить имя хоста kali, то вам нужно отредактировать файл конфигурации (/etc/hostname)



Информация об ОС Linux
Знание информации об ОС хоста Linux имеет решающее значение для повышения привилегий. Таким образом вы узнаете, уязвима ли версия.
Чтобы отображать информацию об ОС Linux, можно использовать команду uname или выведите содержимое файла /etc/issue.
uname.jpg


Вот красивая схема, где показано какие файлы конфигурации открывать для просмотра информации.
3111111.png

Если вы хотите красивое оформления вывода информации о вашей системе, установите neofetch.
Arch-дистрибутивы:
Bash:
sudo pacman -S neofetch
debian-дистрибутивы:
Bash:
sudo apt-get install neofetch
neofetch.jpg




Управление запущенными сервисами
Сервисы - это серверы, которые могут работать в вашем Linux, такие как SSH, web, FTP и т.д. (я их называю демонами)
Есть несколько способов запустить демона:
Базовый - systemctl start ssh
Упрощённый - service ssh start

systemctl_start_ssh.jpg

service_ssh_start.jpg


Чтобы получить статус демона, можно ввести следующую команду:
[B]systemctl status ssh[/B]
status_ssh.jpg

Убить демона:
systemctl stop ssh
stop)_ssh.jpg

Перезапустить демона:
[B]systemctl restart ssh[/B]
restart_ssh.jpg

Включить автоматический запуск демона при старте системы:
[B]systemctl enable ssh[/B]
ssh_enable.jpg

Выключить автоматический запуск демона при старте системы:
systemctl disable ssh
disable_ssh.jpg

Используйте ключ --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.jpg

где, -у - ключ который соглашается на всё за нас.

В чём разница между update и upgrade?
Команда update только обновляет список пакетов последними версиями, но не устанавливает или обновляет сами пакеты. А upgrade обновит и установит последнии версии пакетов, которые были получены с помощью команды update.

Также возможно обновление системы полностью:
sudo apt update && sudo apt full-upgrade -y

Чтобы вывести список всех установленных пакетов, используйте команду:
dpkg -l
dpkg-l.jpg

А как устанавливать пакеты на свой Linux? Есть 2 способа: Первый - с помощью команды apt install, второй - dpkg.
Если первый крайне простой:
sudo apt-get install [ИМЯ ПАКЕТА]
1733696714292.png

то, во втором способе немного сложнее:
sudo dpkg -i [ИМЯ ПАКЕТА]
1733696837800.png

Но перед тем как установить данный пакет, его нужно найти в интернете. Файлик с расширением .deb .

Удаление происходит практически таким же методом как и установки.
sudo apt remove [ИМЯ ПАКЕТА]
1733696931526.png

В некоторых случаях вам потребуется применить способ установки configure/make, в таком случае используйте эти команды:
./configure && make && make install
1733697229175.png

Как найти пакет? Можно выполнить поиск пакетов репозитория:
sudo apt-cache search keyword [Ключевое слово для поиска]
1733697446054.png

Если вы хотите установить пакет и не уверены, что существует он в репозиториях, используйте эту команду:
sudo apt-cache show [ИМЯ ПАКЕТА]
1733697484498.png



Управление процессами
Для управления процессами мы можем использовать предустановленный top. Но как по мне его вывод не очень красив, поэтому мы потратим пару секунд и установим его лучшую версию.
sudo apt install htop -y
1733697543125.png

После установки пишем просто htop и теперь мы можем ведить список запущенных процессов.
Если вы внимательно читали начало этой статьи, то задались вопросом. На картинке для отображения процессов используют команду ps, мы используем htop и top. Почему? Просто потому что удобнее) Можно также использовать ps с ключами и выводить информацию, а если добавить команду grep, мы сможем находить процессы и убивать их.
ps aux | grep '[ИМЯ ПАКЕТА]'
1733697642541.png

Кстати, а как их убивать?
kill -9 [PID ПАКЕТА]
1733697679395.png

Что-то вроде диспетчера задач windows.


Управление пользователями и группами в Linux
Понимать команды для управления пользователями и группами важно, поскольку вы будете использовать эту информацию для повышения привилегий в будущем.
Пользователи с низким уровнем привилегий должны добавлять к командам sudo для выполнения системных команд(и пользователь с низким уровнем привелегий должен входить в группу sudo для выполнения sudo). Вам будет предложено ввести пароль вашей учётной записи, если вы захотите использовать команду sudo.
Давайте создадим нового пользователя и добавим его в группу sudo (эти команды будут работать только от root или от пользователя уже состоящему в группе sudo):
useradd -m username -G sudo -s /bin/bash
1733697782951.png

Пароль:
passwd username
1733697810347.png

Для того чтобы понять, с какими вы правами сейчас авторизованы, посмотрите на свой никнейм в терминале, вы увидите похожее на это:
delifer@kali ~$
Где, $ - обычный пользователь с малыми правами, # - пользователь с большими правами.
Чтобы узнать права текущего пользователя в контексте команды sudo, можно ввести:
sudo -l
1733697840524.png

Также можно посмотреть список пользователей, которые в настоящее время вошли в систему, используйте:
who
1733697851905.png

Чтобы удалить пользователя:
sudo userdel username
1733697864981.png

Можно также посмотреть последних авторизованных пользователей с помощью команды last.
Вся информация о пользователях в системе Linux храниться в файле конфигурации /etc/passwd. Используя команду cat, мы можем посмотреть содержимое.
Для создания и добавления пользователей в группы используйте следующие команды:
sudo groupadd [ИМЯ ГРУППЫ]
1733697957928.png

sudo usermod -aG [ИМЯ ГРУППЫ] [ПОЛЬЗОВАТЕЛЬ]
1733697978437.png

Чтобы вывести список всех групп созданных в системе, прочитайте файл /etc/group.
1733698017833.png

Чтобы перечислить все учётные данные пользоваьтеля в 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 '[ИМЯ ФАЙЛА\ДИРЕКТОРИИ\СКРИПТА]'
1733698065289.png

Редактировать права можо командой chmod:
chmod 774 [ИМЯ ФАЙЛА\ДИРЕКТОРИИ\СКРИПТА]
Почему 774? Ответ: Мы прибегли с следующей формуле User/Group/All:4+2+1, где 4 - чтение, 2 - запись, 1 - исполнение. 4+2+1=7


Поиск файлов в Linux
Существует несколько способов поиска файлов в Linux. Три основых - это команды locate, find и which.
Команда locate хранит свои данные в базе данных, потому при поиске работает быстрее.
Для начала нужно её обновить:
updatedb
1733698145512.png

Теперь можем использовать команду locate:
locate [ИМЯ ФАЙЛА]
1733698164081.png

Если результатов слишком много, используйте ключ -n для того, чтобы ограничить вывод. Комбинируйте это с командой grep.
1733698177297.png

Чтобы найти путь к файлу, введите команду which. Она использует переменную среды $PATH для поиска результатов.
Преимущество команды find является её возможность добавлять более детальные фильтры, что найти что-то.
Например, чтобы найти файл в корневом каталоге, можно использовать:
find /home/user/ -name "file.txt"
1733698226679.png

Или, если вы хотите найти большие файлы, то можно воспользоваться ключом -size:
find / -size +1G 2> /dev/null
1733698252502.png

2> /dev/null очистит вывод и отфильтрует ошибки
Можно также найти файлы setuid в Linux для повышения привелегий:
find / -perm -u=s -type f 2>/dev/null


SSH
Запуск SSH и добавление его в автозагрузку делается следующими командами:
sudo systemctl enable ssh --now
1733698303500.png

Для остановки демона замените start на stop, для перезапуска restart, для вывода статуса - status.
По умолчанию порт работы SSH - 22.
По умолчанию, все пользователи, кроме root, могут удалённо осуществлять вход по SSH:
ssh username@IP -p 22
1733698328040.png

Пока что мне некуда подключаться

Как пользоваться SSH без пароля?
С помощью открытого и закрытого ключей удалённый пользователь может войти в систему по SSH. Это более безопасно, чем использовать пароль, так как никто не сможет использовать метод брутфорс.
Сначала мы генерируем открытый и закрытый кллюч на нашей клиентской ОС:
shh-keygen -t rsa -b 4096
1733698406302.png

где, -t rsa - обозначает тип ключа, который нужно сгенерировать. RSA наиболее распространённый алгоритм. -b 4096 - этот ключ, указывает кол-во бит в создаваемом ключе.
При выполнении этих шагов у нас запросили ввести кодовую фразу. Эта фраза будет использована для повышения безопасности при удалённом входе по SSH.
Проверим директорию, в которой эти файлы были сохранены (/home/<USER>/.ssh/).
Теперь нужно отправить копию файла открытого ключа id_rsa.pub на kali.
В этом примере мы будем использовать имя пользователя и пароль root для копирования файла открытого ключа:
ssh-copy-id root@148.85.5.228
1733698453091.png

Проверить, что ключ действительно был добавлен можно в файле authorized_keys.
1733698493663.png

Затем мы можем отредактировать файл конфигурации SSH(/etc/ssh/sshd_config) в Kali, чтобы разрешить аутентификацию с открытым ключом:
Bash:
PubkeyAuthentication yes
PasswordAuthentication no
Перезапустим ssh демона и можем подключаться!


Git
Как настоящий специалист, мы обязаны уметь пользоваться git, хотя бы создавать и загружать и клонировать репозитории.
Начнём с создания файла с кодом:
touch script.py
и инициализируем git
git init
1733699127707.png

Далее добавляем файлы которые мы хотим загрузить:
git add script.py
1733699183542.png

Комментируем наше изменение:
git commit -m "First version"
1733699228653.png

Теперь добавим ветку мастер в нашу директорию чтобы он сразу загружался туда:
git remote add origin https:/exmaple.org/Delifer313/some_code.git
1733699335828.png

и делаем пуш нашего кода на сервер.
1733699372284.png

Готово, теперь научимся клонировать репозитории:
git clone https://github.com/nmap/nmap
1733699515988.png

На этом всё, код клонирован и можно изучать, менять, запускать.


Работа с архивами
Мы часто будем обмениваться какими-то файлами, будто с основной машино, будто с сервером и т.д. Поэтому для экономии места и нервов, мы будем осваивать архивы. Итак, как создать архив с какими-то файлами?
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!!!
Всем пока!
 

Вложения

  • hostname.jpg
    hostname.jpg
    3,2 КБ · Просмотры: 16
  • 1733696909465.png
    1733696909465.png
    10,3 КБ · Просмотры: 14
Мы в соцсетях:

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