Логи подключенных usb linux

Does Ubuntu log when USB devices are connected?

When I connect a USB drive to an Ubuntu OS, would there be a text file which contains details of that connection and if so, where is that file located ? What is the name of that file?

2 Answers 2

Does Ubuntu log when USB devices are connected?

Yes, Ubuntu logs when a USB device is connected. The file is /var/log/syslog . You can also view it by issuing the command dmesg (with optional -c argument to clear the log) or graphically using Log file viewer .

Is this file deleted upon shutdown?

No, This log does not get wiped upon shutdown. After a size limit is reached the logs are rotated, meaning new logs are continually written to /var/log/syslog while older records are pushed to compressed files named /var/log/syslog.1.gz , syslog.2.gz , . in the same /var/log directory.

You can view the /var/log directory with rotated log files below:

enter image description here

If you want to see exactly what gets logged in realtime, you could tail -f /var/log/syslog , clear the screen, then connect the USB device.

sudo cat /var/log/kern.log | grep usb 

The output would look like the following:

May 25 07:38:51 mycomputer kernel: [ 607.296847] scsi7 : usb-storage 3-1:1.0 May 25 07:38:54 mycomputer kernel: [ 609.790892] usb 3-2: new high-speed USB device number 3 using xhci_hcd May 25 07:38:54 mycomputer kernel: [ 609.817462] usb 3-2: ep 0x81 - rounding interval to 32768 microframes, ep desc says 0 microframes May 25 07:38:54 mycomputer kernel: [ 609.817474] usb 3-2: ep 0x2 - rounding interval to 32768 microframes, ep desc says 0 microframes May 25 07:38:54 mycomputer kernel: [ 609.818399] usb-storage 3-2:1.0: Quirks match for vid 13fe pid 3600: 4000 May 25 07:38:54 mycomputer kernel: [ 609.818529] scsi8 : usb-storage 3-2:1.0 

There are also compressed logs for kern.log You can search those with the following command:

sudo zcat /var/log/kern.log.2.gz | grep usb 

The output would be in the same format as the the example above.

You can also search the syslog as follows:

sudo cat /var/log/syslog.1 | grep usb 

This gives you results that look like this:

May 25 07:31:25 tardis-w520 kernel: [ 161.469096] usb 1-1.5.5: new high-speed USB device number 8 using ehci_hcd May 25 07:31:25 tardis-w520 mtp-probe: checking bus 1, device 8: "/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.5/1-1.5.5" May 25 07:31:25 tardis-w520 kernel: [ 161.658587] scsi6 : usb-storage 1-1.5.5:1.0 May 25 07:31:25 tardis-w520 kernel: [ 161.658685] usbcore: registered new interface driver usb-storage May 25 07:31:25 tardis-w520 kernel: [ 161.795563] usbcore: registered new interface driver uas May 25 07:38:51 tardis-w520 kernel: [ 607.268280] usb 3-1: new high-speed USB device number 2 using xhci_hcd May 25 07:38:51 tardis-w520 kernel: [ 607.293280] usb 3-1: ep 0x81 - rounding interval to 32768 microframes, ep desc says 0 microframes May 25 07:38:51 tardis-w520 kernel: [ 607.293292] usb 3-1: ep 0x2 - rounding interval to 32768 microframes, ep desc says 0 microframes 

To list the .gz log files you would:

sudo zcat /var/log/syslog.2.gz | grep usb 

The resulting output would be in the same format as the previous.

Читайте также:  Upgrade one package linux

If this is for forensics purposes there may be a better way.

Источник

Linux-форензика в лице трекинга истории подключений USB-устройств

image

В рамках погружения в одну из дисциплин (в процессе обучения по специальности компбеза) я работал над одним занимательным проектом, который бы мне не хотелось просто похоронить в недрах папки «Универ» на внешнем винчестере.

Сей проект носит название usbrip и представляет собой небольшую консольную опенсорс утилиту для Linux-форензики, а именно для работы с историей подключений USB-устройств. Программа написана на чистом Python 3 (с использованием некоторых сторонних модулей) и не требует зависимостей помимо Python 3.x интерпретатора и пары строк из requirements.txt, разрешающихся одной строкой с помощью pip.

В этом посте я опишу некоторые возможности данного софта и оставлю краткий мануал со ссылкой на источник загрузки.

Примечание. Описываемый в статье функционал актуален для первой версии утилиты. За последней версией с множеством новых плюшек предлагаю перейти в репозиторий.

Скриншоты

Получение истории подключений съёмных USB-устройств:

image

Поиск дополнительной информации о USB-устройстве по идентификатору модели (PID’у):

image

Описание

