KR100985076B1 - Usb 디바이스 보안 장치 및 방법 - Google Patents

Usb 디바이스 보안 장치 및 방법 Download PDF

Info

Publication number
KR100985076B1
KR100985076B1 KR1020080035001A KR20080035001A KR100985076B1 KR 100985076 B1 KR100985076 B1 KR 100985076B1 KR 1020080035001 A KR1020080035001 A KR 1020080035001A KR 20080035001 A KR20080035001 A KR 20080035001A KR 100985076 B1 KR100985076 B1 KR 100985076B1
Authority
KR
South Korea
Prior art keywords
usb
data
input
irp
class driver
Prior art date
Application number
KR1020080035001A
Other languages
English (en)
Other versions
KR20090109640A (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 KR1020080035001A priority Critical patent/KR100985076B1/ko
Priority to US12/988,030 priority patent/US8250263B2/en
Priority to PCT/KR2009/001904 priority patent/WO2009128634A2/ko
Publication of KR20090109640A publication Critical patent/KR20090109640A/ko
Application granted granted Critical
Publication of KR100985076B1 publication Critical patent/KR100985076B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory

Abstract

본 발명은 USB 디바이스의 보안 장치 및 방법에 관한 것이다. 즉, 본 발명에서는 USB 디바이스의 데이터를 보호함에 있어서, USB 버스 클래스 드라이버의 임포트 테이블을 후킹하는 방법, 그리고 이 후킹 루틴에서 IRP를 판별하는 방법을 통해 USB 입/출력 요청 패킷을 가장 먼저 전달받는 USB 버스 클래스 드라이버 계층에서 USB 키보드를 포함한 모든 USB 디바이스의 입/출력 데이터를 보호함으로써, USB 디바이스의 입/출력 데이터를 원천적으로 안전하게 보호할 수 있다.
USB, 보안, 키보드, 후킹, IRP

Description

USB 디바이스 보안 장치 및 방법{APPARATUS AND METHOD FOR PROTECTING DATA IN USB DEVICES}
본 발명은 컴퓨터 보안 시스템에 관한 것으로, 특히 USB(Universal Serial Port) 포트를 통해 통신되는 USB 디바이스(device)들에 대해 호스트(host) (PC(Personal Computer) 포함) 단에서 USB 포트와 연결된 HID(Human Interface Device) USB 키보드(keyboard)를 포함한 모든 USB 디바이스들의 입력 데이터를 가장 먼저 전달받는 USB 버스 클래스 드라이버(bus class driver)의 임포트 테이블(import table)을 후킹(hooking)하는 방법을 통해 USB 디바이스들의 IRP를 판별하여 데이터를 보호하는 USB 디바이스 보안 장치 및 방법에 관한 것이다.
최근 들어, 인터넷(internet)을 통한 뱅킹(banking) 또는 증권 업무 등의 금융거래와, 이메일(e-mail) 또는 기밀사항이 포함된 데이터의 통신이 증가하면서 타인이 인터넷 통신보안의 취약점을 이용해 악의적인 목적으로 개인정보 또는 비밀정보 등을 빼내는 경우가 빈번하게 발생되어 왔다.
이와 같은 정보유출은 각종 스파이웨어(spy ware) 또는 해킹프로그램을 통해 이루어지고 있으며, 이들 중 대부분은 키보드와 같은 입력장치를 통해 입력되는 데이터를 중간에서 별도로 획득한 후 약속된 이메일 주소나 웹사이트(web site) 주소로 해당 데이터를 전송시키는 방식으로 이루어지고 있다.
종래에는 이러한 USB 키보드 장치의 입/출력을 제어 또는 보호하기 위해 도 1에 도시된 USB 키보드 구동을 위한 클라이언트 드라이버(112) 계층에 필터 드라이버(filter driver)(104)를 설치하거나 후킹 방법을 통해 키보드 보안을 구현하는 것이 일반적이었다.
또한, 최근 들어서는, 악성 코드들이 클라이언트 드라이버(112) 계층보다 하위 계층에서 동작하는 것들이 많아짐에 따라, USB 디바이스들에 대한 보안에 있어서도, 위와 같이 클라이언트 드라이버(112) 계층보다 하위 계층에서 동작하는 악성 코드들에 대응하기 위해 허브 드라이버(hub driver)(102)나 USB 버스 드라이버(bus driver)(100)를 후킹하는 기술을 통해 USB 디바이스들의 입/출력 데이터를 보호하는 프로그램이 개발되고 있다.
이때, 위와 같은 클라이언트 드라이버(112) 계층 보다 하위 계층인 허브 드라이버(102)나 USB 버스 드라이버(100)를 후킹하는 기술은 클라이언트 드라이버(112) 계층 보다 하위 계층에서 동작하는 악성 코드들에 대응하는데는 효과적이라 할 수 있으나, 여러 회사의 보안제품들이 같은 계층을 후킹함으로써 발생하는 충돌 문제와 언로드(unload)시 후킹한 함수를 복원시키는 과정에서 시스템 크래쉬(system crash)가 빈번히 발생하는 등 해결해야 하는 과제 또한 많았다. 또한, 위와 같이 단순히 하위 계층인 허브 드라이버(102)나 USB 버스 드라이버(100)를 후 킹하는 일반적으로 알려진 방법만으로는 점점 정교화되고 있는 악성 코드로부터 USB 디바이스들의 데이터를 보다 안정적으로 보호하기가 어려운 문제점이 있었다.
따라서 본 발명은 호스트(PC 포함) 단에서 USB 포트와 연결된 HID(Human Interface Device) USB 키보드를 포함한 모든 USB 장치들의 입력 데이터를 가장 먼저 전달받는 USB 버스 클래스 드라이버의 임포트 테이블을 후킹하는 방법을 통해 USB 장치의 입/출력 요청 패킷을 판별하여 해당 데이터를 보호하는 장치 및 방법을 제공하고자 한다.
상술한 본 발명은 USB 디바이스 보안장치로서, 다수의 USB 디바이스로부터 데이터를 입력받아 IRP를 완료시키는 USB 버스 클래스 드라이버와, USB 디바이스의 데이터 보호 모드시 상기 USB 버스 클래스 드라이버에 의한 입/출력 완료 요청(IoCompleteRequest) 함수의 호출 전에 USB 데이터가 입력되어 완료된 IRP로부터 실제 USB 디바이스의 데이터를 인터셉트하여 보안을 수행하는 USB 버스 클래스 드라이버 후킹 모듈을 포함한다.
또한, 본 발명은 USB 디바이스 보안 방법으로서, (a)USB 데이터 보호 모드시 USB 버스 클래스 드라이버내 임포트 테이블의 입/출력 완료 요청(IoCompleteRequest) 함수를 후킹하는 단계와, (b)상기 입/출력 완료 요청 함수 후킹을 통해 상기 USB 버스 클래스 드라이버에 의한 IRP의 완료를 인식하는 단계와, (c)상기 완료되는 IRP 중 보호하고자 하는 USB 디바이스의 데이터가 입력된 IRP를 판별하는 단계와, (d)상기 USB 데이터가 입력된 IRP로부터 실제 USB 디바이스의 데이터를 인터셉트하는 단계를 포함한다.
본 발명에서는 USB 디바이스의 데이터를 보호함에 있어서, USB 버스 클래스 드라이버의 임포트 테이블을 후킹하는 방법, 그리고 이 후킹 루틴에서 IRP를 판별하는 방법을 통해 USB 입력 데이터를 가장 먼저 전달받는 USB 버스 클래스 드라이버 계층에서 USB 키보드를 포함한 모든 USB 디바이스의 입/출력 데이터를 보호함으로써, USB 디바이스의 입/출력 데이터를 보다 안전하게 보호할 수 있는 이점이 있다.
이하, 첨부된 도면을 참조하여 본 발명의 동작 원리를 상세히 설명한다. 아래에서 본 발명을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 2는 본 발명의 실시 예에 따른 USB 디바이스들 중 USB 키보드에서 입력 데이터가 발생하여 처리되는 드라이버 계층 구조를 도시한 것으로, 본 발명에서는 설명의 편의상 USB 디바이스들 중 USB 키보드에 대한 데이터 보안 방법에 대해서 설명하나, USB 마우스(mouse), USB 저장장치(memory) 등과 같은 다양한 USB 디바이스들에 대해서도 동일하게 적용될 수 있음은 본 발명의 분야에서 통상의 지식을 가진 자에게 자명하다.
위 도 2를 참조하면, USB 키보드 연결을 위한 드라이버 계층 구조는, 사용자 프로그램(210)과 클라이언트 드라이버 계층인 키보드 클래스 드라이버(keyboard class driver)(110), 키보드 HID 드라이버(108), HID USB 드라이버(106), 필터 드라이버(filter driver)(104')와 허브 드라이버(102), USB 버스 드라이버(100) 등을 포함한다. USB 키보드(200)로부터 입력된 데이터는 USB 버스 드라이버(100), USB 허브 드라이버(102), HID USB 드라이버(106), 키보드 HID 드라이버(108), 키보드 클래스 드라이버(110)를 거쳐 사용자 프로그램(210)으로 전달된다.
이하, USB 키보드 입력 데이터를 처리하기 위한 장치 및 각 드라이버 계층에서의 동작을 상세히 설명하기로 한다. 먼저, 루트 허브(root hub)(202)는 USB 키보드(200), USB 마우스, USB 저장장치를 포함하는 다수의 USB 디바이스를 물리적으로 연결할 수 있는 포트(port)를 포함하며, USB 호스트 콘트롤러(host controller)(204)에 연결된다. USB 호스트 콘트롤러(204)는 PCI 버스(bus)를 통해 호스트(PC 포함)에 연결된다.
클라이언트 드라이버인 키보드 클래스 드라이버(110)와 키보드 HID 드라이 버(108)와 HID USB 드라이버(106)는 USB 키보드가 동작하기 위해 반드시 필요한 컴퓨터 운영체제(operating system)에서 제공하는 3가지 드라이버로, USB 키보드(200)로부터 입력되는 데이터를 사용자 프로그램(210)으로 전달하여 키보드 입력을 인식할 수 있도록 한다.
필터 드라이버(104')는 HID USB 드라이버(106)의 하위 계층에 구현되어, 사용자 프로그램(210)으로부터 USB 디바이스 데이터 전송을 위해 생성된 IRP(I/O Request Racket)에 보호하고자 하는 USB 디바이스에 따라 USB 키보드, USB 마우스, USB 저장장치로부터의 데이터 입력임을 인식할 수 있도록 IRP 포맷(format)을 변경한다.
즉, 필터 드라이버(104')는 사용자 프로그램(210)으로부터 내려오는 IRP를 수신하면, 이를 복사한 후, USB 버스 클래스 드라이버 후킹 모듈(hooking module)(208)에서 USB 키보드(200), 마우스, 저장장치로부터의 데이터를 위한 IRP 임을 알 수 있도록 식별자(identifier)를 삽입한 변경된 포맷의 IRP'를 생성하여 이를 USB 버스 드라이버(100)로 전송하여 준다.
이때, IRP의 유형을 구분하기 위해, 기존의 필터 드라이브(104)를 루트 허브(202) 상에 위치시키는 것도 생각할 수 있으나, 필터 드라이브(104)를 루트 허브(202) 상에 삽입하는 경우, 루트 허브(202)에 연결되는 USB 디바이스가 USB 키보드(200) 뿐만 아니라, USB 마우스와 USB 저장장치 등과 같이 다양한 디바이스가 연결될 수 있어, 루트 허브를 통해 입력되는 데이터가 USB 키보드 데이터인지, USB 마우스 데이터인지, USB 저장장치의 데이터인지를 구별하기가 쉽지 않으며, 데이터 량도 많게 되어 처리가 복잡해지는 문제점이 있다.
USB 버스 드라이버(100)는 호스트 컨트롤러(204)와 PCI 버스를 통해 연결되어 다수의 USB 디바이스로부터 입력된 데이터를 사용자 프로그램(210)으로부터 전송된 IRP에 실어 사용자 프로그램(210)으로 전송한다.
FDO(Fuctional Device Object)는 펑션(function) 드라이버가 H/W(hardware) 제어를 위해 생성하는 구조체이고, FIDO(Filter Device Object)는 키보드 클래스 드라이버(110), 키보드 HID 드라이버(108), 필터 드라이버(104') 등이 생성하는 구조체이다.
한편, 기존에 악의적인 프로그램이 위 클라이언트 드라이버 단에 후킹 모듈을 심거나, 또는 필터 드라이버(104)를 추가하여 키보드 데이터를 가로채는 식으로 해킹을 하게 된다.
이에 따라, 본 발명에서는 클라이언트 드라이버 계층 보다 하위 단인 USB 버스 드라이버(100)를 후킹하여 하위 단에서 동작하는 악성 코드들에 대해 효과적인 대응하고자 한다. 이때 USB 버스 드라이버(100)내 USB 버스 클래스 드라이버에 후킹 모듈(208)을 설치하는 경우 USB 버스 클래스 드라이버의 입/출력 관련 함수를 후킹하여 주소 하나만을 바꾸는 방식으로 간단하게 중요한 입력 데이터를 보호할 수 있도록 한다.
즉, USB 버스 클래스 드라이버 후킹 모듈(208)은 USB 디바이스들 중 USB 키보드 데이터 보호 모드시 USB 버스 클래스 드라이버의 입/출력 관련 함수인 입/출력 완료 요청(IoCompleteRequest) 함수의 주소를 후킹하여, USB 버스 클래스 드라 이버(300)에 의한 IoCompleteRequest 함수의 호출 전에 키보드 데이터가 입력되어 완료된 IRP로부터 실제 USB 키보드 데이터를 인터셉트하여 키보드 데이터를 보호함으로써, 간단하게 USB 키보드에 대한 보안을 수행하게 된다. USB 버스 클래스 드라이버 후킹 모듈(208)에서의 IoCompleteRequest 함수 후킹 동작에 대해서는 후술되는 도 3 및 도 4의 설명에서 보다 상세히 설명하기로 한다.
도 3은 USB 버스 드라이버의 상세 내부 구성도로, USB 버스 드라이버는 미니포트 드라이버(miniport driver)(302, 304, 306)와, USB 버스 클래스 드라이버(300)를 포함한다.
통상 컴퓨터에서 USB 디바이스의 연결을 위해서는 2개의 호스트 콘트롤러가 존재하며, 이들을 제어하는 드라이버는 uhci(usb host controller interface) 타입, ohci(open host controller interface) 타입, ehci 타입의 3종류가 존재한다. 이때 PCI 버스 드라이버(206)가 PCI 버스에 연결된 호스트 콘트롤러를 하나씩 찾을 때마다 FDO, PDO 데이터 구조체를 만들게 된다. 미니포트 드라이버(302, 304, 306)는 하드웨어 특성화된 작업을 다루는 드라이버로, 호스트 콘트롤러의 타입에 따라 세 가지의 드라이버(usbuhci, usbohci, usbehci)로 구성되어 각 호스트 콘트롤러를 제어하며, USB 키보드를 포함한 다양한 USB 디바이스로부터 데이터 값이 입력되는 경우 데이터가 입력되었음을 노티피케이션(notification)(307)을 통해 USB 버스 클래스 드라이버(300)로 알린다.
USB 버스 클래스 드라이버(300)는 USB 키보드 디바이스로부터 데이터 입력의 경우, 사용자 영역의 사용자 프로그램(210)으로부터 USB 입력 데이터를 요청하는 IRP(I/O Request Packet) 수신하여 가지고 있다가, USB 데이터 입력이 들어오면 IRP의 특정 영역에 USB 데이터 값을 넣어서 완료시킨다. 이때, USB 버스 클래스 드라이버(300)는 OS 함수 중 하나인 IoCompleteRequest 함수를 호출하여 USB 데이터 입력을 완료시키게 된다. 그러면, USB 버스 클래스 드라이버(300)에 의해 호출된 IoCompleteRequest 함수(400)는 도 4에서 도시된 바와 같이 HID USB 드라이버(106), 필터 드라이버(104'), 허브 드라이버(102)들이 각각 등록한 콜백 함수(call back function)(402)를 차례로 호출하여 IRP가 완료되었음을 알리게 된다.
위와 같은 USB 버스 클래스 드라이버(300)의 동작 특성을 이용하여, 종래에는 데이터 후킹을 위한 콜백 함수(404)를 도 4에서 보여지는 바와 같이 다른 드라이버들의 콜백함수(402) 보다 더 하위 단에 등록하여 IoCompleteRequest 함수에 의해 키보드 데이터가 완료될 때 제일 먼저 호출되도록 함으로써, 키 값을 빼내는 것이 해킹의 한 방법이었다.
이러한 해킹을 방지하기 위해, 본 발명에서는 USB 버스 클래스 드라이버(300)의 입/출력 관련 함수인 IoCompleteRequest 함수의 주소를 후킹하여, USB 버스 클래스 드라이버(300)에 의한 IoCompleteRequest 함수의 호출 전에 USB 디바이스 데이터가 입력되어 완료된 IRP로부터 실제 USB 디바이스 데이터를 인터셉트하여 USB 디바이스의 데이터를 보호하고자 하는 것이다. 예를 들어, USB 버스 클래스 드라이버(300)가 IoCompleteRequest 함수를 포함한 OS 함수를 10개를 쓴다고 하면, 10개에 대한 주소가 USB 버스 클래스 드라이버(300)의 임포트 테이블(308)에 차례대로 들어가 있게 된다. 따라서 임포트 테이블내 IoCompleteRequest 함수의 주 소를 후킹 모듈의 주소로 수정함으로써, IoCompleteRequest 함수가 호출되기 전에 후킹 모듈(208)이 먼저 호출되도록 하고 나중에 원본 IoCompleteRequest 함수를 호출해주는 방식으로 키데이터를 후킹하게 된다.
즉, USB 버스 클래스 드라이버 후킹 모듈(208)은, USB 디바이스 중 예를 들어 USB 키보드 데이터 보호 모드시 USB 버스 클래스 드라이버(300)내 임포트 테이블(308)에서 IoCompleteRequest 함수의 주소를 자신의 주소로 변경하는 것에 의해 IoCompleteRequest 함수를 후킹하여, 상기 USB 버스 클래스 드라이버(300)에 의한 IoCompleteRequest 함수의 호출 전에 자신이 먼저 호출되도록 한다.
이어, USB 키보드 데이터가 입력되어 완료된 IRP로부터 실제 USB 키보드 데이터를 가로채고, 임의의 값을 삽입한 후, 상기 IoCompleteRequest 함수를 호출하여 키보드 데이터 보안을 수행하는 것이다. 이때, 후킹모듈은, 상기 IRP로부터 인터셉트한 USB 키보드 데이터에 대해서는 전용 보안모듈을 통해 암호화하여 사용자 프로그램으로 전송하거나 또는 네트워크를 통해 필요한 다른 서버로 전송하게 된다.
도 5는 본 발명의 실시 예에 따른 USB 디바이스들의 입/출력 데이터를 처리하는 하위 계층인 USB 버스 드라이버(100) 단에서 키보드 데이터를 후킹하는 동작 제어 흐름을 도시한 것이다.
이하 도 2, 도 3, 도 4 및 도 5를 참조하여 본 발명의 실시 예를 상세히 설명하기로 한다. 본 발명의 설명에 있어서는 설명의 편의상 USB 디바이스들 중 USB 키보드에 대한 데이터 보안 동작을 설명하나, USB 마우스, USB 저장장치 등과 같은 다양한 USB 디바이스들에 대해서도 동일하게 적용될 수 있음은 본 발명의 분야에서 통상의 지식을 가진 자에게 자명하다.
먼저, 예를 들어 컴퓨터를 이용하여 은행 서버로 뱅킹 서비스를 위한 비밀번호를 입력하는 등과 같이 사용자가 키보드를 통해 중요한 데이터를 입력하게 되는 경우, 본 발명에 따라 키보드 데이터 보안을 위해 컴퓨터에 설치된 USB 버스 클래스 드라이버 후킹 모듈(208)에서 키보드 데이터를 보호해야하는 시점으로 인식하게 된다.
즉, 예를 들어 사용자가 비밀번호 입력을 위해 컴퓨터 사용자 프로그램 화면상 비밀번호 입력창에 커서를 위치시키는 경우 컴퓨터에 설치된 USB 버스 클래스 드라이버 후킹 모듈(208)은 커서가 비밀번호 입력창에 위치됨을 통보받아 키보드 데이터의 보호 시점으로 인식하게 되는 것이다. 여기서, 비밀번호 입력창은 아이디(ID) 입력창, 계좌번호 입력창, 또는 주민번호 입력창으로도 구현할 수 있다.
에 커서가 위치하는 경우 USB 데이터 보호모드를 실행시키는 USB 디바이스 보안장치.
위와 같이, 키보드 데이터 보호를 시점을 인식하는 경우 USB 버스 클래스 드라이버 후킹 모듈(208)은 (S500)단계에서 키보드 데이터 보호 모드로 설정되어 이후 사용자에 의해 USB 키보드를 통해 입력되는 키보드 데이터 보호를 하기 위해 단계별로 동작을 수행하게 된다.
즉, USB 버스 클래스 드라이버 후킹 모듈(208)은 (S502)단계로 진행해서 시스템에 존재하는 USB 버스 클래스 드라이버(300)의 이미지(Image) 파일로부터 임포트 테이블(308)내 키보드 데이터가 완료될 때 호출되는 OS 함수인 IoCompleteRequest 함수가 위치한 오프셋(offset)값을 계산한다.
이때, 임포트 테이블(308)이라 함은 전술한 바와 같이, USB 버스 클래스 드 라이버(300)가 필요한 동작을 수행하기 위해 호출하는 OS 함수들의 주소를 적은 테이블로서, USB 키보드 데이터가 입력 완료될 때 호출되는 IoCompleteRequest 함수의 주소 정보도 포함하고 있는데, (S502)단계에서 후킹 모듈(208)은 상기 IoCompleteRequest 함수의 주소 정보가 위치한 임포트 테이블(308)내 오프셋 값을 구하는 것이다. 이와 같이 임포트 테이블(308)내 IoCompleteRequest 함수의 주소 정보가 위치한 오프셋 값을 구하는 것은 악의적 공격으로부터 IoCompleteRequest 함수의 주소 정보가 위치한 주소가 변경되어 미리 알고 있는 IoCompleteRequest 함수의 주소 정보가 위치한 주소만으로는 임포트 테이블(308)내 IoCompleteRequest 함수를 검색하는 것이 어렵게 되는 것을 방지하기 위한 것이다.
한편, 위와 같이 임포트 테이블(308)내 IoCompleteRequest 함수의 주소 정보가 위치한 오프셋 값을 구한 경우, USB 버스 클래스 드라이버 후킹 모듈(208)은 (S504)단계로 진행해서 메모리상에 로드된 USB 버스 클래스 드라이버(300) 모듈에서 실제 임포트 테이블의 주소를 구하고, 상기 구한 오프셋 값을 이용하여 임포트 테이블(208)내 실제 IoCompleteRequest 함수의 주소 정보가 위치한 주소를 구하게 되어 실제 IoCompleteRequest 함수의 주소 정보를 얻을 수 있다.
이어, USB 버스 클래스 드라이버 후킹 모듈(208)은 (S506)단계에서 임포트 테이블(308)내 IoCompleteRequest 함수의 주소 정보를 후킹 모듈의 주소 정보로 변환시킨다.
이에 따라, 루트 허브(202)에 연결된 USB 키보드(200), USB 마우스, 또는 USB 메모리 저장장치로부터 데이터 입력이 발생하여 IRP가 완료되는 경우 USB 버스 클래스 드라이버(300)에 의해 IoCompleteRequest 함수가 호출되어 상기 IoCompleteRequest 함수에 등록된 콜백 함수(402)가 차례로 호출되는 대신, USB 데이터 보호를 위한 본 발명의 후킹 모듈(208)이 먼저 호출되어 USB 데이터 입력이 완료됨이 USB 버스 클래스 드라이버(300)를 통해 제일 먼저 USB 버스 클래스 드라이버 후킹 모듈(208)로 통보된다.
그러면, USB 버스 클래스 드라이버 후킹 모듈(208)은 (S508)단계에서 USB 버스 클래스 드라이버(300)로부터 입력 완료되는 IRP 중 필터 드라이버(104')에 의해 미리 삽입된 식별자를 이용하여 USB 키보드 데이터를 포함한 IRP를 판별하고, (S510)단계로 진행해서 상기 키보드 데이터를 포함한 IRP를 암호화한 후, 메모리상 소정 영역에 복사하여 필요한 사용자 프로그램이나, 인터넷상 다른 네트워크 서버로 전송하게 된다.
이때, 상기 데이터 입력이 완료된 IRP 중 USB 키보드 데이터를 포함하는 IRP를 판별함에 있어서는, 전술한 바와 같이, IRP가 사용자 프로그램(210)로부터 USB 버스 드라이버(100)로 전송되는 과정에서, 필터 드라이버(104')가 IRP를 수신한 후, 키보드 데이터를 위한 IRP에 대해 후킹 모듈(208)이 USB 키보드 데이터임을 인식할 수 있는 식별자를 삽입하여 USB 버스 드라이버(100)로 전송하게 되며, USB 버스 클래스 드라이버 후킹 모듈(208)은 데이터 입력이 완료되는 IRP를 검사하여 필터 드라이버(104')에 의해 입력된 식별자를 포함하는 IRP를 USB 키보드 데이터가 입력된 IRP로 판별하게 되는 것이다.
위와 같이 (S510)단계에서 USB 키보드 데이터 포함한 IRP에서 사용자가 실제 입력한 USB 키보드 데이터 값을 인터셉트한 후킹 모듈(208)은 (S512)단계에서, 상기 원래 USB 키보드 데이터값을 포함했던 IRP에 USB 키보드 데이터 값으로 임의의 의미 없는 값을 채워 사용자 프로그램으로 전송시킴으로써, USB 키보드 데이터가 사용자 프로그램으로 전송되는 과정에서 드라이버들에 악의적으로 삽입된 악의적인 후킹 함수에 의해 유출되는 것을 방지시킬 수 있게 된다.
이어, USB 버스 클래스 드라이버 후킹 모듈(208)은 (S514)단계에서 USB 키보드 데이터에 대한 보호 모드가 해제되는지 여부를 검사한 후, 예를 들어 사용자가 컴퓨터 화면상 비밀번호 입력창에서 비밀번호 입력을 종료하여 커서를 보안 필요하지 않은 다른 창으로 이동시키는 경우 등과 같이 더 이상 키보드 데이터에 대한 보호가 필요하지 않은 것으로 판단하는 경우에는 (S516)단계로 진행해서 USB 키보드 데이터에 대한 보호 모드를 해제하고, USB 버스 클래스 드라이버(300)의 임포트 테이블(308)내 IoCompleteRequest 함수의 주소를 원래대로 복원시키게 된다.
상기한 바와 같이 본 발명에서는 USB 디바이스들에 대한 보안을 수행함에 있어서, USB 버스 클래스 드라이버의 임포트 테이블을 후킹하는 방법, 그리고 이 후킹 루틴에서 IRP를 판별하는 방법을 통해 USB 입력 데이터를 가장 먼저 전달받는 USB 버스 클래스 드라이버 계층에서 USB 키보드를 포함한 모든 USB 디바이스의 입/출력 데이터를 보호함으로써, USB 디바이스의 입/출력 데이터를 보다 안전하게 보호할 수 있게 된다.
한편 상술한 본 발명의 설명에서는 구체적인 실시 예에 관해 설명하였으나, 여러 가지 변형이 본 발명의 범위에서 벗어나지 않고 실시될 수 있다. 따라서 발명 의 범위는 설명된 실시 예에 의하여 정할 것이 아니고 특허청구범위에 의해 정하여져야 한다.
도 1은 종래 USB 디바이스 데이터를 위한 드라이버 계층 구조도,
도 2는 본 발명의 실시 예에 따른 USB 디바이스 데이터 보안을 위한 드라이버 계층 구조도,
도 3은 본 발명의 실시 예에 따른 USB 버스 드라이버의 내부 구조도,
도 4는 본 발명의 실시 예에 따른 USB 버스 드라이버단에서 USB 데이터 후킹 동작 개념도,
도 5는 본 발명의 실시 예에 따른 USB 버스 클래스 드라이버 후킹 모듈에서 USB 데이터 보호를 위한 동작 제어 흐름도.
<도면의 주요 부호에 대한 간략한 설명>
100 : USB 버스 드라이버 104' : 필터 드라이버
106 : HID USB 드라이버 108 : 키보드 HID 드라이버
110 : 키보드 클래스 드라이버 200 : USB 키보드
202 : 루트 허브 204 : 호스트 콘트롤러
208 : 후킹 모듈 210 : 사용자 프로그램
300 : USB 버스 클래스 드라이버
302, 304, 306 : 미니포트 드라이버

Claims (24)

  1. USB 디바이스 보안장치로서,
    다수의 USB 디바이스로부터 데이터를 입력받아, IRP(I/O Request Packet)를 완료시키는 USB 버스 클래스 드라이버와,
    상기 USB 디바이스의 데이터 보호 모드시 상기 USB 버스 클래스 드라이버에 의한 입/출력 완료 요청(IoCompleteRequest) 함수의 호출 전에 상기 IRP로부터 상기 데이터를 인터셉트하여 보안을 수행하는 USB 버스 클래스 드라이버 후킹 모듈
    을 포함하는 USB 디바이스 보안장치.
  2. 제 1 항에 있어서,
    상기 USB 버스 클래스 드라이버 후킹 모듈은,
    상기 데이터 보호 모드시에 USB 버스 드라이버내 임포트 테이블에서 상기 입/출력 완료 요청 함수를 후킹하여, 상기 USB 버스 클래스 드라이버에 의한 입/출력 완료 요청 함수의 호출 전에 USB 데이터가 입력되어 완료된 IRP로부터 실제 USB 데이터를 인터셉트하고, 임의의 디폴트(default) 값을 삽입한 후, 상기 입/출력 완료 요청 함수를 호출하여 USB 데이터 보안을 수행하는 USB 디바이스 보안장치.
  3. 제 2 항에 있어서,
    상기 USB 버스 클래스 드라이버 후킹 모듈은,
    상기 임포트 테이블에서 상기 입/출력 완료 요청 함수의 주소를 자신의 주소로 변경하는 USB 디바이스 보안장치.
  4. 제 1 항에 있어서,
    상기 USB 버스 클래스 드라이버 후킹 모듈은,
    상기 IRP로부터 인터셉트한 상기 데이터에 대해서는 전용 보안모듈을 통해 암호화하여 사용자 프로그램으로 전송하거나 또는 네트워크를 통해 필요한 다른 서버로 전송하는 USB 디바이스 보안장치.
  5. 제 2 항에 있어서,
    상기 USB 버스 클래스 드라이버 후킹 모듈은,
    컴퓨터 메모리상에 로드된 상기 USB 버스 클래스 드라이버의 동작 프로그램 이미지파일로부터 상기 임포트 테이블내 상기 입/출력 완료 요청 함수가 위치한 오프셋값을 계산하여 상기 입/출력 완료 요청 함수를 검색하는 USB 디바이스 보안장치.
  6. 제 2 항에 있어서,
    상기 USB 버스 클래스 드라이버 후킹 모듈은,
    상기 입/출력 완료 요청 함수의 미리 알려진 주소값을 이용하여 상기 임포트 테이블내 상기 입/출력 완료 요청 함수를 검색하는 USB 디바이스 보안장치.
  7. 제 3 항에 있어서,
    상기 USB 버스 클래스 드라이버 후킹 모듈은,
    상기 데이터 보호 모드의 해제 시에는 상기 임포트 테이블에서 상기 입/출력 완료 요청 함수의 주소를 후킹 전 원래 주소로 복원시키는 USB 디바이스 보안장치.
  8. 제 2 항에 있어서,
    상기 USB 버스 클래스 드라이버 후킹 모듈은,
    컴퓨터상 실행되는 사용자 프로그램 화면 중 아이디(ID), 비밀번호, 계좌번호 또는 주민번호의 입력창에 커서가 위치하는 경우 이를 인식하여 USB 데이터 보호모드를 실행시키는 USB 디바이스 보안장치.
  9. 제 1 항에 있어서,
    상기 데이터의 전송을 위한 상기 IRP에 대해 어떤 USB 디바이스의 입/출력에 대한 IRP인지를 인식할 수 있도록 IRP 포맷을 변경하는 필터 드라이버를 더 포함하는 USB 디바이스 보안장치.
  10. 제 9 항에 있어서,
    상기 필터 드라이버는,
    상기 IRP에 어떤 USB 디바이스로부터의 입력데이터 인지를 인식할 수 있는 식별자를 삽입하는 USB 디바이스 보안장치.
  11. 제 10 항에 있어서,
    상기 USB 버스 클래스 드라이버 후킹 모듈은,
    상기 데이터의 입력이 완료된 IRP 중 상기 필터 드라이버에 의해 상기 식별자가 삽입된 상기 IRP를 USB 데이터를 포함한 IRP로 인식하고, 해당 IRP로부터 실제 USB 데이터를 인터셉트하는 USB 디바이스 보안장치.
  12. 제 11 항에 있어서,
    상기 USB 데이터는,
    USB 키보드, USB 마우스 또는 USB 저장장치로부터의 입/출력 데이터인 USB 디바이스 보안장치.
  13. USB 디바이스 보안 방법으로서,
    (a)USB 데이터 보호 모드시 USB 버스 클래스 드라이버내 임포트 테이블의 입/출력 완료 요청(IoCompleteRequest) 함수를 후킹하는 단계와,
    (b)상기 입/출력 완료 요청 함수의 후킹을 통해 상기 USB 버스 클래스 드라이버에 의한 IRP의 완료를 인식하는 단계와,
    (c)완료된 상기 IRP 중 보호하고자 하는 USB 데이터가 입력된 IRP를 판별하는 단계와,
    (d)상기 USB 데이터가 입력된 IRP로부터 실제 USB 데이터를 인터셉트하는 단계
    를 포함하는 USB 디바이스 보안 방법.
  14. 제 13 항에 있어서,
    상기 (a)단계는,
    (a1)상기 임포트 테이블내 입/출력 완료 요청 함수를 검색하는 단계와,
    (a2)검색된 상기 입/출력 완료 요청 함수의 주소를 상기 USB 버스 클래스 드라이버를 후킹하는 후킹 모듈의 주소로 변경시키는 단계
    를 포함하는 USB 디바이스 보안 방법.
  15. 제 14 항에 있어서,
    상기 (a1)단계에서, 상기 입/출력 완료 요청 함수의 검색은,
    컴퓨터 메모리상 로드된 상기 USB 버스 클래스 드라이버의 동작 프로그램 이미지 파일로부터 상기 임포트 테이블내 상기 입/출력 완료 요청 함수가 위치한 오프셋 값을 계산하여 수행하는 USB 디바이스 보안 방법.
  16. 제 14 항에 있어서,
    상기 (a1)단계에서, 상기 입/출력 완료 요청 함수의 검색은,
    상기 입/출력 완료 요청 함수의 미리 알려진 임포트 테이블내 주소값을 이용하여 수행하는 USB 디바이스 보안 방법.
  17. 제 13 항에 있어서,
    상기 (b)단계에서, 상기 IRP는, 다수의 USB 디바이스로부터의 입력 USB 데이터를 얻기 위해 상기 USB 버스 클래스 드라이버로 전송되는 패킷으로, 상기 USB 버스 클래스 드라이버에 의해 완료되어 사용자 프로그램으로 반송되는 USB 디바이스 보안 방법.
  18. 제 17 항에 있어서,
    상기 IRP 중 상기 USB 데이터의 전송을 위해 생성된 IRP에는 보호하고자 하는 USB 데이터임을 인식할 수 있는 식별자가 포함되는 USB 디바이스 보안 방법.
  19. 제 18 항에 있어서,
    상기 (c)단계에서, 상기 USB 데이터가 입력된 IRP의 판별은,
    상기 IRP에 포함된 상기 식별자의 검출을 통해 수행하는 USB 디바이스 보안 방법.
  20. 제 13 항에 있어서,
    상기 (d)단계에서, 인터셉트한 상기 USB 데이터는,
    메모리상 소정영역에 복사된 후, 전용 보안모듈을 통해 암호화되어 상위 사용자 프로그램으로 전송되거나 또는 네트워크를 통해 필요한 다른 서버로 전송되는 USB 디바이스 보안 방법.
  21. 제 13 항에 있어서,
    상기 (d)단계이후, (e)상기 USB 데이터를 인터셉트한 IRP에는 임의의 디폴트 데이터를 삽입하는 단계를 더 포함하는 USB 디바이스 보안 방법.
  22. 제 13 항에 있어서,
    상기 USB 디바이스 보안 방법은,
    (f)상기 USB 데이터 보호 모드의 해제 시에는 상기 입/출력 완료 요청 함수의 주소를 후킹전 원래 주소로 복원시키는 단계를 더 포함하는 USB 디바이스 보안 방법.
  23. 제 13 항에 있어서,
    상기 (a)단계의 상기 USB 데이터 보호 모드는,
    컴퓨터상 실행되는 사용자 프로그램 화면 중 아이디(ID), 비밀번호, 계좌번호 또는 주민번호의 입력창에 커서가 위치하는 경우 실행되는 USB 디바이스 보안 방법.
  24. 제 13 항에 있어서,
    상기 (c)단계의 상기 USB 데이터는,
    상기 USB 버스 클래스 드라이버로 인가되는 USB 키보드, USB 마우스 또는 USB 저장장치로부터의 입/출력 데이터인 USB 디바이스 보안 방법.
KR1020080035001A 2008-04-16 2008-04-16 Usb 디바이스 보안 장치 및 방법 KR100985076B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020080035001A KR100985076B1 (ko) 2008-04-16 2008-04-16 Usb 디바이스 보안 장치 및 방법
US12/988,030 US8250263B2 (en) 2008-04-16 2009-04-14 Apparatus and method for securing data of USB devices
PCT/KR2009/001904 WO2009128634A2 (ko) 2008-04-16 2009-04-14 Usb 디바이스 보안 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080035001A KR100985076B1 (ko) 2008-04-16 2008-04-16 Usb 디바이스 보안 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20090109640A KR20090109640A (ko) 2009-10-21
KR100985076B1 true KR100985076B1 (ko) 2010-10-04

Family

ID=41199558

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080035001A KR100985076B1 (ko) 2008-04-16 2008-04-16 Usb 디바이스 보안 장치 및 방법

Country Status (3)

Country Link
US (1) US8250263B2 (ko)
KR (1) KR100985076B1 (ko)
WO (1) WO2009128634A2 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090118021A (ko) * 2009-10-28 2009-11-17 이상규 모니터를 구비한 '휴대용 보조기억장치'와 이의 자료보호 방법
CN102081581B (zh) * 2010-10-01 2013-10-30 威盛电子股份有限公司 电源管理系统及方法
CN102902910B (zh) * 2011-07-28 2013-10-23 腾讯科技(深圳)有限公司 驱动保护方法及系统
KR101662162B1 (ko) * 2016-03-18 2016-10-10 주식회사 블랙포트시큐리티 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법
KR102387657B1 (ko) 2017-08-23 2022-04-19 삼성전자주식회사 Usb 인터페이스를 통해 외부 장치와 연결하는 방법 및 그를 위한 전자 장치
US11681798B2 (en) 2019-10-31 2023-06-20 Kyndryl, Inc. Security screening of a universal serial bus device

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080036699A (ko) * 2006-10-24 2008-04-29 주식회사 하우리 키보드 보안 방법 및 상기 방법을 이용한 키보드 보안드라이버를 기록한 기록 매체

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100378586B1 (ko) * 2001-08-29 2003-04-03 테커스 (주) 엑티브엑스 기반의 키보드 해킹 방지 방법 및 장치
US7472272B2 (en) * 2003-01-23 2008-12-30 Verdasys, Inc. Digital asset usage accountability via event journaling
KR100537930B1 (ko) 2004-10-26 2005-12-20 소프트캠프(주) 유에스비 키보드를 통한 입력데이터의 보안방법과 이를구현하는 보안시스템
US20070043605A1 (en) * 2005-05-09 2007-02-22 Aztec Pacific Incorporated System and method for time management and attributions
KR100901465B1 (ko) * 2007-07-25 2009-06-08 주식회사 안철수연구소 Usb장치의 입출력 패킷 보호 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080036699A (ko) * 2006-10-24 2008-04-29 주식회사 하우리 키보드 보안 방법 및 상기 방법을 이용한 키보드 보안드라이버를 기록한 기록 매체

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
카달로그(2003)*

Also Published As

Publication number Publication date
WO2009128634A3 (ko) 2011-02-10
KR20090109640A (ko) 2009-10-21
US20110047305A1 (en) 2011-02-24
WO2009128634A2 (ko) 2009-10-22
US8250263B2 (en) 2012-08-21

Similar Documents

Publication Publication Date Title
US11558405B2 (en) Real-time prevention of malicious content via dynamic analysis
EP3123311B1 (en) Malicious code protection for computer systems based on process modification
US11409884B2 (en) Security profiling of system firmware and applications from an OOB appliance at a differentiated trust boundary
KR100861104B1 (ko) 유에스비 키보드의 보안장치 및 그 방법
CN112513857A (zh) 可信执行环境中的个性化密码安全访问控制
EP3198516B1 (en) Method for privileged mode based secure input mechanism
JP4159100B2 (ja) 情報処理装置による通信を制御する方法およびプログラム
US9886576B2 (en) Security box
JP2010160791A (ja) コンテキストアウェアによるリアルタイムコンピュータ保護システムおよび方法
EP2181394B1 (en) Method of protecting input/output packet of usb device and apparatus thereof
KR100985076B1 (ko) Usb 디바이스 보안 장치 및 방법
CN105122260A (zh) 到安全操作系统环境的基于上下文的切换
US20210312077A1 (en) Securing sensitive user data stored locally by an application
JP2009517732A (ja) Usbキーボードによる入力データの保安方法及び保安システム
RU2634168C1 (ru) Система и способ блокирования доступа к защищаемым приложениям
US8732821B1 (en) Method and apparatus for preventing accidential disclosure of confidential information via visual representation objects
CN110659478B (zh) 在隔离的环境中检测阻止分析的恶意文件的方法
KR100537930B1 (ko) 유에스비 키보드를 통한 입력데이터의 보안방법과 이를구현하는 보안시스템
JP6911723B2 (ja) ネットワーク監視装置、ネットワーク監視方法及びネットワーク監視プログラム
US8214896B2 (en) Method of securing USB keyboard
US20180225468A1 (en) System and method for selecting a data entry mechanism during application creation
KR100961148B1 (ko) Usb 디바이스의 입력 데이터 보안 방법 및 장치
US8566950B1 (en) Method and apparatus for detecting potentially misleading visual representation objects to secure a computer
RU2634176C1 (ru) Система и способ обнаружения вредоносного приложения путем перехвата доступа к отображаемой пользователю информации
JP6687844B2 (ja) マルウエア解析装置、マルウエア解析方法及びマルウエア解析プログラム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20130930

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140929

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150929

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160928

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170928

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180928

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190930

Year of fee payment: 10