
GNU/Linux पर USB घटनाओं के इतिहास को ट्रैक करना
usbrip ("USB Ripper" से विरासत में मिला, "USB R.I.P." नहीं) एक सरल फोरेंसिक उपकरण है जिसमें कमांड लाइन इंटरफ़ेस है जो आपको लिनक्स मशीनों पर USB उपकरण कलाकृतियों (अर्थात, USB घटना इतिहास) पर नज़र रखने देता है।
विषय सूची:
usbrip एक छोटा सॉफ्टवेयर है जो लिनक्स लॉग डेटा का विश्लेषण करता है: journalctl आउटपुट या /var/log/syslog* (या /var/log/messages*) फ़ाइलों की सामग्री। एकत्रित डेटा के आधार पर usbrip निम्नलिखित स्तंभों के साथ USB घटना इतिहास तालिकाएँ बना सकता है:
इसके अलावा, यह यह भी कर सकता है:
-s ध्वज के साथ स्थापित किया जाता है* क्रॉन शेड्यूलर की सहायता से USB घटनाओं का स्वचालित रूप से बैकअप और संचय करने के लिए संरक्षित भंडार (7-Zip संग्रह) बनाएँ।तरीका 1. pip से स्थापित करें:
~$ sudo -H python3 -m pip install -U usbrip
~$ usbrip -h
तरीका 2. ब्लीडिंग-एज को install.sh से स्थापित करें (अनुशंसित, अतिरिक्त सुविधाएँ उपलब्ध):
~$ sudo apt install python3-venv p7zip-full -y
~$ git clone https://github.com/snovvcrash/usbrip && cd usbrip
~/usbrip$ sudo -H installers/install.sh
~/usbrip$ cd
~$ usbrip -h

