베지밀

[악성코드분석] training6 - File Encryption 본문

개인 공부/리버싱

[악성코드분석] training6 - File Encryption

vegimil 2024. 8. 9. 20:40

분석툴 - x32dbg / IDA

 

training6_fe.zip
0.01MB

처음 fe를 실행시키면 바탕화면에 아이유들이 다 사라져있다. (새로운 파일로 덮어씌워졌다)

 

main 함수

 

12번째 줄 함수 (get_desktop_path)

해당 함수의 내용

SHGetSpecialFolderPathA라는 API에 \x10를 인자로 주면 Desktop의 경로를 받아온다.

SHGetSpecialFolderPathA : 윈도우의 특정 경로를 가져오는 함수

참고 : https://2ry53.tistory.com/entry/CSIDL의-값과-그-사용-방법

Desktop 경로를 잘 가져왔으면 1, 아니면 0

 

FileName = input(=Desktop 주소) + \\*.* 을 이어붙여서 버퍼에 쓰고

바탕화면에서 확장자가 존재하는 모든 파일을 가져온 후

문자열 끝에서 .을 찾아 hwp, doc, docx, jpg, png 확장자만을 가져온다.

Buffer라는 버퍼에는 바탕화면 주소 + \\ + 파일명을 담는다.

 

이 부분이 중요한데, Buffer에 해당하는 파일 명을 CreateFileA한다.

  • CreateFileA는 파일을 열거나 생성하는 API
  • 이 경우에는 파일을 열 것임

hFile을 통해 파일의 크기를 가져오고, 크기만큼 반복문을 돈다.

 

*((_BYTE *)lpBuffer + i) ^= byte_4070EC[i % v2];

byte_4070EC에는 EDUCATION_KEY가 들어있음

EDUCATION_KEY라는 키 값으로 파일을 XOR 암호화한다.

이후, v7 버퍼에 바탕화면 주소+파일이름+.EDU 확장자를 붙여서 저장하고

 

CreateFileA를 통해 v7을 열어서 파일을 덮어씌운다.

결론 : EDUCATION_KEY로 파일을 XOR하여 암호화한다.

 

💡 동일한 키로 XOR하면 원래대로 돌아오는 특성을 활용해 복호하해보자

 

우선, 확장자 로직에 걸리기 위해서는 .EDU라는 확장자를 모두 제거해야 함

제거해도 파일은 어차피 암호화되어있어서 정상적으로 열리지 않는다

다시 한 번 fe파일을 실행시킴으로써 동일한 Key로 XOR을 돌 수 있다

다시 실행시키면 .EDU가 붙은 파일로 변하는데

다시 확장자를 변환해주면 아이유가 살아났다 ㅠㅠㅠ