[보안포커스] 스팸메일 발송하는 악성코드 주의
나도 모르는 사이 내 PC가 외부로 대량의 스팸메일을 발송하고 있다면? 최근 일부 기업에서 메모리에 로드되어 실행되는 스팸발송 악성코드가 별견돼 사용자의 주의가 필요하다.
해당 악성코드가 실행되면 정상적인 실행을 위해 함수 복구 작업을 거친다. 이후 [그림 1]과 같이 악성코드 내부에 숨겨져 있는 PE 파일을 복호화한다.
[그림 1] 첫 번째 PE 복호화
이렇게 복구된 PE는 WriteProcessMemory 작업을 통해 메모리에 쓰이고 해당 코드는 [그림 2]와 같이 자신을 아래의 경로에 복사한 후 레지스트리에 등록하여 재시작 시 다시 동작하도록 등록한다.
[그림 2] 파일 생성 및 레지스트리 등록
파일 생성 작업을 완료하면 다시 한번 숨겨진 PE에 대한 복호화 작업을 한다.
[그림 3] 두 번째 PE 복호화
첫 번째 복호화된 PE를 바로 메모리에 썼다면 두 번째 복호화된 PE는 svchost.exe를 이용하여 로드한다. 로드 시에는 svchost.exe 프로세스를 SUSPEND 형태로 생성한 후 GeContexThread, ReadProcessMemory, WriteProcessMemory, SetThreadContext, ResumeThread 함수들을 통해 복호화된 PE 코드를 덮어씌운 후 해당 코드로 진행한다.
[그림 4] svchost.exe 프로세스를 SUSPENED 형태로 생성
이러한 작업을 거치면 최초 악성코드가 종료돼도 svchost.exe에 쓰인 악성 행위 코드에 의해 지속적으로 동작이 이루어진다.
svchost.exe에 로드된 악성코드는 C&C와 통신하여 실제 명령을 받아오고, 스팸을 발생하는 역할을 한다. 이때 주고받는 패킷은 암호화되어 있고 그 키는 매번 다르다.
[그림 5] 암호화된 패킷(좌)와 복호화된 패킷(우)
서버에서 받는 명령 중 확인된 내용은 [표 1]과 같다.
[표 1] 확인된 명령어
실제로 처음 악성코드를 삭제했지만 증상이 계속된다는 문의가 있었다. 결국 재부팅과 같은 메모리 정리 과정에서 문제가 해결됐다. 이처럼 정리가 필요한 이유는 위에서 확인했듯이 메모리에 로드되어 실행되기 때문이다. 해당 악성코드는 하루에 수만 건에 가까운 스팸을 발생시켜 특정 PC에서 갑자기 대량의, 특히 SMTP 패킷이 발생하면 스팸 발송 악성코드를 의심해볼 필요가 있다. @
- AhnLabASEC 대응팀