SWF ActionScript를 이용한 Script 디코딩

반응형

기본의 swf는 자체적인 XOR 또는 Script가 존재하였지만, 요즘 나오는 Swf파일은 ActionScirpt를 이용하는 경우를 많이 볼 수 있다. 


샘플 19.swf 는 일반 swf같아 보이지만, 1개의 swf에 6버전별로 6개의 swf가 들어가 있는 파일이다.
이런 경우 첫 시작점을 찾는 것이 중요하다. 어느정도 눈썰미가 있다면 시작점은 “26 1B 10 C4” 이란것을 금방 알 수 있을 것이다.

기존에는 Sothink SWF Decompiler v4.0을 사용하였지만, 4.0버전에서는 보이지 않던 액션스크립트가 5.0에서는 보이기 때문에 이제 5.0이상으로 갈아타시길 바랍니다. 
5.0으로 샘플 19.swf를 보게 되면 다음과 같은 버전별로 구성되어 있다는 것을 알 수 있다.

(샘플 툴킷 소개에 올라간 파일은 7.0 버전일겁니다)

 

또한 Tip으로 상단의 P-Code를 누루면 버전별 Hex값을 볼 수 있다. 이게 무슨말이냐면 샘플 19.swf에서 일일히 버전별로 짜르지 않아도 정확한 사이즈를 구할 수 있다는 뜻이다.

5.0화면에서 맨위(WIN 9,0,115,0)에 있는 HEX값을 malzilla의 Shellcode analyzer를 이용해 보자.
뭔가 형태는 나오는데 확실히 swf 파일포멧은 아닌 듯 하다.
하지만 경험상으로 보아 이것은 swf로 변환 되는 것이 확실하다고 판단되기 때문에 복호화가 있다는 가정을 하였다.

다시 Sothink SWF Decompiler 5.0으로 돌아가 액션스크립트를 더 살펴보자.
어딘가 힌트가 있을 것이다.


역시나 치환코드가 있었다. 이 공식으로 치환 된 HEX값을 다시 Malzilla에 대입해 보자.


HEX값 치환 후 swf 포멧으로 확실히 변해 있는 것을 볼 수 있다.
이 다음 과정부터는 예전 샘플과 동일하게 XOR 값을 구해서 주소값을 찾아내면 된다.

 

이제....조금씩 어려워지기 시작하쥬? ㅋㅋ

그래도 더 어려운것들이 남았으니 지금껀 쉬운거유~!!

 

반응형

댓글

Designed by JB FACTORY