안녕하세요? 이스트시큐리티입니다.
2017년 처음 등장한 ‘FormBook’ 악성코드가 최근까지 지속적으로 발견되고 있습니다. ‘FormBook’ 악성코드 제작자는 자체적으로 버전 업그레이드를 유지하며 변종을 생성하고 있습니다. 유포 방법은 주로 정상 문서를 위장하여 제작되고 있으며, 취약점을 통하여 악성코드가 실행되기 때문에 일반 사용자의 경우 감염 사실을 알기 어려워 주의가 필요합니다.
따라서, 본 보고서에서는 정상 이메일로 유포된 ‘FormBook’ 악성코드의 행위와 이를 예방하기 위한 방법 등을 기술하고자 합니다.
지난 7월 특정 기업에서 다음과 같은 메일이 수신되었습니다. 메일 내용을 간략하게 요약하면 “귀하의 제품을 유통과정 없이 직접적으로 구매하고 싶으니 첨부된 문서에 작성된 구매 목록을 확인하라” 이며, 업무와 관련된 내용으로 담당자의 관심을 유도하고 있습니다.
[그림 1] 수신된 이메일
하지만 첨부된 ‘60278411.DOC’ 문서를 열어보았을 때, 메일 내용에서 언급한 제품 구매 목록이 아닌 ‘hhhhhhhh’와 같은 의미 없는 문자가 나열될 것을 확인할 수 있습니다.
[그림 2] 첨부된 ‘60278411.DOC’ 문서
잘못 작성된 문서처럼 보이지만 이는 문서 취약점을 이용한 악성코드 유포 방법으로 문서를 여는 순간 사용자 모르게 악성 행위는 시작됩니다. 공격자는 이러한 점을 이용하여 악성코드를 유포하고 감염시킵니다.
2. 악성코드 동작 흐름도
‘FormBook’ 악성코드의 전체적인 실행 구조는 다음과 같습니다. 분석 환경을 확인하여 악성 행위 동작 유무를 결정하고, 다계층으로 인젝션을 수행하는 등의 특징을 가집니다.
[그림 3] 악성코드 동작 흐름도
3. 60278411.DOC 분석
첨부된 ‘60278411.DOC’문서 내에는 취약점 코드가 ‘수식’개체 내부에 숨겨져 있습니다. 다음은 숨겨진 개체 스트림 화면입니다.
[그림 4] 문서 내에 숨겨진 개체 스트림
취약점은 수식개체를 처리하는 프로그램인 “EQNEDT32.EXE”에서 발생합니다. 다음과 같은 쉘코드가 동작하면C&C인 ‘http://sulrev.cf/0000000000/60000’ 로부터 ‘test.exe’ 파일을 다운로드 받고 실행합니다.
[그림 5] ‘test.exe’ 파일 다운로드 및 실행 코드
4. test.exe파일 분석
4.1 분석 환경 우회
악성코드 제작자는 분석가 및 분석시스템으로부터 분석을 우회하기 위하여 프로세스, 파일이름, 로드된 모듈, 사용자 이름을 확인합니다. 해당 항목에 대한 리스트들은 해시값으로 관리되기 때문에 확인이 어렵습니다. 다음은 분석 환경을 확인하는 코드입니다.
[그림 6] 분석 환경 체크 코드
위와 같은 코드를 통하여 분석 환경이 확인될 경우, 악성코드는 종료됩니다.
4.2 코드 인젝션
또한, 백신 탐지를 우회하기 위해 프로세스 인젝션을 수행합니다. 해당 악성코드의 경우 직접적으로 자녀 프로세스를 만들어 인젝션 하는 기존의 방식과 다릅니다. 다음은 인젝션 순서와 코드입니다.
1. ‘explorer.exe’ 프로세스 인젝션
2. ‘explorer.exe’ 프로세스에 실행되는 정상 프로세스를 대상으로 인젝션
- ‘lsass.exe’, ‘systray.exe’, ‘netstate.exe’ 등
(정상 프로세스 목록은 악성코드 내에 테이블로 존재하며 임의로 선택된다.)
[그림 7] 프로세스 인젝션 코드
5. 정상 프로세스 인젝션 코드 분석 (lsass.exe)
위 과정으로 인젝션된 코드의 주된 목적은 정보탈취입니다. 이를 위해 다음과 같은 기능을 수행합니다.
5.1 사용자 정보 획득 및 저장
가장 민감한 정보들을 탈취하기 위해 레지스트리에 저장되는 사용자 정보를 확인합니다. 탈취하는 정보로는 ‘Internet Explorer’, ‘firefox’, ‘opera’, ‘outlook’, ‘thunderbird’등이 있습니다. 다음은 ‘Internet Explorer 정보를 탈취하는 코드의 일부입니다.
[그림 8] Internet Explorer 정보 탈취 코드
이외에도, 감염 PC에서 수집되는 시스템 정보로는 스크린샷 화면, hosts파일정보, Username, x64/x86 버전 정보, 계정 권한 등이 있습니다. 다음은 시스템 정보 획득을 위한 코드 중 일부입니다.
[그림 9] OS 정보 확인 코드
[그림 10] 계정 권한 확인 코드
획득한 사용자의 정보는 ‘%APPDATA%\Roaming\[임의명]\[임의명.ini]’포맷의 파일로 저장됩니다.
[그림 11] 탈취된 사용자 정보 화면
5.2 특정 프로세스 인젝션을 통한 사용자 정보 전송
위에서 획득한 사용자 정보는 암호화와 Base64 인코딩을 거쳐 공격자의 C&C로 전송됩니다. 정보를 전송하는 행위는 특정 프로세스에서 수행합니다. 이를 위해 특정 프로세스에 인젝션을 시도하고, 해당 코드는 프로세스 별로 구분하여 동작합니다.
① Explorer.exe에 인젝션 할 경우
위 과정을 통해 탈취된 정보인 ‘%APPDATA%\Roaming\[임의명]\[임의명.ini]’ 파일을 C&C서버로 전송합니다. 다음은 Explorer.exe에서 사용자 정보를 전송하는 코드입니다.
[그림 12] 사용자 정보 전송 코드 1
② Iexplore.exe에 인젝션 할 경우
HttpSendRequest API를 후킹하여 요청되는 패킷 내 ‘pass’, ‘token’, ‘login’ 등의 문자열을 파싱하여 메모리 상에서 사용자 정보를 획득한 뒤 C&C서버로 전송합니다.
[그림 13] 사용자 정보 전송 코드 2
이메일에 첨부된 문서 파일은 취약점을 통하여 C&C로부터 실질적인 악성 행위를 하는 ‘Formbook’ 악성코드인 ‘test.exe'를 다운로드합니다. 실행되는 악성코드는 분석 환경을 우회하기 위해 안티 디버깅, 프로세스 리스트, 로드된 모듈, 다계층 인젝션 등을 이용합니다.
본 악성코드는 사용자 정보를 탈취하는 것을 주목적으로 하며 레지스트리, 스크린샷, 메모리 해킹 등을 통하여 이를 수행합니다. 특히 'iexplore', 'firefox', 'outlook' 등과 같은 브라우저와 메일 관련 프로그램에서 민감한 사용자 계정 정보를 탈취하기 때문에 추가적인 피해가 야기될 수 있어 각별한 주의가 필요합니다.
따라서, 악성코드 감염을 방지하기 위해 출처가 불분명한 이메일의 첨부 파일 확인을 지양하며 백신의 최신화 및 정기적인 검사를 습관화하여야 합니다.
현재 알약에서는 해당 악성코드를 ‘Trojan.Agent.FormBook’로 진단하고 있습니다.
댓글 영역