본문 바로가기
IT 보안소식

국내 홈페이지 변조로 다운로드 되는 exe파일들의 암호화 방식

by 잡다한 처리 2010. 4. 19.
반응형

예전 허위 RAR 해더를 가지고 있던 악성파일들이 활개치던 경우가 있었다.
그 포스팅이 없어서 설명을 하기 어렵지만 ㅠ_ㅠ 
관련 된 포스팅은 VirusLab 블로그에 가면 쉽게 찾을 수 있다.

그럼 다시 본론으로,
요즘들어 국내 홈페이지 변조가 다시 활발하게 이루어 지고 있다.
이런 변조의 특이점은 최종적으로 다운로드 되는 exe파일이 정상파일이 아니라는 점이다.

- 디코딩 후 다운로드 된 aaa.exe 파일
보는 것과 같이 Not a valid PE file 이라는 문구가 뜬다.
이 말은 PE파일이 아니라는 것이다.

그럼 실제 어떤 HEX값을 가지고 있는지 확인해 보자.
UltraEdit로 해당 파일을 열어 보았다.
음... 이건 모 뭥미!!
전혀 PE파일의 구조가 아니였다.



위와 같이 정상적인 aaa.exe가 아니였다.
그래서 실행이 안되는 것이다.

이런 경우 exe파일을 일정한 값으로 XOR 시켜줘야한다.
취약점으로 aaa.exe파일이 실행 될 경우, 자동으로 XOR 된 파일이 실행되기 때문에 상관없지만,
수동으로 파일을 받을 시 이런 행동을 거쳐야 한다 ㅠ_ㅠ 귀찮게 시리

그럼 복호화 방법에 대해서 알아보자.
정상적인 PE의 첫 바이트는 4D 이다.

현재 aaa.exe의 첫 바이트는 D8로 되어 있다.
그렇담 D8 을 특정 XOR값을 이용해서 4D로 변환하면 되는 것이다.

그럼 어떻게 XOR 값을 알 수 있을까?

여기서 잠시 Tip이다.
XOR은 두 가지 값을 알면 필요한 한 개의 값을 알 수 있다.
이건 공식이다;; ㅋㅋ

A = 1
B = 2
C = 3

A ^ B = C (3)
B ^ C = A (1)
C ^ A = B (2)

공학용 계산기(calc.exe)를 이용해서 테스트 해보면 되겠다^^

위의 공식에 따라 D8 ^ 4D = 95 란 값이 나온다.
그럼 D8을 95로 XOR 시키면 결과적으로 4D값이 나온다는 것이다.
XOR 시키는 방법은 FileInsight 를 사용해도 되고, 개인적으로 툴을 만들어서 사용해도 된다.

여기서 주의할 점은, 
exe 파일전체를 95로 XOR 변환 했을 경우, 원래 95였던 값은 0이 되고, 0이 였던 값은 95가 된다.
따라서 XOR이 되는 값의 95, 0 일 경우 패스하는 코드가 따로 필요하다.

자 그럼 변환을 마친 파일을 살펴보자.
정상적으로 PE구조를 갖춘 파일이 완성되었다.


PE해더의 대표인 4D 5A(MZ)가 완성된 것을 알 수 있다.



이렇게 요즘은 보안업체를 속이기 위해 이런 방식들을 사용하는 것으로 추정되나,
어차피 실행될 시에는 정상파일로 변환이 되기 때문에, 그닥 필요 없다고 볼 수 있다 ㅎㅎ

댓글