- Linux-форензика в лице трекинга истории подключений USB-устройств
- Скриншоты
- Описание
- Справка
- Синтаксис
- Опции
- Примеры использования
- Ссылки и постскриптум
- Как посмотреть USB устройства Linux
- Список подключенных устройств Linux
- Как посмотреть USB устройства Linux
- Выводы
- 📋 usbrip: отслеживание истории USB-событий в GNU / Linux
- Установка
- Использование
- ✔️ Отображение истории событий USB-устройств с помощью Usbrip на Linux
- Введение
- Что такое Usbrip
- Возможности Usbrip
- 1. Поиск несанкционированного доступа по USB.
- 2. Поиск сведений о USB устройстве
- 3. Резервное копирование событий USB.
Linux-форензика в лице трекинга истории подключений USB-устройств
В рамках погружения в одну из дисциплин (в процессе обучения по специальности компбеза) я работал над одним занимательным проектом, который бы мне не хотелось просто похоронить в недрах папки «Универ» на внешнем винчестере.
Сей проект носит название usbrip и представляет собой небольшую консольную опенсорс утилиту для Linux-форензики, а именно для работы с историей подключений USB-устройств. Программа написана на чистом Python 3 (с использованием некоторых сторонних модулей) и не требует зависимостей помимо Python 3.x интерпретатора и пары строк из requirements.txt, разрешающихся одной строкой с помощью pip.
В этом посте я опишу некоторые возможности данного софта и оставлю краткий мануал со ссылкой на источник загрузки.
Снято! (… в смысле Cut!)
Примечание. Описываемый в статье функционал актуален для первой версии утилиты. За последней версией с множеством новых плюшек предлагаю перейти в репозиторий.
Скриншоты
Получение истории подключений съёмных USB-устройств:
Поиск дополнительной информации о USB-устройстве по идентификатору модели (PID’у):
Описание
Как известно, операционные системы на базе GNU/Linux очень трепетно относятся к логированию разного рода событий, и подключение/отключение USB-устройств не является исключением. В совокупности с одним из пунктов UNIX-философии о «текстовых потоках, как универсальных интерфейсах» информацию об артефактах таких событий (с разной степенью подробности) в зависимости от дистрибутива можно обнаружить в одном или нескольких из следующих текстовых файлов:
- /var/log/kern.log* ;
- /var/log/syslog* ;
- /var/log/messages* ;
- /var/log/dmesg* ;
- /var/log/daemon.log* .
FORENSIC-PROOF даже показывает нам такую картинку на этот счет (немного неполную, но неважно):
Для своей работы usbrip находит универсальные для всех сборок Linux, основанных на Debian (Ubuntu, Linux Mint и др.) и RPM (CentOS, Fedora, openSUSE и др.), лог-файлы, а именно: /var/log/syslog* или /var/log/messages* , парсит их в поисках нужной информации и обликает найденные следы подключений USB-устройств в красивые таблички (или списки — как угодно).
Также usbrip умеет:
- создавать списки авторизированных (доверенных) устройств в виде JSON-файлов;
- искать «события-нарушителей» на основе списка доверенных устройств: такие события (подключение/отключение USB), в которых участвовали USB-устройства, не отмеченные как доверенные;
- искать дополнительную информацию о USB-устройстве по его VID (Vendor ID) и/или PID (Product ID).
Справка
Получить список доступных модулей:
Получить список доступных подмодулей для конкретного модуля:
Получить список доступных опций для конкретного подмодуля:
Синтаксис
Опции
Примеры использования
Показать историю подключений всех USB-устройств, опуская баннер, информационные (зелёные) сообщения, а также не задавая вопросы по ходу выполнения ( -q, —quite ), сформировав вывод в виде списка ( -l, —list ), включив в него 100 последних найденных событий ( -n КОЛИЧЕСТВО_СОБЫТИЙ, —number КОЛИЧЕСТВО_СОБЫТИЙ ):
Показать историю подключений съёмных USB-устройств ( -e, —external ), сформировав вывод в форме таблицы с полями (столбцами) «Connected», «VID», «PID», «Disconnected» и «Serial Number» ( -c СТОЛБЕЦ [СТОЛБЕЦ . ], —column СТОЛБЕЦ [СТОЛБЕЦ . ] ), отфильтровав поиск по датам ( -d ДАТА [ДАТА . ], —date ДАТА [ДАТА . ] ), взяв при этом информацию из внешних лог-файлов ( -f ЛОГ_ФАЙЛ [ЛОГ_ФАЙЛ . ], —file ЛОГ_ФАЙЛ [ЛОГ_ФАЙЛ . ] ):
Построить таблицу истории подключений всех USB-устройств и перенаправить вывод в файл для дальнейшего анализа. В том случае, если поток вывода не стандартный stdout ( «|» либо «>» к примеру) в выходных данных не будут присутствовать спец. символы, отвечающие за цвет шрифта в терминале, поэтому текстовый файл не будет замусорен нечитаемыми символами. Также нужно отметить, что usbrip использует некоторые UNICODE-константы, поэтому было бы неплохо сразу конвертировать кодировку создаваемого файла в UTF-8 для их корректного отображения (например с помощью encov ), а также использовать символы новой строки в Windows-стиле для лучшей переносимости (например с помощью awk ):
Примечание: избавиться от спец. символов, отвечающих за цвет можно и в том случае, если вывод уже был направлен в stdout. Для этого необходимо скопировать полученные данные в новый файл usbrip.txt и добавить еще одну awk -инструкцию:
Создать список доверенных устройств в виде JSON-файла ( trusted/auth.json ), содержащего поля «VID» и «PID» первых трех устройств, подключенных 26-го сентября:
Найти среди истории подключений съёмных USB-устройств «события-нарушители» на основе списка доверенных устройств ( trusted/auth.json ) по полю «PID» и сформировать вывод в виде таблицы с полями «Connected», «VID» и «PID»:
Найти дополнительную информацию о USB-устройстве на основе его VID’а и PID’а:
Загрузить/обновить базу данных идентификаторов USB-устройств (источник здесь):
Ссылки и постскриптум
Забрать утилиту можно с Гитхаба, все зависимости для запуска и корректной работы указаны в requirements.txt.
Благодарю за внимание!
P. S. да, стиль баннера и информационных сообщений вдохновлен проектом sqlmap (*^.^*)
UPD 13.06.2018. Появилось расследование реального (?) кейса с участием моей утилиты от человека с Codeby (сам в шоке, если честно).
Источник
Как посмотреть USB устройства Linux
При подключении USB флешки или любого другого USB устройства к компьютеру создается набор файлов, с помощью которых вы можете получить к ним доступ. Когда вы работаете в файловом менеджере все достаточно просто, но как только дело доходит до консоли все становится намного труднее.
Каждому новичку важно уметь идентифицировать подключенные устройства, будь то usb флешки, SD карты или жесткие диски чтобы не записать что-либо не туда или не отформатировать не тот диск. В этой статье мы рассмотрим несколько способов как посмотреть usb устройства Linux, подключенные к компьютеру.
Список подключенных устройств Linux
В операционной системе Linux используется особенная философия управления. Все объекты, в том числе и устройства считаются файлами. При подключении какого-либо устройства к системе для него создается файл в каталоге /dev/.
Обычно, после того, как вы подключили любую USB флешку или другой накопитель к системе с установленным окружением рабочего стола, устройство автоматически монтируется в папку /media/имя_пользователя/метка_устройства/, а затем вы можете получить доступ к файлам из устройства в этой папке. Тем не менее, бывают ситуации, когда вам нужно вручную монтировать USB и тогда такой вариант не поможет.
Файлы всех устройств находятся в каталоге /dev/. Здесь вы можете найти файлы sda, hda, которые представляют из себя жесткий диск, а также файлы sda1 или hda1, которые позволяют получить доступ к разделам диска. Мы уже подробно рассматривали это все в статье работа с устройствами Linux. Вы можете посмотреть список всех устройств в каталоге /dev/ с помощью команды:
Теперь осталось понять какие из этих файлов устройств принадлежат USB устройствам и каким устройствам именно.
Как посмотреть USB устройства Linux
Чтобы узнать более подробную информацию о каждом устройстве, подключенном к вашей системе и посмотреть список устройств linux, можно использовать команду df. Она используется для просмотра свободного места на диске:
По общему размеру и занятому пространству вы можете определить какое из устройств является вашей флешкой, но этот способ посмотреть устройства linux не очень удобен и работает он только с уже смонтированной флешкой, есть еще несколько, дающих более точную информацию.
Команда lsblk отображает список всех блочных устройств, подключенных к вашему компьютеру. Утилита отображает не только их размер, но и тип (диск/раздел) а также старший и младший номер устройства. Тут уже немного проще найти флешку, мы видим два диска, и если первый с размером 698 гигабайт это жесткий диск, то второй, — точно флешка:
Есть еще один способ, это утилита fdisk. Она позволяет посмотреть таблицу разделов на всех блочных устройствах, подключенных к компьютеру. Но утилиту нужно выполнять от имени суперпользователя:
Также, узнать о подключенном USB устройстве можно посмотрев очередь сообщений ядра dmesg. Здесь хранится информация обо всех операциях, которые происходят в ядре. В том числе здесь будет отображено имя флешки, только что подключенной к компьютеру. Для просмотра сообщений ядра выполните:
Чтобы посмотреть какие из sd устройств относятся к USB используйте такую команду:
ls -l /dev/disk/by-id/usb*
Попытаться идентифицировать свою флешку в системе через терминал можно с помощью утилиты blkid. Она выводит UUID идентификаторы всех подключенных устройств, а также файловую систему:
Выводы
В этой статье мы рассмотрели как посмотреть usb устройства linux, а также как узнать имя своей usb флешки в системе. Вы можете использовать любую из команд, которая вам понравилась, или же сразу несколько. Но теперь вы знаете как точно определить имя файла своей флешки.
Источник
📋 usbrip: отслеживание истории USB-событий в GNU / Linux
usbrip (происходит от «USB Ripper», а не «USB RIP» ?) – это инструмент с открытым исходным кодом с интерфейсом CLI, который позволяет отслеживать артефакты устройства USB (так называемая история событий USB: события «Подключен» и «Отключен») на Linux машинах.
usbrip – это небольшая часть программного обеспечения, написанная на чистом Python 3 (хотя с использованием некоторых внешних модулей, см. Dependencies / PIP), которая анализирует файлы журналов Linux (/var/log/syslog * или /var/log/messages* в зависимости от дистрибутива) для построения таблиц истории событий USB.
Такие таблицы могут содержать следующие столбцы:
«Connected» (дата и время), «User», «VID» (идентификатор поставщика), «PID» (идентификатор продукта), «Product», «Manufacturer», «Serial Number», «Port» и «Disconnected» (дата и время).
Кроме того, он также может:
- экспортировать собранную информацию как дамп JSON (и, разумеется, открывать такие дампы (:);
- генерировать список авторизованных (доверенных) USB-устройств в виде JSON (назван его auth.json);
- поиск «событий нарушения» на основе auth.json: показать (или сгенерировать другой JSON с) USB-устройства, которые появляются в истории и НЕ появляются в auth.json;
- [при установке] создавать зашифрованные хранилища (7zip-архивы) для автоматического резервного копирования и накопления событий USB с помощью утилиты crontab;
поиск дополнительных сведений о конкретном USB-устройстве по его VID и / или PID.
Установка
git clone https://github.com/snovvcrash/usbrip.git
cd usbrip
python3 -m pip install -r requirements.txt
./install.sh
- если вы используете планирование crontab, вы хотите сконфигурировать задание cron с помощью sudo crontab -e, чтобы заставить подмодуль обновления хранилища запускаться от имени пользователя root, а также защитить пароли хранилищ событий USB.
- при использовании опции -s во время установки убедитесь, что системные журналы содержат хотя бы одну запись внешнего USB-устройства. Это необходимое условие для usbrip, чтобы успешно создать список доверенных устройств (и, как следствие, успешно создать хранилище нарушений).
Скрипт uninstall.sh удаляет все артефакты установки из вашей системы.
Использование
Чтобы получить список имен модулей, используйте:
Чтобы получить список имен субмодулей для конкретного модуля, используйте:
Чтобы получить список всех переключателей для определенного подмодуля, используйте:
Источник
✔️ Отображение истории событий USB-устройств с помощью Usbrip на Linux
В этом руководстве объясняется, что такое программа Usbrip, как отслеживать детали подключенных или отключенных USB-устройств, а также как отобразить историю событий USB-устройств с помощью инструмента Usbrip в системах Linux.
Введение
В настоящее время USB-устройства широко распространены.
Вы можете использовать множество устройств с USB-разъемом, таких как флэш-накопитель, внешний накопитель, мышь, клавиатура, принтер, зарядное устройство для мобильного телефона в течение всего дня, каждый день.
Как и любые другие события, история USB-подключений также отслеживается ОС Linux.
Каждый раз, когда вы подключаете или отключаете USB-устройство, история событий USB-устройств отслеживается и сохраняется в одном или нескольких из следующих файлов в вашей системе Linux:
- /var/log/dmesg
- /var/log/daemon.log
- /var/log/kern.log
- /var/log/syslog
- /var/log/messages
Что такое Usbrip
Usbrip – это инструмент для форензики из командной строки для отслеживания истории всех подключений USB-устройств на Linux.
Он анализирует данные логов вашей системы с помощью команды journalctl или из файлов логов, таких как /var/log/syslog и /var/log/messages, и отображает собранную историю событий USB в стандартном выводе stdout или файле.
Программа usbrip отслеживает артефакты USB-устройства и перечисляет их в следующих столбцах:
- Подключение (дата и время)
- Хост
- VID (идентификатор поставщика)
- PID (идентификатор продукта)
- Модель
- Производитель
- Серийный номер
- Порт
- Отключение “(дата и время)
Usbrip – это бесплатный инструмент с открытым исходным кодом, написанный на Python 3.
Для тех, кому интересно, название Usbrip образовано от двух слов – USB и Ripper.
Возможности Usbrip
1. Поиск несанкционированного доступа по USB.
Это основная цель инструмента Usbrip.
Используя инструмент usbrip, мы можем доказать, что USB-устройство было подключено к определенной системе Linux определенным пользователем в течение определенного промежутка времени.
В общем, мы можем использовать Usbrip в любых случаях, когда задействованы USB-устройства.
Как уже говорилось, вы можете экспортировать все сведения о USB-соединении в файл JSON.
Почему мы выгружаем детали в файл JSON?
Потому что мы можем легко найти любые «события нарушения».
Например, мы могли бы создать файл, скажем auth.json, и сохранить в нем список авторизованных или доверенных USB-устройств.
Далее файл auth.json можно использовать в целях выяснить, какие USB-устройства были подключены и являются ли они авторизованными устройствами.
Таким образом можно узнать, скопировал ли какой-либо пользователь что-то из вашей системы без вашего разрешения.
Обратите внимание, что если вы устанавливаете usbrip с помощью скрипта установщика, файл auth.json будет автоматически создан в папке /var/opt/usbrip/trust/ во время установки.
Вы также можете сформировать свой собственный путь в любом месте вашей системы.
2. Поиск сведений о USB устройстве
Если вы хотите узнать подробности технических характеристик USB-устройства, вы можете легко получить их, используя его VID или PID.
Usbbrip получит подробную информацию о поставщиках, устройствах и интерфейсах из базы данных usb.ids, которая находится по адресу http://www.linux-usb.org/.
3. Резервное копирование событий USB.
Если вы вручную установили Usbrip с параметром -s (–storages), вы можете автоматически создавать резервные копии событий USB с помощью планировщика crontab.
Теперь давайте посмотрим, как установить и использовать Usbrip на Linux для сбора событий USB-подключений.
Источник