KR100846123B1 - 키보드 보안 방법 및 상기 방법을 이용한 키보드 보안드라이버를 기록한 기록 매체 - Google Patents

키보드 보안 방법 및 상기 방법을 이용한 키보드 보안드라이버를 기록한 기록 매체 Download PDF

Info

Publication number
KR100846123B1
KR100846123B1 KR1020060103248A KR20060103248A KR100846123B1 KR 100846123 B1 KR100846123 B1 KR 100846123B1 KR 1020060103248 A KR1020060103248 A KR 1020060103248A KR 20060103248 A KR20060103248 A KR 20060103248A KR 100846123 B1 KR100846123 B1 KR 100846123B1
Authority
KR
South Korea
Prior art keywords
security
keyboard
irp
driver
function
Prior art date
Application number
KR1020060103248A
Other languages
English (en)
Other versions
KR20080036699A (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 KR1020060103248A priority Critical patent/KR100846123B1/ko
Publication of KR20080036699A publication Critical patent/KR20080036699A/ko
Application granted granted Critical
Publication of KR100846123B1 publication Critical patent/KR100846123B1/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
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 키보드 입력 데이터가 외부로 유출되는 것을 차단하는 키보드 보안 방법 및 상기 방법을 적용한 키보드 보안 드라이버 프로그램에 관한 것이다. 상기 키보드 보안 방법이 적용된 키보드 보안 드라이버 프로그램은 USB 허브 드라이버의 입출력 요청 패킷(IRP)의 디스패치 테이블의 호출 함수를 새로 설정된 보안용 함수들로 변경시키고 IRP의 완료 루틴을 수정하여 USB 제어블록(USB Request Block;URB)을 가로채고 그 내용을 분석하는 것을 특징으로 한다. 상기 키보드 보안 드라이버는 USB 허브 드라이버의 IRP 디스패치 테이블 중 IRP_MJ_INTERNAL_DEVICE_CONTROL에 대한 호출 함수는 보안용 장치 제어 함수로 변경시키며, USB 허브 드라이버의 IRP 디스패치 테이블 중 IRP_MJ_PNP에 대한 호출 함수는 보안용 디바이스 연결 해지 처리 함수로 변경시킨다. 상기 키보드 보안 드라이버는 보호할 디바이스 목록에 대한 정보를 저장한 보호 디바이스 목록 데이터베이스를 구비한다. 본 발명에 의하여 시스템의 최하단인 USB 허브 드라이버의 IRP 디스패치 테이블을 변경시키고 IRP와 URB를 후킹함으로써, 키보드 입력 데이터가 악의적으로 외부로 유출되는 것을 완전하게 차단시킬 수 있게 된다.
키보드, 보안, USB 허브 드라이버

Description

키보드 보안 방법 및 상기 방법을 이용한 키보드 보안 드라이버를 기록한 기록 매체{Method for keyboard security and storage medium recording keyboard security driver using the method}
도 1은 일반적인 키보드 입력 데이터가 웹브라우저까지 전송되는 과정을 순차적으로 도시한 구성도이다.
도 2는 본 발명의 바람직한 실시예에 따른 키보드 보안 방법이 적용되어 키보드 입력 데이터가 웹브라우저까지 전송되는 과정을 순차적으로 도시한 구성도이다.
도 3은 본 발명의 바람직한 실시예에 따른 키보드 보안 드라이버의 내부 구성을 개략적으로 도시한 블록도이다.
도 4는 본 발명의 바람직한 실시예에 따른 키보드 보안 드라이버의 보안 드라이버 설치 모듈의 내부 구성을 개략적으로 도시한 블록도이다.
도 5는 본 발명의 바람직한 실시예에 따른 키보드 보안 드라이버의 보안용 장치 제어 함수의 동작을 순차적으로 설명하는 흐름도이다.
도 6은 본 발명의 바람직한 실시예에 따른 키보드 보안 드라이버의 보안용 입력 데이터 처리 함수의 동작을 순차적으로 설명하는 흐름도이다.
도 7은 본 발명의 바람직한 실시예에 따른 키보드 보안 드라이버의 새장치기 술자 처리 함수의 동작을 순차적으로 설명하는 흐름도이다.
<도면의 주요 부분에 대한 부호의 설명>
20 : 키보드 보안 드라이버
200 : 보안 드라이버 설치 모듈
210 : 설정 변경 감시 모듈
230 : 보호 디바이스 목록 데이터베이스
240 : 보안용 장치 제어 함수
242 : 보안용 입력 데이터 처리 함수
250 : 보안용 디바이스 연결 해지 처리 함수
270 : 새장치기술자 처리 함수
202 : 보호 디바이스 등록부
204 : 장치 제어 함수 설치부
206 : 디바이스 연결 해지 처리 함수 설치부
본 발명은 키보드의 입력 데이터가 외부로 유출되는 것을 차단하는 키보드 보안 방법 및 상기 방법을 적용한 키보드 보안 드라이버를 기록한 컴퓨터로 읽을 수 있는 기록 매체에 관한 것으로서, 더욱 구체적으로는 USB 키보드를 사용함에 있어서 USB 허브 드라이버의 입출력 요청 패킷(IRP)의 디스패치 테이블을 변경시키고 URB를 가로챔으로써 USB 키보드로부터 입력되는 데이터가 외부로 유출되는 것을 차단하는 키보드 보안 방법 및 상기 방법을 적용한 키보드 보안 드라이버를 기록한 컴퓨터로 읽을 수 있는 기록 매체에 관한 것이다.
도 1은 컴퓨터의 커널 영역이 USB 인터페이스를 이용하는 키보드(이하, 'USB 키보드'라 한다)로부터 키보드 입력 데이터를 입력받아 사용자 영역인 응용 프로그램까지 전달하는 일반적인 과정을 순차적으로 도시한 블록도이다. 도 1에 도시된 바와 같이, USB 키보드로부터 데이터가 입력되면, USB 루트 허브 드라이버, HID (Human Interface Device) 드라이버, 키보드 드라이버 및 운영 시스템(O/S) 프로그램인 윈도우즈를 순차적으로 거친 후 응용 프로그램인 웹 브라우저에 키보드의 입력 데이터가 디스플레이된다.
그런데, 정보 유출을 의도하는 각종 스파이웨어 또는 해킹 프로그램들의 대부분은 키보드 등과 같은 입력 장치로부터 입력되는 데이터들이 전송되는 중간에 해킹하게 된다. 도 1에 도시된 바와 같이, 악의적인 해킹 기능을 수행할 수 있는 필터 드라이버가 USB 루트 허브 드라이버와 HID 드라이버 사이(A), HID 드라이버와 키보드 드라이버 사이(B) 등에 설치되고, USB 루트 허브 드라이버에서 HID 드라이버로 전송되는 키보드 데이터, HID 드라이버에서 키보드 드라이버로 전송되는 키보드 데이터 등을 해킹하게 되는 것이다.
전술한 문제점을 해결하기 위한 본 발명의 목적은 시스템의 최하단인 USB 허브 드라이버의 IRP 디스패치 테이블의 호출 함수를 변경시켜 악의적인 키보드 데이 터 유출을 차단시키는 USB 키보드에 대한 보안 방법을 제공하는 것이다.
본 발명의 다른 목적은 전술한 USB 키보드 보안 방법을 적용한 키보드 보안 드라이버 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는 것이다.
전술한 기술적 과제를 달성하기 위한 본 발명의 특징에 따른 키보드 보안 드라이버 프로그램은 USB 허브 드라이버의 IRP(I/O Request Packet) 디스패치 테이블의 호출 함수들을 변경하여 키보드 입력 정보의 유출을 차단시키는 것으로서,
입력 데이터를 보호할 디바이스 객체들에 대한 목록을 저장하는 보호 디바이스 목록 데이터베이스,
USB 허브 드라이버의 IRP 디스패치 테이블의 호출 함수들을 보안용 호출 함수들로 변경시키고, 입력 데이터를 보호할 디바이스 객체들을 상기 보호 디바이스 목록 데이터베이스에 등록시키는 보안 드라이버 설치 모듈,
상기 보안 드라이버 설치 모듈의 동작이 완료된 후, 상기 USB 허브 드라이버의 IRP 디스패치 테이블의 내용이 변경되는지 여부를 지속적으로 감시하고, 만약 상기 IRP 디스패치 테이블의 내용이 변경되는 경우 IRP 디스패치 테이블의 호출 함수를 상기 보안용 호출 함수들로 다시 변경시키는 설정 변경 감시 모듈을 구비한다.
전술한 특징을 갖는 키보드 보안 드라이버의 상기 보안 드라이버 설치 모듈은,
상기 USB 허브 드라이버에 저장되어 있는 디바이스 객체들을 검색하고, 검색 된 디바이스 객체들로부터 장치 기술자들을 획득한 후, 해당 장치가 키보드 장치임이 확인되면 해당 디바이스 객체를 상기 보호 디바이스 목록 데이터베이스에 등록시키는 보호 디바이스 등록부,
상기 USB 허브 드라이버의 IRP 디스패치 테이블 중 IRP_MJ_INTERNAL_DEVICE_CONTROL에 대한 호출 함수를 보안용 장치 제어 함수로 변경시키는 장치 제어 함수 설치부,
상기 USB 허브 드라이버의 IRP 디스패치 테이블 중 IRP_MJ_PNP에 대한 호출 함수를 보안용 디바이스 연결 해지 처리 함수로 변경시키는 디바이스 연결 해지 처리 함수 설치부를 구비한다.
전술한 특징을 갖는 보안 드라이버 설치 모듈의 상기 보안용 장치 제어 함수는
만약 IRP_MJ_INTERNAL_DEVICE_CONTROL의 제어코드 및 파라메터 값을 확인하여 해당 IRP가 키보드 입력 데이터의 전송을 요청하는 URB로 판단되는 경우, 상기 완료 루틴(completion routine)의 호출 함수를 보안용 입력 데이터 처리 함수로 변경시키고,
만약 IRP_MJ_INTERNAL_DEVICE_CONTROL의 제어코드 및 파라메터 값을 확인하여 해당 IRP가 새로이 연결된 USB 장치에 대한 장치 기술자를 요청하는 URB로 판단되는 경우, 완료 루틴의 호출 함수를 새장치기술자 처리 함수로 변경하고,
변경전의 완료 루틴의 호출 함수 및 콘텍스트(context)에 대한 주소값을 별도의 장소에 저장시킨 후, 해당 IRP의 콘텍스트를 그 주소값으로 변경시키는 것이 바람직하다. 이때, 그 외의 장치 제어 코드나 URB 기능 코드일 경우에는 해당 IRP를 수정하지 않는다.
상기 보안용 입력 데이터 처리 함수는 키보드로부터 URB를 통해 전달된 데이터를 복사하여 암호화하고, 기존 버퍼에 저장된 데이터를 삭제하고, 기저장된 기존의 IRP 완료 루틴과 콘텍스트로 IRP 정보를 복원한 후, 기존의 IRP 완료 루틴을 호출한다.
상기 새장치기술자 처리 함수는 URB를 통해 전달된 새로운 장치의 장치 기술자를 장치 기술자 판독 함수를 이용하여 분석하고, 만약 분석 결과 해당 장치가 키보드 장치인 것으로 확인되는 경우 보호 디바이스 목록 데이터베이스에 해당 장치의 디바이스 객체를 추가한 후, 사전에 저장해 놓은 기존의 IRP 완료 루틴과 콘텍스트로 IRP 정보를 복원하고, 기존의 IRP완료 루틴을 호출한다.
상기 장치 기술자 판독 함수는 USB 장치 기술자(device descriptor)를 판독하고, 만약 해당 장치가 HID 클래스이며 키보드 프로토콜을 사용하는 것으로 확인되는 경우 해당 장치를 키보드 장치로 판단한다.
전술한 특징을 갖는 키보드 보안 드라이버의 상기 보안용 디바이스 연결 해지 처리 함수는 연결 해지된 디바이스 객체를 상기 보호 디바이스 목록 데이터베이스로부터 삭제시키는 것이 바람직하다.
본 발명의 다른 특징에 따른 키보드 보안 방법은 USB 허브 드라이버의 IRP 디스패치 테이블의 호출 함수를 변경하여 키보드 입력 정보의 유출을 차단시키는 것으로서,
(a) USB 허브 드라이버의 IRP 디스패치 테이블 중 IRP_MJ_INTERNAL_DEVICE_CONTROL에 대한 호출 함수를 보안용 장치 제어 함수로 변경시키는 단계,
(b) USB 허브 드라이버의 IRP 디스패치 테이블 중 IRP_MJ_PNP에 대한 호출 함수를 보안용 디바이스 연결 해지 처리 함수로 변경시키는 단계,
(c) 입력 데이터를 보호할 디바이스 객체들을 상기 보호 디바이스 목록 데이터베이스에 등록시키는 단계,
(d) USB 허브 드라이버의 IRP 디스패치 테이블의 내용이 변경되는지 여부를 지속적으로 감시하고, 만약 상기 IRP 디스패치 테이블의 내용이 변경되는 경우 상기 (a) 및 (b) 단계를 재실행하는 단계를 구비한다.
전술한 특징을 갖는 키보드 보안 방법의 상기 (c) 단계는
(c1) 상기 USB 허브 드라이버에 저장되어 있는 디바이스 객체들을 검색하는 단계,
(c2) 검색된 디바이스 객체들로부터 USB 장치 기술자를 획득하는 단계,
(c3) 상기 장치 기술자를 판독하여 키보드 장치를 나타내는 디바이스 객체임을 확인하는 단계,
(c4) 상기 확인된 디바이스 객체를 상기 보호 디바이스 목록 데이터베이스에 등록시키는 단계를 포함하는 것이 바람직하다.
전술한 특징을 갖는 키보드 보안 방법의 상기 (a) 단계의 상기 보안용 장치 제어 함수는
IRP_MJ_INTERNAL_DEVICE_CONTROL의 제어 코드와 URB의 기능 코드(function code)를 확인하고, 만약 키보드 입력 데이터이거나 장치 기술자를 요청하는 경우 IRP의 완료 루틴(completion routine)의 호출 함수 및 콘텍스트(context)의 주소값을 저장시키는 단계,
상기 완료 루틴의 호출 함수를 보안용 입력 데이터 처리 함수 또는 새장치 기술자 처리 함수로 변경시키는 단계, 및
IRP_MJ_INTERNAL_DEVICE_CONTROL의 콘텍스트(context)를 상기 저장된 호출 함수 및 기존의 콘텍스트의 주소값을 저장한 메모리의 주소값으로 변경시키는 단계를 포함하고,
상기 보안용 입력 데이터 처리 함수는 상기 IRP의 완료 루틴을 통해 수신된 키보드 입력 데이터를 암호화시켜 외부의 보안 통제 모듈로 전송시키고, 원래의 키보드 입력 데이터는 삭제시키는 것이 바람직하다.
전술한 특징을 갖는 키보드 보안 방법의 상기 보안용 디바이스 연결 해지 처리 함수는 IRP_MJ_PNP의 연결 해지 요청이 발생한 디바이스 객체를 상기 보호 디바이스 목록 데이터베이스로부터 삭제시키는 것이 바람직하다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 따른 USB 키보드 보안 방법 및 상기 보안 방법이 적용된 보안 프로그램의 구성 및 동작을 구체적으로 설명한다.
도 2는 본 발명의 바람직한 실시예에 따른 키보드 보안 방법이 적용된 키보드 보안 드라이버(20)가 설치되어 키보드 입력 데이터의 유출을 차단시키는 시스템 을 전체적으로 도시한 구성도이다.
도 3은 본 발명의 바람직한 실시예에 따른 USB 키보드 보안 방법이 적용된 키보드 보안 드라이버(20)의 구성을 개략적으로 도시한 블록도이다.
도 3을 참조하면, 본 발명에 따른 키보드 보안 드라이버(20)는 보안 드라이버 설치 모듈(200), 설정 변경 감시 모듈(210), 보호 디바이스 목록 데이터베이스(230), 보안용 장치 제어 함수(240), 보안용 디바이스 연결 해지 처리 함수(250), 장치기술자 판독 함수 및 새장치기술자 처리 함수(270)를 포함한다.
도 4는 상기 보안 드라이버 설치 모듈(200)의 내부 구성을 개략적으로 도시한 블록도이다. 상기 보안 드라이버 설치 모듈(200)은, 도 4에 도시된 바와 같이, 보호 디바이스 등록부(202), 장치 제어 함수 설치부(204), 디바이스 연결 해지 처리 함수 설치부(206)를 구비한다.
상기 보안 드라이버 설치 모듈(200)의 보호 디바이스 등록부(202)는 USB 허브 드라이버에 저장되어 있는 디바이스 객체들을 검색하고, 검색된 디바이스 객체들 중 키보드 장치를 나타내는 디바이스 객체를 찾고, 해당 객체를 상기 보호 디바이스 목록 데이터베이스(230)에 등록한다.
이때, 키보드 장치인지를 확인하기 위하여, "USBD_ParseConfigurationDescriptorEx" 함수의 "InterfaceClass" 파라메터에 "USB_DEVICE_CLASS_HUMAN_INTERFACE" 값을, "InterfaceProtocol" 파라메터에 "KeyboardInterface"(1) 값을 각각 넣고 실행함으로써, 해당 장치가 HID 클래스이고 키보드 프로토콜을 사용하는 키보드 장치인지 여부를 확인할 수 있게 된다.
상기 보안 드라이버 설치 모듈(200)의 장치 제어 함수 설치부(204)는 USB 허브 드라이버의 IRP 디스패치 테이블에 있어서 IRP가 IRP_MJ_INTERNAL_DEVICE_CONTROL인 경우에 호출되는 기존 처리 함수를 상기 보안용 장치 제어 함수(240)로 변경한다. 따라서, USB 허브 드라이버로 IRP_MJ_INTERNAL_DEVICE_CONTROL가 전달되는 경우, 상기 키보드 보안 드라이버에 포함된 상기 보안용 장치 제어 함수(240)가 호출되어 실행된다.
상기 보안 드라이버 설치 모듈(200)의 디바이스 연결 해지 처리 함수 설치부(206)는, USB 허브 드라이버의 IRP 디스패치 테이블에 있어서 IRP가 키보드 장치의 연결이 해제되었음을 알리는 IRP_MJ_PNP인 경우에 호출되는 함수를 상기 보안용 디바이스 연결 해지 처리 함수(250)로 변경한다. 따라서, USB 허브 드라이버로 "IRP_MJ_INTERNAL_DEVICE_CONTROL"인 IRP 가 전달되는 경우, 상기 키보드 보안 드라이버에 포함된 상기 디바이스 연결 해지 처리 함수(250)가 호출되어 실행된다.
상기 설정 변경 감시 모듈(210)은, 상기 보안 드라이버 설치 모듈의 동작이 완료된 후, 쓰레드(thread)를 생성하여 USB 허브 드라이버의 IRP 디스패치 테이블의 호출 함수들에 대한 주소가 변경되는지 여부를 지속적으로 감시한다. 만약 USB 허브 드라이버의 IRP 디스패치 테이블의 호출 함수들에 대한 주소가 변경된 것이 확인된 경우, 상기 설정 변경 감시 모듈(210)은 상기 보안 드라이버 설치 모듈을 재실행함으로써, 상기 USB 허브 드라이버의 IRP 디스패치 테이블의 IRP_MJ_INTERNAL_DEVICE_CONTROL 및 IRP_MJ_PNP에 대한 호출 함수들을 상기 보안용 장치 제어 함수(240) 및 상기 보안용 디바이스 연결 해지 처리 함수(250)로 다시 변경시킨다.
상기 보호 디바이스 목록 데이터베이스(230)는 상기 키보드 보안 드라이버에 의해 입력데이터를 보호할 입출력 디바이스들에 대한 목록을 저장 및 관리한다. 상기 보호 디바이스 목록 데이터베이스는 상기 보안 드라이버 설치 모듈의 실행에 의해 설치 초기에 USB 허브 드라이버에 연결된 디바이스 객체들에 대한 정보를 등록하며, 상기 보안용 장치 제어 함수의 새장치기술자 처리 함수의 실행에 의해 초기 설치 이후에 추가적으로 USB 허브 드라이버에 연결되는 디바이스 객체들에 대한 정보를 등록하게 된다. 또한, 상기 보호 디바이스 목록 데이터베이스는 상기 보안용 디바이스 연결 해지 처리 함수(250)의 실행에 의해 연결이 해제된 해당 디바이스 객체를 삭제하게 된다.
도 5는 본 발명에 따른 상기 보안용 장치 제어 함수(240)의 처리 과정을 설명하기 위하여 도시한 흐름도이다. 도 5를 참조하면, 상기 보안용 장치 제어 함수(240)는 상기 IRP_MJ_INTERNAL_DEVICE_CONTROL의 제어 코드 및 URB 기능 코드를 확인한다(단계 500).
만약, 제어 코드 및 URB 기능 코드가 URB 데이터 전송을 요청하는 코드로 판단되는 경우(단계 510), 해당 디바이스 객체가 보호 디바이스 목록 데이터베이스에 있을 경우(단계 520), IRP_MJ_INTERNAL_DEVICE_CONTROL의 완료 루틴(completion routine)의 호출 함수 및 콘텍스트(context)에 저장된 주소값들을 저장시킨 후(단계 522), 상기 완료 루틴의 호출 함수를 보안용 입력 데이터 처리 함수(242)로 변경시키고(단계 524), 상기 콘텍스트에는 상기 저장된 완료 루틴의 호출 함수 및 콘 텍스트의 주소값으로 변경시킨다(단계 526).
여기서, 상기 IRP_MJ_INTERNAL_DEVICE_CONTROL의 제어 코드가 URB 데이터 전송 요청 코드인지 여부는, 현재 IRP 스택의 "Parameters.DeviceIoControlCode"값이 "IOCTL_INTERNAL_USB_SUBMIT_URB"이며, IRP 스택의 "Parameters.Others.Argument1"의 URB 구조체의 "UrbHeader.Function"값이 "URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER"인 경우, URB 데이터 전송 요청 코드라 판단한다.
만약, 제어 코드 및 URB 기능 코드가 장치 정보를 요청하는 코드로 판단되는 경우(단계 530), IRP_MJ_INTERNAL_DEVICE_CONTROL의 완료 루틴(completion routine)의 호출 함수 및 콘텍스트(context)에 저장된 주소값들을 저장시킨 후(단계 532), 상기 완료 루틴의 호출 함수를 새장치기술자 처리 함수(270)로 변경시키고(단계 534), 상기 콘텍스트에는 상기 저장된 완료 루틴의 호출 함수 및 콘텍스트의 주소값으로 변경시킨다(단계 536).
여기서, 상기 IRP_MJ_INTERNAL_DEVICE_CONTROL의 제어 코드가 장치 정보 요청 코드인지 여부는, URB 구조체의 기능코드 중 "UrbHeader.Function"값이 "URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE"인 경우, 장치 정보 요청 코드라 판단한다.
이하, 도 6을 참조하여 상기 보안용 입력 데이터 처리 함수(242)를 설명한다. 보안용 장치 제어 함수에 의해 완료 루틴이 수정된 IRP와 URB가 URB 드라이버에 전달되고 USB 장치에서의 처리가 완료되면 완료 루틴(즉, 보안용 입력 데이터 처리 함수)이 실행된다.
먼저, 해당 디바이스 드라이버가 활성화되어 있는지 여부를 확인한다(단계 600). 만약, 해당 드라이버가 활성화되어 있는 경우, URB에 저장되어 있는 키보드 입력 데이터를 수신한 후, 수신된 키보드 입력 데이터를 암호화시킴과 동시에, 원래 수신된 키보드 입력 데이터는 삭제한다(단계 610).
다음, 상기 전달된 IRP의 콘텍스트 값을 이용하여 해당 IRP의 콘텍스트와 완료 루틴의 값을 기존의 콘텍스트 및 기존의 완료 루틴의 주소값으로 복원한 후(단계 620), 기존의 호출 함수들을 다시 호출하여 실행한 후(단계 630), 종료한다.
한편, 전술한 단계 610에 의해 암호화된 키보드 입력 데이터는 외부 응용 프로그램의 요청에 따라 외부로 전달시키게 된다.
이하, 도 7을 참조하여 상기 새장치기술자 처리 함수(270)를 설명한다. 상기 보안용 장치 제어 함수(230)로 IRP_MJ_INTERNAL_DEVICE_CONTROL가 전달되는 경우, USB 장치의 장치 기술자를 요청하는 URB(USB Request Block)인지 여부를 확인한다. 새로운 USB 키보드 장치가 PC 등에 연결되는 경우에는 새 장치에 대한 USB 장치 기술자를 요청하는 IRP가 발생하여 상기 USB 허브 드라이버로 전송되고 보안용 장치 제어 함수에서는 그 IRP의 완료 루틴을 새 장치 기술자 처리 함수로 교체하게 된다.
먼저, URB를 통해 전달된 새로운 장치의 장치 기술자를 장치 기술자 판독 함수를 이용하여 분석한다(단계 700). 상기 장치 기술자 판독 함수는 USB 장치로부터 장치 기술자(device descriptor)를 획득하고, 획득된 장치기술자를 이용하여 키보 드 장치인지 여부를 확인한다.
만약 키보드 장치인 것으로 확인되는 경우(단계 710), 보호 디바이스 목록 데이터베이스에 해당 장치의 디바이스 객체를 추가한 후(단계 720), 사전에 저장해 놓은 기존의 IRP 완료 루틴과 콘텍스트로 IRP 정보를 복원하고(단계 730), 복원된 기존의 IRP 완료 루틴을 호출한 후(단계 740), 종료한다. 이때, 해당 장치가 키보드 장치인지를 확인하기 위하여, "USBD_ParseConfigurationDescriptorEx" 함수의 "InterfaceClass" 파라메터에 "USB_DEVICE_CLASS_HUMAN_INTERFACE" 값을, "InterfaceProtocol" 파라메터에 "KeyboardInterface" 값을 각각 넣고 실행함으로써, 해당 장치가 HID 클래스이고 키보드 프로토콜을 사용하는 키보드 장치인지 여부를 확인할 수 있게 된다.
상기 보안용 디바이스 연결 해지 처리 함수(250)는 IRP_MJ_PNP가 전달되는 경우 호출되는 함수로서, 연결 해제된 디바이스 객체를 상기 보호 디바이스 목록 데이터베이스로부터 삭제시켜 해당 디바이스 객체에 대한 데이터 보호 기능을 해제하게 된다. 만약 현재 IRP 스택의 "MinorFunction"값이 "IRP_MN_REMOVE_DEVICE", "IRP_MN_SURPRISE_REMOVAL", "IRP_MN_QUERY_REMOVE_DEVICE" 중의 하나인 경우, 상기 디바이스 연결 해지 처리 함수는 해당 디바이스 객체를 상기 보호 디바이스 목록 데이터베이스로부터 삭제시킨다.
이상에서 본 발명에 대하여 그 바람직한 실시예를 중심으로 설명하였으나, 이는 단지 예시일 뿐 본 발명을 한정하는 것이 아니며, 본 발명이 속하는 분야의 통상의 지식을 가진 자라면 본 발명의 본질적인 특성을 벗어나지 않는 범위에서 이 상에 예시되지 않은 여러 가지의 변형과 응용이 가능함을 알 수 있을 것이다. 그리고, 이러한 변형과 응용에 관계된 차이점들은 첨부된 청구 범위에서 규정하는 본 발명의 범위에 포함되는 것으로 해석되어야 할 것이다.
본 발명에 따른 키보드 보안 방법 및 키보드 보안 드라이버는 시스템의 가장 하위단인 USB 허브 드라이버 또는 USB 루트 허브 드라이버의 IRP 디스패치 테이블의 호출 함수들을 변경시킴으로써, 키보드 입력 데이터가 외부로 유출되는 것을 방지한다.
따라서, 본 발명에 의하여 USB 허브 드라이버 또는 USB 루트 허브 드라이버의 키보드 입력 데이터를 가져와 기존의 키보드 정보 전달 경로를 통하지 않고 보안 통제 모듈을 통해 직접 키보드 입력 정보를 전달할 응용 프로그램인 ActiveX 컨트롤러로 전달하게 되므로 악의적인 정보 유출을 원천적으로 차단시킬 수 있게 된다. 그 결과, 본 발명에 의하여 USB 키보드를 사용하는 시스템에서의 USB 키보드로부터 입력되는 데이터를 안전하게 보호할 수 있게 된다.

Claims (13)

  1. USB 허브 드라이버의 IRP 디스패치 테이블의 호출 함수를 변경하여 키보드 입력 정보의 유출을 차단시키는 키보드 보안 드라이버 프로그램은,
    입력 데이터를 보호할 디바이스 객체들에 대한 목록을 저장하는 보호 디바이스 목록 데이터베이스;
    USB 허브 드라이버의 IRP 디스패치 테이블의 호출 함수들을 보안용 호출 함수들로 변경시키고, 입력 데이터를 보호할 디바이스 객체들을 상기 보호 디바이스 목록 데이터베이스에 등록시키는 보안 드라이버 설치 모듈;
    상기 보안 드라이버 설치 모듈의 동작이 완료된 후, 상기 USB 허브 드라이버의 IRP 디스패치 테이블의 내용이 변경되는지 여부를 지속적으로 감시하고, 만약 상기 IRP 디스패치 테이블의 내용이 변경되는 경우 IRP 디스패치 테이블의 호출 함수를 상기 보안용 호출 함수들로 다시 변경시키는 설정 변경 감시 모듈;
    을 구비하는 키보드 보안 드라이버 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록 매체.
  2. 제1항에 있어서, 상기 보안 드라이버 설치 모듈은
    상기 USB 허브 드라이버에 저장되어 있는 디바이스 객체들을 검색하고, 검색된 디바이스 객체로부터 장치기술자를 획득한 후, 상기 장치기술자를 이용하여 키보드 장치임이 확인되는 경우, 해당 장치에 대한 디바이스 객체를 상기 보호 디바 이스 목록 데이터베이스에 등록시키는 보호 디바이스 등록부,
    상기 USB 허브 드라이버의 IRP 디스패치 테이블 중 IRP_MJ_INTERNAL_DEVICE_CONTROL에 대한 호출 함수를 보안용 장치 제어 함수로 변경시키는 장치 제어 함수 설치부,
    상기 USB 허브 드라이버의 IRP 디스패치 테이블 중 IRP_MJ_PNP에 대한 호출 함수를 보안용 디바이스 연결 해지 처리 함수로 변경시키는 디바이스 연결 해지 처리 함수 설치부
    를 구비하는 것을 특징으로 하는 키보드 보안 드라이버 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록 매체.
  3. 제2항에 있어서, 상기 보안용 장치 제어 함수는
    IRP_MJ_INTERNAL_DEVICE_CONTROL의 제어 코드 및 파라메터 값을 확인하고,
    만약 상기 제어코드 및 파라메터 값을 통해 키보드 입력 데이터를 요청하는 URB인 것으로 판단되는 경우, 변경 전의 기존의 완료 루틴(completion routine)의 호출 함수 및 콘텍스트(context)에 대한 주소값을 저장시키고, 완료 루틴(completion routine)의 호출 함수를 보안용 입력 데이터 처리 함수로 변경시키고, IRP_MJ_INTERNAL_DEVICE_CONTROL의 콘텍스트(context)를 상기 기존의 주소값이 저장된 메모리의 주소값으로 변경시키는 것을 특징으로 하는 키보드 보안 드라이버 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록 매체.
  4. 제3항에 있어서, 상기 보안용 입력 데이터 처리 함수는 URB를 통해 키보드로부터 전달된 입력 데이터를 복사하여 암호화하고, 기존의 버퍼에 저장된 입력 데이터는 삭제시키며, 기저장된 기존의 IRP 완료 루틴가 콘텍스트로 IRP 정보를 복원시킨 후, 기존의 IRP 완료 루틴을 호출하는 것을 특징으로 하는 키보드 보안 드라이버 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록 매체.
  5. 제2항에 있어서, 상기 보안용 장치 제어 함수는
    IRP_MJ_INTERNAL_DEVICE_CONTROL의 제어 코드 및 파라메터 값을 확인하고,
    만약 상기 제어코드 및 파라메터 값을 통해 장치정보를 요청하는 URB인 것으로 판단되는 경우, 변경 전의 기존의 완료 루틴(completion routine)의 호출 함수 및 콘텍스트(context)에 대한 주소값을 저장시키고, 완료 루틴(completion routine)의 호출 함수를 새장치기술자 처리 함수로 변경시키고, IRP_MJ_INTERNAL_DEVICE_CONTROL의 콘텍스트(context)를 상기 기존의 주소값이 저장된 메모리의 주소값으로 변경시키는 것을 특징으로 하는 키보드 보안 드라이버 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록 매체.
  6. 제5항에 있어서, 상기 새장치기술자 처리 함수는
    URB를 통해 전달된 새로운 장치의 장치 기술자를 분석하고, 만약 상기 분석결과 해당 장치가 키보드 장치인 것으로 확인되는 경우, 보호 디바이스 목록 데이터베이스에 해당 장치의 디바이스 객체를 추가하는 것을 특징으로 하는 키보드 보 안 드라이버 프로그램이 기록한 컴퓨터로 읽을 수 있는 기록 매체.
  7. 제2항에 있어서, 상기 보안용 디바이스 연결 해지 처리 함수는 연결 해지된 디바이스 객체를 상기 보호 디바이스 목록 데이터베이스로부터 삭제시키는 것을 특징으로 하는 키보드 보안 드라이버 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록 매체.
  8. USB 허브 드라이버의 IRP 디스패치 테이블의 호출 함수를 변경하여 키보드 입력 정보의 유출을 차단시키는 키보드 보안 방법은,
    (a) USB 허브 드라이버의 IRP 디스패치 테이블 중 IRP_MJ_INTERNAL_DEVICE_CONTROL에 대한 호출 함수를 보안용 장치 제어 함수로 변경시키는 단계;
    (b) USB 허브 드라이버의 IRP 디스패치 테이블 중 키보드 연결 해지 요청 IRP에 대한 호출 함수들을 보안용 디바이스 연결 해지 처리 함수로 변경시키는 단계;
    (c) 입력 데이터를 보호할 디바이스 객체들을 보호 디바이스 목록 데이터베이스에 등록시키는 단계;
    (d) USB 허브 드라이버의 IRP 디스패치 테이블의 내용이 변경되는지 여부를 지속적으로 감시하고, 만약 상기 IRP 디스패치 테이블의 내용이 변경되는 경우 상기 (a) 및 (b) 단계를 재실행하는 단계;
    를 구비하여 키보드 입력 데이터가 외부로 유출되는 것을 방지하는 키보드 보안 방법.
  9. 제8항에 있어서, 상기 (c) 단계는
    (c1) 상기 USB 허브 드라이버에 저장되어 있는 디바이스 객체들을 검색하는 단계,
    (c2) 검색된 디바이스 객체로부터 USB 장치 기술자를 획득하는 단계,
    (c3) 획득된 USB 장치 기술자를 판독하여 키보드 장치임을 나타내는 디바이스 객체를 확인하는 단계,
    (c4) 상기 확인된 디바이스 객체를 상기 보호 디바이스 목록 데이터베이스에 등록시키는 단계
    를 포함하는 것을 특징으로 하는 키보드 입력 데이터가 외부로 유출되는 것을 방지하는 키보드 보안 방법.
  10. 제8항에 있어서, 상기 (a) 단계의 상기 보안용 장치 제어 함수는
    (a1) IRP_MJ_INTERNAL_DEVICE_CONTROL의 제어 코드와 URB의 기능 코드를 확인하는 단계,
    (a2) 만약 상기 확인 결과 키보드 입력 데이터이거나 장치정보를 요청하는 경우, IRP의 완료 루틴(completion routine)의 호출 함수 및 콘텍스트(context)의 주소값을 저장하고, 상기 완료 루틴의 호출 함수를 보안용 입력 데이터 처리 함수 또는 새장치기술자 처리 함수로 변경시키는 단계, 및
    (a3) IRP_MJ_INTERNAL_DEVICE_CONTROL의 콘텍스트(context)를 상기 저장된 호출 함수 및 기존의 콘텍스트의 주소값을 저장한 메모리의 주소값으로 변경시키는 단계를 포함하는 것을 특징으로 하는 키보드 입력 데이터가 외부로 유출되는 것을 방지하는 키보드 보안 방법.
  11. 제10항에 있어서, 상기 보안용 입력 데이터 처리 함수는 상기 IRP의 완료 루틴을 통해 수신된 키보드 입력 데이터를 암호화시켜 외부의 보안 통제 모듈로 전송시키고, 원래의 키보드 입력 데이터는 삭제시키는 것을 특징으로 하는 키보드 입력 데이터가 외부로 유출되는 것을 방지하는 키보드 보안 방법.
  12. 제8항에 있어서, 상기 보안용 디바이스 연결 해지 처리 함수는 IRP_MJ_PNP의 연결 해지 요청이 발생된 디바이스 객체를 상기 보호 디바이스 목록 데이터베이스로부터 삭제시키는 것을 특징으로 하는 키보드 입력 데이터가 외부로 유출되는 것을 방지하는 키보드 보안 방법.
  13. 제10항에 있어서, 상기 새장치기술자 처리 함수는
    URB를 통해 전달된 새로운 장치의 장치 기술자를 분석하고, 만약 상기 분석결과 해당 장치가 키보드 장치인 것으로 확인되는 경우, 보호 디바이스 목록 데이터베이스에 해당 장치의 디바이스 객체를 추가하는 것을 특징으로 하는 키보드 입 력 데이터가 외부로 유출되는 것을 방지하는 키보드 보안 방법.
KR1020060103248A 2006-10-24 2006-10-24 키보드 보안 방법 및 상기 방법을 이용한 키보드 보안드라이버를 기록한 기록 매체 KR100846123B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060103248A KR100846123B1 (ko) 2006-10-24 2006-10-24 키보드 보안 방법 및 상기 방법을 이용한 키보드 보안드라이버를 기록한 기록 매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060103248A KR100846123B1 (ko) 2006-10-24 2006-10-24 키보드 보안 방법 및 상기 방법을 이용한 키보드 보안드라이버를 기록한 기록 매체

Publications (2)

Publication Number Publication Date
KR20080036699A KR20080036699A (ko) 2008-04-29
KR100846123B1 true KR100846123B1 (ko) 2008-07-15

Family

ID=39574963

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060103248A KR100846123B1 (ko) 2006-10-24 2006-10-24 키보드 보안 방법 및 상기 방법을 이용한 키보드 보안드라이버를 기록한 기록 매체

Country Status (1)

Country Link
KR (1) KR100846123B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100985076B1 (ko) * 2008-04-16 2010-10-04 주식회사 안철수연구소 Usb 디바이스 보안 장치 및 방법

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020073342A1 (en) 2000-12-11 2002-06-13 International Business Machines Corporation Verifying physical universal serial bus keystrokes
EP1286242A1 (en) 2001-08-22 2003-02-26 Sonera SmartTrust, Ltd. System and method for protected data input of security data
KR20040094379A (ko) * 2003-05-02 2004-11-09 마이크로소프트 코포레이션 키보드를 사용한 보안 통신 및 관련 장치
JP2005228147A (ja) 2004-02-13 2005-08-25 Nec Fielding Ltd マッピング変換機能を備えたキーボード
KR20050090541A (ko) * 2004-03-09 2005-09-14 주식회사 하우리 키보드 해킹차단 방법 및 그 프로그램을 기록한 기록매체
KR20060093932A (ko) * 2005-02-23 2006-08-28 제이알소프트 주식회사 윈도우즈 운영체제에서 보안 입력 필터 드라이버와 인터넷익스플로러 내부의 키보드 보안 입력 비에이치오를 통한 인터넷 익스플로러 사용자의 키보드 입력 정보 해킹 방지 방법
KR20070040539A (ko) * 2005-10-12 2007-04-17 주식회사 안철수연구소 키보드 데이터 인증을 이용한 키 입력 도용 방지 방법

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020073342A1 (en) 2000-12-11 2002-06-13 International Business Machines Corporation Verifying physical universal serial bus keystrokes
EP1286242A1 (en) 2001-08-22 2003-02-26 Sonera SmartTrust, Ltd. System and method for protected data input of security data
KR20040094379A (ko) * 2003-05-02 2004-11-09 마이크로소프트 코포레이션 키보드를 사용한 보안 통신 및 관련 장치
JP2005228147A (ja) 2004-02-13 2005-08-25 Nec Fielding Ltd マッピング変換機能を備えたキーボード
KR20050090541A (ko) * 2004-03-09 2005-09-14 주식회사 하우리 키보드 해킹차단 방법 및 그 프로그램을 기록한 기록매체
KR20060093932A (ko) * 2005-02-23 2006-08-28 제이알소프트 주식회사 윈도우즈 운영체제에서 보안 입력 필터 드라이버와 인터넷익스플로러 내부의 키보드 보안 입력 비에이치오를 통한 인터넷 익스플로러 사용자의 키보드 입력 정보 해킹 방지 방법
KR20070040539A (ko) * 2005-10-12 2007-04-17 주식회사 안철수연구소 키보드 데이터 인증을 이용한 키 입력 도용 방지 방법

Also Published As

Publication number Publication date
KR20080036699A (ko) 2008-04-29

Similar Documents

Publication Publication Date Title
US20200050765A1 (en) Methods and apparatus for identifying and removing malicious applications
US11797677B2 (en) Cloud based just in time memory analysis for malware detection
AU2006235058B2 (en) System and method for foreign code detection
EP3123311B1 (en) Malicious code protection for computer systems based on process modification
KR101759379B1 (ko) 확장된 데이터를 갖는 메모리 덤프 및 사용자 프라이버시 보호 기법
US20040243829A1 (en) System and method for computer virus detection utilizing heuristic analysis
KR101006721B1 (ko) 키보드 입력정보 보안장치 및 그 방법
US9804948B2 (en) System, method, and computer program product for simulating at least one of a virtual environment and a debugging environment to prevent unwanted code from executing
WO2016033966A1 (zh) 应用数据的保护方法及装置
JP5832954B2 (ja) タグ付与装置及びタグ付与方法
WO2018233379A1 (zh) 数据明文获取方法、装置、电子终端及可读存储介质
US10902122B2 (en) Just in time memory analysis for malware detection
KR100985076B1 (ko) Usb 디바이스 보안 장치 및 방법
US8141153B1 (en) Method and apparatus for detecting executable software in an alternate data stream
Huber et al. A flexible framework for mobile device forensics based on cold boot attacks
de Assumpção et al. Forensic method for decrypting TPM-protected BitLocker volumes using Intel DCI
KR100846123B1 (ko) 키보드 보안 방법 및 상기 방법을 이용한 키보드 보안드라이버를 기록한 기록 매체
JPWO2010032330A1 (ja) 情報処理装置及びそのメモリ保護方法
CN117034330B (zh) 基于macOS的安全防护方法、设备及存储介质
US11899782B1 (en) Preserving DLL hooks
CN111625784B (zh) 一种应用的反调试方法、相关装置及存储介质
KR20040042731A (ko) 호스트 시스템의 파일 및 레지스트리 모니터링방법
JP2005032182A (ja) プログラム、攻撃コード抽出装置およびその方法
US20220092171A1 (en) Malicious code protection for computer systems based on system call table modification and runtime application patching
CN117938483A (zh) 一种外发文件保护方法、装置、电子设备及存储介质

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: 20130708

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140708

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150708

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160708

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170707

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180712

Year of fee payment: 11