SlideShare a Scribd company logo
1 of 40
Download to read offline
MS Office 2010

암호화 과정 분석 결과
2013-11-30
충남대학교 정보보호 연구실

전준희
x15kangx @ nate.com
www.CodeEngn.com
2013 CodeEngn Conference 09
목차
u 개요
u MS Office 관련 기본 내용
u 결론 2-1
u 분석과정
u MS Office 2010 vs MS Office 2013
u 결론 2-2
u Q&A

2013-11-30

40 - 2
개 요

2013-11-30
개 요
u 개 요
§ MS Office 2010 프로그램을 MS 社에서 공개한 내용에 기반하여 리버싱으로 실제
암호 처리 과정을 분석한 내용임.

u 주요내용
§ 분석대상 : MS Office 2010(32bit)
§ 분석인원 : 전준희 외 1명
§ 분석기간 : 2013. 1. 1. ~ 3. 1.(3개월)
§ 분석도구 : Ollydbg, IDA, Hxd 등.
§ 분석환경 : MS Windows XP Home Edition sp3

u 분석결과
§ 발표 내용 참조

2013-11-30

40 - 4
MS Office 관련 기본 내용

2013-11-30
MS Office 관련 기본 내용
u MS 社 암호화 방식 공개 내용

.
.
.

2013-11-30

40 - 6
MS Office 관련 기본 내용
u 일반 오피스 파일과 암호화된 오피스 파일의 저장 방식 차이
§

일반 오피스 파일 : Office Open XML 형식

§

암호화된 오피스 파일 : Compound Document File 포멧
※ also called Microsoft OLE2, Structured Storage, Compound File Binary Format

u Office Open XML 파일 헤더

u Office Open XML 파일의 구성

.ZIP

2013-11-30

40 - 7
MS Office 관련 기본 내용
u 일반 오피스 파일과 암호화된 오피스 파일의 저장 방식 차이
§

일반 오피스 파일 : Office Open XML 형식

§

암호화된 오피스 파일 : Compound Document File 포멧
※ also called Microsoft OLE2, Structured Storage, Compound File Binary Format

u CDF 파일 헤더

u CDF 파일 포멧 內 XML 블럭

...

2013-11-30

40 - 8
MS Office 관련 기본 내용
u Python 기반의 OleFileIO_PL 및 oletools 라이브러리를 활용한 CDF 포멧 확인

2013-11-30

40 - 9
MS Office 관련 기본 내용
u XML 블럭 내용

Data
key

Data
Integrity

Key
Encryptors

2013-11-30

40 - 10
결론 2-1
Ø 암호키 암호화
Ø 데이터 암호화
Ø 무결성 검사값 암호화

2013-11-30
암호키 암호화
Random 1

Key Encrypt Salt

Random 2

Verifier

Random 3

Encryption Key

SHA1(

Random 1

+

Password

)

SHA1(0)
20byte
I = 0, N = 1

16byte

SHA1(

I
4byte

SHA1( N1)
10byte

+

I
< 100,000
N

Start
Header

)
N=N+
1
I=I+1

Y

HFinal
20byt
e

SHA1(

HFinal
20byt
e

+

20byte

FE A7 D2
76
3B 4B 9E
79

Random 1

Key
16byte

IV
16byte

AES128 CBC Encrypt (16byte)
Random 2

Encrypted Verifier Hash Input

2013-11-30

)

SHA1(

HFinal
20byt
e

+

20byte

D7 AA 0F
6D
30 61 34 4E

Random 1

Key
16byte

IV
16byte

AES128 CBC Encrypt(32byte)

SHA1(

Random 2

)+

00 X
12

Encrypted Verifier Hash Value

)

HFinal
20byt
e

SHA1(

+

14 6E 0B E7
AB AC D0
D6

20byte

)

Random 1

Key
16byte

IV
16byte

AES128 CBC Encrypt (16byte)
Random 3

Encrypted Key Value

40 - 12
암호키 암호화
u 암호키 저장 위치 재확인

2013-11-30

40 - 13
데이터 암호화
Random 3

Encryption Key

Random 4

Data Salt

N=0

16byte

SHA1(

Random 4

N
4byte

+

)

OpenXML Data
20byte

Random 3

IV
16byte

Key
16byte

N=N+1

Data 4096 byte copy
AES128 CBC Encrypt (4096byte)

Data 4096 byte

DataSize / 4096 + 1
<N

END

Data Encryption

2013-11-30

40 - 14
데이터 암호화
u Data Salt 저장 위치

2013-11-30

40 - 15
무결성 정보 암호화
Random 3

Encryption Key

Random 4

Data Salt

16byte
Random 5

HMAC Key

20byte

Random 5

SHA1(

Random 4

+

5F B2 AD
01
0C B9 E1
F6

)

Key
20byte

SHA1(

Random 4

+

A0 67 7F 02
B2 2C 84 33

)

HMAC (20byte)
20byte

Random 3

IV
16byte

Key
16byte

AES128 CBC Encrypt (32byte)
Random 5

+

00 X
12

Encrypted Hmac Key

2013-11-30

20byte

Random 3

IV
16byte

Key
16byte

Encrypted Data

AES128 CBC Encrypt(32byte)
HMAC (20byte)

+

00 X
12

Encrypted Hmac Value

40 - 16
무결성 정보 암호화
u 무결성 정보 저장 위치

2013-11-30

40 - 17
분석과정
Ø 분석 과정 시작
Ø IDA Python 기반 분석
Ø 리버싱 결과 증명

2013-11-30
분석과정
u 분석 목표
§

암호 대상

: 무엇을 암호화 하는가?

§

암호 알고리즘 : 어떤 알고리즘을 사용하는가?

§

암호 키

: 어떤 암호 키를 사용하는가?

§

암호 결과

: 암호 결과가 어떻게 저장되는가?

암호키

암호 대상

암호 결과

Encryptor

암호 알고리즘

2013-11-30

40 - 19
분석과정
u 일반적인 CryptAPI 함수 호출 순서
CSP(Cryptography Service Provider) 핸들 생성
1

CryptAcquireContext( &hCryptProv, 0, MS_ENHANCED_PROV, PROV_RSA_FULL, 0)

Hash Object 생성
2

CryptCreateHash( hCryptProv, CALG_MD5, 0, 0, &hHash )

