'가짜 rar 악성코드'에 해당되는 글 2건

  1. 2009.10.16 가짜 RAR 악성코드 #2 (2)
  2. 2009.10.15 가짜 RAR 악성코드
0x02 analysis2009.10.16 18:00

이전 포스팅(http://malwarelab.tistory.com/53)에서 말씀드렸듯이 프로그램을 짜볼려 노력은 조금(?) 했습니다.

프로그래밍 공부를 해야겠다는 생각만 들게 하더군요..

아는 형(잡초인생)에게 부탁했습니다.

리눅스에서 C는 쫌(?) 하시는 분입니다.


결과는.....와우~

첫번째 라인 제거하고 모든 바이트를 특정 키값으로 빼서 실제 동작하는 exe를 추출 했습니다.

하지만 곧 제가 생각이 짧았다는걸 알게 되었습니다.

Stud PE나 PEiD에서 확인해보니 Not a Valid PE file 이라는 메시지만 볼 수 있었습니다. ㅜ.ㅜ




이걸 보니 뭔가 다른 로직이 더 있을거라는 생각이 들었습니다.

가장 좋은 방법은 dll 파일이 있으면 좋겠지만 아직 확보를 못했습니다.




그래서 생각한 방법이 하나 있습니다.

좀 말씀드리기 부끄럽기만 진정한 삽질을 한번 해볼까 합니다. -_-;;

일단 변경된 내용을 가지고 PE 포맷의 어느 부분이 잘못되었는지 확인해볼까 합니다. (말도 안되는...)

MZ와 PE signature는 찾았으니 PE 포맷을 확인해보면 분명 어딘가 잘못된 곳이 있을겁니다.


오늘도 즐삽~




저작자 표시 비영리 변경 금지
신고
Posted by demantos

댓글을 달아 주세요

  1. 처음 단순 SUB 기법을 공개한 이후에 Kaspersky 에서 패턴을 넣었지요^^ 그 후에 단순 암호화 기법은 불규칙적 방식으로 변경되더군요^^

    2009.10.17 08:06 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 치환(substitution)기법 말씀하시는거죠?
      PE 포맷 맞춰서 보고 있긴 한데 import table쪽에서도 뭔가 해줘야 할 것 같드라구요..
      당췌 감이 안잡혀서...

      2009.10.17 09:38 신고 [ ADDR : EDIT/ DEL ]

0x02 analysis2009.10.15 17:40

[관련링크]


이미 나온지 조금 지난 형태의 악성코드인데 저는 1달 전에 봤던것 같습니다.
처음 볼때만 해도 이건 머냐....였었는데 위 두 글을 읽고 나니 그게 그거였더라는...-_-;;
늦은감이 있지만 한번 분석해봤습니다.

처음엔 exe파일을 확장자만 바꿔 놓은게 아닌가 생각했었는데
HEX 에디터로 열어보니 PE 파일은 아니었습니다.

일단 어떻게 생겼는지 한번 보시면




이렇게 생겼습니다.

위 두 포스팅을 보시면 시작이 Rar! 로 시작하는 것과는 다른 형태를 보여주고 있었습니다.
Viruslab님께 문의한 결과 예전엔 변종일 경우에는 시작이 Rar! 로 나오지 않는 경우가 있다고 하셨습니다.

이런 형태라면 당연히 실행이 안되고 특정 DLL에 의해서 해당 rar 파일이 다운로드되고 디코딩이 됩니다.
물론 DLL에는 디코딩 로직이 들어 있을꺼구요..

결국

특정 취약점을 공격 --> DLL Injection --> 악성 DLL에 의해 rar 다운로드 
--> 악성DLL에 의해 rar 디코드 --> 진짜 악성코드(exe)

이런식으로 동작하게 됩니다.


디코딩되는 로직은 정상적인 PE 파일과 비교해보시면 간단하게 확인할 수 있습니다.

[정상 PE 파일]


[가짜 RAR 악성코드]



가짜 RAR 악성코드를 보시면 ②에서부터 PE 파일의 본체가 되고 디코딩을 담당하는 DLL 파일은 rar 파일을 처음부터 4byte씩 
읽어들여 00 00 00 00 이 나오는 곳까지 삭제해버릴 것으로 예상하고 있습니다.

그리고 ②에서 부터 이미 지정된 특정 키값을 이용해서 디코딩을 하게 될 것입니다.
그렇다면 디코딩하는 키값을 분석자가 찾을 수 있는가가 관건인데요..

③ 부분에 보시면 05 BE 8D BA 가 반복되는 것을 보실 수 있는데 정상적인 PE 파일에서는 00 00 00 00 으로 채워져 있는 부분입니다. 가짜 RAR 악성코드에서 처음부터 16바이트는 제거하고 나머지부분에 대해서 4byte씩 읽어서 05 BE 8D BA 를 뺀다고 보시면 됩니다.

즉, 05 BE 8D BA가 키값이 됩니다.

그러면 분석자는 해당 RAR 악성코드의 처음 16바이트를 제거하고 나머지부분에 대해서 05 BE 8D BA를 뺀 후 exe로 저장하면 실제 악성코드를 획득할 수 있게 됩니다.






이걸 디코딩할 수 있는 DLL이 없기 때문에 별도의 프로그램을 만들어 볼까 합니다.

일단은 제가 가지고 있는게 전부 두번째줄부터 실제 악성코드이니 첫번째줄(16바이트)은 제거하고
나머지 부분에 대해서 키값을 빼서 다른 파일로 저장하는 파일을 만들어 보고자 합니다.......만
프로그래밍은 아직 초보라 언제 완선될지 장담을 못합니다. ㅜ.ㅜ

일단 삽질 한번 해봐야할 듯 합니다.

너무 기대는 하지 말아 주세요...









저작자 표시 비영리 변경 금지
신고
Posted by demantos

댓글을 달아 주세요