KR100901465B1 - Usb장치의 입출력 패킷 보호 방법 - Google Patents

Usb장치의 입출력 패킷 보호 방법 Download PDF

Info

Publication number
KR100901465B1
KR100901465B1 KR1020070074716A KR20070074716A KR100901465B1 KR 100901465 B1 KR100901465 B1 KR 100901465B1 KR 1020070074716 A KR1020070074716 A KR 1020070074716A KR 20070074716 A KR20070074716 A KR 20070074716A KR 100901465 B1 KR100901465 B1 KR 100901465B1
Authority
KR
South Korea
Prior art keywords
input
usb
output packet
driver
routine
Prior art date
Application number
KR1020070074716A
Other languages
English (en)
Other versions
KR20090011281A (ko
Inventor
김점갑
Original Assignee
주식회사 안철수연구소
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 안철수연구소 filed Critical 주식회사 안철수연구소
Priority to KR1020070074716A priority Critical patent/KR100901465B1/ko
Priority to US12/670,608 priority patent/US8230127B2/en
Priority to PCT/KR2008/004372 priority patent/WO2009014402A2/en
Priority to EP08778941.8A priority patent/EP2181394B1/en
Publication of KR20090011281A publication Critical patent/KR20090011281A/ko
Application granted granted Critical
Publication of KR100901465B1 publication Critical patent/KR100901465B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/83Protecting input, output or interconnection devices input devices, e.g. keyboards, mice or controllers thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • G06F9/4413Plug-and-play [PnP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5038Address allocation for local use, e.g. in LAN or USB networks, or in a controller area network [CAN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0042Universal serial bus [USB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2123Dummy operation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Small-Scale Networks (AREA)
  • Information Transfer Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

USB 장치의 입출력 패킷 보호 방법이 개시되어 있다. 본 발명은, a) 시스템에 존재하는 USB 호스트 컨트롤러에 필터 드라이버를 등록하고, 상기 필터 드라이버를 로드하는 단계와; b) 제1 필터 드라이버 객체(Filter Device Object; FiDO)를 생성하고, 상기 제1 필터 드라이버 객체(FiDO)를 상기 USB 호스트 컨트롤러를 위한 디바이스 객체(Functional Device Object; FDO)에 연결(Attach)시켜 모든 USB 장치들의 입출력 패킷을 감시하는 단계와; c) 상기 입출력 패킷에 식별자가 존재하는지 여부를 판단하는 단계와; d) 상기 판단 결과 상기 입출력 패킷에 상기 식별자가 존재하는 경우, 상기 입출력 패킷에 완료 루틴을 등록하는 단계와; e) 상기 완료 루틴에서 상기 입출력 패킷을 소정 영역으로 복사하고, 상기 입출력 패킷을 임의의 값으로 교체하는 단계를 포함한다.
USB, USB 호스트 컨트롤러, USB 버스 드라이버, 상위 필터 드라이버, 하위 필터 드라이버

Description