Password Hash
3

CryptHashData( hHash, (BYTE *)szPassword, strlen(szPassword), 0)

Hash 값으로 세션 키 생성
4

CryptDeriveKey( hCryptProv, ENCRYPT_ALGORITHM, hHash, KEYLENGTH, &hKey )

pbBuffer의 내용 암호화
5

2013-11-30

CryptEncrypt( hKey, 0, feof(hSource), 0, pbBuffer, &dwCount, dwBufferLen )

40 - 20
분석과정
u 암호 알고리즘 확인
§

확인 결과 : AES128

CryptImportKey

CALG_AES_128

2013-11-30

40 - 21
분석과정
u 암호화 대상 데이터 확인
§

확인 결과 : Office Open XML 형식

CryptEncrypt

Office Open XML

2013-11-30

40 - 22
분석과정
u Ollydbg 동적 분석의 한계
동적으로 맵핑 되는 함수주소
CryptCreateHash
CryptDestroyHash

매번 변경되는 Random 값…
F8과 F9의 거리…
CryptHashData

1회 분석 시 약 2시간 소요
여긴 어디… 나는 누구…?
CryptHashData

CryptGetHashPram

If ecx < 100000

2013-11-30

실

패

40 - 23
분석과정
u F8과 F9의 결과물

2013-11-30

40 - 24
분석과정 – IDA Python
u IDA Python 중 Break Point Hook 기능의 기본 구존

1. MyDbgHook 설정
Event 처리 코드 작성 부분

2. Break Point 설정
3. Event 처리 코드 작성
-끝-

2013-11-30

40 - 25
분석과정 – IDA Python
u 2가지 함수 종류
§
§

u

입력 값 확인이 필요한 함수 [ ex : func( a, b, c) ]
결과 값 확인이 필요한 함수 [ ex : func( a, &b, c) ]

입력 값 확인이 필요한 함수

u

§

함수 시작 점에 브레이크 포인트 설정

§

입력 값 확인이 필요한 함수

esp를 기준으로 입력 값에 접근하여 확인 후 재실행

eip

Push ebp
Mov ebp, esp
.
.
.
.
.
.
.
.

TOP

break

esp

Arg3
Arg2
Arg1
Ret
.
.
.
.
.
.

Mov esp, ebp
ret

Code
2013-11-30

BOTTOM

Stack
40 - 26
분석과정 – IDA Python
u 2가지 함수 종류
§
§

u

입력 값 확인이 필요한 함수 [ ex : func( a, b, c) ]
결과 값 확인이 필요한 함수 [ ex : func( a, &b, c) ]

결과 값이 필요한 함수

u

§

함수 시작 점에 브레이크 포인트 설정

§

esp를 기준으로 결과 값이 저장될 메모리 주소 확인

§

Ret에 브레이크 포인트 설정 후 재실행

§

결과 값이 필요한 함수

결과 값 확인 후 브레이크 포인트 해제 후 재실행

eip

Call Func
break
.
.
.
Push ebp
break
Mov ebp, esp
.
.
.
.
.
Mov esp, ebp
ret

Code

2013-11-30

TOP
Arg3
Arg2
Arg1
esp

Ret
.
.
.
.
.
.
BOTTOM

Stack
40 - 27
분석과정 – IDA Python
u IDA Python 스크립트를 활용한 디버깅

2013-11-30

40 - 28
분석과정 – IDA Python
u IDA Python 로그 결과 확인

2013-11-30

40 - 29
분석과정
u Python 파이썬 로그 결과 도식화

2013-11-30

40 - 30
분석과정
u Python으로 구현한 오피스 암호 해제 시연

2013-11-30

40 - 31
분석과정
u Python으로 구현한 암호화된 오피스파일 Bruteforce 시연

2013-11-30

40 - 32
MS office 2010 vs MS office 2013

2013-11-30
MS Office 2010 vs MS Office 2013
u MS Office 2013 XML 블록 내용

2013-11-30

40 - 34
MS Office 2010 vs MS Office 2013
u MS Office 2010과 MS Office 2013의 키 길이 및 해쉬 알고리즘 차이
구

saltSize

16

128

256

20

64

cipherAlgoritm

AES

AES

cipherChaining

ChainingModeCBC

ChainingModeCBC

hashAlgoritm

SHA1

SHA512

saltValue

16byte

16byte

encryptedHmacKey

32byte

64byte

encryptedHmacValue

32byte

64byte

spinCount

100000

100000

saltSize

16

16

blockSize

16

16

keyBits

128

256

hashSize

20

64

cipherAlgorithm

AES

AES

cipherChaining

ChainingModeCBC

ChainingModeCBC

hashAlgorithm

SHA1

SHA512

SaltValue

16byte

16byte

encryptedVerifierHashInput

16byte

16byte

encryptedVerifierHashValue

32byte

64byte

encryptedKeyValue

2013-11-30

16

hashSize

KeyEncryptors

MS Office 2013
16

KeyBits

dataIntegrity

MS Office 2010
16

bloackSize

KeyData

분

16byte

32byte

40 - 35
암호키 암호화(MS Office 2013)
Random 1

Key Encrypt Salt

Random 2

Verifier

SHA512(

Random 1

+

Password

)

SHA512(0) 64byte
I = 0, N = 1

16byte

Random 3

Encryption Key

I
4byte

SHA512(

SHA512( N1)
64byte

+

32byte
I
< 100,000
N

Start
Header

)
N=N+
1
I=I+1

Y

HFinal
64byt
e

SHA512(

HFinal
64byt
e

+

64byte

FE A7 D2
76
3B 4B 9E
79

Random 1

Key
32byte

IV
16byte

AES256 CBC Encrypt (16byte)
Random 2

Encrypted Verifier Hash Input

2013-11-30

)

SHA512(

HFinal
64byt
e

64byte
Key
32byte

+

D7 AA 0F
6D
30 61 34 4E

Random 1
IV
16byte

AES256 CBC Encrypt(64byte)

SHA512(

Random 2

)

Encrypted Verifier Hash Value

)

SHA512(

HFinal
64byt
e

+

14 6E 0B E7
AB AC D0
D6

64byte

)

Random 1

Key
32byte

IV
16byte

AES256 CBC Encrypt (32byte)
Random 3

