베지밀
[악성코드분석] training6 - File Encryption 본문
분석툴 - x32dbg / IDA
처음 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가 붙은 파일로 변하는데
다시 확장자를 변환해주면 아이유가 살아났다 ㅠㅠㅠ
끝