NOTICE


=== 목  차 ===



1. 소 개


2. 악성코드 실행 환경 구축

    2.1. 시작 프로그램 등록

    2.2. INST.EXE 중복 실행 확인

    2.3. 방화벽 허용 프로그램 등록


3. DNS 서버 구축 및 동작

    3.1. UDP 53번 SOCKET 생성

    3.2. DNS 서버 주소 변조

    3.3. DNS CACHE 초기화 및 THREAD_1 생성

    3.4. THREAD_1 [DNS SERVER로 동작]

    3.5. 파밍 IP ADDRESS 얻어오기


4. 공인인증서 탈취

    4.1. 공인 인증서 검색 및 압축

    4.2. THREAD_2 [공인 인증서 전송]


5. IE 시작 페이지 변경


6. SETTIMER 등록



1. 소 개

 최근 파밍의 수법이 진화하면서 작년 하반기부터 파밍 악성코드는 DNS 주소를 조작해 사용자가 인터넷 접속 시 변조된 사이트로 접속하게 만든다. 본 샘플은 2015년 02월에 수집된 파일로 사용자 PC의 DNS 서버 설정을 127.0.0.1로 변경하고 자신이 DNS 서버로 동작하면서 변조된 사이트로의 접속을 유도한다.


[그림 1.1.] 악성코드 동작 과정


 inst.exe 악성코드는 크게 다섯 가지의 동작을 한다. 동작에 대한 세부적인 기능은 다음과 같다.


① 악성코드 실행 환경 구축



② DNS 서버 구축 및 동작



③ 공인 인증서 탈취



④ IE 시작 페이지 변경



⑤ SetTimer 등록: SetTimer API를 호출해서 특정 코드가 10분마다 동작하게 만든다.




2. 악성코드 실행 환경 구축


2.1. 시작 프로그램 등록

 inst.exe는 레지스트리 RUN 키에 자신을 등록해서 Windows가 동작 할 때 자동으로 실행되게 한다. 그 일환으로 먼저 자신의 실행 경로를 알아온다. 코드 동작 과정은 [그림 2.1.]과 같다.


[그림 2.1.] inst.exe의 실행 경로 알아오기


 다음으로 특정 문자열을 복호화하는 코드가 실행된다.

※ 문자열 복호화 코드(0x00401A70)에 대한 상세 분석 정보는 ‘8.1. 복호화 코드_0x00401A70’을 참고한다.


[그림 2.2.] 복호화 코드_0x00401A70 호출


 복호화가 끝나면 ‘SOFTWARE\Microsoft\Windows\CurrentVersion\Run’ 문자열을 얻을 수 있다. 이 값은 RegCreateKeyEx API를 호출할 때 두 번째 파라미터 값으로 들어간다. 문자열 복호화에 대해 정리하면 [표 2.1.]과 같다. 


[표 2.1.] 복호화 코드_0x00401A70 호출 정보


 앞서 획득한 ‘inst.exe 실행 경로’와 ‘레지스트리 경로 정보’를 바탕으로 inst.exe를 자동 실행 레지스르리에 등록한다.


[그림 2.3.] inst.exe를 시작 프로그램으로 등록



2.2. inst.exe 중복 실행 확인

 inst.exe는 뮤텍스를 이용해서 자신이 중복 실행되고 있는지 확인한다. ‘syotom’ 뮤텍스를 열고 WaitForSingleOb

ject API를 호출해서 반환 값이 0x102(WAIT_TIMEOUT)일 경우, 중복 실행으로 간주하고 종료된다.

이것은 inst.exe가 최초에 실행 됐을 때 ‘syotom’ 뮤텍스를 생성하고 WaitForSingleObject API로 오브젝트를 획득하기 때문이다. 그 결과 이후에 동일 악성코드가 ‘syotom’ 뮤텍스를 열고 WaitForSingleObject API를 호출하면 WAIT_TIMEOUT이 리턴된다. 따라서 WaitForSingleObject API의 반환 값으로 중복 실행 여부를 확인할 수 있다.


[그림 2.4.] 뮤텍스를 사용해 inst.exe의 중복 실행 확인



2.3. 방화벽 허용 프로그램 등록

 inst.exe는 INetFwMgr COM 인터페이스와 INetFwAuthorizedApplication COM 인터페이스를 사용해서 자신을 방화벽 허용 프로그램으로 등록한다. 이것은 악성 동작에 필요한 환경을 조성하기 위한 과정이다. 핵심 코드 동작을 살펴보면 다음과 같다.


[그림 2.5.] inst.exe를 방화벽 허용 프로그램으로 등록


 코드 동작 결과 [그림 2.6.]과 같이 inst.exe가 방화벽 허용 프로그램으로 등록된다. 이로써 inst.exe는 아무런 방해 없이 악성행위를 할 수 있다.


[그림 2.6.] inst.exe를 방화벽 허용 프로그램으로 등록


 이 과정을 소스 코드로 간단하게 살펴보면 다음과 같다.


[그림 2.6.] 방화벽 허용 프로그램 등록 코드



※ 본 포스트는 분석 문서 내용의 일부만 담고 있습니다.