Encrypted Key Value

40 - 36
암호키 암호화(MS Office 2010 ⇒ 2013)
Random 1

Key Encrypt Salt

Random 2

Verifier

SHA512(

Random 1

+

Password

)

SHA512(0) 64byte
I = 0, N = 1

16byte
Random 3

Encryption Key

I
4byte

SHA512(

SHA512( N1)
64byte

+

32byte
I
< 100,000
N

Start
Header

)
N=N+
1
I=I+1

Y

HFinal
64byt
e

SHA512(

HFinal
64byt
e

+

64byte

FE A7 D2
76
3B 4B 9E
79

Random 1

Key
32byte

IV
16byte

AES256 CBC Encrypt (16byte)
Random 2

Encrypted Verifier Hash Input

)

SHA512(

HFinal
64byt
e

64byte
Key
32byte

+

D7 AA 0F
6D
30 61 34 4E

)

Random 1
IV
16byte

AES256 CBC Encrypt(64byte)

SHA512(

Random 2

)

Encrypted Verifier Hash Value

SHA512(

HFinal
64byt
e

+

14 6E 0B E7
AB AC D0
D6

64byte

)

Random 1

Key
32byte

IV
16byte

AES256 CBC Encrypt (32byte)
Random 3

Encrypted Key Value

MS Office 2013 관련 내용 이하 생략
2013-11-30

40 - 37
결론 2-2

2013-11-30
결론2-2

u 이번에 발표된 내용을 기반으로 MS Office 관련 연구에 도움이 되길 바랍니다.
§

Ex) 향상된 Bruteforce Tool 개발 등.

u IDA Python을 활용하여 진행하시는 리버싱에 도움이 되길 바랍니다.

u 관련 연구 진행 시 내용 공유 부탁 드립니다.

2013-11-30

40 - 39
Q&A

Thanks for Listening
x15kangx@nate.com

www.CodeEngn.com
2013 CodeEngn Conference 09

More Related Content

Viewers also liked

2006년 SSL VPN 포탈 보안 강화(안)
2006년 SSL VPN 포탈 보안 강화(안)2006년 SSL VPN 포탈 보안 강화(안)
2006년 SSL VPN 포탈 보안 강화(안)Sihyoung Jurn
 
Oddonegames office tour in korean
Oddonegames office tour in koreanOddonegames office tour in korean
Oddonegames office tour in koreanMsPluto
 
[14.10.20] 아! 그거...모르겠습니다 - TLS(devrookie)
[14.10.20] 아! 그거...모르겠습니다 - TLS(devrookie)[14.10.20] 아! 그거...모르겠습니다 - TLS(devrookie)
[14.10.20] 아! 그거...모르겠습니다 - TLS(devrookie)해강
 
CloudFront(클라우드 프론트)와 Route53(라우트53) AWS Summit Seoul 2015
CloudFront(클라우드 프론트)와 Route53(라우트53) AWS Summit Seoul 2015CloudFront(클라우드 프론트)와 Route53(라우트53) AWS Summit Seoul 2015
CloudFront(클라우드 프론트)와 Route53(라우트53) AWS Summit Seoul 2015WineSOFT
 
Ssl 하드웨어 가속기를 이용한 성능 향상
Ssl 하드웨어 가속기를 이용한 성능 향상Ssl 하드웨어 가속기를 이용한 성능 향상
Ssl 하드웨어 가속기를 이용한 성능 향상knight1128
 
AWS Summit Seoul 2015 - AWS를 통한 클라우드 보안 이해하기
AWS Summit Seoul 2015 - AWS를 통한 클라우드 보안 이해하기AWS Summit Seoul 2015 - AWS를 통한 클라우드 보안 이해하기
AWS Summit Seoul 2015 - AWS를 통한 클라우드 보안 이해하기Amazon Web Services Korea
 
9월 웨비나 - AWS에서의 네트워크 보안 (이경수 솔루션즈 아키텍트)
9월 웨비나 - AWS에서의 네트워크 보안 (이경수 솔루션즈 아키텍트)9월 웨비나 - AWS에서의 네트워크 보안 (이경수 솔루션즈 아키텍트)
9월 웨비나 - AWS에서의 네트워크 보안 (이경수 솔루션즈 아키텍트)Amazon Web Services Korea
 
프로젝트에서 Sw아키텍트의 역할 20140717
프로젝트에서 Sw아키텍트의 역할 20140717프로젝트에서 Sw아키텍트의 역할 20140717
프로젝트에서 Sw아키텍트의 역할 20140717Young On Kim
 
품질관리 기본교육자료 #
품질관리 기본교육자료 #품질관리 기본교육자료 #
품질관리 기본교육자료 #Woongseok Yun
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceXionglong Jin
 
Deep Dive on Amazon EBS Elastic Volumes - March 2017 AWS Online Tech Talks
Deep Dive on Amazon EBS Elastic Volumes - March 2017 AWS Online Tech TalksDeep Dive on Amazon EBS Elastic Volumes - March 2017 AWS Online Tech Talks
Deep Dive on Amazon EBS Elastic Volumes - March 2017 AWS Online Tech TalksAmazon Web Services
 
Top Rumors About Apple March 21 Big Event
Top Rumors About Apple March 21 Big EventTop Rumors About Apple March 21 Big Event
Top Rumors About Apple March 21 Big EventChromeInfo Technologies
 
Mobile-First SEO - The Marketers Edition #3XEDigital
Mobile-First SEO - The Marketers Edition #3XEDigitalMobile-First SEO - The Marketers Edition #3XEDigital
Mobile-First SEO - The Marketers Edition #3XEDigitalAleyda Solís
 

Viewers also liked (16)

2006년 SSL VPN 포탈 보안 강화(안)
2006년 SSL VPN 포탈 보안 강화(안)2006년 SSL VPN 포탈 보안 강화(안)
2006년 SSL VPN 포탈 보안 강화(안)
 
Oddonegames office tour in korean
Oddonegames office tour in koreanOddonegames office tour in korean
Oddonegames office tour in korean
 
[14.10.20] 아! 그거...모르겠습니다 - TLS(devrookie)
[14.10.20] 아! 그거...모르겠습니다 - TLS(devrookie)[14.10.20] 아! 그거...모르겠습니다 - TLS(devrookie)
[14.10.20] 아! 그거...모르겠습니다 - TLS(devrookie)
 
