Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
usbrip — GNU/Linux에서 USB 이벤트 내역 추적 | Kitploit
도구/GitHubGitHub/snovvcrash/usbrip
ForensicsDigital ForensicsThreat IntelligenceIncident ResponseLog AnalysisArchived
GitHubsnovvcrash/usbrip

usbrip

GNU/Linux에서 USB 이벤트 내역 추적

저장소 보기
1.2k1133년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

logo.png


version.svg python.svg license.svg blackarch.svg built-with-love.svg

usbrip ("USB Ripper"에서 유래, "USB R.I.P." 아님)는 Linux 시스템에서 USB 장치 아티팩트(즉, USB 이벤트 기록)를 추적할 수 있는 간단한 포렌식 도구로 명령줄 인터페이스를 제공합니다.

목차:

  • 설명
  • 빠른 시작
  • 데모
  • 시스템 로그 구조
  • 의존성
    • deb
    • pip
  • 수동 설치
    • Git Clone
    • install.sh
      • 경로
      • Cron
      • uninstall.sh
  • 사용법
    • 시놉시스
    • 도움말
  • 예제
  • 크레딧 및 참고자료
  • 스타게이저 차트
  • 추신

설명

usbrip은 Linux 로그 데이터(journalctl 출력 또는 /var/log/syslog* (또는 /var/log/messages*) 파일 내용)를 분석하는 작은 소프트웨어입니다. 수집된 데이터를 기반으로 usbrip은 다음 열로 USB 이벤트 기록 테이블을 작성할 수 있습니다:

  • 연결 (날짜 및 시간)
  • 호스트
  • VID (공급업체 ID)
  • PID (제품 ID)
  • 제품
  • 제조업체
  • 일련번호
  • 포트
  • 연결 해제 (날짜 및 시간)

또한 다음 작업도 가능합니다:

  • 수집된 데이터를 나중에 사용할 수 있도록 JSON 덤프로 내보냅니다.
  • 승인된 (신뢰할 수 있는) USB 장치 목록을 JSON 파일(예: auth.json)로 생성합니다.
  • auth.json을 기반으로 '위반 이벤트'를 검색합니다: 기록에는 나타나지만 auth.json 파일에는 나타나지 않는 USB 장치를 발견합니다.
  • *-s 플래그로 설치된 경우* cron 스케줄러를 사용하여 USB 이벤트를 자동으로 백업하고 누적하는 보호된 스토리지(7-Zip 아카이브)를 생성합니다.
  • 특정 USB 장치에 대한 추가 세부 정보를 VID 및/또는 PID를 기반으로 검색합니다.

빠른 시작

방법 1. pip로 설치:

root@kitploit:~
~$ sudo -H python3 -m pip install -U usbrip
~$ usbrip -h

방법 2. install.sh로 최신 버전 설치 (권장, 추가 기능 사용 가능):

root@kitploit:~
~$ 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

데모

showcase.png

Docker ( 데모 전용! )

root@kitploit:~
~$ docker run --rm -it snovvcrash/usbrip

시스템 로그 구조

usbrip은 시스템 로그 파일 내에서 구문 분석하기 위해 두 가지 유형의 타임스탬프를 지원합니다:

  1. 수정되지 않음 – GNU/Linux의 표준 syslog 구조 ("%b %d %H:%M:%S", 예: "Jan 1 00:00:00"). 이 타임스탬프 유형은 연도 정보를 제공하지 않습니다.
  2. 수정됨 (권장) – 연도를 포함한 고정밀 타임스탬프를 제공하는 더 나은 syslog 구조 ("%Y-%m-%dT%H:%M:%S.%f%z", 예: "1970-01-01T00:00:00.000000-00:00").

journalctl이 설치되어 있다면 타임스탬프를 즉시 변환할 수 있으므로 걱정할 필요가 없습니다. 그렇지 않은 경우 rsyslog 구성에서 RSYSLOG_FileFormat 형식을 설정하여 원하는 syslog 구조를 얻을 수 있습니다.

  1. /etc/rsyslog.conf에서 다음 줄을 주석 처리합니다:
root@kitploit:~
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
  1. usbrip용 사용자 .conf 파일을 추가합니다:
root@kitploit:~
~$ echo '$ActionFileDefaultTemplate RSYSLOG_FileFormat' | sudo tee /etc/rsyslog.d/usbrip.conf
  1. *선택 사항* 기존 로그 파일을 삭제합니다:
root@kitploit:~
~$ sudo rm -f /var/log/syslog* /var/log/messages*
  1. 서비스를 다시 시작합니다:
root@kitploit:~
~$ sudo systemctl restart rsyslog

먼저, usbrip은 가장 이식성 있는 옵션으로 journalctl을 사용하여 시스템 이벤트를 덤프할 수 있는지 확인합니다. 그렇지 않은 경우 /var/log/syslog* 또는 /var/log/messages* 시스템 로그 파일을 검색하여 구문 분석합니다.

의존성

deb

  • python3.6 인터프리터 (또는 그 이상)
  • python3-venv
  • p7zip-full (storage 모듈에서 사용)

