CTF/OtterCTF

OtterCTF WriteUp - Recovery

geunyeong 2020. 4. 3. 17:54

멀웨어의 Form1 코드를 보면 startAction이라는 메서드가 있다. CreatePassword를 호출하고 SendPassword, encryptDirectory 등을 차례로 호출한다. CreatePassword로 받은 값을 encryptDirectory에 넣는 걸로 보아 암호화에 사용되는 암호키 같다.

 

CreatePassword 메서드는 정의된 문자열 범위 내에서 랜덤하게 문자를 뽑아 새로운 문자열을 만들어 반환한다.

 

SendPassword는 컴퓨터 이름과 사용자 이름, 암호키를 하나로 합치기만 하고 아무 일도 안한다. (아마 실제 악성코드에서 서버로 키 정보를 전송하는 루틴을 삭제한 듯 하다.) 메모리 상에 3개 문자열(컴퓨터 및 사용자 이름, 암호키)을 연결한 문자열이 잔재해 있을 지도 모른다.

 

SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon 레지스트리를 확인해 마지막으로 로그온 한 사용자 이름을 확인한다. Rick이다.

 

컴퓨터 이름은 앞서 구했다. SendPassowrd 메서드를 보면 컴퓨터 이름과 사용자 이름을 "-"로 연결한다. vmware-tray.exe 메모리 영역을 덤프한 후 strings로 "WIN-LO6FAF3DTFE-Rick"라는 문자열을 찾는다. 주의해야 할 점이 있는데 C#으로 만들어진 탓에 "WIN-LO6FAF3DTFE-Rick" 문자열이 멀티바이트로 존재하고 있다. 그러므로 strings에 el 옵션을 줘서 멀티바이트 문자열을 찾도록 하면 암호화에 사용된 암호키가 나타난다.

 

CTF{aDOBofVYUNVnmp7}