डॉकर (*केवल डेमो!*)
~$ docker run --rm -it snovvcrash/usbrip
usbrip सिस्टम लॉग फ़ाइलों में पार्स करने के लिए दो प्रकार के टाइमस्टैम्प का समर्थन करता है:
"%b %d %H:%M:%S", उदा. "Jan 1 00:00:00")। इस प्रकार का टाइमस्टैम्प वर्ष के बारे में जानकारी प्रदान नहीं करता है।"%Y-%m-%dT%H:%M:%S.%f%z", उदा. "1970-01-01T00:00:00.000000-00:00")।यदि आपके पास journalctl स्थापित है, तो चिंता करने की कोई बात नहीं है क्योंकि यह टाइमस्टैम्प को तुरंत रूपांतरित कर सकता है। अन्यथा, rsyslog कॉन्फ़िगरेशन में RSYSLOG_FileFormat प्रारूप सेट करके वांछित syslog संरचना प्राप्त की जा सकती है।
/etc/rsyslog.conf में निम्नलिखित पंक्ति को टिप्पणी करें:$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
.conf फ़ाइल जोड़ें:~$ echo '$ActionFileDefaultTemplate RSYSLOG_FileFormat' | sudo tee /etc/rsyslog.d/usbrip.conf
~$ sudo rm -f /var/log/syslog* /var/log/messages*
~$ sudo systemctl restart rsyslog
सबसे पहले, usbrip जाँचेगा कि क्या सबसे पोर्टेबल विकल्प के रूप में journalctl का उपयोग करके सिस्टम ईवेंट को डंप करने का कोई मौका है। यदि नहीं – यह /var/log/syslog* या /var/log/messages* सिस्टम लॉग फ़ाइलों की खोज और पार्स करेगा।
storage मॉड्यूल द्वारा उपयोग किया जाता है)सरलता के लिए, मान लें कि ~/usbrip$ उपसर्ग के साथ प्रकट होने वाले सभी कमांड ~/usbrip निर्देशिका में निष्पादित होते हैं जो git क्लोन के परिणामस्वरूप बनाई गई है:
~$ git clone https://github.com/snovvcrash/usbrip
~$ cd usbrip
~/usbrip$ pwd
install.shpip के साथ स्थापित करने के अलावा, usbrip को कस्टम installers/install.sh स्क्रिप्ट के साथ भी स्थापित किया जा सकता है।
install.sh का उपयोग करते समय कुछ अतिरिक्त सुविधाएँ उपलब्ध हो जाती हैं:
storage मॉड्यूल का उपयोग कर सकते हैं – शेड्यूल पर USB घटनाओं का बैकअप लेने के लिए एक क्रॉन जॉब सेट करें (क्रॉन जॉब का एक उदाहरण usbrip/cron/usbrip.cron में पाया जा सकता है)।⚠️ चेतावनी: यदि आप क्रॉन शेड्यूलिंग का उपयोग कर रहे हैं, तो आप storage update सबमॉड्यूल को रूट के रूप में चलाने के लिए sudo crontab -e के साथ क्रॉनटैब को कॉन्फ़िगर करना चाहते हैं। भंडार पासवर्ड /var/opt/usbrip/usbrip.ini में रखे जाते हैं और डिफ़ॉल्ट रूप से केवल रूट द्वारा सुलभ होते हैं।
install.sh के साथ usbrip स्थापित करने के लिए उपयोग करें:
~/usbrip$ sudo -H installers/install.sh [-l/--local] [-s/--storages]
~/usbrip$ cd
~$ usbrip -h
-l स्विच सक्षम होता है, तो PyPI के बजाय स्थानीय .tar पैकेज (3rdPartyTools निर्देशिका) से पायथन निर्भरताएँ हल की जाती हैं।-s स्विच सक्षम होता है, तो न केवल usbrip परियोजना स्थापित होती है बल्कि विश्वसनीय USB उपकरणों की सूची, इतिहास और उल्लंघन भंडार भी बनाए जाते हैं।स्थापना पूर्ण होने के बाद ~/usbrip निर्देशिका को हटाने के लिए स्वतंत्र महसूस करें।
जब install.sh के साथ स्थापित किया जाता है, तो usbrip निम्नलिखित पथों का उपयोग करता है:
/opt/usbrip/ – परियोजना की मुख्य निर्देशिका।/var/opt/usbrip/log/ – usbrip क्रॉन लॉग।/var/opt/usbrip/storage/ – USB घटना भंडार (history.7z और violations.7z, स्थापना प्रक्रिया के दौरान बनाए गए)।/var/opt/usbrip/trusted/ – विश्वसनीय USB उपकरणों की सूची (auth.json, स्थापना प्रक्रिया के दौरान बनाई गई)।/var/opt/usbrip/usbrip.ini – usbrip कॉन्फ़िगरेशन फ़ाइल (7-Zip भंडारों के लिए पासवर्ड शामिल हैं)।/usr/local/bin/usbrip – /opt/usbrip/venv/bin/usbrip स्क्रिप्ट का सिमलिंक।क्रॉन जॉब निम्नानुसार सेट किए जा सकते हैं:
~/usbrip$ sudo crontab -l > tmpcron && echo "" >> tmpcron
~/usbrip$ cat usbrip/cron/usbrip.cron | tee -a tmpcron
~/usbrip$ sudo crontab tmpcron
~/usbrip$ rm tmpcron
uninstall.shinstallers/uninstall.sh स्क्रिप्ट usbrip और सभी स्थापना कलाकृतियों को आपके सिस्टम से हटा देती है।
usbrip को अनइंस्टॉल करने के लिए उपयोग करें:
~/usbrip$ sudo installers/uninstall.sh [-a/--all]
-a स्विच सक्षम होता है, तो न केवल usbrip परियोजना निर्देशिका हटाई जाती है बल्कि सभी भंडार और usbrip लॉग भी हटा दिए जाते हैं।यदि आपने क्रॉन जॉब सेट किया था तो उसे हटाना न भूलें।
# ---------- BANNER ----------
~$ usbrip banner
usbrip बैनर प्राप्त करें।
# ---------- EVENTS ----------
~$ usbrip events history [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-c <COLUMN> [<COLUMN> ...]] [-f <FILE> [<FILE> ...]] [-q] [--debug]
USB घटना इतिहास प्राप्त करें।
~$ usbrip events open <DUMP.JSON> [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-c <COLUMN> [<COLUMN> ...]] [-q] [--debug]
USB घटना डंप खोलें।
~$ sudo usbrip events genauth <OUT_AUTH.JSON> [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-f <FILE> [<FILE> ...]] [-q] [--debug]
विश्वसनीय (अधिकृत) USB उपकरणों की एक सूची उत्पन्न करें।
~$ sudo usbrip events violations <IN_AUTH.JSON> [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-c <COLUMN> [<COLUMN> ...]] [-f <FILE> [<FILE> ...]] [-q] [--debug]
विश्वसनीय उपकरणों की सूची के आधार पर USB उल्लंघन घटनाएँ प्राप्त करें।
# ---------- STORAGE ----------
~$ sudo usbrip storage list <STORAGE_TYPE> [-q] [--debug]
चयनित भंडार की सामग्री सूचीबद्ध करें। STORAGE_TYPE या तो "history" या "violations" है।
~$ sudo usbrip storage open <STORAGE_TYPE> [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-c <COLUMN> [<COLUMN> ...]] [-q] [--debug]
चयनित भंडार खोलें। EVENTS OPEN सबमॉड्यूल के समान व्यवहार करता है।
~$ sudo usbrip storage update <STORAGE_TYPE> [IN_AUTH.JSON] [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [--lvl <COMPRESSION_LEVEL>] [-q] [--debug]
भंडार अद्यतन करें – मौजूदा भंडार में USB घटनाएँ जोड़ें। COMPRESSION_LEVEL [0..9] में एक संख्या है।
~$ sudo usbrip storage create <STORAGE_TYPE> [IN_AUTH.JSON] [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [--lvl <COMPRESSION_LEVEL>] [-q] [--debug]
भंडार बनाएँ – 7-Zip संग्रह बनाएँ और चयनित विकल्पों के अनुसार उसमें USB घटनाएँ जोड़ें।
~$ sudo usbrip storage passwd <STORAGE_TYPE> [--lvl <COMPRESSION_LEVEL>] [-q] [--debug]
मौजूदा भंडार का पासवर्ड बदलें।
# ---------- IDs ----------
~$ usbrip ids search [--vid <VID>] [--pid <PID>] [--offline] [-q] [--debug]
USB ID डेटाबेस से किसी विशिष्ट USB उपकरण के बारे में उसके <VID> और/या <PID> द्वारा अतिरिक्त विवरण प्राप्त करें।
~$ usbrip ids download [-q] [--debug]
USB ID डेटाबेस को अद्यतन (डाउनलोड) करें।
मॉड्यूल नामों की सूची प्राप्त करने के लिए उपयोग करें:
~$ usbrip -h
किसी विशिष्ट मॉड्यूल के लिए सबमॉड्यूल नामों की सूची प्राप्त करने के लिए उपयोग करें:
~$ usbrip <MODULE> -h
किसी विशिष्ट सबमॉड्यूल के लिए सभी स्विचों की सूची प्राप्त करने के लिए उपयोग करें:
~$ usbrip <MODULE> <SUBMODULE> -h
बैनर आउटपुट, सूचना संदेश और उपयोगकर्ता इंटरैक्शन (-q, --quiet) को दबाकर, सभी USB उपकरणों की घटना इतिहास को एक सूची (-l, --list) के रूप में नवीनतम 100 प्रविष्टियों (-n NUMBER, --number NUMBER) के साथ दिखाएँ:
~$ usbrip events history -ql -n 100
बाहरी USB उपकरणों (-e, --external, जो वास्तव में डिस्कनेक्ट किए गए थे) की घटना इतिहास को कनेक्टेड, VID, PID, डिस्कनेक्टेड और सीरियल नंबर स्तंभों (-c COLUMN [COLUMN ...], --column COLUMN [COLUMN ...]) वाली तालिका (-t, --table) के रूप में दिखाएँ, दिनांक (, ) और PID () द्वारा फ़िल्टर किया गया, बाहरी फ़ाइलों से लिए गए लॉग (, ) के साथ:
-d DATE [DATE ...]--date DATE [DATE ...]--pid <PID> [<PID> ...]-f FILE [FILE ...]--file FILE [FILE ...]~$ usbrip events history -et -c conn vid pid disconn serial -d '1995-09-15' '2018-07-01' --pid 1337 -f /var/log/syslog.1 /var/log/syslog.2.gz
👽 नोट: फ़िल्टर के साथ काम करते समय याद रखने योग्य एक बात है। उपलब्ध फ़िल्टरिंग के 4 प्रकार हैं: केवल बाहरी USB घटनाएँ (वे उपकरण जिन्हें आसानी से निकाला जा सकता है, -e), दिनांक के अनुसार (-d), क्षेत्रों द्वारा (--host, --vid, --pid, --product, --manufact, --serial, --port) और प्रविष्टियों की संख्या जो आप आउटपुट के रूप में प्राप्त करते हैं (-n)। एक साथ विभिन्न फ़िल्टर लागू करते समय, आपको निम्नलिखित व्यवहार मिलेगा: पहले, बाहरी और दिनांक के अनुसार फ़िल्टर लागू किए जाते हैं, फिर usbrip अंतिम दो फ़िल्टरों के प्रतिच्छेदन में निर्दिष्ट क्षेत्र मानों की खोज करेगा, और अंत में यह आउटपुट को -n विकल्प के साथ आपके द्वारा परिभाषित संख्या तक काट देगा। तो इसे बाहरी और दिनांक के अनुसार फ़िल्टरिंग के लिए प्रतिच्छेदन और क्षेत्रों द्वारा फ़िल्टरिंग के लिए संघ के रूप में सोचें। उम्मीद है कि यह समझ में आता है।
सभी USB उपकरणों का घटना इतिहास बनाएँ और आउटपुट को आगे के विश्लेषण के लिए एक फ़ाइल में रीडायरेक्ट करें। जब आउटपुट स्ट्रीम टर्मिनल stdout नहीं है (| या > उदाहरण के लिए) तो आउटपुट में कोई ANSI एस्केप वर्ण (रंग) नहीं होंगे, इसलिए इसका उपयोग करने में संकोच न करें। यह भी ध्यान दें कि usbrip कुछ UNICODE प्रतीकों का उपयोग करता है इसलिए परिणामी फ़ाइल को UTF-8 एन्कोडिंग में बदलना (उदाहरण के लिए enconv के साथ) और पोर्टेबिलिटी के लिए न्यूलाइन वर्णों को विंडोज शैली में बदलना (उदाहरण के लिए awk के साथ) अच्छा होगा:
~$ usbrip events history -t | awk '{ sub("$", "\r"); print }' > usbrip.out && enconv -x UTF8 usbrip.out
👽 नोट: भले ही आपने पहले से stdout पर आउटपुट प्राप्त कर लिया हो, आप हमेशा स्वयं एस्केप कैरेक्टर से छुटकारा पा सकते हैं। ऐसा करने के लिए, बस आउटपुट डेटा को usbrip.out में कॉपी करें और एक और awk निर्देश लागू करें:
~$ awk '{ sub("$", "\r"); gsub("\\x1B\\[[0-?]*[ -/]*[@-~]", ""); print }' usbrip.out && enconv -x UTF8 usbrip.out
VID और PID विशेषताओं वाले विश्वसनीय USB उपकरणों की एक सूची एक JSON फ़ाइल (trusted/auth.json) के रूप में उत्पन्न करें जिसमें 30 नवंबर 1984 को कनेक्ट किए गए पहले तीन उपकरण शामिल हों:
~$ sudo usbrip events genauth trusted/auth.json -a vid pid -n 3 -d '1984-11-30'
⚠️ चेतावनी: ऐसे मामले हैं जब विभिन्न USB फ्लैश ड्राइव में समान सीरियल नंबर हो सकते हैं। यह निर्माण त्रुटि या कुछ ब्लैक हैट ड्राइव के मेमोरी चिप को फिर से लिखने में सक्षम थे जो एक-बार प्रोग्राम करने योग्य नहीं निकला, आदि के परिणामस्वरूप हो सकता है... वैसे भी, "कोई भी सिस्टम सुरक्षित नहीं है"। usbrip अब तक ऐसे मामलों को स्मार्ट तरीके से संभालता नहीं है, अर्थात यह समान SN वाले उपकरणों की एक जोड़ी (यदि मौजूद है) को विश्वसनीय उपकरण सूची और genauth मॉड्यूल के संबंध में एक ही उपकरण मानेगा।
बाहरी USB उपकरणों के घटना इतिहास में विश्वसनीय USB उपकरणों की सूची (trusted/auth.json) के आधार पर PID विशेषता द्वारा उल्लंघन खोजें, परिणामी घटनाओं को उन तक सीमित करें जिनमें होस्टनाम के रूप में Bob-PC, निर्माता के रूप में EvilUSBManufacturer, सीरियल नंबर के रूप में 0123456789 हो और आउटपुट को Connected, VID और PID स्तंभों वाली तालिका के रूप में प्रस्तुत करें:
~$ sudo usbrip events violations trusted/auth.json -a pid -et --host Bob-PC --manufact EvilUSBManufacturer --serial 0123456789 -c conn vid pid
किसी विशिष्ट USB उपकरण के बारे में उसके VID (--vid VID) और PID (--pid PID) द्वारा विवरण खोजें:
~$ usbrip ids search --vid 0781 --pid 5580
usb.ids डेटाबेस का नवीनतम संस्करण डाउनलोड करें:
~$ usbrip ids download