controlpro

White box cipher 분석 챌린지 (2) 본문

카테고리 없음

White box cipher 분석 챌린지 (2)

controlpro 2023. 2. 6. 19:29
728x90

0. Review 

현 포스팅은 https://www.youtube.com/watch?v=84Pp9CBjgd8 기반으로 제작된 것입니다. 

 

1. 함수 확인하기 

저번에 AES라는 것을 확인했으니까, white box AES가 동작하는 부분을 확인해보자

내가 분석하려는 함수는 다음과 같고, 이 함수는 굉장히 길다. 

 

처음 부터 살펴보자 

.text:000000000046373E sub_46373E      proc near               ; DATA XREF: .rodata:0000000000463E90o
.text:000000000046373E                 mov     rax, [rbp-18h]
.text:0000000000463742                 lea     rcx, ds:0[rax*4]
.text:000000000046374A                 mov     rax, [rbp-18h]
.text:000000000046374E                 lea     rdx, ds:0[rax*4]
.text:0000000000463756                 mov     rax, [rbp-50h]
.text:000000000046375A                 add     rax, rdx
.text:000000000046375D                 movzx   eax, byte ptr [rax]
.text:0000000000463760                 movzx   eax, al
.text:0000000000463763                 cdqe
.text:0000000000463765                 mov     rdx, [rbp-20h]
.text:0000000000463769                 shl     rdx, 4
.text:000000000046376D                 add     rdx, rcx
.text:0000000000463770                 shl     rdx, 8
.text:0000000000463774                 add     rax, rdx
.text:0000000000463777                 mov     eax, ds:dword_6661C0[rax*4]
.text:000000000046377E                 mov     [rbp-38h], eax
.text:0000000000463781                 mov     rax, [rbp-18h]
.text:0000000000463785                 shl     rax, 2
.text:0000000000463789                 lea     rcx, [rax+1]
.text:000000000046378D                 mov     rax, [rbp-18h]
.text:0000000000463791                 shl     rax, 2
.text:0000000000463795                 lea     rdx, [rax+1]
.text:0000000000463799                 mov     rax, [rbp-50h]
.text:000000000046379D                 add     rax, rdx
.text:00000000004637A0                 movzx   eax, byte ptr [rax]

첫번째 부터 특정 메모리의 값을 register의 값으로 불러온다. rbp - 0x50 은 우리가 입력한 값이다. 

우리가 입력한 부분의 값(shiftrow 된 값)이 결국 어떤 dword_6661c0 [rax * 4]를 통해서 가져오게 되는데  rax*4가 인덱스 처럼 활용된 것으로 미루어 봤을 때, 이부분이 Whitebox AES의 lookup table인 것을 확인할 수 있다.  그래서 해당 위치를 gdb를 통해서 확인해보면

 

다음과 같이 lookup table이 존재하는 지를 확인할 수 있다. Wow! 하지만 encoding이 있기 때문에 바로되는 것은 아니다. 

 

 

728x90
반응형