-
Clipboard Hook : ‘복사/ 붙여 넣기’를 막아보자! ( ) - 2009/09/10
안녕하세요!! ‘The Kerberos’ 프로젝트의 박병훈입니다.
소프트웨어멤버십에서 진행한 프로젝트인 ‘The Kerberos’는 보안 관리자가 지정한 중요한 파일들을 감시하는
보안 프로젝트입니다.
이 프로젝트에서는 보안 파일들에 대한 특정 액세스( 복사, 삭제, 이름 변경 등 )들을 파일 필터 드라이버를 통해 감시하게
되는데 다음과 같은 경우에는 필터 드라이버만으로 보안 파일이 유출 되는 것을 감시하는데 한계가 있습니다.
- 보안 파일(text type)을 열어두고 텍스트 내용을 다른 텍스트 편집기로 ‘복사 & 붙여 넣기’를 하여 유출하는 경우
위와 같은 경우는 보안 파일을 직접적으로 이동이나 복사를 하지 않았기 때문에 파일 필터 드라이버에서는 유출 과정을
알아차리지 못하게 됩니다. 그래서 이러한 경우를 막기 위하여 Dll Injection 기법을 사용했습니다. 그래서 이번 포스팅에
서는 Dll Injection에 관한 전반적인 설명과 간단한 메모장에서 ‘복사 & 붙여 넣기’를 방지하는 방법을 소개할까 합니다.
제가 제목에 Clipboard Hook이라고 적어 놓은 이유는 Dll Injection을 통하여 클립보드의 내용을 가로채서 따로 조작해보려
고 하기 때문입니다.
다들 다 아시겠지만 윈도우에서 ‘복사’ 또는 ‘ctrl + c’를 하게 되면 그 내용이 클립보드라는 곳으로 이동하게 됩니다.
클립보드는 윈도우 운영체제가 관리하는 공유 메모리 공간입니다. 이를 통해서 서로 다른 프로그램 사이에 데이터를 주고 받
을 수 있는 것입니다.
클립보드를 이용하는 방법에는 크게 다음과 같은 두 가지 방법이 있습니다.
- API 함수를 호출하여 전역 메모리 블록을 두고 받는 방법
- IDataOnject 표준 COM 인터페이스를 통해 데이터를 주고 받는 방법
여기서 저는 API 함수 호출로 클립보드의 내용을 지우는 방법을 사용해보겠습니다.
그럼 일단 Dll Injection 기법이 무엇인지 간단히 알아보겠습니다.
윈도우에는 수 많은 .dll 파일들이 존재합니다. DLL(Dynamic Link Library: 동적 링크 라이브러리)은 어떤 기능이 실행 파일
에 직접 덧붙여지지 않고, .dll 파일에 독립적으로 존재하다가 프로그램이 실행될 때 동적으로 링크되어 사용됩니다. 따라서
메모리와 하드 디스크를 절약할 수 있고 프로그램 실행 속도가 빨라질 수 있으며 프로그램의 모듈화가 가능합니다.
제가 하고자 하는 방법은 다음과 같습니다.
- .dll 파일 생성
- 클립보드 내용을 지우는 코드 작성 후 .dll 파일에 추가
- 메모장에 1, 2번을 통해 만들어진 .dll 파일을 끼어 넣어서 클립보드가 지원지게 함
정말 간단합니다~! 단 3단계의 과정만 거치면 끝입니다. 그럼 1, 2, 3번 과정을 구체적으로 알아 보겠습니다.
■ .dll 생성 및 클립보드 내용 지우기
■ .dll 파일 특정 프로세스에 삽입하기
지금까지 소스 코드로 Dll Injection 방법으로 메모장의 클립보드를 막는 방법을 알아보았습니다.
보시면 아시겠지만 몇 줄 안 되는 코드로 간단하게 클립보드를 막았습니다.
이 소스를 조금만 변형하고 응용한다면 더 재미있는 프로그램을 만들 수 있을 것이라 생각합니다.
그럼 이번 포스팅을 이것으로 마치겠습니다^^
- TRACKBACK : http://www.swssm.org/trackback.php?id=346
- [prev] ... 1 ... [next]
