목록2016/11 (2)
#dokydoky
안녕하세요. dokydoky입니다.Windows Kernel에서 pool을 공략하기 위해서는 pool에 대한 이해가 필요합니다.Windows7 32bit를 기준으로 Kernel pool, ListHeads, Lookaside List에 대해서 설명해보았습니다. 0x1. Kernel Pool 시스템 초기화때, 메모리 관리자가 시스템 노드의 갯수에 따라 동적인 사이즈의 메모리 pool을 만듭니다. 각 pool은 pool descriptor라는 구조체에 의해 정의되며, pool descriptor는 pool의 사용을 추적하고, 메모리 타입과 같은 pool 속성을 정의합니다. [pool descriptor structure] 0: kd> dt nt!_POOL_DESCRIPTOR +0x000 PoolType : ..
verifier는 windows Kernel에서 special pool을 만들어주는 기능을 제공합니다.special pool을 만들면 crash가 났을 때, 더 정확하게 분석할 수 있습니다.UAF, double free의 crash가 났을 때, verifier on/off 결과를 비교해 보겠습니다. [verifier on일 경우] - corruption이 발생할 때 바로 exception 발생 후 정지.(off일 경우 바로 안멈출때도 있음) - "!analyze -v" 결과에서 원인을 정확히 말해줌. - stacktrace에 corruption의 원인이되는 드라이버도 함께 표시. [verifier on - UAF-1]*************************************************..