Шпаргалка по криминалистике в командной строке Linux
Зачем читать: чтобы узнать, на что стоит обращать внимание, если вас собрались взломать. Где читать: на Sandfly Security
Где читать: на Sandfly Security.
Эта небольшая статья основана на выступлении Крейга Роуленда, основателя Sandfly Security, на конференции PurpleCON. В ней вы найдёте ссылку на само выступление, презентацию и небольшую шпаргалку по пятёрке сущностей, важных для криминалистической экспертизы в командной строке Linux. Итак, за чем надо наблюдать в первую очередь:
- Процессы — подозрительные процессы и активность.
- Директории — подозрительные директории, в которых могут находиться вредоносные данные.
- Файлы — поддельные или вредоносные файлы.
- Пользователи — подозрительная пользовательская активность.
- Логи — проверка логов может показать, что кто-то пытался замести следы.
Удаленный доступ¶
Модуль предоставляет функции для графического удаленного доступа к компьютерам . Это те же функции, к которым можно получить доступ из Veyon Master. Функцию, предоставляемую инструментом командной строки, можно использовать, например, для создания ярлыка программы для прямого доступа к определенному компьютеру.
-
Эта команда открывает окно с функцией удаленного управления, которую можно использовать для управления удаленным компьютером. Имя компьютера или IP-адрес (и, возможно, порт TCP) должны быть переданы в качестве аргумента:
veyon-cli remoteaccess control 192.168.1.2
Команда chmod
Права устанавливаются командой chmod. Команда chmod поддерживает установку прав как в восьмеричном представлении, так и в символьном (маска режима доступа).
Синтаксис команды прост:
chmod <опции> <права> <объект или регулярное выражение>
Опции
Из самых полезных и часто используемых опций можно выделить одну:
-R — рекурсивное назначение прав. Т.е. назначить права всем объектам, руководствуясь регулярным выражением.
Например:
- chmod -R 755 * — Назначение прав всем объектам текущего каталога, включая подкаталоги.
- chmod -R 700 z* — Назначить полные права для владельца и исключить права для группы и всех остальных для всех объектов, которые начинаются именоваться на z, находящиеся в текущем каталоге и его подкаталогах.
Права
Права можно записывать как в восьмеричном представлении так и в символьном. В восьмеричном представлении, для стандартных прав, указываются 3 восьмеричные цифры (1-я для владельца, 2-я для группы, 3-я для всех остальных. См. таблицу выше).
Например:
- chmod 744 koshka.txt — установит права для файла koshka.txt — (r w x r — — r — -);
- chmod -R 775 sobaki — установит права на каталог sobaki и на все объекты, что внутри этого каталога, включая содержимое подкаталогов (r w x r w x r — x);
- chmod 700 * — установит права только для владельца на все файлы и каталоги в текущем каталоге, включая подкаталоги и их объекты (rwx — — — — — -).
Другой способ назначения прав — это использование маски режима доступа (символьное представление). Помимо прав задается еще кому мы собираемся эти права выставлять:
- u — владельцу объекта;
- g — группе объекта;
- o — пользователю «все остальные»;
- a — все вышеперечисленное.
Для назначения прав используются три знака: минус, плюс или равно:
- — — убрать указанные права с объекта;
- + — добавить указанные права к существующим правам объекта;
- = — заменить права объекта на указанные.
Пример:
chmod g+w koshki.txt — Добавить пользователям группы файла koshki.txt права на запись в этот файл;
chmod a=rwx sobaki.doc — Заменит существующие права на файле sobaki.doc на полные права всем;
chmod o-w test.cgi — Уберет права на запись для пользователя «Все остальные».
chmod ug=rw spisok.doc — Выставить права на чтение и запись файлу spisok.doc для владельца и группы
Обратите внимание, что если у пользователя «все остальные» были какие-либо права, они сохранятся в неизменном виде.. Использование символьного представления позволяет редактировать права файлов более гибко:
Использование символьного представления позволяет редактировать права файлов более гибко:
- chmod u+x,g+w-x koshki.txt — Добавить владельцу файла koshki.txt права на его выполнение, пользователям группы разрешить запись и запретить выполнение и оставить права остальных пользователей без изменений;
- chmod u=rwx,g+w,go-x sobaki.doc — Установить полные права для владельца файла, разрешить пользователям группы запись и запретить выполнение всем пользователям, кроме владельца файла.
Символьное назначение окажет неоценимую услугу, если требуется добавить права на объект к уже существующим правам.
Массовое назначение прав
Иногда, бывает, нужно массово установить права на определенный тип объектов, например, только на каталоги или только на файлы. Простое использование опции -R (рекурсия) здесь не поможет т.к. chmod будет проходить по всем объектам удовлетворяющим маске, что иногда вовсе не то, что нужно.
Итак, чтобы массово установить права на определенный тип объектов можно использовать один из вариантов (вообще, их очень много):
chmod -R 770 $(find . -type d)
где -type d — каталоги, -type f — файлы. В данном примере chmod установит, начиная от текущего каталога, права на все каталоги (включая подкаталоги) разрешения 770 (rwx rwx- — -) при этом не трогая права на другие объекты.
Более длинный вариант аналогичной операции:
find ./ -type f -exec sudo chmod 775 {} \;
где -type d — каталоги, -type f — файлы. В данном варианте chmod установит разрешения 775 на все файлы включая файлы в подкаталогах начиная от текущего.
Как войти в Azure CLI
Прежде чем использовать команды Azure CLI при локальной установке, необходимо войти с помощью команды .
-
Выполните команду .
Если в CLI можно запустить браузер по умолчанию, откроется браузер со страницей входа.
Если нет, самостоятельно откройте в браузере страницу https://aka.ms/devicelogin и введите код авторизации, отображаемый в терминале.
Если веб-браузер недоступен или его не удается открыть, используйте поток кода устройства с применением az login —use-device-code.
-
Выполните вход в браузере с помощью учетных данных.
После входа в систему появится список подписок, связанных с учетной записью Azure. В сведениях о подписке с указана текущая активная подписка, отображаемая после входа. Чтобы выбрать другую подписку, укажите идентификатор подписки с помощью команды . См. дополнительные сведения о выборе нужной подписки при использовании нескольких подписок Azure.
Вы также можете войти в автономном режиме, как описано в руководстве по входу с помощью Azure CLI.
Что лучше, Bash или Zsh?
Зачем читать: чтобы узнать о различиях двух командных оболочек и определиться, какая из них вам больше подходит.
Где читать: на hands-on.cloud.
Bash и Zsh — две самые известные командные оболочки. Bash создали в 1989 году, и он быстро стал стандартом для Linux. Zsh появилась на год позже — как расширение оболочки Bourne, и она тоже по умолчанию встроена почти во все дистрибутивы Linux.
Автор статьи сравнил UX обеих оболочек и даже составил таблицу с самыми важными различиями.
Вот несколько из них:
- Скрипты Bash встречаются гораздо чаще, чем скрипты Zsh.
- В Zsh больше продвинутых функций, чем в Bash.
- В Bash проще структура файлов конфигурации.
- Zsh более гибко настраивается под нужды пользователя.
Достоинства
- Легкость автоматизации. Shell script в UNIX-подобных системах является полноценным интерпретируемым языком программирования и способен автоматизировать любую системную задачу. В Windows присутствует их примитивный аналог — пакетные файлы, и более мощный аналог — powershell. По сути, это — простейшая программируемость. С графическим интерфейсом без поддержки программой командной строки это сделать почти невозможно.
- Можно управлять программами, не имеющими графического интерфейса (например, выделенным сервером).
- Любую команду можно вызвать небольшим количеством нажатий.
- Можно обращаться к командам для разных исполнимых файлов почти мгновенно и непосредственно, тогда как в GUI приходится сначала запускать, а затем закрывать графический интерфейс для каждого исполнимого файла.
- Просмотрев содержимое консоли, можно повторно увидеть промелькнувшее сообщение, которое вы не успели прочитать.
- Можно пользоваться удаленным компьютером с любого устройства подключаемого к Интернету или локальной сети (ПК, субноутбук, КПК, сотовый телефон, портативная игровая консоль) без особых затрат трафика (единицы килобайт за сеанс).
- Отсутствие деталей интерфейса, таких как пусковые панели и рамки окон, что при равных разрешениях позволяет вместить значительно больше текста на страницу.
- Возможность работы через стандартизированные линии передачи данных, такие как RXD, TXD в RS232, на небольшой скорости (наиболее часто 9600 бод), делает этот интерфейс основным, а порой и единственно возможным, для встраиваемых систем, систем с небольшой вычислительной мощностью, иных недорогих и экономичных устройств. Принтеры, жёсткие диски, роутеры, датчики пожарной охраны — лишь малая часть примеров такого оборудования.
- Легче отладка сообществом. Если пользователь столкнулся с проблемой или ошибкой, на интернет-форуме достаточно оставить копию диалога пользователя и ЭВМ. Такой листинг имеет однозначное толкование (в том числе по порядку ввода и появления сообщений), в отличие от графического интерфейса, когда нужно не только отправить копию экрана, и порой не одну (что уже само по себе может быть проблемно), но также и входящие данные (какую «галочку» и где нажать, и тому подобное). К тому же, копия экрана одной и той же программы может существовать на разных языках, что усложнит отладку международным сообществом.
GUI – графический интерфейс пользователя
GUI (Graphical User Interface) — приложением или графическим приложением называют практически любую программу, управление которой осуществляется посредством мыши, тачпада или сенсорного экрана. В рабочем окне отрисованы иконки и другие виджеты, и взаимодействие с программой представляет из себя, в сущности, последовательность нажатий курсором.
GIMP: GUI-приложение для обработки изображений
В Linux возможность графически взаимодействовать с операционной системой предоставляется так называемой средой рабочего стола. Поверх неё можно пользоваться GUI-приложениями, такими как GIMP, VLC, Firefox, LibreOffice, файловый менеджер и т.д. для решения различных задач.
VLC: медиапроигрыватель с GUI
Именно GUI открыл мир компьютеров для обычных пользователей; без него информационные технологии оставались бы уделом гиков.
Установка InfluxDB в Unix/Linux
Приведу примеры установок на различные ОС.
По умолчанию InfluxDB будет использовать 8083 и 8086 TCP-порты. По завершении установки вы можете изменить эти порты и другие параметры в файле конфигурации.
Установка InfluxDB в CentOS/RedHat/Fedora
Добавляем репозиторий:
# cat <<EOF | sudo tee /etc/yum.repos.d/influxdb.repo name = InfluxDB Repository - RHEL \$releasever baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable enabled = 1 gpgcheck = 1 gpgkey = https://repos.influxdata.com/influxdb.key EOF
А затем устанавливаем:
# yum install influxdb -y
Для запуска службы InfluxDB, используйте:
# service influxdb start
Как-то так.
Установка InfluxDB в Debian
Для пользователей Debian вы можете добавить конфигурацию репозитория InfluxData, для этого добавим ключ:
# curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
Перечитаем конфигурацию:
# source /etc/os-release
Добавляем репозиторий (в зависимости от версии):
# test $VERSION_ID = "7" && echo "deb https://repos.influxdata.com/debian wheezy stable" | sudo tee /etc/apt/sources.list.d/influxdb.list # test $VERSION_ID = "8" && echo "deb https://repos.influxdata.com/debian jessie stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
А затем устанавливаем:
# apt-get update && apt-get install influxdb
Для запуска службы InfluxDB, используйте:
# service influxdb start
Как-то так.
Установка InfluxDB в Ubuntu
Для пользователей Ubuntu вы можете добавить конфигурацию репозитория InfluxData, для этого добавим ключ:
# curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
Перечитаем конфигурацию:
# source /etc/lsb-release
Добавляем репозиторий:
# echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
А затем устанавливаем:
# apt-get update && apt-get install influxdb
Для запуска службы InfluxDB, используйте:
# service influxdb start
Как-то так.
Добавляем репозиторий:
# zypper ar -f obs://devel:languages:go/ go
А затем устанавливаем:
# zypper in influxdb
Установка InfluxDB в FreeBSD/PC-BSD
Устанавливаем:
# pkg install influxdb
Конфиг находится: /usr/local/etc/influxd.conf, а пример можно найти — /usr/local/etc/influxd.conf.sample.
Для запуска службы InfluxDB, используйте:
# service influxd onestart
Для авто-запуска, пропишите в/etc/rc.conf файле:
influxd_enable="YES"
Как-то так.
Установка InfluxDB в Mac OS X
Установим для начала Homebrew и выполним потом:
$ brew install influxdb
Чтобы запустить influxdb при входе в систему, юзайте:
# ln -sfv /usr/local/opt/influxdb/*.plist ~/Library/LaunchAgents
Для запуска службы InfluxDB, используйте:
# launchctl load ~/Library/LaunchAgents/homebrew.mxcl.influxdb.plist
PS: Если вы не хотите (или нужно запустить) в отдельном окне, то для этого используйте:
$ influxd -config /usr/local/etc/influxdb.conf
Как-то так.
Назначение
На устройстве-консоли, которое печатало текст на бумаге, интерфейс командной строки был единственным возможным. На видеотерминалах интерфейс командной строки применяется по таким причинам:
- Небольшой расход памяти по сравнению с системой меню.
- В современном программном обеспечении имеется большое число команд, многие из которых нужны крайне редко. Поэтому даже в некоторых программах с графическим интерфейсом применяется командная строка: набор команды (при условии, что пользователь знает эту команду) осуществляется гораздо быстрее, чем, например, навигация по меню.
- Естественное расширение интерфейса командной строки — пакетный интерфейс. Его суть в том, что в файл обычного текстового формата записывается последовательность команд, после чего этот файл можно выполнить в программе, что возымеет такой же эффект, как если бы эти команды были по очереди введены в командную строку. Примеры — .bat-файлы в DOS и Windows, shell-скрипты в Unix-системах.
Если программа полностью или почти полностью может управляться командами интерфейса командной строки и поддерживает пакетный интерфейс, умелое сочетание интерфейса командной строки с графическим предоставляет пользователю очень мощные возможности.
Установка подсистемы Windows для Linux
Первое, что необходимо сделать это установить виртуальную машину. Виртуализация должна быть включена в системе, а если применить настройки не получается, проверьте, возможно она отключена в BIOS вашего компьютера.
Шаг первый и самый простой. Подробнее написано на сайте мелкомягких в официальной документации.
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
1 | dism.exeonlineenable-featurefeaturenameMicrosoft-Windows-Subsystem-Linuxallnorestart |
PowerShell — должен быть запущен от имени администратора.
Далее нам необходимо обновиться до WSL2.
Как уже говорил, WSL 1-й редакции нам не интересен. А WSL2 может быть установлен только для 64-разрядных систем версии >=2004. Проверьте версию и при необходимости обновитесь.
Перед установкой включаем компонент «Платформа виртуальных машин».
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
1 | dism.exeonlineenable-featurefeaturenameVirtualMachinePlatformallnorestart |
Далее, скачиваем пакет обновления ядра Linux в WSL2 ссылка взята из официальной документации. Запускаем и дожидаемся окончания установки.
Следующее что необходимо сделать это установить WSL2 в качестве версии по умолчанию:
wsl —set-default-version 2
1 | wsl—set-default-version2 |
Если все прошло успешно, то можно заняться установкой дистрибутива Linux.
Как видите, выбор не так уж и велик. Любителям CentOS придется заплатить за нее пару баксов, а чтобы настроить Kali пришлось повозиться с репозиториями и ключами, с той же проблемой столкнулся и при установке Debian. Интересно, с чего бы это :).
Что касается Ubuntu, то она ведет себя на удивление стабильно и проблем с ней замечено не было. Я установил версию 20.4, пользуюсь ею и очень доволен. Но никто не мешает установить параллельно несколько разных версий, главное не забыть при этом указать ту, которая будет установлена по умолчанию. Дистрибутивы устанавливаются в Windows как отдельные приложения и могут работать параллельно совершенно не мешая друг другу.
Применение
Основные сферы применения интерфейса командной строки:
- операционные системы
- чат
- компьютерные игры
В операционных системах
Основное применение интерфейса командной строки — интерфейс операционной системы. В Windows язык командной строки не имеет чёткой стандартизации, однако существует стандарт командной строки POSIX и его модификация в рамках GNU.
В компьютерных играх
Скриншот игры Quake с открытой командной строкой
Изначально консоль в играх использовалась для отладки.
Как только появился интерфейс командной строки, стали появляться и игры, его использующие, особенно актуально это было на тех платформах, где более сложные интерфейсы (графические) было невозможно реализовать вследствие аппаратных ограничений.
Наиболее ярким примером игр, использующих интерфейс командной строки, могут быть названы текстовые квесты, а также сетевые многопользовательские ролевые игры — MUD. Команды в таких играх вводятся на так называемом псевдоестественном языке.
Во многих графических играх присутствует консоль для облегчения доступа к настройкам игры, поскольку в сложных играх реализовать все команды через систему меню неудобно. Первая такая игра — Quake. Стандартная кнопка для вызова консоли — (тильда); реже , ещё реже + . Консоль позволяет вносить изменения в настройки игры оперативнее, чем меню — например, набрать быстрее, чем найти то меню, в котором вводится имя игрока, и ввести Terminator.
Также консоль предоставляет возможность изменять настройки назначения горячих клавиш, что может использоваться для обмана соперника в многопользовательских играх, например, предложением ввести команду , отменяющую все горячие клавиши, в том числе и отвечающие за движение игрока.
Интерфейс, который предоставляется моддераторам, не всегда позволяет менять меню; но он всегда позволяет добавлять свои консольные команды. Например, в DotA (карте для игры Warcraft III) режим игры задаёт участник, играющий синими, через консоль.
Рекомендации и устранение неполадок
В этом разделе приведены рекомендации и советы по устранению распространенных проблем.
Преобразование сертификата PFX в формат PEM
Интерфейс командной строки Service Fabric поддерживает клиентские сертификаты, такие как PEM-файлы. При использовании PFX-файлов из Windows эти сертификаты необходимо преобразовать в формат PEM. Чтобы преобразовать PFX-файл в PEM-файл, используйте следующую команду:
Аналогично, чтобы преобразовать PEM-файл в PFX-файл, можно использовать следующую команду (здесь не нужно вводить пароль):
Дополнительные сведения см. в документации по OpenSSL.
Проблемы с подключением
Некоторые операции могут создавать следующее сообщение:
Убедитесь, что указанная конечная точка кластера доступна и ожидает передачи данных. Также проверьте, доступен ли для этого узла и порта пользовательский интерфейс Service Fabric Explorer. Обновите конечную точку с помощью .
Подробные журналы
Подробные журналы часто полезны при отладке или при сообщении о проблеме. Флаг повышает детализацию выходных данных.