반응형
* 사용 툴 : 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 |