Wyszukiwanie w witrynie

Pokaż historię zdarzeń urządzeń USB za pomocą Usbrip w systemie Linux


Ten przewodnik wyjaśnia, czym jest program Usbrip, jak śledzić szczegóły podłączonych i odłączonych urządzeń USB, a także jak pokazać historię zdarzeń urządzeń USB za pomocą narzędzia Usbrip w systemie Linux.

Wstęp

Obecnie popularne są urządzenia USB. Powinieneś używać wielu urządzeń ze złączem USB, takich jak pendrive, dysk zewnętrzny, mysz, klawiatura, drukarka, ładowarka do telefonu komórkowego przez cały dzień, każdego dnia. Jak każde inne wydarzenie, historia połączeń USB jest również śledzona przez system operacyjny Linux. Za każdym razem, gdy podłączasz lub odłączasz urządzenie USB, historia zdarzeń urządzenia USB jest śledzona i przechowywana w jednym lub większej liczbie następujących plików w systemie Linux:

  • /var/log/dmesg
  • /var/log/daemon.log
  • /var/log/kern.log
  • /var/log/syslog
  • /var/log/wiadomości

Możesz ręcznie przeglądać te pliki, aby poznać historię połączeń USB lub skorzystać z narzędzia, które pomaga łatwo uporządkować artefakty USB w schludnym formacie tabelarycznym. Jednym z takich narzędzi do śledzenia historii zdarzeń USB jest Usbrip.

O Usbripie

Usbrip to narzędzie kryminalistyczne wiersza poleceń umożliwiające śledzenie historii wszystkich połączeń urządzeń USB w systemie Linux. Analizuje dane dziennika systemu za pomocą polecenia journelctl lub z plików dziennika, takich jak /var/log/syslog i /var/log/messages oraz wyświetla zebraną historię zdarzeń USB na standardowym wyjściu lub w pliku.

Program usbrip śledzi artefakty urządzenia USB i wyświetla je w następujących kolumnach:

  1. Połączono (data i godzina)
  2. Gospodarz
  3. VID (identyfikator dostawcy)
  4. PID (identyfikator produktu)
  5. Produkt
  6. Producent
  7. Numer seryjny
  8. Port
  9. Rozłączono” (data i godzina)

Usbrip to bezpłatne narzędzie typu open source napisane w Pythonie 3. Dla tych, którzy zastanawiają się, nazwa Usbrip pochodzi od dwóch słów - USB i Ripper. To nie jest USB R.I.P.

Funkcje Usbrip

Usbrip ma kilka interesujących funkcji. Chciałbym wspomnieć o następujących trzech godnych uwagi cechach.

1. Znajdź nieautoryzowany dostęp do USB

To jest główny cel narzędzia Usbrip. Za pomocą narzędzia usbrip możemy udowodnić, że urządzenie USB zostało podłączone do konkretnego systemu Linux przez konkretnego użytkownika w określonym przedziale czasu. Ogólnie rzecz biorąc, możemy używać Usbrip w każdym przypadku, w którym zaangażowane są urządzenia USB.

Jak już wspomniano, wszystkie szczegóły połączenia USB można wyeksportować do pliku JSON. Dlaczego zrzucamy szczegóły do pliku JSON? Ponieważ możemy łatwo wyszukać dowolne „zdarzenia dotyczące naruszeń”. Możemy na przykład utworzyć plik, powiedzmy auth.json i przechowywać w nim listę autoryzowanych lub zaufanych urządzeń USB.

Za pomocą pliku auth.json można sprawdzić, które urządzenia USB zostały podłączone i czy są to urządzenia autoryzowane, czy nie. W ten sposób można dowiedzieć się, czy jakiś użytkownik nie skopiował czegoś z Twojego systemu bez Twojej zgody.

Należy pamiętać, że jeśli zainstalujesz usbrip za pomocą skryptu instalacyjnego, plik auth.json zostanie automatycznie utworzony w lokalizacji /var/opt/usbrip/trusted/ w momencie instalacji. Możesz także stworzyć swój własny w dowolnym wybranym przez siebie miejscu.

2. Znajdź szczegóły urządzenia USB

Jeśli chcesz poznać szczegóły specyfikacji urządzenia USB, możesz je łatwo uzyskać, korzystając z jego VID lub PID. Usbbrip pobierze szczegółowe informacje o dostawcach, urządzeniach i interfejsach z bazy danych usb.ids prowadzonej pod adresem http://www.linux-usb.org/.

