System/Windows www.gflow.co.kr 2017. 8. 27. 23:30
출처: https://www.fuzzysecurity.com/tutorials.html 본 포스팅은 fuzzysecurity Tutorials part 14 -> Integer Overflow를 분석 및 의역하여 작성하였습니다. Sample Windows Driver code에 존재하는 취약점을 학습하는 데 그 목적이 있습니다. Step 1. 취약점 분석 TriggerIntegerOverflow code를 살펴보면 SECURE한 경우와 else의 경우 전부 Size를 이용하는 필터링이 되어있습니다. 그런데 else 부분에서 Size + TerminatorSize가 KernelBuffer의 크기보다 클 경우 함수는 정상 종료됩니다. Size의 자료형은 4bytes인 unsigned int형입니다. Size..
System/Windows www.gflow.co.kr 2017. 8. 26. 23:30
출처: https://www.fuzzysecurity.com/tutorials.html 본 포스팅은 fuzzysecurity Tutorials part 13 -> Uninitialized Stack Variable을 분석 및 의역하여 작성하였습니다. Sample Windows Driver code에 존재하는 취약점을 학습하는 데 그 목적이 있습니다. Step 1. 취약점 분석 먼저 취약한 code를 살펴보면 처음 UNINITIALIZED_STACK_VARIABLE이라는 object가 선언되는데 SECURE한 경우 0으로 초기화가 되지만 else일 경우 해당 object를 초기화를 시키지 않습니다. 그리고 UserValue와 MagicValue가 같다면 해당 object의 Value와 Callback 함수..
System/Windows www.gflow.co.kr 2017. 8. 25. 23:30
출처: https://www.fuzzysecurity.com/tutorials.html 본 포스팅은 fuzzysecurity Tutorials part 12 -> NULL pointer Dereference를 분석 및 의역하여 작성하였습니다. Sample Windows Driver code에 존재하는 취약점을 학습하는 데 그 목적이 있습니다. Step 1. 취약점 분석 다음 소스를 살펴보면 ExFreePoolWithTag() 함수를 거쳐 object를 free시켜준 다음 pointer를 NULL로 초기화 시켜줍니다. 하지만 밑에서 object에 대한 Callback함수를 아무런 필터링 없이 호출합니다. MagicValue를 맞췄을 경우, Callback 함수가 정상적인 함수로 초기화가 되므로 Free를 ..
System/Windows www.gflow.co.kr 2017. 8. 24. 23:30
출처: https://www.fuzzysecurity.com/tutorials.html 본 포스팅은 fuzzysecurity Tutorials part 11 -> Write-What-Where를 분석 및 의역하여 작성하였습니다. Sample Windows Driver code에 존재하는 취약점을 학습하는 데 그 목적이 있습니다. Step 1. 취약점 분석 Write-What-Where 취약점은 공격자가 원하는 주소에 원하는 data를 넣게끔 code를 작성하였습니다.NTSTATUS TriggerArbitraryOverwrite(IN PWRITE_WHAT_WHERE UserWriteWhatWhere) { PULONG What = NULL; PULONG Where = NULL; NTSTATUS Status ..
System/Windows www.gflow.co.kr 2017. 8. 23. 23:30
출처: https://www.fuzzysecurity.com/tutorials.html 본 포스팅은 fuzzysecurity Tutorials part 10 -> Stack Overflow를 분석 및 의역하여 작성하였습니다. Sample Windows Driver code에 존재하는 취약점을 학습하는 데 그 목적이 있습니다. Step 1. 취약 드라이버 로드 먼저 Driver Entry를 분석 해보겠습니다. 아래 취약 드라이버에는 IOCTL 인터페이스가 정의되어 있습니다. 따라서 유저 모드에서 IOCTL을 이용하여 함수 호출이 가능합니다. 유저모드에서 함수를 호출할 경우 드라이버의 MajorFunction[IRP_MJ_DEVICE_CONTROL]가 호출됩니다.NTSTATUS DriverEntry(IN P..
System/Windows www.gflow.co.kr 2017. 8. 22. 23:30
출처: https://www.fuzzysecurity.com/tutorials.html 본 포스팅은 fuzzysecurity Tutorials part 6 -> Writing W32 Shellcode를 분석 및 의역하여 작성하였습니다. Sample Windows Driver code에 존재하는 취약점을 학습하는 데 그 목적이 있습니다. 이 과정은 이전 단계에서 진행했던 FreeFloat FTP program을 사용하며 목적은 Debugger와 어셈블리 언어를 사용해 간단한 shellcode를 만드는 연습을 진행할 것입니다. Step 1. Application 이전까지는 kali linux를 이용해 shellcode를 자동으로 얻어 사용했지만 리버싱을 하게될 때나 code의 흐름을 제대로 파악하려면 어셈블..
System/Windows www.gflow.co.kr 2017. 8. 21. 23:30
출처: https://www.fuzzysecurity.com/tutorials.html 본 포스팅은 fuzzysecurity Tutorials part 5 -> Unicode 0x41004100을 분석 및 의역하여 작성하였습니다. Windows Application에 존재하는 취약점을 학습하는 데 그 목적이 있습니다. Step 1. Application list를 추가할 수 있는 단순한 music player입니다. 해당 list 파일의 형식은 .m3u file 입니다. Step 2. 취약점 분석 .m3u 형식의 file 내용에 data를 일정 이상 담아 List 메뉴에서 읽어들이면 return address의 변조가 일어납니다. 아래 code로 exp.m3u file을 만들어 읽어 보았습니다. exp ..