USB장치의 입출력 패킷 보호 방법{METHOD OF PROTECTING INPUT/OUTPUT PACKET OF USB DEVICE}
본 발명은 USB 장치의 입출력 패킷 보호 방법에 관한 것으로, 더욱 상세하게는 USB 포트와 연결된 USB 키보드를 포함한 모든 USB 장치들의 입출력 패킷을 가장 먼저 전달받는 USB 버스 드라이버 계층에서 USB 장치들의 입출력 패킷을 구분하여 USB 장치의 입출력 데이터를 보호하는 USB 장치의 입출력 패킷 보호 방법에 관한 것이다.
일반적으로 인터넷 뱅킹, 이메일, 또는 기밀 사항이 포함된 데이터 통신에서 각종 스파이웨어 또는 해킹프로그램은 키보드와 같은 입력 장치를 통해 입력되는 데이터를 중간에서 획득한 후 소정 이메일 또는 웹 서버로 상기 데이터를 전송시켜서 개인 정보 또는 비밀 정보 등을 유출하여 왔다.
이러한 악의적인 프로그램의 활성화를 근본적으로 차단하기 위하여 키보드 보안과 관련된 보안 시스템 및 방법이 개발되었다.
키보드에는 PS/2 방식 및 USB 방식이 존재하며, PS/2 방식은 키보드 조작에 의해 발생한 물리적인 전기 신호를 운영 체제로 전송하고 해당 인터럽트 루틴을 각 각 큐(FIFO; First In, First Out)로써 개별처리한다.
또한, 상기 USB 방식의 키보드는 컴퓨터의 본체와 주변 장치들 간의 통신이 단순한 전기적인 신호 흐름이 아닌 다수의 데이터를 담은 패킷의 흐름으로 이루어지면서, 운영 체제와 메시지를 교환하도록 제작되었다.
도 1은 일반적인 USB 키보드에서 키보드 데이터가 발생하여 처리되는 경로를 도시한 것으로, 키보드로부터 입력된 키보드 데이터는 USB(Universal Serial Bus) BUS 드라이버(10), USB 허브 드라이버(20), (USBCCGP), HID USB 드라이버(30), KBD(Keyboard) HID 드라이버(40), 및 KBD CLASS 드라이버(50)를 통과하는 드라이버 계층을 이룬다.
근래의 USB 키보드 보안 제품이나 악성 키로거들은 KBD CALSS 드라이버(50) 계층에 대한 필터링 및 후킹에서부터 HID USB 드라이버(30)의 필터링 및 후킹 방법을 사용하고 있다.
상기 HID USB 드라이버(30)를 중심으로 상위(Upper) 필터 드라이버(35) 및 하위(Lower) 필터 드라이버(33)가 존재하여 키보드를 보호 또는 키로깅을 수행한다.
최근에는 USB 허브 드라이버(20) 계층에 대한 후킹을 수행하는 HID USB 키보드 보안 제품이 출시되었으며, 대부분의 HID USB 키보드 보안 제품과 악성 키로거들이 HID USB 드라이버(30) 계층에서 동일한 기술 즉, 필터링과 후킹을 사용함에 따라 보안 제품 간의 간섭 및 충돌이 빈번하게 발생하고 있는 실정이다.
따라서, 상기 HID USB 드라이버(30) 계층의 후킹이나 필터링, 또는 USB 허브 드라이버(20) 계층의 후킹이나 필터링 방식으로는 이제 USB 키보드 데이터를 보호하는데 한계점에 도달했기 때문에, 사용자로부터 입력되는 중요 정보 즉, USB 키보드 데이터를 더 이상 안전하게 보호할 수 없게 되는 문제점이 있어 왔다.
본 발명은 상기한 사정을 감안하여 창출된 것으로서, 본 발명의 목적은 HID(Human Interface Device) USB 키보드를 포함한 모든 USB 장치들의 입력 패킷을 호스트(PC)단의 USB 버스 드라이버 계층에서 필터링 및 후킹 방법을 수행하여 USB 장치의 입출력 패킷을 구분함으로써 보호하고자 하는 특정 또는 모든 USB 장치의 입출력 패킷을 보호하는 방법을 제공하는데 있다.
상기 목적을 달성하기 위한 본 발명의 제 1 관점에 따른 USB 장치의 입출력 패킷 보호 방법은,
a) 시스템에 존재하는 USB 호스트 컨트롤러에 필터 드라이버를 등록하고, 상기 필터 드라이버를 로드하는 단계;
b) 제1 필터 드라이버 객체(Filter Device Object; FiDO)를 생성하고, 상기 제1 필터 드라이버 객체(FiDO)를 상기 USB 호스트 컨트롤러를 위한 디바이스 객체(Functional Device Object; FDO)에 연결(Attach)시켜 입출력 패킷을 감시하는 단계;
c) 상기 입출력 패킷에 식별자가 존재하는지 여부를 판단하는 단계;
d) 상기 판단 결과 상기 입출력 패킷에 상기 식별자가 존재하는 경우, 상기 입출력 패킷에 완료 루틴을 등록하는 단계; 및
e) 상기 완료 루틴에서 상기 입출력 패킷을 소정 영역으로 복사하고, 상기 입출력 패킷을 임의의 값으로 교체하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명의 제 2 관점에 따른 USB 장치의 입출력 패킷 보호 방법은,
ⅰ) USB 버스 드라이버의 객체를 복사하여 복제 드라이버 객체를 생성하는 단계;
ⅱ) 상기 복제 드라이버 객체에서 디스패치 루틴(Dispatch Routine)의 주소를 소정 루틴의 주소로 변경하여 후킹하는 단계;
ⅲ) 상기 단계 ⅱ)에서 후킹된 상기 소정 루틴에서, USB 루트 허브 디바이스 객체의 DriverObject 필드 값을 상기 복제 드라이버 객체를 가리키도록 변경하는 단계;
ⅳ) 상기 단계 ⅱ)에서 후킹한 소정 루틴 으로 수신된 입출력 패킷에 식별자가 존재하는지 여부를 판단하는 단계;
ⅴ) 상기 판단 결과 상기 입출력 패킷에 상기 식별자가 존재하는 경우, 상기 입출력 패킷에 완료 루틴을 등록하는 단계; 및
ⅵ) 상기 완료 루틴에서 상기 입출력 패킷을 소정 영역으로 복사하고, 상기 입출력 패킷을 임의의 값으로 교체하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명의 제 3 관점에 따른 USB 장치의 입출력 패킷 보호 방법은,
가) HID(Human Interface Bus) USB 키보드를 찾아 상기 HID USB 키보드를 제어하는 HID USB 드라이버의 필터 드라이버를 등록하고 상기 필터 드라이버를 로드하는 단계;
나) 상기 필터 드라이버의 소정 루틴에서 상기 HID USB 키보드에 의해 발생한 입출력 패킷을 감시하는 단계;
다) 상기 입출력 패킷을 감시하던 중에 상기 소정 루틴에서 URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER USB Function 요청을 감지하는 단계; 및
라) 상기 입출력 패킷에 USB BUS 드라이버 계층에서 식별 가능한 식별자를 이식하는 단계를 포함한다.
이상에서 상세히 설명한 바와 같이, 본 발명의 USB 장치의 입출력 패킷 보호 방법에 의하면, USB(Universal Serial Bus) 버스 드라이버 필터링 및 후킹하는 방법, 그리고 버스 드라이버 계층에서 입출력 패킷(I/O Request Packet)을 판별하는 방법에 따라 USB 입출력 패킷을 호스트(PC)단에서 가장 먼저 전달받는 USB 버스 드라이버 계층에서 키보드를 포함한 모든 USB 디바이스의 데이터를 원천적으로 안전하게 보호할 수 있다는 효과가 있다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예에 대하여 설명한다.
도 2는 본 발명의 일 실시 예에 따른 입출력 패킷의 두 가지 경로를 도시한 것이다.
도 2를 참조하면, USB 키보드로부터의 입출력 패킷(I/O Request Packet)은 키보드 스택(KeyBoard Stack, 200)을 거쳐, 허브 스택(Hub Stack, 220), 및 호스트 컨트롤러 스택(Host Controller Stack, 240)으로 전달되는 제1 경로와, 키보드 스택(200)을 거친 후 허브 스택(220)을 건너뛰고 바로 호스트 컨트롤러 스택(240)으로 전달되는 제2 경로를 통해 USB 버스 드라이버(260)로 전달된다.
따라서, USB 키보드의 USB 케이블이 본체와 물리적으로 연결되는 USB 포트를 포함하는 USB 버스 드라이버(260) 계층에서 입출력되는 모든 입출력 패킷을 감시하기 위해 허브 디바이스 스택(270) 및 버스 스택(280)을 모두 필터링 한다.
도 3은 본 발명의 일 실시 예에 따른 USB 버스 드라이버를 필터링하는 방법을 설명하기 위한 순서도이다.
도 3을 참조하면, PiDO(Physical Filter Device Object; 370) 및 FiDO(Filter Device Object; 380)를 이용하여 허브 스택(320) 및 호스트 컨트롤러 스택(340)을 동시에 필터링하는 과정이 도시되어 있다.
어플리케이션 프로그램에서 시스템에 존재하는 모든 USB 호스트 컨트롤러(340)를 검색하여, 상기 USB 호스트 컨트롤러(340)에 상위(Upper) 필터 드라이버를 등록한다. 등록 후, 해당 USB 호스트 컨트롤러(340)를 재 열거(Enumerate)하면 USB 버스 드라이버(360)의 상위 필터 드라이버로서 마이드라이버(MyDriver; 390)이 로드된다.
이때 상기 USB 호스트 컨트롤러(340)에 FiDO(380)를 생성하여, USB 버스 드라이버(360)가 생성한 디바이스 객체(FDO:Functional Device Object; 345)에 연결(Attach)시킴으로써 상기 USB 버스 드라이버(360)로 들어오는 PnP(Plug and Play) 패킷을 감시할 수 있다.
상기 PnP 패킷을 감시하여 상기 USB 호스트 컨트롤러(340)가 USB 루트 허브 장치에 대한 디바이스 객체(PDO:Physical Device Object; 325)를 생성할 때 PiDO(Physical Filter Device Object; 370)를 생성하여 상기 디바이스 객체(325)에 연결시킨다.
상기 PiDO(370)를 통과하지 않고 키보드 디바이스 스택에서 바로 호스트 컨트롤러 스택(340) 즉, FDO(345)로 전달되는 입출력 패킷을 상기 FiDO(380)를 통과하도록 USBD_RegisterHcFilter를 호출한다.
따라서, USB 버스 드라이버(360)는 PDO(325) 또는 FDO(345)와 연결된 모든 USB 장치들에 대한 입출력 패킷을 감시할 수 있는 필터 드라이버가 된다. 상기 USB 버스 드라이버(360)는 상기 입출력 패킷들 중에서 HID(Human Interface Device) USB 키보드 패킷을 식별하여 상기 HID USB 키보드 패킷인 경우, 완료 루틴을 등록한다.
상기 완료 루틴은 HID USB 키보드 패킷이 발생할 때, USB 버스 드라이버가 호출해주는 루틴으로서 그 어떤 루틴보다 가장 먼저 입력 키 데이터를 보게 된다.
상기 완료 루틴에서는 원하는 시점에 입력된 키보드 값을 안전한 영역으로 복사하고 원래의 키보드 입력 값을 임의의 쓰레기(Garbage) 값으로 교체하여 키보드 입력을 보호한다.
이하에서는, 본 발명의 실시 예에 따른 USB 버스 드라이버를 후킹하는 방법을 보다 상세하게 설명한다.
시스템에 연결된 모든 USB 장치들의 입출력 패킷은 USB 버스 드라이버의 IRP_MJ_INTERNAL_DEVICE_CONTROL 디스패치(Dispatch) 루틴을 지나게 된다. 따라서, 상기 IRP_MJ_INTERNAL_DEVICE_CONTROL 디스패치 루틴을 후킹하면, USB 버스 드라이버 계층에서 모든 USB 장치들의 입출력 패킷을 감시할 수 있다.
상기 IRP_MJ_INTERNAL_DEVICE_CONTROL 디스패치 루틴을 후킹하는 방법은 먼저, 드라이버 객체를 생성하여 모든 정보를 USB 버스 드라이버의 객체 값으로 복사한다. 즉, USB 버스 드라이버와 동일한 복제(Clone) USB 버스 드라이버 객체를 생성한다.
상기 복제 드라이버 객체의 IRP_MJ_INTERNAL_DEVICE_CONTROL Request를 처리하는 디스패치 루틴의 주소를 본 발명에 따른 드라이버 루틴인 Clone Dispatch InternalIoControl 루틴으로 교체한다.
그리고 USB 버스 드라이버가 USB 호스트 컨트롤러에 존재하는 USB 루트허브 장치를 위한 디바이스 객체의 DriverObject 값을 복제 드라이버 객체를 가리키도록 설정한다.
모든 USB 장치들의 입출력 패킷을 감시하고 상기 입출력 패킷들 중에서 HID USB 키보드의 입출력 패킷을 식별하여 상기 입출력 패킷인 경우 상기 입출력 패킷에 완료 루틴을 등록한다.
상기 완료 루틴은 HID USB 키보드 입력이 발생할 때 운영 체제(Operating System)이 호출해주는 루틴으로서 그 어떤 루틴보다 가장 먼저 입력 키 데이터를 획득하게 된다.
상기 완료 루틴에서는 원하는 시점에 입력된 키보드 입출력 값을 안전한 영역으로 복사하고 원래의 키보드 입력 값을 임의의 쓰레기 값으로 교체하여 키보드 입력을 보호한다.
일 응용 예에서, 각 USB 버스 드라이버의 각 디스패치 루틴을 후킹하는 경우, 상기 디스패치 루틴으로 수신되는 입출력 패킷에 식별자가 존재하는지 여부를 판단하고, 상기 판단 결과 상기 입출력 패킷에 상기 식별자가 존재하는 경우, 상기 입출력 패킷에 완료 루틴을 등록하게 된다. 상기 완료 루틴에서 상기 입출력 패킷을 소정 영역으로 복사하고 상기 입출력 패킷을 임의의 값으로 교체하게 된다.
도 4는 본 발명의 실시 예에 따른 버스 드라이버에서 키보드 입출력 패킷을 판단하는 방법을 설명하기 위한 순서도이다.
USB 버스 드라이버 계층의 필터 드라이버 또는 후킹 드라이버에서 USB 장치들에 대한 입출력 패킷을 감시할 수는 있는데, 각각의 패킷이 어떤 장치들에 대한 것인지를 구분하기 위하여, HID USB 키보드 필터 드라이버(400)를 등록하고, 상기 HID USB 키보드 필터 드라이버에서 입출력 패킷에 USB 버스 후킹/필터 드라이버에 서 판독 가능한 식별자를 이식한다.
부언하면, HID USB 키보드를 찾아서 해당 키보드들에 HID USB 드라이버(460)의 필터 드라이버를 등록한다. 그리고 해당 키보드들을 재 열거하여 새롭게 등록된 상기필터 드라이버(400)가 로드되도록 설계한다.
상기 필터 드라이버(400)에서 상기 키보드 입출력 패킷을 검출하면 상기 키보드 입출력 패킷에 식별자를 이식하며, 상기 식별자가 이식된 상기 키보드 입출력 패킷을 수신한 USB 버스 필터 또는 후킹 드라이버(루틴)이 상기 식별자를 검출하면 상기 키보드 입출력 패킷에 대한 보호 기능을 수행한다.
일 응용 예에서, 식별자를 이식하는 드라이버는 USB 외장형 CD-ROM 또는 CD-RW, DVD-RW는 CD-ROM 클래스 드라이버인 cdrom.sys의 클래스 필터(상위 또는 하위 필터)에서 상기 입출력 패킷에 상기 식별자를 이식한다.
다른 응용 예에서, USB 메모리 스틱은 디스크 클래스인 disk.sys의 필터(상위 또는 하위필터)에서 상기 식별자를 상기 입출력 패킷에 이식할 수 있으며, USBSTOR.sys의 필터(상위 또는 하위필터)에서 상기 식별자를 상기 입출력 패킷에 이식할 수 있다.
또 다른 응용 예에서, USB 마우스의 입출력 패킷인 경우, 상기 식별자를 HIDUSB의 필터( 상위 또는 하위)에서 이식한다.
지금까지 본 발명을 바람직한 실시 예를 참조하여 상세히 설명하였지만, 본 발명이 상기한 실시 예에 한정되는 것은 아니며, 이하의 특허청구범위에서 청구하 는 본 발명의 요지를 벗어남이 없이 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 또는 수정이 가능한 범위까지 본 발명의 기술적 사상이 미친다 할 것이다.
도 1은 일반적인 USB 키보드에서 키보드 데이터가 발생하여 처리되는 경로를 도시한 것이다.
도 2는 본 발명의 일 실시 예에 따른 입출력 패킷의 두 가지 경로를 도시한 것이다.
도 3은 본 발명의 일 실시 예에 따른 USB 버스 드라이버를 필터링하는 방법을 설명하기 위한 구성도이다.
도 4는 본 발명의 실시 예에 따른 버스 드라이버에서 입출력 패킷을 판단하는 방법을 설명하기 위한 순서도이다.

