Введение
Будучи профессионалами или же учениками в своей сфере, мы используем дистрибутив линукса Kali Linux в качестве арсенала для тестирования на проникновение, поэтому должны знать, как обращаться с данной системой. Мы рассмотрим наиболее распространённые команды а также утилиты для более красивого взаимодействия. Цель данной статьи структуризировать информацию для быстрого понимания, а также сохранить важное на одной странице.
Информация о хосте Linux
Чтобы отобразить имя хоста Kali Linux, просто введите команду hostname в окне терминала.
Bash:
Если вы хотите изменить имя хоста kali, то вам нужно отредактировать файл конфигурации (/etc/hostname)
Информация об ОС Linux
Знание информации об ОС хоста Linux имеет решающее значение для повышения привилегий. Таким образом вы узнаете, уязвима ли версия.
Чтобы отображать информацию об ОС Linux, можно использовать команду
unameили выведите содержимое файла
/etc/issue.
Вот красивая схема, где показано какие файлы конфигурации открывать для просмотра информации.
Если вы хотите красивое оформления вывода информации о вашей системе, установите
neofetch.
Arch-дистрибутивы:
Bash:
Код:
sudo
pacman -S neofetch
debian-дистрибутивы:
Bash:
Код:
sudo
apt-get
install
neofetch
Управление запущенными сервисами
Сервисы - это серверы, которые могут работать в вашем Linux, такие как SSH, web, FTP и т.д. (я их называю демонами)
Есть несколько способов запустить демона:
Базовый -
Упрощённый -
Чтобы получить статус демона, можно ввести следующую команду:
Код:
systemctl status ssh

Убить демона:

Перезапустить демона:
Код:
systemctl restart ssh

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

Выключить автоматический запуск демона при старте системы:
Код:
systemctl disable ssh
Используйте ключ --now чтобы не запускать демона после активирования его в автозапуск
Управление пакетами
Файл конфигурации для репозитория Kali находится по адресу
/etc/apt/sources.list.
Для того, чтобы обновить нашу систему нужно ввести две команды:
Bash:
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
Чтобы вывести список всех установленных пакетов, используйте команду:
А как устанавливать пакеты на свой 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
Пароль:
Для того чтобы понять, с какими вы правами сейчас авторизованы, посмотрите на свой никнейм в терминале, вы увидите похожее на это:
Где, $ - обычный пользователь с малыми правами, # - пользователь с большими правами.
Чтобы узнать права текущего пользователя в контексте команды
sudo, можно ввести:
Также можно посмотреть список пользователей, которые в настоящее время вошли в систему, используйте:
Чтобы удалить пользователя:
Код:
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
В правах доступа для файлов и каталогов применяется одинаковый принцип. В целях упрощения права доступа разделены на три категории:
Для установки прав доступа используется такой шаблон:
Код:
[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 хранит свои данные в базе данных, потому при поиске работает быстрее.
Для начала нужно её обновить:
Теперь можем использовать команду locate:
Если результатов слишком много, используйте ключ -n для того, чтобы ограничить вывод. Комбинируйте это с командой grep.
Чтобы найти путь к файлу, введите команду which. Она использует переменную среды $PATH для поиска результатов.
Преимущество команды find является её возможность добавлять более детальные фильтры, что найти что-то.
Например, чтобы найти файл в корневом каталоге, можно использовать:
Код:
find /home/user/ -name "file.txt"
Или, если вы хотите найти большие файлы, то можно воспользоваться ключом -size:
Код:
find / -size +1G 2> /dev/null
2> /dev/null очистит вывод и отфильтрует ошибки
Можно также найти файлы setuid в Linux для повышения привелегий:
Код:
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
где, -t rsa - обозначает тип ключа, который нужно сгенерировать. RSA наиболее распространённый алгоритм. -b 4096 - этот ключ, указывает кол-во бит в создаваемом ключе.
При выполнении этих шагов у нас запросили ввести кодовую фразу. Эта фраза будет использована для повышения безопасности при удалённом входе по SSH.
Проверим директорию, в которой эти файлы были сохранены (/home//.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
Перезапустим ssh демона и можем подключаться!
Git
Как настоящий специалист, мы обязаны уметь пользоваться git, хотя бы создавать и загружать и клонировать репозитории.
Начнём с создания файла с кодом:
и инициализируем git
Далее добавляем файлы которые мы хотим загрузить:
Комментируем наше изменение:
Код:
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 -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 и крутых утилитах для пентеста в сообществе античат в Telegram!!!
Всем пока!