반응형 Security33 커널진입(INT 2E,SYSENTER)-INT 2E(IDT : Interrupt Descriptor Table)편 이번시간에는 INT 2E로 Interrupt Descriptor Table(이하 IDT) 통한 커널진입에 대해 알아보겠습니다. 일단 전체적인 그림을 한번 보겠습니다. 보시다 시피 굉장히 복잡한 구조를 가지고 있습니다. 일단 순서 대로 설명을 진행하겠습니다. ※ INT 2E를 이용한 유저레벨에서 커널레벨 NativeAPI호출과정 ① 커널진입 이전에 Service 번호를 EAX에 저장, 유저레벨스택프레임 포인터를 EDX에 저장합니다. ② 명령어 INT 2E를 이용하여 인터럽트를 발생시킵니다. IDT의 인덱스2E를 확인하면 KiSystemService의 주소가 보이는 것을 볼 수 있습니다. ③ ntosknl내부에 있는 KiSystemService()루틴에 진입합니다. ④ 미리 저장된 서비스번호 EAX를 Sys.. 2017. 6. 23. ASLR(Address Space Layout Randomization) 끄기 /비활성화 Windows Vista이상버전에서는 메모리 보호를 위해 Load되는 PE의 Base주소를 Random하게 할당합니다. 근데 이 기법으로 인해 분석할경우에 VA계산이 어렵습니다.ㅠㅠ 그래서 이번 게시글에서는 ASLR을 끄는 방법을 알아보겠습니다.요점은 PE의 Optional Header의 DLL Characteristics에 있습니다. 빨간색 박스 부분에서 IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE 가 있습니다. DYNAMIC_BASE 말에서 알수있다시피 이 Flag값이 ASLR기능을 ON/OFF기능을 수행합니다. (위에 ImageBase가 0x1000000임을 기억합시다!!!) 현재 상태에서 올리디버거에 올려보겠습니다. ImageBase인 0x1000000과 무관하게 0xE60.. 2017. 6. 20. Segmentation과 Paging(3) - 페이징 ◈페이징 1) 정의 - Segmentation과정을 통해 변환된 선형주소 (Linear Address)를 통하여 물리 메로리에 접근하는 과정 2)물리메모리 접근과정 ① CR3레지스터를 통하여 PDE(Page Directory) 접근 - CR3의 PFN(Page Frame Nuber)를 통하여 PDE(Page Directory Entry)주소를 얻습니다. ※CR3설명 〮 PFN : 페이징기능은 실제 메모리를 4KByte(0x1000)단위로 나눈것 을 의미합니다 (ex : CR3의 PFN == 0x5 à 0x5000~0x5999의 물리적 메모리주소에 페이지 데릭토리를 가지는 것을 의미 ) 〮 Windows는 프로세스의 스위칭이 일어날때마다 CR3레지스터의 PFN을 바꾸어줌으로써 가상메모리를 다른 물리메모리에.. 2017. 6. 18. Segmentation과 Paging(2) - 세그먼테이션 1) segmentation정의 - 사용자 지정 메모리로부터 Linear Address(메모리주소 + 세그먼트 레지스터)까지 얻어지는 과정 2) Segmentation과정 ① GDTR(Global Descriptor Table Register)을 참조하여 GDT(Global Descriptor Table)의 Base주소를 찾습니다. - GDTR의 GDT Base Address를 얻습니다. - GDTR Size (Table Limit = Descriptor 개수 X 8-1이므로 8192 ) : 첫번째 Descriptor는 null Descriptor임 ② Segment Selector를 Index로 GDT[Index]하여 SegmentDescriptor를 찾습니다. GDTR로부터 얻은 GDT Base Ad.. 2017. 6. 15. 이전 1 ··· 4 5 6 7 8 9 다음 반응형