Claims (16)

  1. a) 시스템에 존재하는 USB 호스트 컨트롤러에 필터 드라이버를 등록하고, 상기 필터 드라이버를 로드하는 단계;
    b) 제1 필터 드라이버 객체(Filter Device Object; FiDO)를 생성하고, 상기 제1 필터 드라이버 객체(FiDO)를 상기 USB 호스트 컨트롤러를 위한 디바이스 객체(Functional Device Object; FDO)에 연결(Attach)시켜 USB 장치들의 입출력 패킷을 감시하는 단계;
    c) 상기 입출력 패킷에 식별자가 존재하는지 여부를 판단하는 단계;
    d) 상기 판단 결과 상기 입출력 패킷에 상기 식별자가 존재하는 경우, 상기 입출력 패킷에 완료 루틴을 등록하는 단계; 및
    e) 상기 완료 루틴에서 상기 입출력 패킷을 소정 영역으로 복사하고, 상기 입출력 패킷을 임의의 값으로 교체하는 단계를 포함하는 것을 특징으로 하는 USB 장치의 입출력 패킷 보호 방법.
  2. 제 1 항에 있어서, 상기 필터 드라이버는,
    USB 버스 드라이버의 상위(Upper) 드라이버인 것을 특징으로 하는 USB 장치의 입출력 패킷 보호 방법.
  3. 제 1 항에 있어서, 상기 단계 a)에서,
    상기 USB 호스트 컨트롤러를 재 열거하여 상기 필터 드라이버가 로드되도록 구현하는 것을 특징으로 하는 USB 장치의 입출력 패킷 보호 방법.
  4. 제 1 항에 있어서, 상기 단계 b)에서,
    b-1) 제2 필터 드라이버 객체(Physical Filter Device Object; PiDO)를 생성하고 상기 제2 필터 드라이버 객체(PiDO)를 상기 USB 루트허브 장치를 위한 디바이스 객체(Physical Device Object; PDO)에 연결하여 입출력 패킷을 감시하는 단계를 더 포함하는 것을 특징으로 하는 USB 장치의 입출력 패킷 보호 방법.
  5. 제 4 항에 있어서, 상기 단계 b-1)에서,
    입출력 패킷 중 PnP(Plug and Play) 패킷을 감시하여, USB 버스 드라이버가 상기 USB 루트허브 장치에 대한 디바이스 객체(PDO)를 생성할 때, 상기 제2 필터 드라이버 객체(PiDO)를 생성하는 것을 특징으로 하는 USB 장치의 입출력 패킷 보호 방법.
  6. 제 5 항에 있어서, 상기 단계 b)에서,
    b-2) 상기 입출력 패킷이 상기 입출력 패킷에 상응하는 디바이스 스택에서 직접 상기 USB 호스트 컨트롤러를 위한 디바이스 객체(FDO)로 전달되는 경우, 상기 입출력 패킷을 상기 제1 필터 드라이버 객체(FiDO)로 전송하는 단계를 더 포함하는 것을 특징으로 하는 USB 장치의 입출력 패킷 보호 방법.
  7. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서, 상기 단계 d)에서,
    상기 입출력 패킷에 USB BUS 드라이버 계층에서 식별 가능한 식별자를 이식하는 단계를 포함하는 것을 특징으로 하는 USB 장치의 입출력 패킷 보호 방법.
  8. ⅰ) USB 버스 드라이버의 객체를 복사하여 복제 드라이버 객체를 생성하는 단계;
    ⅱ) 상기 복제 드라이버 객체에서 디스패치 루틴(Dispatch Routine)의 주소를 소정 루틴의 주소로 변경하여 후킹하는 단계;
    ⅲ) 상기 단계 ⅱ)에서 후킹된 상기 소정 루틴에서, USB 루트 허브 디바이스객체의 DriverObject 필드 값을 상기 복제 드라이버 객체를 가리키도록 변경하는 단계;
    ⅳ) 상기 단계 ⅱ)에서 후킹한 상기 소정 루틴으로 수신되는 입출력 패킷에 식별자가 존재하는지 여부를 판단하는 단계;
    ⅴ) 상기 판단 결과 상기 입출력 패킷에 상기 식별자가 존재하는 경우, 상기 입출력 패킷에 완료 루틴을 등록하는 단계; 및
    ⅵ) 상기 완료 루틴에서 상기 입출력 패킷을 소정 영역으로 복사하고, 상기 입출력 패킷을 임의의 값으로 교체하는 단계를 포함하는 것을 특징으로 하는 USB 장치의 입출력 패킷 보호 방법.
  9. 제 8 항에 있어서, 상기 DriverObject는,
    상기 USB 루트 허브 스택을 위한 디바이스 객체(PDO; Physical Device Object)에 포함된 것임을 특징으로 하는 USB 장치의 입출력 패킷 보호 방법.
  10. 제 9 항에 있어서, 상기 단계 ⅱ)의 소정 루틴은,
    복제 디스패치 InternalIoControl 인 것을 특징으로 하는 USB 장치의 입출력 패킷 보호 방법.
  11. (ㄱ) 각 USB 버스 드라이버의 각 디스패치 루틴을 후킹하는 단계;
    (ㄴ) 상기 디스패치 루틴으로 수신되는 입출력 패킷에 식별자가 존재하는지 여부를 판단하는 단계;
    (ㄷ) 상기 판단 결과 상기 입출력 패킷에 상기 식별자가 존재하는 경우, 상기 입출력 패킷에 완료 루틴을 등록하는 단계; 및
    (ㄹ) 상기 완료 루틴에서 상기 입출력 패킷을 소정 영역으로 복사하고 상기 입출력 패킷을 임의의 값으로 교체하는 단계를 포함하는 것을 특징으로 하는 USB 장치의 입출력 패킷 보호 방법.
  12. 제 10 항 또는 제 11 항에 있어서, 상기 디스패치 루틴은,
    상기 입출력 패킷이 통과하게 되는 모든 IRP(I/O Request Packet)를 처리하는 것을 특징으로 하는 USB 장치의 입출력 패킷 보호 방법.
  13. 제 10 항 또는 제 11 항에 있어서, 상기 방법은,
    상기 입출력 패킷에 USB BUS 드라이버 계층에서 식별 가능한 식별자를 이식하는 단계를 포함하는 것을 특징으로 하는 USB 장치의 입출력 패킷 보호 방법.
  14. 가) HID(Human Interface Bus) USB 키보드를 찾아 상기 HID USB 키보드를 제어하는 HID USB 드라이버의 필터 드라이버를 등록하고 상기 필터 드라이버를 로드하는 단계;
    나) 상기 필터 드라이버의 소정 루틴에서 상기 HID USB 키보드에 의해 발생한 입출력 패킷을 감시하는 단계;
    다) 상기 입출력 패킷을 감시하던 중에 상기 소정 루틴에서 URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER USB Function 요청을 감지하는 단계; 및
    라) 상기 입출력 패킷에 USB BUS 드라이버 계층에서 식별 가능한 식별자를 이식하는 단계를 포함하는 것을 특징으로 하는 USB 장치의 입출력 패킷 보호 방법.
  15. 제 14 항에 있어서, 상기 단계 가)에서,
    해당 키보드를 재 열거하여 함으로써 상기 필터 드라이버를 로드하는 것을 특징으로 하는 USB 장치의 입출력 패킷 보호 방법.
  16. 제 14 항 또는 제 15항에 있어서, 상기 소정 루틴은,
    상기 필터 드라이버에서 IRP_MJ_INTERNAL_DEVICE_CONTROL 요청을 처리하는 루틴인 것을 특징으로 하는 USB 장치의 입출력 패킷 보호 방법.
