본문 바로가기

System/Windows

System/Hacking/TEB 부터 함수를 구하는 과정.

반응형
* 사용 툴  : Windbg
* 실행 파일 : iexplorer.exe
* 환경 : Windows 7 SP1 32bit

 - 프로세스 함수 주소값 구하기
  • 접근 순서 (구조)
    TEB (Thread Enviorment Block) > 


    PEB (Process Environment Block) > 




    Ldr : PEB_LDR_DATA를 가리키는 포인터

    PEB_LDR_DATA >

    DllBase : 모듈의 주소값 저장
     - 첫번째 LDR_DATA 이므로 이 구조체는 실행파일 자체에 대한 정보를 담고 있다.
     - InMemoryOrderLinks 의 FLINK 값을 따라가다 보면 첫번째로 로드된 라이브러리인 ntdll.dll 파일정보가 들어 있는 두번째 LDR_DATA_TABLE_ENTRY를 만날 수 있다.
  •  실제 접근
    !teb (TEB 주소 구하기) >


     = TEB : 7ffdf000
     = PEB : 7ffd3000 = 7ffdf000 - c000

     PEB 주소값 확인 >


     = 0x030위치에 PEB주소값 저장되어있음.

     PEB 덤프 확인 >


      = 0x00c 위치에 Ldr 주소확인
       
      PEB_LDR_DATA 구조체 확인 >
     


      = InMemoryOrderModuleList 시작점 확인 : 0x481c50

      InMemoryOrderModuleList에서 8을뺀 첫번째 _LDR_DATA_TABLE_ENTRY의 시작주소로 구조체확인 >


      = 구조체 정보가 실행파일의 정보를 담고있음을 확인 : iexplore.exe

      다음 구조체 확인 


      =  ntdll.dll에 대한 정보임을 확인 

      다음 구조체 확인


      = kernel32.dll 에대한 정보임을 확인
      = DllBase가 0x77910000 임을 확인 : kernel32.dll이 로드된 주소를 확인
 - IMAGE_EXPORT_DIRECTORY
  • PE헤더 IMAGE_OPTIONAL_HEADER32의 DataDirectory 배열의 Export Director에 어떤 함수를 Export하는지 저장.
    • AddressOfFunctions // 함수 주소 배열 (EAT) : 함수 시작 주소 까지의 오프셋 배열
    • AddressOfNames // 함수명 배열 : 함수 이름 배열
    • AddressOfNameOridinals // 함수 서수 배열 : 함수의 서수 배열
  •  함수이름 > 인덱스 > 서수 인덱스 > EAT 배열에서 서수 인덱스에 해당하는 함수 offset 확인 > DLL Base + offset = 함수 주소
  • 함수 구하기
    !dlls >


     = kernel32.dll 주소확인

    IMAGE_OPTIONAL_HEADER확인 >


     = DOS_HEADER, IMAGE_FILE_HEADER만큼 더해줌 각각 0xf4, 0x14.
     = 0x60위치에 DATA디렉토리 주소확인

    Export Directory확인 > 


     = 아까 위치에 0x60을 더한값을 확인
     = Export table의 오프셋 확인

    함수주소배열, 함수명 배열, 서수배열확인 >



    함수명 배열 확인 >


     = 값 확인 > 
     


      = ActivateActCtx 확인 2번째 인덱스 (0번 부터 시작)

    서수 테이블 확인 (인덱스 2) >


     = 2번째 값이 (0부터 시작) 00 04인것을 확인

    EAT에서 인덱스 4를 확인 >


     = 인덱스 4의 값은 (0부터 시작) 0x00045911 인것을 확인.

    ActivateActCtx의 함수 확인 >


반응형

'System > Windows' 카테고리의 다른 글

System/Hacking/DEP와 DEP 우회  (0) 2017.11.30
System/Hacking/SEH overwrite Exploit  (0) 2017.11.30
Windows/메모리보호기법/MSDN  (0) 2017.11.30
Windows/DEP보호기법/DEP기법 우회  (0) 2017.10.30
Windows/SEH보호기법/SafeSEH  (0) 2017.10.30