2015년 11월 24일 화요일

2. Direct Kernel Object Manipulation(DKOM)_유저모드 프로세스에서 디바이스 드라이버로의 통신

IOCTL(I/O Control Code) 값은 IRP_MJ_DEVICE_CONTROL 또는 IRP_MJ_INTERNAL_DEVICE_CONTROL_IRP를 통해 전달된다.

일반적인 IOCTL은 다음과 같은 헤더 파일에 정의된다.



위 코드에서 IOCTL_DRV_INIT, IOCTL_DRV_VER을 보면 METHOD_BUFFERED 전달 방식을 이용하는데 이 방식은 I/O 매니저가 유저 스택에서 커널 스택으로 전달할 데이터를 복사한다.

다음은 드라이버에 대한 핸들을 구하고, 유저 모드 코드가 초기화를 수행하도록 명령하는 IOCTL을 드라이버에게 전달하는 코드이다.



다음 코드의 rootkitDispatch는 유저모드 프로그램이 DeviceIoControl 함수를 이용해 드라이버로 IOCTL을 전달했을 때 발생하는



이 부분에 대해서는 간단하게 코드만 확인하고 , DKOM을 은닉하는 법에 대해서 알아보도록 하겠다.

더 자세한 내용은 '루트킷 윈도우 커널 조작의 미학'을 참조 하도록 하세요.

댓글 없음:

댓글 쓰기