반응형 전체 글95 커널진입(INT 2E,SYSENTER)-전체적인흐름 처음 페이징을 공부하게 된 계기는 바로 커널진입에 대해 공부하면서 였습니다. 커널진입중에 INT 2E를 사용하는 방법이 있는데 Native API를 Call하기 이전에 과정중 GDT라던지 Descriptor등에 대한 개념이 필요했기 때문입니다. 그렇다면 이번 글에서는 자세한 내용을 다루기에 앞서 커널진입의 전체적이 흐름에대해 파악하겠습니다. Windows 2000이전버전에서 커널진입을 위해서 INT 2E를 사용하여 IDT(Interrupt Descriptor Table)을 이용하여 접근하였습니다. 하지만 위에 그림에서 보시다시피 INT 2E의 경우 KiSystemService()를 사용하기 위한 중간과정이 필요합니다.때문에 Windows2000이후 SYSENTER를 이용하여 훨씬 더 Native함수호출이.. 2017. 6. 23. 커널진입(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. Jaff Ransomware Decriptor (재프랜섬웨어 복호화 툴) 공개 Jaff Ransomware복호화툴이 공개되었다고 하여 사용후기 남겨봅니다.(역시 카스퍼스키 대단하군요!)다운로드링크 : http://media.kaspersky.com/utilities/VirusUtilities/EN/RakhniDecryptor.zip 복호화 확인을 위해 우선적으로 감염을 시켜보았습니다. 다음과 같이 바탕화며이 바뀌고 파일들은 암호화되어 확장자가 .jaff로 바뀌는군요. 복호화툴을 돌려보았는데 다음과 같이 복호화가 잘되었다는 결과창을 볼수있네요. 실제 파일의 복호화가 잘되었는지 한번 확인해보겠습니다. 확인파일경로는 내그림에 있는 샘플 그림들로 하겠습니다. 복호화전복호화후 복호화이후에도 암호화된 파일들은 남아있지만 복호화가 잘 되는것을 알 수 있습니다. 감염되신분들 복구시키시면 될것같습.. 2017. 6. 19. [책] 쿠션 후기(스포X) 처음으로 선물로 받은 책!! 쿠션을 읽어보았습니다. 지금껏 많은 자기 개발서를 읽어왔는데 강의 받는 형식의 책들이라 중간에 지루해지고 결국.... 오기로 다 보긴 했지만 정말 남는것이 많지 않았던 것 같습니다. 그런데 쿠션이라는 책은 주고자 하는 교훈을 한바로라는 인물의 생활에 담아놓아 시간가는 줄 모르고 읽었습니다. 특히 큼지막한 글씨와 따뜻한 느낌의 그림들이 눈에 띄고 전달해주고자 하는 의도가 명확하여 좋았습니다. **** 줄거리 **** 주인공 한바로는 평상시 모든 상황을 주변의 환경탓으로 돌리며 굉장히 신경질적인 인물입니다. 한바로는 어린시절 힘든 성장과정을 겪고 현재는 어머니의 병,병원비로 인한 빚과 가정에 대한 책임간으로 힘들게 살아갑니다. 어느 날 한 변호사로부터 자신의 할아버지의 죽음과 남.. 2017. 6. 18. 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. Segmentation과 Paging(1) - 세그먼테이션과 페이징 전체적인 흐름 페이징 공부하면서 정리가 필요할것 같아 글을 써봅니다. 보호모드에서 IA-32를 통한 메모리 보호 기능은 Segmentation과 Paging이 있습니다. 오늘은 Segmentation와 Paging이 에 대해 알아보겠습니다. 간단하게 전체적인 흐름도와 단어 뜻에 대해 설명하겠습니다. ※전체적인 흐름도 - Segmentation설명에 앞서 용어에 대해 설명하겠습니다. - Segment : 프로그램의 특정영역 ( 코드,데이터,스택) - 프로그램상 같은 역할을 하는 메로리를 묶어놓는 그룹 - Segment Selector : GDT상의 Segment Descriptor Index를 저장 - Segment Descriptor : Segment의 정보를 저장 - GDT(Global Descriptor Table.. 2017. 6. 14. 생각을 넓히자!!! 작년 올해 국내에 여러곳을 다니며 든 느낀 것은 많은것을 경험해보고 많은사람들을 만나보자!! 이다.주변에서 많이 들었지만 정말 보면볼수록 세상에 대한 시야가 넓어지는 것 같다. 사소한것을 생각할때 그생각하는 폭이 넓어지게된다.특히 많은사람을 만나볼수록 나의 작았던 생각들에대해 반성하게된다. 대화를 나누며 다른사람의 생각을 알게되고 거기서 또 배우게 된다 또 사람을 보게될때 더 긍정적으로 보게되는것같다!! 올한해 더 많은것을 경험하고 넓은사람이 되고자한다~!! 2017. 6. 6. 이전 1 ··· 6 7 8 9 10 11 다음 반응형