CloudFront(클라우드 프론트)와 Route53(라우트53) AWS Summit Seoul 2015
CloudFront(클라우드 프론트)와 Route53(라우트53) AWS Summit Seoul 2015CloudFront(클라우드 프론트)와 Route53(라우트53) AWS Summit Seoul 2015
CloudFront(클라우드 프론트)와 Route53(라우트53) AWS Summit Seoul 2015
 
Ssl 하드웨어 가속기를 이용한 성능 향상
Ssl 하드웨어 가속기를 이용한 성능 향상Ssl 하드웨어 가속기를 이용한 성능 향상
Ssl 하드웨어 가속기를 이용한 성능 향상
 
HTTPS, 원격제어
HTTPS, 원격제어HTTPS, 원격제어
HTTPS, 원격제어
 
AWS Summit Seoul 2015 - AWS를 통한 클라우드 보안 이해하기
AWS Summit Seoul 2015 - AWS를 통한 클라우드 보안 이해하기AWS Summit Seoul 2015 - AWS를 통한 클라우드 보안 이해하기
AWS Summit Seoul 2015 - AWS를 통한 클라우드 보안 이해하기
 
9월 웨비나 - AWS에서의 네트워크 보안 (이경수 솔루션즈 아키텍트)
9월 웨비나 - AWS에서의 네트워크 보안 (이경수 솔루션즈 아키텍트)9월 웨비나 - AWS에서의 네트워크 보안 (이경수 솔루션즈 아키텍트)
9월 웨비나 - AWS에서의 네트워크 보안 (이경수 솔루션즈 아키텍트)
 
프로젝트에서 Sw아키텍트의 역할 20140717
프로젝트에서 Sw아키텍트의 역할 20140717프로젝트에서 Sw아키텍트의 역할 20140717
프로젝트에서 Sw아키텍트의 역할 20140717
 
품질관리 기본교육자료 #
품질관리 기본교육자료 #품질관리 기본교육자료 #
품질관리 기본교육자료 #
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
 
Deep Dive on Amazon EBS Elastic Volumes - March 2017 AWS Online Tech Talks
Deep Dive on Amazon EBS Elastic Volumes - March 2017 AWS Online Tech TalksDeep Dive on Amazon EBS Elastic Volumes - March 2017 AWS Online Tech Talks
Deep Dive on Amazon EBS Elastic Volumes - March 2017 AWS Online Tech Talks
 
Top Rumors About Apple March 21 Big Event
Top Rumors About Apple March 21 Big EventTop Rumors About Apple March 21 Big Event
Top Rumors About Apple March 21 Big Event
 
Mobile-First SEO - The Marketers Edition #3XEDigital
Mobile-First SEO - The Marketers Edition #3XEDigitalMobile-First SEO - The Marketers Edition #3XEDigital
Mobile-First SEO - The Marketers Edition #3XEDigital
 
Bill Aulet GEC2016 keynote speech March 16 2016 Medellin Colombia
Bill Aulet GEC2016 keynote speech March 16 2016 Medellin ColombiaBill Aulet GEC2016 keynote speech March 16 2016 Medellin Colombia
Bill Aulet GEC2016 keynote speech March 16 2016 Medellin Colombia
 
Build Features, Not Apps
Build Features, Not AppsBuild Features, Not Apps
Build Features, Not Apps
 

Similar to [2013 CodeEngn Conference 09] x15kangx - MS Office 2010 문서 암호화 방식 분석 결과

Character Encoding in python
Character Encoding in pythonCharacter Encoding in python
Character Encoding in pythondaesung7kang
 
[KGC 2013] Online Game Security in China
[KGC 2013] Online Game Security in China[KGC 2013] Online Game Security in China
[KGC 2013] Online Game Security in ChinaSeungmin Shin
 
금융 데이터 이해와 분석 PyCon 2014
금융 데이터 이해와 분석 PyCon 2014금융 데이터 이해와 분석 PyCon 2014
금융 데이터 이해와 분석 PyCon 2014Seung-June Lee
 
android stuff1
android stuff1android stuff1
android stuff1Jin Jiu
 
//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작
//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작
//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작Taeyoung Kim
 
안드로이드 오픈소스 어플리케이션 블록
안드로이드 오픈소스 어플리케이션 블록안드로이드 오픈소스 어플리케이션 블록
안드로이드 오픈소스 어플리케이션 블록YoungSu Son
 
Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기OnGameServer
 
Standardization of item_data_by_ai_decryption
Standardization of item_data_by_ai_decryptionStandardization of item_data_by_ai_decryption
Standardization of item_data_by_ai_decryptionJihyunSong13
 
하이퍼레저 패브릭 데이터 구조
하이퍼레저 패브릭 데이터 구조하이퍼레저 패브릭 데이터 구조
하이퍼레저 패브릭 데이터 구조Logpresso
 
병렬프로그래밍과 Cuda
병렬프로그래밍과 Cuda병렬프로그래밍과 Cuda
병렬프로그래밍과 CudaSeok-joon Yun
 
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWSGruter
 
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기Chris Ohk
 