3. Kopia zapasowa zdarzeń USB

Jeśli ręcznie zainstalowałeś Usbrip z opcją -s (--storage), możesz automatycznie tworzyć kopie zapasowe zdarzeń USB za pomocą harmonogramu crontab.

Zobaczmy teraz, jak zainstalować i używać Usbrip w systemie Linux do zbierania zdarzeń połączeń USB.

Zainstaluj Usbrip w systemie Linux

Ponieważ Usbrip jest napisany w Pythonie, możemy go zainstalować za pomocą menedżera pakietów Pip.

pip install usbrip

Jeśli zainstalowałeś usbrip za pomocą pip, niektóre funkcje będą niedostępne. Aby uzyskać dostęp do wszystkich funkcji, należy ręcznie zainstalować usbrip przy użyciu skryptu instalacyjnego o nazwie install.sh.

Najpierw upewnij się, że zainstalowałeś niezbędne wymagania wstępne:

  • python3-venv
  • p7zip

W Debianie, Ubuntu i jego pochodnych możesz je zainstalować, jak pokazano poniżej:

sudo apt install python3-venv p7zip-full

Git klonuje repozytorium usbrip:

git clone https://github.com/snovvcrash/usbrip.git usbrip

Powyższe polecenie sklonuje zawartość repozytorium usbrip i zapisze ją w katalogu o nazwie „usbrip” w twoim bieżącym katalogu.

CD do katalogu usbrip:

cd usbrip

Ustaw skrypt instalacyjny jako plik wykonywalny:

chmod +x ./installers/install.sh

I na koniec zainstaluj go za pomocą polecenia:

sudo -H ./installers/install.sh -s

Tutaj użyliśmy flagi -s, aby włączyć moduł pamięci. Spowoduje to nie tylko zainstalowanie programu usbrip, ale także utworzenie listy zaufanych urządzeń USB, historii i magazynów naruszeń. Zanotuj swoje tajne hasło. Możesz potrzebować tego później.

Po zakończeniu instalacji możesz usunąć sklonowany katalog:

cd
rm -r usbrip/

Pokaż historię zdarzeń urządzeń USB za pomocą Usbrip w systemie Linux

Zanim zaczniemy z niego korzystać, zapoznajmy się z listą ogólnych opcji i dostępnych flag.

1. Uzyskiwanie pomocy

Aby wyświetlić sekcję pomocy programu Usbrip, po prostu uruchom:

usbrip --help

Przykładowe dane wyjściowe:

usage: usbrip [-h] {banner,events,storage,ids} ...

positional arguments:
  {banner,events,storage,ids}
    banner              show tool banner
    events              work with USB events
    storage             work with USB event storage
    ids                 work with USB IDs

optional arguments:
  -h, --help            show this help message and exit

Jak widać, istnieją cztery główne polecenia, a mianowicie banner, events, storage i ids.

Aby wyświetlić listę podpoleceń dla konkretnego polecenia głównego, uruchom:

usbrip <command> --help

Przykład:

usbrip events --help

Aby wyświetlić listę wszystkich przełączników powiązanych z konkretnym poleceniem podrzędnym, na przykład events, uruchom:

usbrip events genauth --help

2. Wyświetl historię połączeń urządzenia USB

Aby wyświetlić historię połączeń urządzeń USB, uruchom:

usbrip events history

Zostaniesz zapytany, czy chcesz wyświetlić historię zdarzeń USB na standardowym wyjściu, czy w pliku JSON. Jeśli chcesz wyświetlić wynik, po prostu naciśnij ENTER (co jest ustawieniem domyślnym) lub wpisz cyfrę 2, aby zapisać go w pliku JSON.

Wybieram domyślne wyjście, dlatego otrzymuję ten długi wynik:

                   
         _     {{4}}    {v2.2.2-1}
 _ _ ___| |_ ___[e]___ 
| | |_ -| . |  _[n] . |
|___|___|___|_| [5]  _|
               x[1]_|   https://github.com/snovvcrash/usbrip
                       

