Bug Hunting
- ActiveX 메소드 powershell 로 확인하기 2017.05.25
- [집필 서적 안내] 윈도우 시스템 해킹 가이드 : 버그헌팅과 익스플로잇 2016.01.13 9
- Fuzzer 구현 시 First-chance Exception과 Second-chance Exception 2016.01.07
- Bug Hunting (1) - Exploitable 취약점 분류 2014.04.23
ActiveX 메소드 powershell 로 확인하기
activex 메소드 확인하는 법.
당연히 progid 또는 clsid 는 알고 있어야 한다. 일반적으로 웹 소스 상에서 바로 보는 것은 clsid
1) com/ole viewer 로 확인
2) com raider 로 확인(사실 이제 가장 깔끔한듯. 매뉴얼 퍼징 용도로는..)
3) 프로그래밍
- c 언어로 하면 쉽게 할 수 있으나, python 을 좋아하므로...powershell 을 이용해서 python 으로 하는법(?)
# powershell #
PS C:\Users\hyunmini> $clsid = New-Object Guid 'DC2D84BD-498D-48B1-808C-60236E7FE0C8'
PS C:\Users\hyunmini> $type = [Type]::GetTypeFromCLSID($clsid)
PS C:\Users\hyunmini> $object = [Activator]::CreateInstance($type)
PS C:\Users\hyunmini> $object | get-member
TypeName: System.__ComObject#{684c87de-557e-4a17-aea5-036ff1eeca95}
Name MemberType Definition
---- ---------- ----------
AddFile Method void AddFile (string, string)
AddTempFile Method void AddTempFile (string, uint, st...
AppendDragDrop Method void AppendDragDrop (Variant, string)
AppendFilter Method void AppendFilter (Variant, Variant)
AppendPostData Method void AppendPostData (Variant, Vari...
ClearDragDrop Method void ClearDragDrop ()
ClearFilter Method void ClearFilter ()
ClearPostData Method void ClearPostData ()
...
# python (-_-;;)
p = subprocess.Popen(
[
"powershell.exe",
"-command",
"&{ $clsid = New-Object Guid '%s';$type = [Type]::GetTypeFromCLSID($clsid);$object= [Activator]::CreateInstance($type);get-member -inputObject $object; }" % clsid
], stdout=subprocess.PIPE)
p_result, err = p.communicate()
'Bug Hunting' 카테고리의 다른 글
[집필 서적 안내] 윈도우 시스템 해킹 가이드 : 버그헌팅과 익스플로잇 (9) | 2016.01.13 |
---|---|
Fuzzer 구현 시 First-chance Exception과 Second-chance Exception (0) | 2016.01.07 |
Bug Hunting (1) - Exploitable 취약점 분류 (0) | 2014.04.23 |
[집필 서적 안내] 윈도우 시스템 해킹 가이드 : 버그헌팅과 익스플로잇
까페에는 소식을 자주 올렸었는데...블로그에도 공개할 때가 된 듯 하다.
시스템 해킹이 진입 장벽이 높다고 느껴서(실제론 그렇게 높지 않지만) 공부해볼 시도조차 못했던 경우가 많았을 것이다.
혹은, 기초적인 시스템 해킹 공부는 했으나 중급 이상으로 넘어가기 위해 어떤 공부를 해야 할지 가이드가 부족한
경우도 있었을 것이다. 이러한 연유로, 시스템 해킹 초-중급자를 위한 집필을 마음먹고 시작한지 어언 1년..
드디어 윈도우 시스템 해킹 서적이 드디어 인쇄작업에 들어갔다!!
================================================================================================= |
I. 개요 |
1. PC내부구조 |
1.1 컴퓨어의 언어 |
1.2 CPU와 레지스터 |
1.3 메모리구조 |
1.4 스택과 힙 |
1.5 함수 호출과 리턴 |
2. 어셈블리어 기본 |
2.1 어셈블리어 기초 |
2.2 어셈블리어 실습 |
3. 디스어셈블러와 디버거 |
3.1 디스어셈블러 |
3.2 디버거 |
4. 윈도우 실행파일 구조 |
4.1 PE파일 |
4.2 DOS Header |
4.3 PE Header |
4.4 Image Optional Header |
4.5 Section Header |
II. 취약점과 공격 |
1. 소프트웨어 취약점 |
1.1 취약점 |
1.2 취약점의 발견과 패치 |
2. 취약점분류 |
2.1 Memory Corruption 취약점분류 |
3. Exploit 분류 |
3.1 파일포맷 Exploit |
3.2 리모트(원격) Exploit |
III. 쉘코드 원리와 작성 |
1. 쉘코드작성 |
2. 널바이트 제거 |
3. Universial 쉘코드 |
4. 포트바인딩쉘코드작성 |
5. 리버스 쉘코드작성 |
6. 쉘코드 인코딩 |
IV. Exploit 작성 |
1. 스택버퍼오버플로우 Exploit |
1.1 Direct EIP Overwrite |
1.2 Trampoline |
1.3 SEH Overwrite |
2. 힙 버퍼오버플로우 Exploit |
2.1 함수포인터 Overwrite |
2.2 Vtable Overwrite |
3. 정수오버플로우 Exploit |
3.1. 정수 오버플로우 |
3.2. 정수 오버플로우 Exploit |
4. Use-After-Free Exploit |
4.1. Use-After-Free |
4.2. HeapSpray |
4.3. Use-After-Free Exploit |
5. Exploit 작성 자동화 |
5.1 Metasploit 모듈 작성 |
5.2 mona 를 이용한 Exploit 작성 |
V. 방어와 우회기법 |
1. SafeSEH 기법 |
1.1 SafeSEH |
1.2. Non SafeSEH 모듈 이용 |
1.3. 모듈이 로드되지 않은 메모리 영역 이용 |
2. DEP 기법 |
2.1. DEP |
2.2. RTL |
2.3. Chaining RTL |
2.4. ROP |
2.5. ROP 자동화 |
3. ASLR 기법 |
3.1. ASLR 소개 |
3.2. BruteForce |
3.3. Non ASLR 모듈 우회 |
3.4. 부분 Overwrite |
3.5. Info Leak |
VI. 버그헌팅 |
1. 기본방법론 |
1.1 블랙박스 VS 화이트박스 |
1.2 버그 식별 및 평가 |
2. 소스코드 분석 |
2.1 소스코드 리뷰 |
2.2 소스코드 점검툴 |
3. 퍼징(Fuzzing) |
3.1 Dumb 퍼징 |
3.2 Smart 퍼징 |
3.3 파일 퍼저 구현 |
4. 리버싱(Reversing) |
4.1 고급 디버깅 기술 |
4.2 리버싱을 이용한 버그 헌팅 |
4.3 바이너리 디핑 |
# 파일 포맷 퍼징 툴 구현
# 소스코드 오디팅
'Bug Hunting' 카테고리의 다른 글
ActiveX 메소드 powershell 로 확인하기 (0) | 2017.05.25 |
---|---|
Fuzzer 구현 시 First-chance Exception과 Second-chance Exception (0) | 2016.01.07 |
Bug Hunting (1) - Exploitable 취약점 분류 (0) | 2014.04.23 |
Fuzzer 구현 시 First-chance Exception과 Second-chance Exception
First-chance Exception / Second(last)-chance Exception
'Bug Hunting' 카테고리의 다른 글
ActiveX 메소드 powershell 로 확인하기 (0) | 2017.05.25 |
---|---|
[집필 서적 안내] 윈도우 시스템 해킹 가이드 : 버그헌팅과 익스플로잇 (9) | 2016.01.13 |
Bug Hunting (1) - Exploitable 취약점 분류 (0) | 2014.04.23 |
Bug Hunting (1) - Exploitable 취약점 분류
# Bug Hunting (1) - Exploitable 취약점 분류
취약점에는 다양한 종류가 있다.
똑같은 crash 가 발생하더라도, 해당 버그는 Exploit 할수도, 불가능 할수도 있다.
여기서 Exploit 이라 함은 코드 실행 흐름을 변경하여 원하는 코드를 실행할 수 있는, 즉 Code Execution 이 가능한가이다.
간단한 설명과 함께 분류해 보았다.
1. Memory Corruption
- 대표적인 Exploit 유형으로, 주로 잘못된 함수 사용 등에 의해 발생
1.1. Stack Buffer Overflow
- 스택상의 메모리 영역을 침범하여 덮어쓰는 유형의 버그
- 공격기법 : Direct EIP Overwrite, SEH Overwrite, ECX one byte Overflow, RTL(Return To Library), Fake EBP, Fake ESP, ROP
- 방어기법 : Stack Guard, Stack Cookie, DEP/NX, ASLR
1.2. Heap Buffer Overflow
- 힙 메모리 영역을 침범하여 덮어쓰는 유형의 버그
- 공격기법 : VFT Overwrite(Virtual Function Table Overwrite), Function Pointer Overwrite
1.3. Format String Bug
- 포맷 스트링을 사용하지 않은 잘못된 함수 사용으로 인하여 %n 등으로 특정 주소값을 덮어씌우는 공격기법
- 공격기법 : dtors Ovewrite, Got Overwrite, RET Overwrite
1.4. Use-After-Free
- Free 로 해제된 객체, 포인터를 사용하는 경우 발생하는 버그로, 최근 많이 발견되는 유형 중 한가지이다.(특히 웹브라우저)
- 공격기법 : Heap Spray -> 정밀 Heap Spray, DEPS(엘리멘탈 속성 spray), JIT Spray 등
1.5. Double Free
- free() 로 이미 해제된 메모리를 한번 더 해제하려 할때 발생하는 버그
1.6. Integer Overflow
- 자료형마다의 경계값(최대,최소값) 차이점 등에 의해 발생하는 버그
'Bug Hunting' 카테고리의 다른 글
ActiveX 메소드 powershell 로 확인하기 (0) | 2017.05.25 |
---|---|
[집필 서적 안내] 윈도우 시스템 해킹 가이드 : 버그헌팅과 익스플로잇 (9) | 2016.01.13 |
Fuzzer 구현 시 First-chance Exception과 Second-chance Exception (0) | 2016.01.07 |