BOOK NOW!
[contact-form-7 404 "Not Found"]

ssdt 후킹 예제

02 Aug ssdt 후킹 예제

첫 번째 SSDT의 경우 rekall은 “ntoskrnl” 이름을 “nt”로 해결하지만 오프셋을 쉽게 발견 할 수있는 유효한 함수 이름으로 오프셋을 해결하지 않습니다. 현재 NT 및 win32k 모듈 (GUID 및 PDB 파일 이름 조정)에 따라 PE 헤더 내의 디버깅 정보를 수정하여 rekall을 속이려고했지만 아무 것도 변경하지 않았습니다. 이것은 코드를 살펴보고 디버깅을 할 시간이었습니다 (다행히 rekall도 오픈 소스입니다). 이 프로세스와 몇 가지 덤프 를 더 하는 동안 유망한 시나리오를 확인했습니다. 커널 모듈의 경우 우리는 우리의 간단한 접근 방식과 운이 없었다,하지만 “win32k.sys”와 그림자를 후크 할 때, 일부 메모리 덤프에 우리는이 결과를 얻었다 : 이것은 Windows7 홈 프리미엄 x86 (6.1.7600 버전)에서 작동하는 ssdt 후크 프로그램입니다 함수는 SSDT 테이블이 포함된 메모리를 작성 할 수 있게 하며 문서의 다음 부분에서는 실제로 SSDT 테이블의 주소를 덮어쓰어 함수 호출을 후크할 수 있습니다. 커널 모드를 사용하여 읽기 전용 메모리에 쓸 수 있도록 설정하지 않고 함수를 연결하는 것은 불가능합니다. 나는 SSDT를 연결하는 방법을 보여주지 않을 것이다, 그것은 아주 잘 여기에 설명. 후킹 필터 함수를 작성하겠습니다. 레지스트리 값을 숨기려고 하므로 NtEnumerateValueKey API를 대상으로 합니다. 나는 전에 말하지 않았지만 커널 모드 코드이기 때문에 드라이버를 코딩해야합니다. 커널 공간 동기화에서 작업할 때 이 후킹 방법은 매우 안전하지 않습니다. 보호를 사용하지 않도록 설정하고 메모리를 교환하거나 후크를 삽입하려는 것은 BSOD가 발생할 수 있습니다.

인터록익스체인지 및 Mdl 페이지를 사용합니다. 그래도 즐길 수, 이 물건은 꽤 재미있다. 두 번째 함수는 지정된 시스템 정보를 검색하는 ZwQuerySystemInformation입니다. Windows 8 운영 체제에서 이 기능을 더 이상 사용할 수 없습니다. 함수의 프로토 타입은 [8]아래에 제시되어 있습니다 :이 블로그 포스트에서 우리는 간략하게 잘 알려진 Syscall 후킹 기술을 설명합니다 (예를 들어 http://resources.infosecinstitute.com/hooking-system-service-dispatch-table-ssdt/ 더 자세한 설명은 laqma 트로이 목마와 같은) 여러 악성 코드 샘플에 의해 사용되는 바로 후 일부 메모리 분석 도구의 분석 및 / 또는보고에 문제가있는 방법을 논의. 그런 다음 SSDT 테이블의 함수 포인터에 대한 주소를 계산하고 대상 변수에 저장합니다. HookSSDT의 끝에서 우리는 SSDT 테이블에 우리의 후킹 함수에 대한 포인터를 저장하고 이전 값인 이전 후크 함수에 대한 포인터를 반환하기 위해 InterlockedExchange 함수를 호출합니다. 검색 / 바이패스 SYSENTER_EIP 후킹은 커널 모드 드라이버에 영향을 주지 않으며 사용자 모드에서 우회할 수 없습니다. 사용자 모드 응용 프로그램이 이 후크를 우회할 수 있도록 하려면 커널 드라이버가 SYSENTER_EIP를 원래 값(KiFastCallEntry)으로 설정해야 하지만, KiFastCallEntry는 ntoskrnl에 의해 내보내지지 않기 때문에 WRMSR 명령을 사용하여 수행할 수 있습니다. 주소가 까다로울 수 있습니다.

No Comments

Sorry, the comment form is closed at this time.