[*] Started at 2021-03-27 14:28:31
[14:28:31] [INFO] Trying to run journalctl...
[14:29:10] [INFO] Successfully runned journalctl
[14:29:11] [INFO] Reading journalctl output
100%|█████████████████████████████| 912197/912197 [00:04<00:00, 188838.07line/s]
[?] How would you like your event history list to be generated?

    1. Terminal stdout
    2. JSON-file

[>] Please enter the number of your choice (default 1): 1
[14:29:48] [INFO] Preparing collected events
[14:29:48] [WARNING] Terminal window is too small to display table properly
[14:29:48] [WARNING] Representation: list

USB-History-Events
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Connected:      2020-12-26 21:24:23
Host:           ostechnix
VID:            0cf3
PID:            3002
Product:        ∅
Manufacturer:   ∅
Serial Number:  ∅
Bus-Port:       1-1.4
Disconnected:   2020-12-26 21:24:24
.
.
.
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Connected:      2021-03-27 11:52:19
Host:           ostechnix
VID:            046d
PID:            c52b
Product:        USB Receiver
Manufacturer:   Logitech
Serial Number:  ∅
Bus-Port:       1-1.2
Disconnected:   ∅
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
[*] Shut down at 2021-03-27 14:29:48
[*] Time taken: 0:01:17.624936

Pokaż historię zdarzeń urządzeń USB za pomocą Usbrip

Domyślnie Usbrip wyświetli wynik w formacie kolumny tabelarycznej. Ponieważ moje okno terminala jest zbyt małe, aby poprawnie wyświetlić tabelę, dane wyjściowe są wyświetlane w formacie listy. Jeśli mimo to chcesz nalegać, aby Usbrip wyświetlał wynik w formacie kolumny tabelarycznej, dodaj flagę -t:

usbrip events history -t

Możesz dostosować dane wyjściowe według własnych upodobań. W poniższym przykładzie użyłem flagi -q/--quiet, aby ukryć baner i inne informacje o użytkowniku, -l/--list, aby wyświetlić dane wyjściowe w formacie listy i -n/--number, aby wyświetlić określoną liczbę wyjść.

usbrip events history -ql -n 2

Powyższe polecenie wyświetli tylko najnowsze 2 zdarzenia w historii USB bez banera, komunikatu informacyjnego i monitu o interakcję użytkownika.

Przykładowe dane wyjściowe:

100%|█████████████████████████████| 912890/912890 [00:05<00:00, 159754.38line/s]

USB-History-Events
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Connected:      2021-03-27 10:16:08
Host:           ostechnix
VID:            0cf3
PID:            3005
Product:        ∅
Manufacturer:   ∅
Serial Number:  ∅
Bus-Port:       1-1.4
Disconnected:   ∅
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Connected:      2021-03-27 11:52:19
Host:           ostechnix
VID:            046d
PID:            c52b
Product:        USB Receiver
Manufacturer:   Logitech
Serial Number:  ∅
Bus-Port:       1-1.2
Disconnected:   ∅
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

3. Zapisz historię zdarzeń USB w pliku

Zamiast wyświetlać historię zdarzeń na standardowym wyjściu, możemy zapisać ją w pliku w formacie JSON.

Aby to zrobić, uruchom polecenie, aby wyświetlić historię zdarzeń USB:

usbrip events history

Wpisz 2, gdy zostaniesz poproszony o wybranie sposobu zapisania wyniku. Zostaniesz ponownie poproszony o podanie lokalizacji nazwy pliku wyjściowego. Po prostu wpisz wybraną lokalizację lub naciśnij ENTER, aby zapisać ją w domyślnym pliku o nazwie history.json w katalogu $HOME.

                      
         _     {{4}}    {v2.2.2-1}
 _ _ ___| |_ ___[3]___ 
| | |_ -| . |  _[N] . |
|___|___|___|_| [5]  _|
               x[1]_|   https://github.com/snovvcrash/usbrip
                       

[*] Started at 2021-03-29 11:49:40
[11:49:40] [INFO] Trying to run journalctl...
[11:49:41] [INFO] Successfully ran journalctl
[11:49:41] [INFO] Reading journalctl output
100%|███████████████████████████████| 15910/15910 [00:00<00:00, 235574.33line/s]
[?] How would you like your event history list to be generated?

    1. Terminal stdout
    2. JSON-file