Как известно, операционные системы на базе GNU/Linux очень трепетно относятся к логированию разного рода событий, и подключение/отключение USB-устройств не является исключением. В совокупности с одним из пунктов UNIX-философии о «текстовых потоках, как универсальных интерфейсах» информацию об артефактах таких событий (с разной степенью подробности) в зависимости от дистрибутива можно обнаружить в одном или нескольких из следующих текстовых файлов:

  • /var/log/kern.log* ;
  • /var/log/syslog* ;
  • /var/log/messages* ;
  • /var/log/dmesg* ;
  • /var/log/daemon.log* .

image

Для своей работы usbrip находит универсальные для всех сборок Linux, основанных на Debian (Ubuntu, Linux Mint и др.) и RPM (CentOS, Fedora, openSUSE и др.), лог-файлы, а именно: /var/log/syslog* или /var/log/messages* , парсит их в поисках нужной информации и обликает найденные следы подключений USB-устройств в красивые таблички (или списки — как угодно).

  • создавать списки авторизированных (доверенных) устройств в виде JSON-файлов;
  • искать «события-нарушителей» на основе списка доверенных устройств: такие события (подключение/отключение USB), в которых участвовали USB-устройства, не отмеченные как доверенные;
  • искать дополнительную информацию о USB-устройстве по его VID (Vendor ID) и/или PID (Product ID).

Справка

Получить список доступных модулей:

Получить список доступных подмодулей для конкретного модуля:

Читайте также:  Просмотр изображений linux mint

Получить список доступных опций для конкретного подмодуля:

Синтаксис

 $ python3 usbrip.py banner Вывод на экран баннера утилиты. $ python3 usbrip.py events history [-q] [-t | -l] [-e] [-n КОЛИЧЕСТВО_СОБЫТИЙ] [-d ДАТА [ДАТА . ]] [-c СТОЛБЕЦ [СТОЛБЕЦ . ]] [-f ЛОГ_ФАЙЛ [ЛОГ_ФАЙЛ . ]] Просмотр истории USB-подключений. $ python3 usbrip.py events gen_auth [-a ПРИЗНАК [ПРИЗНАК . ]] [-q] [-e] [-n КОЛИЧЕСТВО_СОБЫТИЙ] [-d ДАТА [ДАТА . ]] [-f ЛОГ_ФАЙЛ [ЛОГ_ФАЙЛ . ]] Формирование списка авторизированных (доверенных) USB-устройств. $ python3 usbrip.py events violations [-a ПРИЗНАК [ПРИЗНАК . ]] [-q] [-t | -l] [-e] [-n КОЛИЧЕСТВО_СОБЫТИЙ] [-d ДАТА [ДАТА . ]] [-c СТОЛБЕЦ [СТОЛБЕЦ . ]] [-f ЛОГ_ФАЙЛ [ЛОГ_ФАЙЛ . ]] Поиск "событий-нарушителей" на основе списка доверенных устройств. $ python3 usbrip.py ids search [-q] [--vid VID] [--pid PID] [--offline] Поиск дополнительной информации об устройстве по его VID и/или PID по базе данных идентификаторов. $ python3 usbrip.py ids download [-q] Обновление (загрузка) локальной базы данных идентификаторов USB-устройств. 

Опции

 Опции, поддерживаемые подмодулями 'events history', 'events gen_auth', 'events violations', 'ids search', 'ids download': -q, --quiet опустить вывод баннера, информационных (зелёных) сообщений, а также не задавать вопросы по ходу выполнения ##################################################################################### Опции, поддерживаемые подмодулями 'events history', 'events gen_auth', 'events violations': -e, --external искать только съёмные USB-устройства (у которых есть информация об отсоединении) -n КОЛИЧЕСТВО_СОБЫТИЙ, --number КОЛИЧЕСТВО_СОБЫТИЙ количество последних по дате событий, которое будет выведено -d ДАТА [ДАТА . ], --date ДАТА [ДАТА . ] список дат, по которым будет производится фильтрация событий при поиске -f ЛОГ_ФАЙЛ [ЛОГ_ФАЙЛ . ], --file ЛОГ_ФАЙЛ [ЛОГ_ФАЙЛ . ] список лог-файлов (если не указано, поиск истории событий будет произведен по лог-файлам по умолчанию: /var/log/syslog* или /var/log/messages* в зависимости от версии ОС) ##################################################################################### Опции, поддерживаемые подмодулями 'events history', 'events violations': -t, --table сформировать вывод в виде таблицы (если размера окна терминала не хватает для корректного отображения таблицы, вывод автоматически будет сформирован в виде списка; при указании флага -t вывод будет сформирован в виде таблицы принудительно) -l, --list сформировать вывод в виде списка -c СТОЛБЕЦ [СТОЛБЕЦ . ], --column СТОЛБЕЦ [СТОЛБЕЦ . ] список столбцов, которые будут использованы при построении таблицы (имеет действие только при формировании вывода в виде таблицы); разрешённые ключи: "conn", "user", "vid", "pid", "prod", "manufact", "serial", "port", "disconn". ##################################################################################### Опции, поддерживаемые подмодулями 'events gen_auth', 'events violations': -a ПРИЗНАК [ПРИЗНАК . ], --attribute ПРИЗНАК [ПРИЗНАК . ] список признаков, которые будут использованы при построении списка авторизированных устройств (а также при поиске "событий-нарушителей" в случае подмодуля 'events violations'); разрешённые ключи: "vid", "pid", "prod", "manufact", "serial". ##################################################################################### Опции, поддерживаемые подмодулями 'ids search', 'ids download': --vid VID vendor ID или идентификатор производителя USB-устройства (обычно 4 шестнадцатиричных цифры) --vid PID product ID или идентификатор модели USB-устройства (обычно 4 шестнадцатиричных цифры) --offline если указано, поиск дополнительной информации о USB-устройстве по базе данных идентификаторов будет произведен без предварительного ее (базы) обновления 