pip

  • terminaltables
  • termcolor
  • tqdm

수동 설치

Git Clone

단순화를 위해 ~/usbrip$ 접두사가 나타나는 모든 명령은 git clone 결과로 생성된 ~/usbrip 디렉토리에서 실행된다고 가정합니다:

root@kitploit:~
~$ git clone https://github.com/snovvcrash/usbrip
~$ cd usbrip
~/usbrip$ pwd

install.sh

pip로 설치하는 것 외에도 사용자 정의 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을 설치하려면 다음을 사용합니다:

root@kitploit:~
~/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

cron 작업은 다음과 같이 설정할 수 있습니다:

root@kitploit:~
~/usbrip$ sudo crontab -l > tmpcron && echo "" >> tmpcron
~/usbrip$ cat usbrip/cron/usbrip.cron | tee -a tmpcron
~/usbrip$ sudo crontab tmpcron
~/usbrip$ rm tmpcron

uninstall.sh

installers/uninstall.sh 스크립트는 시스템에서 usbrip 및 모든 설치 아티팩트를 제거합니다.

usbrip을 제거하려면 다음을 사용합니다:

root@kitploit:~
~/usbrip$ sudo installers/uninstall.sh [-a/--all]
  • -a 스위치를 활성화하면 usbrip 프로젝트 디렉토리뿐만 아니라 모든 스토리지와 usbrip 로그도 삭제됩니다.

cron 작업을 설정한 경우 해당 작업도 제거하는 것을 잊지 마십시오.

사용법

시놉시스

root@kitploit:~
# ---------- 배너 ----------

~$ 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 장치 목록을 생성합니다.