[>] Please enter the number of your choice (default 1): 2
[>] Please enter the output file name (default is "history.json"): 
[11:49:46] [INFO] Generating event history list (JSON)
[11:49:46] [INFO] New event history list: "/home/ostechnix/history.json"
[*] Shut down at 2021-03-29 11:49:46
[*] Time taken: 0:00:05.852216

Możesz wyświetlić ten plik w dowolnym momencie za pomocą polecenia:

usbrip events open history.json

4. Pokaż historię zdarzeń zewnętrznych urządzeń USB

Aby wyświetlić historię połączeń urządzeń zewnętrznych użyj flagi -e, --external:

usbrip events history -q -e

Pokaż historię zdarzeń zewnętrznych urządzeń USB

5. Pokaż historię zdarzeń USB w określonym przedziale czasowym

Możemy użyć flagi -d, --date, aby wyświetlić historię zdarzeń urządzeń USB w określonym przedziale czasu. Na przykład to polecenie wyświetla historię zdarzeń, które miały miejsce w okresie od stycznia 2021 r. do marca 2021 r.:

 $ usbrip events history -q -d '2021-01-01' '2021-03-29'

6. Pokaż tylko niektóre informacje

Być może zainteresuje Cię wyświetlenie konkretnych zdarzeń połączeń USB. Na przykład następujące polecenie wyświetli szczegółowe informacje o kolumnach, a mianowicie Połączono, Rozłączono, Numer seryjny i Tylko nazwa produktu:

usbrip events history -q -c conn disconn serial prod -n 20

Pokaż określone zdarzenia urządzenia USB za pomocą usbrip

Tutaj opcja -n 20 służy do wyświetlenia ostatnich 20 rekordów.

7. Wyszukaj szczegóły konkretnych urządzeń USB

Być może zainteresuje Cię historia zdarzeń konkretnego urządzenia. Jeśli tak, możesz użyć flagi --manufact, aby wyświetlić takie szczegóły:

W poniższym przykładzie wyświetliłem 15 ostatnich zdarzeń dotyczących mojego odbiornika bezprzewodowego Logitech. Wymieniłem także szczegóły tylko 4 kolumn, a mianowicie Połączony, Rozłączony, Szeregowy i Produkt.

usbrip events history -q -c conn disconn serial prod --manufact Logitech -n 15

Wyświetl historię zdarzeń konkretnego urządzenia USB

Podobnie możesz filtrować zdarzenia USB, łącząc wiele pól, takich jak PID, VID, port, nazwa hosta, numer seryjny itp.

8. Wygeneruj listę zaufanych urządzeń USB

Aby utworzyć listę autoryzowanych urządzeń USB, użyj opcji authgen:

sudo usbrip events genauth ~/auth.json -a vid pid -n 10 -d '2021-03-29'

To polecenie wygeneruje listę zaufanych urządzeń USB w postaci pliku JSON o nazwie auth.json zawierającego pierwsze 10 urządzeń podłączonych 29 marca 2021 r. Ponadto plik ten będzie zawierał tylko szczegóły atrybutów VID i PID .

9. Szukaj naruszeń

Jeśli chcesz sprawdzić, czy nie ma nieautoryzowanego dostępu do USB, po prostu przeszukaj utworzony wcześniej plik auth.json.

sudo usbrip events violations ~/auth.json

Możesz także filtrować dane wyjściowe według własnych upodobań.

Przykład:

sudo usbrip events violations ~/auth.json -a pid -et --host ostechnix --manufact Logitech --serial 0123456789 -c conn disconn

To polecenie przeszuka historię zdarzeń zewnętrznych urządzeń USB pod kątem naruszeń w oparciu o listę zaufanych urządzeń USB (~/auth.json) według atrybutu „PID”, ograniczy wynikowe zdarzenia do tych, które mają „ostechnix” jako nazwę hosta, „ Logitech” jako producenta, „0123456789” jako numer seryjny i wyświetla dane wyjściowe w postaci tabeli z kolumnami „Połączony” i „Odłączony”.

Jeśli w historii pojawia się urządzenie USB, ale nie ma go w pliku auth.json, możemy powiedzieć, że doszło do naruszenia.

Aby uzyskać więcej informacji na temat użytkowania, zapoznaj się ze stroną projektu GitHub podaną poniżej.

Zasób:

  • Użyj repozytorium GitHub

Powiązana lektura:

  • Jak znaleźć wykorzystanie przepustowości urządzenia USB w systemie Linux

Powiązane artykuły