
GNU/Linux에서 USB 이벤트 내역 추적
usbrip ("USB Ripper"에서 유래, "USB R.I.P." 아님)는 Linux 시스템에서 USB 장치 아티팩트(즉, USB 이벤트 기록)를 추적할 수 있는 간단한 포렌식 도구로 명령줄 인터페이스를 제공합니다.
목차:
usbrip은 Linux 로그 데이터(journalctl 출력 또는 /var/log/syslog* (또는 /var/log/messages*) 파일 내용)를 분석하는 작은 소프트웨어입니다. 수집된 데이터를 기반으로 usbrip은 다음 열로 USB 이벤트 기록 테이블을 작성할 수 있습니다:
또한 다음 작업도 가능합니다:
-s 플래그로 설치된 경우* cron 스케줄러를 사용하여 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 ( 데모 전용! )
~$ 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$ 접두사가 나타나는 모든 명령은 git clone 결과로 생성된 ~/usbrip 디렉토리에서 실행된다고 가정합니다:
~$ git clone https://github.com/snovvcrash/usbrip
~$ cd usbrip
~/usbrip$ pwd
install.shpip로 설치하는 것 외에도 사용자 정의 installers/install.sh 스크립트로 usbrip을 설치할 수 있습니다.
install.sh를 사용하면 몇 가지 추가 기능을 사용할 수 있습니다:
storage 모듈을 사용할 수 있습니다 – cron 작업을 설정하여 USB 이벤트를 정기적으로 백업합니다 (cron 작업 예제는 usbrip/cron/usbrip.cron에서 찾을 수 있습니다).⚠️ 경고: cron 스케줄링을 사용하는 경우 storage update 하위 모듈을 root로 실행하려면 sudo crontab -e로 crontab을 구성해야 합니다. 스토리지 비밀번호는 /var/opt/usbrip/usbrip.ini에 보관되며 기본적으로 root만 접근할 수 있습니다.
install.sh로 usbrip을 설치하려면 다음을 사용합니다:
~/usbrip$ sudo -H installers/install.sh [-l/--local] [-s/--storages]
~/usbrip$ cd
~$ usbrip -h
-l 스위치를 활성화하면 Python 의존성이 PyPI 대신 로컬 .tar 패키지(3rdPartyTools 디렉토리)에서 확인됩니다.-s 스위치를 활성화하면 usbrip 프로젝트뿐만 아니라 신뢰할 수 있는 USB 장치 목록, 기록 및 위반 스토리지도 생성됩니다.설치가 완료된 후 ~/usbrip 디렉토리는 자유롭게 제거하십시오.
install.sh로 설치하면 usbrip은 다음 경로를 사용합니다:
/opt/usbrip/ – 프로젝트의 메인 디렉토리./var/opt/usbrip/log/ – usbrip cron 로그./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 스크립트의 심볼릭 링크.cron 작업은 다음과 같이 설정할 수 있습니다:
~/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 로그도 삭제됩니다.cron 작업을 설정한 경우 해당 작업도 제거하는 것을 잊지 마십시오.
# ---------- 배너 ----------
~$ usbrip banner
usbrip 배너를 표시합니다.
# ---------- 이벤트 ----------
~$ usbrip events history [-t | -l] [-e] [-n <이벤트_수>] [-d <날짜> [<날짜> ...]] [--host <호스트> [<호스트> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <제품> [<제품> ...]] [--manufact <제조업체> [<제조업체> ...]] [--serial <일련번호> [<일련번호> ...]] [--port <포트> [<포트> ...]] [-c <열> [<열> ...]] [-f <파일> [<파일> ...]] [-q] [--debug]
USB 이벤트 기록을 가져옵니다.
~$ usbrip events open <덤프.JSON> [-t | -l] [-e] [-n <이벤트_수>] [-d <날짜> [<날짜> ...]] [--host <호스트> [<호스트> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <제품> [<제품> ...]] [--manufact <제조업체> [<제조업체> ...]] [--serial <일련번호> [<일련번호> ...]] [--port <포트> [<포트> ...]] [-c <열> [<열> ...]] [-q] [--debug]
USB 이벤트 덤프를 엽니다.
~$ sudo usbrip events genauth <출력_AUTH.JSON> [-a <속성> [<속성> ...]] [-e] [-n <이벤트_수>] [-d <날짜> [<날짜> ...]] [--host <호스트> [<호스트> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <제품> [<제품> ...]] [--manufact <제조업체> [<제조업체> ...]] [--serial <일련번호> [<일련번호> ...]] [--port <포트> [<포트> ...]] [-f <파일> [<파일> ...]] [-q] [--debug]
신뢰할 수 있는 (승인된) USB 장치 목록을 생성합니다.