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:
- Połączono (data i godzina)
- Gospodarz
- VID (identyfikator dostawcy)
- PID (identyfikator produktu)
- Produkt
- Producent
- Numer seryjny
- Port
- 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-fullGit klonuje repozytorium usbrip:
git clone https://github.com/snovvcrash/usbrip.git usbripPowyższe polecenie sklonuje zawartość repozytorium usbrip i zapisze ją w katalogu o nazwie „usbrip” w twoim bieżącym katalogu.
CD do katalogu usbrip:
cd usbripUstaw skrypt instalacyjny jako plik wykonywalny:
chmod +x ./installers/install.shI na koniec zainstaluj go za pomocą polecenia:
sudo -H ./installers/install.sh -sTutaj 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:
cdrm -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 --helpPrzykł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 exitJak 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> --helpPrzykład:
usbrip events --helpAby wyświetlić listę wszystkich przełączników powiązanych z konkretnym poleceniem podrzędnym, na przykład events, uruchom:
usbrip events genauth --help2. Wyświetl historię połączeń urządzenia USB
Aby wyświetlić historię połączeń urządzeń USB, uruchom:
usbrip events historyZostaniesz 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.624936Pokaż 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 -tMoż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 2Powyż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 historyWpisz 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.852216Możesz wyświetlić ten plik w dowolnym momencie za pomocą polecenia:
usbrip events open history.json4. 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 -ePokaż 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 20Pokaż 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 15Wyś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.jsonMoż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 disconnTo 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