~$ sudo usbrip events violations <입력_AUTH.JSON> [-a <속성> [<속성> ...]] [-t | -l] [-e] [-n <이벤트_수>] [-d <날짜> [<날짜> ...]] [--host <호스트> [<호스트> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <제품> [<제품> ...]] [--manufact <제조업체> [<제조업체> ...]] [--serial <일련번호> [<일련번호> ...]] [--port <포트> [<포트> ...]] [-c <열> [<열> ...]] [-f <파일> [<파일> ...]] [-q] [--debug]
신뢰할 수 있는 장치 목록을 기반으로 USB 위반 이벤트를 가져옵니다.

# ---------- 스토리지 ----------

~$ sudo usbrip storage list <스토리지_유형> [-q] [--debug]
선택한 스토리지의 내용을 나열합니다. STORAGE_TYPE은 "history" 또는 "violations"입니다.

~$ sudo usbrip storage open <스토리지_유형> [-t | -l] [-e] [-n <이벤트_수>] [-d <날짜> [<날짜> ...]] [--host <호스트> [<호스트> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <제품> [<제품> ...]] [--manufact <제조업체> [<제조업체> ...]] [--serial <일련번호> [<일련번호> ...]] [--port <포트> [<포트> ...]] [-c <열> [<열> ...]] [-q] [--debug]
선택한 스토리지를 엽니다. EVENTS OPEN 하위 모듈과 유사하게 동작합니다.

~$ sudo usbrip storage update <스토리지_유형> [입력_AUTH.JSON] [-a <속성> [<속성> ...]] [-e] [-n <이벤트_수>] [-d <날짜> [<날짜> ...]] [--host <호스트> [<호스트> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <제품> [<제품> ...]] [--manufact <제조업체> [<제조업체> ...]] [--serial <일련번호> [<일련번호> ...]] [--port <포트> [<포트> ...]] [--lvl <압축_수준>] [-q] [--debug]
스토리지를 업데이트합니다 — 기존 스토리지에 USB 이벤트를 추가합니다. COMPRESSION_LEVEL은 [0..9] 범위의 숫자입니다.

~$ sudo usbrip storage create <스토리지_유형> [입력_AUTH.JSON] [-a <속성> [<속성> ...]] [-e] [-n <이벤트_수>] [-d <날짜> [<날짜> ...]] [--host <호스트> [<호스트> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <제품> [<제품> ...]] [--manufact <제조업체> [<제조업체> ...]] [--serial <일련번호> [<일련번호> ...]] [--port <포트> [<포트> ...]] [--lvl <압축_수준>] [-q] [--debug]
스토리지를 생성합니다 — 7-Zip 아카이브를 만들고 선택한 옵션에 따라 USB 이벤트를 추가합니다.

~$ sudo usbrip storage passwd <스토리지_유형> [--lvl <압축_수준>] [-q] [--debug]
기존 스토리지의 비밀번호를 변경합니다.

# ---------- ID ----------

~$ usbrip ids search [--vid <VID>] [--pid <PID>] [--offline] [-q] [--debug]
USB ID 데이터베이스에서 <VID> 및/또는 <PID>로 특정 USB 장치에 대한 추가 세부 정보를 가져옵니다.

~$ usbrip ids download [-q] [--debug]
USB ID 데이터베이스를 업데이트 (다운로드)합니다.

도움말

모듈 이름 목록을 보려면 다음을 사용합니다:

root@kitploit:~
~$ usbrip -h

특정 모듈의 하위 모듈 이름 목록을 보려면 다음을 사용합니다:

root@kitploit:~
~$ usbrip <모듈> -h

특정 하위 모듈의 모든 스위치 목록을 보려면 다음을 사용합니다:

root@kitploit:~
~$ usbrip <모듈> <하위모듈> -h

예제

  • 배너 출력, 정보 메시지 및 사용자 상호작용을 억제하고 (-q, --quiet), 목록으로 표시하며 (-l, --list), 최신 100개 항목 (-n NUMBER, --number NUMBER)으로 모든 USB 장치의 이벤트 기록을 표시합니다:

    root@kitploit:~
    ~$ usbrip events history -ql -n 100
    
  • 외부 USB 장치 (-e, --external, 실제로 분리된 장치)의 이벤트 기록을 테이블로 표시하며 (-t, --table), Connected, VID, PID, Disconnected 및 Serial Number 열을 포함하고 (-c COLUMN [COLUMN ...], --column COLUMN [COLUMN ...]), 날짜 (-d DATE [DATE ...], ) 및 PID ()로 필터링하고, 외부 파일에서 로그를 가져옵니다 (, ):

크레딧 및 참고자료

  • usbrip / Kali Linux 도구
  • USB 장치가 Linux에 연결되었는지 확인하는 방법 / HackWare.ru
  • usbrip: Linux용 USB 포렌식, 또는 앨리스가 이브가 된 방법 / Codeby.net 정보 보안 포럼

13cubed.jpg

스타게이저 차트

stargazers

도구 다운로드
--date DATE [DATE ...]
--pid <PID> [<PID> ...]
-f FILE [FILE ...]
--file FILE [FILE ...]
root@kitploit:~
~$ 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 장치의 이벤트 기록을 작성하고 추가 분석을 위해 출력을 파일로 리디렉션합니다. 출력 스트림이 터미널 표준 출력이 아닌 경우 (| 또는 > 예) 출력에는 ANSI 이스케이프 문자(색상)가 없으므로 그렇게 사용해도 됩니다. 또한 usbrip은 일부 UNICODE 기호를 사용하므로 결과 파일을 UTF-8 인코딩으로 변환하고(예: enconv 사용) 이식성을 위해 개행 문자를 Windows 스타일로 변경하는 것이 좋습니다(예: awk 사용):

    root@kitploit:~
    ~$ usbrip events history -t | awk '{ sub("$", "\r"); print }' > usbrip.out && enconv -x UTF8 usbrip.out
    

    👽 참고: 이미 stdout으로 출력을 받았더라도 직접 이스케이프 문자를 제거할 수 있습니다. 출력 데이터를 usbrip.out에 복사하고 awk 명령을 하나 더 적용하면 됩니다:

    root@kitploit:~
    ~$ awk '{ sub("$", "\r"); gsub("\\x1B\\[[0-?]*[ -/]*[@-~]", ""); print }' usbrip.out && enconv -x UTF8 usbrip.out
    
  • VID 및 PID 속성을 사용하여 1984년 11월 30일에 연결된 처음 세 개의 장치를 포함하는 신뢰할 수 있는 USB 장치 목록을 JSON 파일(trusted/auth.json)로 생성합니다:

    root@kitploit:~
    ~$ sudo usbrip events genauth trusted/auth.json -a vid pid -n 3 -d '1984-11-30'
    

    ⚠️ 경고: 다른 USB 플래시 드라이브가 동일한 일련번호를 가질 수 있는 경우가 있습니다. 이는 제조 오류로 인해 발생하거나, 악의적인 사용자가 드라이브의 메모리 칩을 다시 작성할 수 있었던 경우(일회성 프로그래밍이 아닌 경우 등) 발생할 수 있습니다. 어쨌든 "어떤 시스템도 안전하지 않습니다". usbrip은 현재 이러한 경우를 지능적으로 처리하지 않습니다. 즉, 동일한 SN을 가진 장치 쌍(존재하는 경우)은 신뢰할 수 있는 장치 목록과 genauth 모듈에 관해 동일한 장치로 취급됩니다.

  • 신뢰할 수 있는 USB 장치 목록(trusted/auth.json)을 기반으로 외부 USB 장치의 이벤트 기록에서 PID 속성별로 위반을 검색하고, 결과 이벤트를 호스트 이름이 Bob-PC, 제조업체가 EvilUSBManufacturer, 일련번호가 0123456789인 것으로 제한하며, 출력을 Connected, VID 및 PID 열이 있는 테이블로 표시합니다:

    root@kitploit:~
    ~$ sudo usbrip events violations trusted/auth.json -a pid -et --host Bob-PC --manufact EvilUSBManufacturer --serial 0123456789 -c conn vid pid
    
  • VID (--vid VID) 및 PID (--pid PID)로 특정 USB 장치에 대한 세부 정보를 검색합니다:

    root@kitploit:~
    ~$ usbrip ids search --vid 0781 --pid 5580
    
  • 최신 버전의 usb.ids 데이터베이스를 다운로드합니다:

    root@kitploit:~
    ~$ usbrip ids download