일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 안드로이드
- CTF-d
- frida
- lord of sql injection
- ctf
- 파이썬
- elasticsearch
- Docker
- Reflected XSS
- NTFS
- logstash
- MFT
- XSS
- otter
- Suninatas
- vulnhub
- Openstack
- Strings
- base64
- InsecureBank
- 2018
- foremost
- Volatility
- beebox
- 인시큐어뱅크
- igoat
- kibana
- SQL Injection
- diva
- ESXi
- Today
- Total
Information Security
EPROCESS 본문
EPROCESS?
- 개별 프로세스를 나타내는 거대한 구조체
- KPROCESS(Kernel Process Block)의 포인터 포함 (프로세스 정보, 생성되는 스레드 정보를 가짐)
- 프로세스 식별 정보
- 프로세스에서 사용하는 메모리 정보
- PEB 위치 정보를 확인할 수 있으며
- 커널 모드에 위치

_EPROCESS의 구조체를 확인할 수 있다.

KDBG를 통해 _EPROCESS를 찾을 수 있다.

KDBG(_KDDEBUGGER_DATA64) 구조체?
- 크래시나 디버깅 시에 필요한 커널의 정보들을 담은 구조체
- 이 구조체는 아래와 같은 구조의 헤더로 시작
패턴 매칭
- List 변수의 마지막 8바이트가 항상 0으로 채워짐
- OwnerTage는 KDBG로 세팅
- Size는 XP일 경우 0x290, Windows 2000의 경우 0x208 Bytes
VAD(Virtual Address Descriptor)
페이지 폴트 발생 시 메모리 관리자는 프로세스 주소 공간에서 어떤 가상 주소가 예약되어 있는지 여부를 추적할 수 있게 관리하는 데이터 구조체 집합
Vad - nt!mm - Mm virtual address descriptors
VadF - nt!mm - VADs created by a FreeVM splitting
Vadl - nt!mm - Mm virtual address descriptors (long)
VadS - nt!mm - Mm virtual address descriptors (short)
삽입된 쉘 코드를 포함하는 메모리 영역은 파일로 백업되지 않기 때문에 VadS나 VadF로 Tag가 설정된다.
EPROCESS -> Peb -> Ldr -> _PEB_LDR_DATA

DLL 리스팅 방법
- 접근 순서
fs -> _TEB -> _PEB -> _PEB_LDR_DATA
레지트 정보를 조회 후 Base에 저장되어 있는 TEB 주소를 조회하면 PEB 주소를 알 수 있다.

PEB의 구조체를 조회 하면 LDR 주소를 알 수 있다.

PEB_LDR_DATA 주소를 확인할 수 있다.

LIST_ENTRY 주소를 조회하면 Flink와 Blink 연결된 모듈들을 조회했다.

Flink 첫번째를 조회하면 덤프 형식으로 아무것도 알 수가 없다.

base 주소를 조회하면 MZ로 시작하는 것으로 보아 base 정보라는 것을 알 수 있다.

DLL에 대한 이름을 확인할 수 있다.