KR1020070074716A 2007-07-25 2007-07-25 Usb장치의 입출력 패킷 보호 방법 KR100901465B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020070074716A KR100901465B1 (ko) 2007-07-25 2007-07-25 Usb장치의 입출력 패킷 보호 방법
US12/670,608 US8230127B2 (en) 2007-07-25 2008-07-25 Method of protecting input/output packet of USB device and apparatus thereof
PCT/KR2008/004372 WO2009014402A2 (en) 2007-07-25 2008-07-25 Method of protecting input/output packet of usb device and apparatus thereof
EP08778941.8A EP2181394B1 (en) 2007-07-25 2008-07-25 Method of protecting input/output packet of usb device and apparatus thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070074716A KR100901465B1 (ko) 2007-07-25 2007-07-25 Usb장치의 입출력 패킷 보호 방법

Publications (2)

Publication Number Publication Date
KR20090011281A KR20090011281A (ko) 2009-02-02
KR100901465B1 true KR100901465B1 (ko) 2009-06-08

Family

ID=40281992

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070074716A KR100901465B1 (ko) 2007-07-25 2007-07-25 Usb장치의 입출력 패킷 보호 방법

Country Status (4)

Country Link
US (1) US8230127B2 (ko)
EP (1) EP2181394B1 (ko)
KR (1) KR100901465B1 (ko)
WO (1) WO2009014402A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7400080B2 (en) 2002-09-20 2008-07-15 Danfoss A/S Elastomer actuator and a method of making an actuator

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100985076B1 (ko) * 2008-04-16 2010-10-04 주식회사 안철수연구소 Usb 디바이스 보안 장치 및 방법
KR100986123B1 (ko) * 2008-06-16 2010-10-07 킹스정보통신(주) 유에스비 키보드의 보안방법
US9262147B1 (en) * 2008-12-30 2016-02-16 Google Inc. Recording client events using application resident on removable storage device
US9911109B2 (en) 2011-07-14 2018-03-06 Ecrebo Limited Method of enhancing point-of-sale systems
WO2014080659A1 (ja) * 2012-11-22 2014-05-30 Necカシオモバイルコミュニケーションズ株式会社 電子機器、ロック解除方法及びプログラム
US20150365237A1 (en) 2014-06-17 2015-12-17 High Sec Labs Ltd. Usb security gateway
CN105224876A (zh) * 2015-09-21 2016-01-06 山东超越数控电子有限公司 Usb接口数据的保护方法和装置、带usb接口的设备
US11113425B2 (en) * 2018-01-17 2021-09-07 Crowd Strike, Inc. Security component for devices on an enumerated bus
US10831712B2 (en) * 2018-04-27 2020-11-10 Crowdstrike, Inc. Identifying and correlating physical devices across disconnected device stacks
CN112052477B (zh) * 2020-08-31 2022-03-25 郑州信大捷安信息技术股份有限公司 基于便携式操作系统盘的隔离方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100537930B1 (ko) 2004-10-26 2005-12-20 소프트캠프(주) 유에스비 키보드를 통한 입력데이터의 보안방법과 이를구현하는 보안시스템
KR100577344B1 (ko) 2005-01-10 2006-05-10 주식회사 잉카인터넷 접근 통제 정책 설정시스템 및 그 방법
KR20060093932A (ko) * 2005-02-23 2006-08-28 제이알소프트 주식회사 윈도우즈 운영체제에서 보안 입력 필터 드라이버와 인터넷익스플로러 내부의 키보드 보안 입력 비에이치오를 통한 인터넷 익스플로러 사용자의 키보드 입력 정보 해킹 방지 방법
KR100696322B1 (ko) 2005-10-27 2007-03-19 닉스테크 주식회사 하드웨어 매체 접근제어 시스템 및 이를 이용한 하드웨어매체 접근제어 방법

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6073205A (en) * 1997-07-10 2000-06-06 National Instruments Corporation System and method of write posting in a universal serial bus system
US6421738B1 (en) * 1997-07-15 2002-07-16 Microsoft Corporation Method and system for capturing and encoding full-screen video graphics
US7409694B2 (en) * 1998-09-09 2008-08-05 Microsoft Corporation Highly componentized system architecture with loadable virtual memory manager
US6614420B1 (en) * 1999-02-22 2003-09-02 Microsoft Corporation Dual axis articulated electronic input device
US6674743B1 (en) * 1999-12-30 2004-01-06 3Com Corporation Method and apparatus for providing policy-based services for internal applications
US7212497B2 (en) * 2000-12-19 2007-05-01 Keys John S Method and driver for detecting glitches
US7779062B2 (en) * 2004-08-18 2010-08-17 Ripple Effects Holdings Limited System for preventing keystroke logging software from accessing or identifying keystrokes
US6978339B2 (en) * 2002-02-22 2005-12-20 Canon Kabushiki Kaisha Communication system and method of controlling same
US7232063B2 (en) * 2003-06-09 2007-06-19 Fujitsu Transaction Solutions Inc. System and method for monitoring and diagnosis of point of sale devices having intelligent hardware
TW200506637A (en) * 2003-08-07 2005-02-16 Ali Corp Host-to-host USB bridge
CN1918556A (zh) * 2004-02-05 2007-02-21 Kings情报通信 使用安全输入装置驱动器的计算机安全装置和方法
KR100549645B1 (ko) 2004-11-05 2006-02-06 소프트캠프(주) 키보드로 입력되는 데이터의 보안방법과 이를 구현하는보안시스템
JP2009517732A (ja) 2005-11-24 2009-04-30 ソフト−キャンプ カンパニー リミティッド Usbキーボードによる入力データの保安方法及び保安システム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100537930B1 (ko) 2004-10-26 2005-12-20 소프트캠프(주) 유에스비 키보드를 통한 입력데이터의 보안방법과 이를구현하는 보안시스템
KR100577344B1 (ko) 2005-01-10 2006-05-10 주식회사 잉카인터넷 접근 통제 정책 설정시스템 및 그 방법
KR20060093932A (ko) * 2005-02-23 2006-08-28 제이알소프트 주식회사 윈도우즈 운영체제에서 보안 입력 필터 드라이버와 인터넷익스플로러 내부의 키보드 보안 입력 비에이치오를 통한 인터넷 익스플로러 사용자의 키보드 입력 정보 해킹 방지 방법
KR100696322B1 (ko) 2005-10-27 2007-03-19 닉스테크 주식회사 하드웨어 매체 접근제어 시스템 및 이를 이용한 하드웨어매체 접근제어 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7400080B2 (en) 2002-09-20 2008-07-15 Danfoss A/S Elastomer actuator and a method of making an actuator

