'USB 전파기능의 JS 파일에서 확인된 모네로 채굴기' 에 사용 된 악성자바스크립트에서 자기 방어 기법이 확인 되었다. 방어기법은 wscript.exe 프로세스를 강제종료 시, 스크립트 코드에 의해 시스템을 강제로 종료하는 기능이 확인되었다. 악성 스크립트가 어떻게 자기방어를 하는지 알기 위해서는 악성 스크립트 동작 방법을 이해해야 한다. 악성 스크립트가 실행되면 인자(Arguments)에 따라 USB감염, 특정 프로세스들을 강제종료하는 하위 스크립트가 실행된다. 그리고 C2에서 추가 스크립트를 전달 받으면 wscript.exe 가 다시 실행된다. 즉, 악성 자바스크립트는 총 세번의 하위 스크립트 실행이 존재하며 C2에서 전송되는 파일에 따라 추가 악성행위가 달라 질 수 있다. powershell을 통해 모네로 채굴기를 다운로드한 것이 이에 해당한다.

[그림 1] wscript.exe 프로세스 별 인자와 파일 핸들

최상위 프로세스인 wscript.exe는 물론 하위 랜덤명의 wscript.exe 프로세스는 %appdata%[random] 폴더에 생성된 파일에 대한 핸들을 가지고 있다. 이 를 통해 각 스크립트가 정상 동작함을 확인 할 수 있다.

그리고, 랜덤명의 하위 프로세스는 while(ture) 문으로 지속적으로 USB감염 행위와, Process 종료를 수행하며 shutdown 기능을 가진 zBTf 함수를 호출한다.

[그림 2] wscript.exe 프로세스 별 기능

아래 [그림 3]은 zBTf 함수 코드로 특정 파일의 핸들을 얻어, 파일 닫기, 시스템을 강제로 종료한다는 의미이다. 악성 스크립트가 정상적으로 수행 시, 'ylijoukud' 파일의 핸들은 최상위 wscript.exe가 갖고 있어 다른 프로세스가 파일에 대한 핸들을 얻으려고 하여도 실패하게 된다. 따라서, 일반적으로는 시스템 강제종료 행위가 발생되지 않는다. 파일 핸들은 [그림 1]을 통해 확인 할 수 있다.

[그림 3] 난독화가 풀린 자바스크립트 코드 내 shutdown 코드

그러나, 강제적으로 wscript.exe를 종료(kill) 하게 되면 이 파일이 갖고 있던 핸들이 놓아지고, 하위 프로세스가 핸들을 얻어 시스템 강제종료 코드가 실행된다.

[그림 4] shutdown 코드가 실행되는 화면

하위 프로세스를 종료하여도 최상위 wscript.exe가 하위프로세스를 재생성 하고, 최상위 wscript.exe를 종료하면 시스템을 강제종료시켜 자기 방어를 한다. 이러한 자기 방어를 통해 지속적인 감염행위가 발생하게 된다.

아래 방법을 통해 사용자가 시스템 강제종료 없이 수동 치료가 가능하다.

1. 시작프로그램에 생성된 바로가기(*.lnk) 파일 삭제 

2. %appdata%랜덤명 경로에 생성된 악성 JS 파일 삭제

3. 하위 프로세스 2개 모두 종료 후 최상위 wscript.exe 종료

Posted by 분석팀