Примеры использования

Показать историю подключений всех USB-устройств, опуская баннер, информационные (зелёные) сообщения, а также не задавая вопросы по ходу выполнения ( -q, —quite ), сформировав вывод в виде списка ( -l, —list ), включив в него 100 последних найденных событий ( -n КОЛИЧЕСТВО_СОБЫТИЙ, —number КОЛИЧЕСТВО_СОБЫТИЙ ):

 $ python3 usbrip.py events history -ql -n 100 

Показать историю подключений съёмных USB-устройств ( -e, —external ), сформировав вывод в форме таблицы с полями (столбцами) «Connected», «VID», «PID», «Disconnected» и «Serial Number» ( -c СТОЛБЕЦ [СТОЛБЕЦ . ], —column СТОЛБЕЦ [СТОЛБЕЦ . ] ), отфильтровав поиск по датам ( -d ДАТА [ДАТА . ], —date ДАТА [ДАТА . ] ), взяв при этом информацию из внешних лог-файлов ( -f ЛОГ_ФАЙЛ [ЛОГ_ФАЙЛ . ], —file ЛОГ_ФАЙЛ [ЛОГ_ФАЙЛ . ] ):

 $ python3 usbrip.py events history -et -c conn vid pid disconn serial -d "Dec 9" "Dec 10" -f /var/log/syslog.1 /var/log/syslog.2.gz 

Построить таблицу истории подключений всех USB-устройств и перенаправить вывод в файл для дальнейшего анализа. В том случае, если поток вывода не стандартный stdout ( «|» либо «>» к примеру) в выходных данных не будут присутствовать спец. символы, отвечающие за цвет шрифта в терминале, поэтому текстовый файл не будет замусорен нечитаемыми символами. Также нужно отметить, что usbrip использует некоторые UNICODE-константы, поэтому было бы неплохо сразу конвертировать кодировку создаваемого файла в UTF-8 для их корректного отображения (например с помощью encov ), а также использовать символы новой строки в Windows-стиле для лучшей переносимости (например с помощью awk ):

 $ python3 usbrip.py history events -t | awk '< sub("$", "\r"); print >' > usbrip.txt && enconv -x UTF8 usbrip.txt 

Примечание: избавиться от спец. символов, отвечающих за цвет можно и в том случае, если вывод уже был направлен в stdout. Для этого необходимо скопировать полученные данные в новый файл usbrip.txt и добавить еще одну awk -инструкцию:

 $ awk '< sub("$", "\r"); gsub("\\x1B\\[[0-?]*[ -/]*[@-~]", ""); print >' usbrip.txt && enconv -x UTF8 usbrip.txt 

Создать список доверенных устройств в виде JSON-файла ( trusted/auth.json ), содержащего поля «VID» и «PID» первых трех устройств, подключенных 26-го сентября:

 $ python3 usbrip.py events gen_auth trusted/auth.json -a vid pid -n 3 -d "Sep 26" 

Найти среди истории подключений съёмных USB-устройств «события-нарушители» на основе списка доверенных устройств ( trusted/auth.json ) по полю «PID» и сформировать вывод в виде таблицы с полями «Connected», «VID» и «PID»:

 $ python3 usbrip.py events violations trusted/auth.json -a pid -et -c conn vid pid 
 $ python3 usbrip.py ids search --vid 0781 --pid 5580 
 $ python3 usbrip.py ids download 

Ссылки и постскриптум

Забрать утилиту можно с Гитхаба, все зависимости для запуска и корректной работы указаны в requirements.txt.

Читайте также:  Серверы обновления linux ubuntu

P. S. да, стиль баннера и информационных сообщений вдохновлен проектом sqlmap (*^.^*)

Источник

Оцените статью
Adblock
detector