Also Published As

Publication number Publication date
EP2181394A4 (en) 2011-10-05
US8230127B2 (en) 2012-07-24
EP2181394A2 (en) 2010-05-05
WO2009014402A2 (en) 2009-01-29
EP2181394B1 (en) 2013-06-12
KR20090011281A (ko) 2009-02-02
WO2009014402A3 (en) 2009-04-02
US20100257284A1 (en) 2010-10-07

Similar Documents

Publication Publication Date Title
KR100901465B1 (ko) Usb장치의 입출력 패킷 보호 방법
EP3662385B1 (en) Secure storage device
US9081911B2 (en) Mediating communication of a universal serial bus device
KR100861104B1 (ko) 유에스비 키보드의 보안장치 및 그 방법
US20160373408A1 (en) Usb firewall devices
Tian et al. Making {USB} great again with {USBFILTER}
US8578477B1 (en) Secure computer system integrity check
JP2014509421A (ja) Usbホストシステムの拡張usbプロトコルスタックのためのセキュリティ手段
CN101840472A (zh) 外部存储装置及其控制方法
Schiffman et al. The smm rootkit revisited: Fun with usb
US20080313370A1 (en) Guarding Method For Input Data By Usb Keyboard and Guarding System
US8250263B2 (en) Apparatus and method for securing data of USB devices
KR100549645B1 (ko) 키보드로 입력되는 데이터의 보안방법과 이를 구현하는보안시스템
CN111417947B (zh) 用于车辆的单芯片系统
US10339082B2 (en) Technologies for stable secure channel identifier mapping for static and dynamic devices
EP1631910B1 (en) Access protected bus system
JP2018519591A (ja) データ処理デバイスおよび周辺デバイス間の通信を制御するための中間モジュール
WO2016209203A1 (en) Usb firewall devices
US8214896B2 (en) Method of securing USB keyboard
Abbasi et al. Ghost in the plc vs ghostbuster: on the feasibility of detecting pin control attack in programmable logic controllers
EP3663947B1 (en) Protected peripheral ports
RU2768196C9 (ru) Защищённое запоминающее устройство

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130603

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140602

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150601

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160601

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170601

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190603

Year of fee payment: 11