[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF 문제풀이
[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF 문제풀이[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF 문제풀이
[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF 문제풀이GangSeok Lee
 
Wire shark 사용법 및 네트워크 개론 살짝 설명
Wire shark 사용법 및 네트워크 개론 살짝 설명Wire shark 사용법 및 네트워크 개론 살짝 설명
Wire shark 사용법 및 네트워크 개론 살짝 설명진우 이
 
[Pgday.Seoul 2019] Advanced FDW
[Pgday.Seoul 2019] Advanced FDW[Pgday.Seoul 2019] Advanced FDW
[Pgday.Seoul 2019] Advanced FDWPgDay.Seoul
 
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기Kenu, GwangNam Heo
 
Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900Samsung Electronics
 
Webrtc 허영남 20150528
Webrtc 허영남 20150528Webrtc 허영남 20150528
Webrtc 허영남 20150528영남 허
 
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어NHN FORWARD
 

Similar to [2013 CodeEngn Conference 09] x15kangx - MS Office 2010 문서 암호화 방식 분석 결과 (20)

Character Encoding in python
Character Encoding in pythonCharacter Encoding in python
Character Encoding in python
 
[KGC 2013] Online Game Security in China
[KGC 2013] Online Game Security in China[KGC 2013] Online Game Security in China
[KGC 2013] Online Game Security in China
 
금융 데이터 이해와 분석 PyCon 2014
금융 데이터 이해와 분석 PyCon 2014금융 데이터 이해와 분석 PyCon 2014
금융 데이터 이해와 분석 PyCon 2014
 
android stuff1
android stuff1android stuff1
android stuff1
 
//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작
//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작
//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작
 
안드로이드 오픈소스 어플리케이션 블록
안드로이드 오픈소스 어플리케이션 블록안드로이드 오픈소스 어플리케이션 블록
안드로이드 오픈소스 어플리케이션 블록
 
Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기
 
Standardization of item_data_by_ai_decryption
Standardization of item_data_by_ai_decryptionStandardization of item_data_by_ai_decryption
Standardization of item_data_by_ai_decryption
 
하이퍼레저 패브릭 데이터 구조
하이퍼레저 패브릭 데이터 구조하이퍼레저 패브릭 데이터 구조
하이퍼레저 패브릭 데이터 구조
 
병렬프로그래밍과 Cuda
병렬프로그래밍과 Cuda병렬프로그래밍과 Cuda
병렬프로그래밍과 Cuda
 
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS스타트업사례로 본 로그 데이터분석 : Tajo on AWS
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
 
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
 
[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF 문제풀이
[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF 문제풀이[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF 문제풀이
[2010 CodeEngn Conference 04] hahah - Defcon 18 CTF 문제풀이
 
Wire shark 사용법 및 네트워크 개론 살짝 설명
Wire shark 사용법 및 네트워크 개론 살짝 설명Wire shark 사용법 및 네트워크 개론 살짝 설명
Wire shark 사용법 및 네트워크 개론 살짝 설명
 
Mongo db 최범균
Mongo db 최범균Mongo db 최범균
Mongo db 최범균
 
[Pgday.Seoul 2019] Advanced FDW
[Pgday.Seoul 2019] Advanced FDW[Pgday.Seoul 2019] Advanced FDW
[Pgday.Seoul 2019] Advanced FDW
 
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
ecdevday8 웹개발자의 약한고리 SQL 뛰어넘기
 
Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900
 
Webrtc 허영남 20150528
Webrtc 허영남 20150528Webrtc 허영남 20150528
Webrtc 허영남 20150528
 
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
[2018] NHN 모니터링의 현재와 미래 for 인프라 엔지니어
 

More from GangSeok Lee

[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안GangSeok Lee
 
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석GangSeok Lee
 
[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing
[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing
[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 FuzzingGangSeok Lee
 
[2014 CodeEngn Conference 11] 김기홍 - 빅데이터 기반 악성코드 자동 분석 플랫폼
[2014 CodeEngn Conference 11] 김기홍 - 빅데이터 기반 악성코드 자동 분석 플랫폼[2014 CodeEngn Conference 11] 김기홍 - 빅데이터 기반 악성코드 자동 분석 플랫폼
[2014 CodeEngn Conference 11] 김기홍 - 빅데이터 기반 악성코드 자동 분석 플랫폼GangSeok Lee
 
[2014 CodeEngn Conference 11] 최우석 - 자바스크립트 난독화 너네 뭐니?
[2014 CodeEngn Conference 11] 최우석 - 자바스크립트 난독화 너네 뭐니?[2014 CodeEngn Conference 11] 최우석 - 자바스크립트 난독화 너네 뭐니?
[2014 CodeEngn Conference 11] 최우석 - 자바스크립트 난독화 너네 뭐니?GangSeok Lee
 
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KO
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KO[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KO
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KOGangSeok Lee
 
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study EN
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study EN[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study EN
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study ENGangSeok Lee
 
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KOGangSeok Lee
 
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis EN
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis EN[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis EN
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis ENGangSeok Lee
 
[2014 CodeEngn Conference 11] 정든품바 - 웹성코드
[2014 CodeEngn Conference 11] 정든품바 - 웹성코드[2014 CodeEngn Conference 11] 정든품바 - 웹성코드
[2014 CodeEngn Conference 11] 정든품바 - 웹성코드GangSeok Lee
 
[2014 CodeEngn Conference 10] 정광운 - 안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)
[2014 CodeEngn Conference 10] 정광운 -  안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)[2014 CodeEngn Conference 10] 정광운 -  안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)
[2014 CodeEngn Conference 10] 정광운 - 안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)GangSeok Lee
 
[2014 CodeEngn Conference 10] 노용환 - 디버거 개발, 삽질기
[2014 CodeEngn Conference 10] 노용환 -  디버거 개발, 삽질기[2014 CodeEngn Conference 10] 노용환 -  디버거 개발, 삽질기
[2014 CodeEngn Conference 10] 노용환 - 디버거 개발, 삽질기GangSeok Lee
 
[2014 CodeEngn Conference 10] 심준보 - 급전이 필요합니다
[2014 CodeEngn Conference 10] 심준보 -  급전이 필요합니다[2014 CodeEngn Conference 10] 심준보 -  급전이 필요합니다
[2014 CodeEngn Conference 10] 심준보 - 급전이 필요합니다GangSeok Lee
 
[2013 CodeEngn Conference 09] proneer - Malware Tracker
[2013 CodeEngn Conference 09] proneer - Malware Tracker[2013 CodeEngn Conference 09] proneer - Malware Tracker
[2013 CodeEngn Conference 09] proneer - Malware TrackerGangSeok Lee
 
[2013 CodeEngn Conference 09] BlueH4G - hooking and visualization
[2013 CodeEngn Conference 09] BlueH4G - hooking and visualization[2013 CodeEngn Conference 09] BlueH4G - hooking and visualization
[2013 CodeEngn Conference 09] BlueH4G - hooking and visualizationGangSeok Lee
 
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploitsGangSeok Lee
 
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론GangSeok Lee
 
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석GangSeok Lee
 
[2013 CodeEngn Conference 09] 김홍진 - 보안컨설팅 이해 및 BoB 보안컨설팅 인턴쉽
[2013 CodeEngn Conference 09] 김홍진 - 보안컨설팅 이해 및 BoB 보안컨설팅 인턴쉽[2013 CodeEngn Conference 09] 김홍진 - 보안컨설팅 이해 및 BoB 보안컨설팅 인턴쉽
[2013 CodeEngn Conference 09] 김홍진 - 보안컨설팅 이해 및 BoB 보안컨설팅 인턴쉽GangSeok Lee
 
[2010 CodeEngn Conference 04] Max - Fighting against Botnet
[2010 CodeEngn Conference 04] Max - Fighting against Botnet[2010 CodeEngn Conference 04] Max - Fighting against Botnet
[2010 CodeEngn Conference 04] Max - Fighting against BotnetGangSeok Lee
 

More from GangSeok Lee (20)

[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
 
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석
 
[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing
[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing
[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 Fuzzing
 
[2014 CodeEngn Conference 11] 김기홍 - 빅데이터 기반 악성코드 자동 분석 플랫폼
[2014 CodeEngn Conference 11] 김기홍 - 빅데이터 기반 악성코드 자동 분석 플랫폼[2014 CodeEngn Conference 11] 김기홍 - 빅데이터 기반 악성코드 자동 분석 플랫폼
[2014 CodeEngn Conference 11] 김기홍 - 빅데이터 기반 악성코드 자동 분석 플랫폼
 
[2014 CodeEngn Conference 11] 최우석 - 자바스크립트 난독화 너네 뭐니?
[2014 CodeEngn Conference 11] 최우석 - 자바스크립트 난독화 너네 뭐니?[2014 CodeEngn Conference 11] 최우석 - 자바스크립트 난독화 너네 뭐니?
[2014 CodeEngn Conference 11] 최우석 - 자바스크립트 난독화 너네 뭐니?
 
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KO
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KO[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KO
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KO
 
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study EN
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study EN[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study EN
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study EN
 
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis KO
 
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis EN
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis EN[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis EN
[2014 CodeEngn Conference 11] 김호빈 - Android Bootkit Analysis EN
 
[2014 CodeEngn Conference 11] 정든품바 - 웹성코드
[2014 CodeEngn Conference 11] 정든품바 - 웹성코드[2014 CodeEngn Conference 11] 정든품바 - 웹성코드
[2014 CodeEngn Conference 11] 정든품바 - 웹성코드
 
[2014 CodeEngn Conference 10] 정광운 - 안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)
[2014 CodeEngn Conference 10] 정광운 -  안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)[2014 CodeEngn Conference 10] 정광운 -  안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)
[2014 CodeEngn Conference 10] 정광운 - 안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)
 
[2014 CodeEngn Conference 10] 노용환 - 디버거 개발, 삽질기
[2014 CodeEngn Conference 10] 노용환 -  디버거 개발, 삽질기[2014 CodeEngn Conference 10] 노용환 -  디버거 개발, 삽질기
[2014 CodeEngn Conference 10] 노용환 - 디버거 개발, 삽질기
 
[2014 CodeEngn Conference 10] 심준보 - 급전이 필요합니다
[2014 CodeEngn Conference 10] 심준보 -  급전이 필요합니다[2014 CodeEngn Conference 10] 심준보 -  급전이 필요합니다
[2014 CodeEngn Conference 10] 심준보 - 급전이 필요합니다
 
[2013 CodeEngn Conference 09] proneer - Malware Tracker
[2013 CodeEngn Conference 09] proneer - Malware Tracker[2013 CodeEngn Conference 09] proneer - Malware Tracker
[2013 CodeEngn Conference 09] proneer - Malware Tracker
 
[2013 CodeEngn Conference 09] BlueH4G - hooking and visualization
[2013 CodeEngn Conference 09] BlueH4G - hooking and visualization[2013 CodeEngn Conference 09] BlueH4G - hooking and visualization
[2013 CodeEngn Conference 09] BlueH4G - hooking and visualization
 
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploits
 
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론
 
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
 
[2013 CodeEngn Conference 09] 김홍진 - 보안컨설팅 이해 및 BoB 보안컨설팅 인턴쉽
[2013 CodeEngn Conference 09] 김홍진 - 보안컨설팅 이해 및 BoB 보안컨설팅 인턴쉽[2013 CodeEngn Conference 09] 김홍진 - 보안컨설팅 이해 및 BoB 보안컨설팅 인턴쉽
[2013 CodeEngn Conference 09] 김홍진 - 보안컨설팅 이해 및 BoB 보안컨설팅 인턴쉽
 
[2010 CodeEngn Conference 04] Max - Fighting against Botnet
[2010 CodeEngn Conference 04] Max - Fighting against Botnet[2010 CodeEngn Conference 04] Max - Fighting against Botnet
[2010 CodeEngn Conference 04] Max - Fighting against Botnet
 

[2013 CodeEngn Conference 09] x15kangx - MS Office 2010 문서 암호화 방식 분석 결과

  • 1. MS Office 2010 암호화 과정 분석 결과 2013-11-30 충남대학교 정보보호 연구실 전준희 x15kangx @ nate.com www.CodeEngn.com 2013 CodeEngn Conference 09
  • 2. 목차 u 개요 u MS Office 관련 기본 내용 u 결론 2-1 u 분석과정 u MS Office 2010 vs MS Office 2013 u 결론 2-2 u Q&A 2013-11-30 40 - 2
  • 4. 개 요 u 개 요 § MS Office 2010 프로그램을 MS 社에서 공개한 내용에 기반하여 리버싱으로 실제 암호 처리 과정을 분석한 내용임. u 주요내용 § 분석대상 : MS Office 2010(32bit) § 분석인원 : 전준희 외 1명 § 분석기간 : 2013. 1. 1. ~ 3. 1.(3개월) § 분석도구 : Ollydbg, IDA, Hxd 등. § 분석환경 : MS Windows XP Home Edition sp3 u 분석결과 § 발표 내용 참조 2013-11-30 40 - 4
  • 5. MS Office 관련 기본 내용 2013-11-30
  • 6. MS Office 관련 기본 내용 u MS 社 암호화 방식 공개 내용 . . . 2013-11-30 40 - 6
  • 7. MS Office 관련 기본 내용 u 일반 오피스 파일과 암호화된 오피스 파일의 저장 방식 차이 § 일반 오피스 파일 : Office Open XML 형식 § 암호화된 오피스 파일 : Compound Document File 포멧 ※ also called Microsoft OLE2, Structured Storage, Compound File Binary Format u Office Open XML 파일 헤더 u Office Open XML 파일의 구성 .ZIP 2013-11-30 40 - 7
  • 8. MS Office 관련 기본 내용 u 일반 오피스 파일과 암호화된 오피스 파일의 저장 방식 차이 § 일반 오피스 파일 : Office Open XML 형식 § 암호화된 오피스 파일 : Compound Document File 포멧 ※ also called Microsoft OLE2, Structured Storage, Compound File Binary Format u CDF 파일 헤더 u CDF 파일 포멧 內 XML 블럭 ... 2013-11-30 40 - 8
  • 9. MS Office 관련 기본 내용 u Python 기반의 OleFileIO_PL 및 oletools 라이브러리를 활용한 CDF 포멧 확인 2013-11-30 40 - 9
  • 10. MS Office 관련 기본 내용 u XML 블럭 내용 Data key Data Integrity Key Encryptors 2013-11-30 40 - 10
  • 11. 결론 2-1 Ø 암호키 암호화 Ø 데이터 암호화 Ø 무결성 검사값 암호화 2013-11-30
  • 12. 암호키 암호화 Random 1 Key Encrypt Salt Random 2 Verifier Random 3 Encryption Key SHA1( Random 1 + Password ) SHA1(0) 20byte I = 0, N = 1 16byte SHA1( I 4byte SHA1( N1) 10byte + I < 100,000 N Start Header ) N=N+ 1 I=I+1 Y HFinal 20byt e SHA1( HFinal 20byt e + 20byte FE A7 D2 76 3B 4B 9E 79 Random 1 Key 16byte IV 16byte AES128 CBC Encrypt (16byte) Random 2 Encrypted Verifier Hash Input 2013-11-30 ) SHA1( HFinal 20byt e + 20byte D7 AA 0F 6D 30 61 34 4E Random 1 Key 16byte IV 16byte AES128 CBC Encrypt(32byte) SHA1( Random 2 )+ 00 X 12 Encrypted Verifier Hash Value ) HFinal 20byt e SHA1( + 14 6E 0B E7 AB AC D0 D6 20byte ) Random 1 Key 16byte IV 16byte AES128 CBC Encrypt (16byte) Random 3 Encrypted Key Value 40 - 12
  • 13. 암호키 암호화 u 암호키 저장 위치 재확인 2013-11-30 40 - 13
  • 14. 데이터 암호화 Random 3 Encryption Key Random 4 Data Salt N=0 16byte SHA1( Random 4 N 4byte + ) OpenXML Data 20byte Random 3 IV 16byte Key 16byte N=N+1 Data 4096 byte copy AES128 CBC Encrypt (4096byte) Data 4096 byte DataSize / 4096 + 1 <N END Data Encryption 2013-11-30 40 - 14
  • 15. 데이터 암호화 u Data Salt 저장 위치 2013-11-30 40 - 15
  • 16. 무결성 정보 암호화 Random 3 Encryption Key Random 4 Data Salt 16byte Random 5 HMAC Key 20byte Random 5 SHA1( Random 4 + 5F B2 AD 01 0C B9 E1 F6 ) Key 20byte SHA1( Random 4 + A0 67 7F 02 B2 2C 84 33 ) HMAC (20byte) 20byte Random 3 IV 16byte Key 16byte AES128 CBC Encrypt (32byte) Random 5 + 00 X 12 Encrypted Hmac Key 2013-11-30 20byte Random 3 IV 16byte Key 16byte Encrypted Data AES128 CBC Encrypt(32byte) HMAC (20byte) + 00 X 12 Encrypted Hmac Value 40 - 16
  • 17. 무결성 정보 암호화 u 무결성 정보 저장 위치 2013-11-30 40 - 17
  • 18. 분석과정 Ø 분석 과정 시작 Ø IDA Python 기반 분석 Ø 리버싱 결과 증명 2013-11-30
  • 19. 분석과정 u 분석 목표 § 암호 대상 : 무엇을 암호화 하는가? § 암호 알고리즘 : 어떤 알고리즘을 사용하는가? § 암호 키 : 어떤 암호 키를 사용하는가? § 암호 결과 : 암호 결과가 어떻게 저장되는가? 암호키 암호 대상 암호 결과 Encryptor 암호 알고리즘 2013-11-30 40 - 19
  • 20. 분석과정 u 일반적인 CryptAPI 함수 호출 순서 CSP(Cryptography Service Provider) 핸들 생성 1 CryptAcquireContext( &hCryptProv, 0, MS_ENHANCED_PROV, PROV_RSA_FULL, 0) Hash Object 생성 2 CryptCreateHash( hCryptProv, CALG_MD5, 0, 0, &hHash ) Password Hash 3 CryptHashData( hHash, (BYTE *)szPassword, strlen(szPassword), 0) Hash 값으로 세션 키 생성 4 CryptDeriveKey( hCryptProv, ENCRYPT_ALGORITHM, hHash, KEYLENGTH, &hKey ) pbBuffer의 내용 암호화 5 2013-11-30 CryptEncrypt( hKey, 0, feof(hSource), 0, pbBuffer, &dwCount, dwBufferLen ) 40 - 20
  • 21. 분석과정 u 암호 알고리즘 확인 § 확인 결과 : AES128 CryptImportKey CALG_AES_128 2013-11-30 40 - 21
  • 22. 분석과정 u 암호화 대상 데이터 확인 § 확인 결과 : Office Open XML 형식 CryptEncrypt Office Open XML 2013-11-30 40 - 22
  • 23. 분석과정 u Ollydbg 동적 분석의 한계 동적으로 맵핑 되는 함수주소 CryptCreateHash CryptDestroyHash 매번 변경되는 Random 값… F8과 F9의 거리… CryptHashData 1회 분석 시 약 2시간 소요 여긴 어디… 나는 누구…? CryptHashData CryptGetHashPram If ecx < 100000 2013-11-30 실 패 40 - 23
  • 24. 분석과정 u F8과 F9의 결과물 2013-11-30 40 - 24
  • 25. 분석과정 – IDA Python u IDA Python 중 Break Point Hook 기능의 기본 구존 1. MyDbgHook 설정 Event 처리 코드 작성 부분 2. Break Point 설정 3. Event 처리 코드 작성 -끝- 2013-11-30 40 - 25
  • 26. 분석과정 – IDA Python u 2가지 함수 종류 § § u 입력 값 확인이 필요한 함수 [ ex : func( a, b, c) ] 결과 값 확인이 필요한 함수 [ ex : func( a, &b, c) ] 입력 값 확인이 필요한 함수 u § 함수 시작 점에 브레이크 포인트 설정 § 입력 값 확인이 필요한 함수 esp를 기준으로 입력 값에 접근하여 확인 후 재실행 eip Push ebp Mov ebp, esp . . . . . . . . TOP break esp Arg3 Arg2 Arg1 Ret . . . . . . Mov esp, ebp ret Code 2013-11-30 BOTTOM Stack 40 - 26
  • 27. 분석과정 – IDA Python u 2가지 함수 종류 § § u 입력 값 확인이 필요한 함수 [ ex : func( a, b, c) ] 결과 값 확인이 필요한 함수 [ ex : func( a, &b, c) ] 결과 값이 필요한 함수 u § 함수 시작 점에 브레이크 포인트 설정 § esp를 기준으로 결과 값이 저장될 메모리 주소 확인 § Ret에 브레이크 포인트 설정 후 재실행 § 결과 값이 필요한 함수 결과 값 확인 후 브레이크 포인트 해제 후 재실행 eip Call Func break . . . Push ebp break Mov ebp, esp . . . . . Mov esp, ebp ret Code 2013-11-30 TOP Arg3 Arg2 Arg1 esp Ret . . . . . . BOTTOM Stack 40 - 27
  • 28. 분석과정 – IDA Python u IDA Python 스크립트를 활용한 디버깅 2013-11-30 40 - 28
  • 29. 분석과정 – IDA Python u IDA Python 로그 결과 확인 2013-11-30 40 - 29
  • 30. 분석과정 u Python 파이썬 로그 결과 도식화 2013-11-30 40 - 30
  • 31. 분석과정 u Python으로 구현한 오피스 암호 해제 시연 2013-11-30 40 - 31
  • 32. 분석과정 u Python으로 구현한 암호화된 오피스파일 Bruteforce 시연 2013-11-30 40 - 32
  • 33. MS office 2010 vs MS office 2013 2013-11-30
  • 34. MS Office 2010 vs MS Office 2013 u MS Office 2013 XML 블록 내용 2013-11-30 40 - 34
  • 35. MS Office 2010 vs MS Office 2013 u MS Office 2010과 MS Office 2013의 키 길이 및 해쉬 알고리즘 차이 구 saltSize 16 128 256 20 64 cipherAlgoritm AES AES cipherChaining ChainingModeCBC ChainingModeCBC hashAlgoritm SHA1 SHA512 saltValue 16byte 16byte encryptedHmacKey 32byte 64byte encryptedHmacValue 32byte 64byte spinCount 100000 100000 saltSize 16 16 blockSize 16 16 keyBits 128 256 hashSize 20 64 cipherAlgorithm AES AES cipherChaining ChainingModeCBC ChainingModeCBC hashAlgorithm SHA1 SHA512 SaltValue 16byte 16byte encryptedVerifierHashInput 16byte 16byte encryptedVerifierHashValue 32byte 64byte encryptedKeyValue 2013-11-30 16 hashSize KeyEncryptors MS Office 2013 16 KeyBits dataIntegrity MS Office 2010 16 bloackSize KeyData 분 16byte 32byte 40 - 35
  • 36. 암호키 암호화(MS Office 2013) Random 1 Key Encrypt Salt Random 2 Verifier SHA512( Random 1 + Password ) SHA512(0) 64byte I = 0, N = 1 16byte Random 3 Encryption Key I 4byte SHA512( SHA512( N1) 64byte + 32byte I < 100,000 N Start Header ) N=N+ 1 I=I+1 Y HFinal 64byt e SHA512( HFinal 64byt e + 64byte FE A7 D2 76 3B 4B 9E 79 Random 1 Key 32byte IV 16byte AES256 CBC Encrypt (16byte) Random 2 Encrypted Verifier Hash Input 2013-11-30 ) SHA512( HFinal 64byt e 64byte Key 32byte + D7 AA 0F 6D 30 61 34 4E Random 1 IV 16byte AES256 CBC Encrypt(64byte) SHA512( Random 2 ) Encrypted Verifier Hash Value ) SHA512( HFinal 64byt e + 14 6E 0B E7 AB AC D0 D6 64byte ) Random 1 Key 32byte IV 16byte AES256 CBC Encrypt (32byte) Random 3 Encrypted Key Value 40 - 36
  • 37. 암호키 암호화(MS Office 2010 ⇒ 2013) Random 1 Key Encrypt Salt Random 2 Verifier SHA512( Random 1 + Password ) SHA512(0) 64byte I = 0, N = 1 16byte Random 3 Encryption Key I 4byte SHA512( SHA512( N1) 64byte + 32byte I < 100,000 N Start Header ) N=N+ 1 I=I+1 Y HFinal 64byt e SHA512( HFinal 64byt e + 64byte FE A7 D2 76 3B 4B 9E 79 Random 1 Key 32byte IV 16byte AES256 CBC Encrypt (16byte) Random 2 Encrypted Verifier Hash Input ) SHA512( HFinal 64byt e 64byte Key 32byte + D7 AA 0F 6D 30 61 34 4E ) Random 1 IV 16byte AES256 CBC Encrypt(64byte) SHA512( Random 2 ) Encrypted Verifier Hash Value SHA512( HFinal 64byt e + 14 6E 0B E7 AB AC D0 D6 64byte ) Random 1 Key 32byte IV 16byte AES256 CBC Encrypt (32byte) Random 3 Encrypted Key Value MS Office 2013 관련 내용 이하 생략 2013-11-30 40 - 37
  • 39. 결론2-2 u 이번에 발표된 내용을 기반으로 MS Office 관련 연구에 도움이 되길 바랍니다. § Ex) 향상된 Bruteforce Tool 개발 등. u IDA Python을 활용하여 진행하시는 리버싱에 도움이 되길 바랍니다. u 관련 연구 진행 시 내용 공유 부탁 드립니다. 2013-11-30 40 - 39