상세 컨텐츠

본문 제목

[악성코드 분석 리포트] Trojan. Cutwail. Aj

악성코드 분석 리포트

by 알약(Alyac) 2015. 4. 8. 11:50

본문

Trojan. Cutwail. Aj


최근 불특정 다수를 대상으로 한 악성코드 유포가 급증하고 있습니다. 공격자가 악성코드를 유포하는 경로는 다양합니다. 그 중 최근에는 이메일을 통한 악성코드 유포가 많아지고 있는 추세입니다. 해당 방식은 상대방의 이메일 주소를 알고 있어 특정 사람에게 보내거나, 이름 모를 불특정 다수에게 무작위로 보내 악성코드를 유포시키는 것입니다. 또한, 기업이 대상인 경우에는 그 기업의 임직원을 대상으로 악성코드를 대량으로 유포시킬 수 있습니다. 


이렇게 유포된 악성코드는 시스템의 정보를 수집하고 원격 조종이 가능하도록 시스템을 장악하는 경우가 많습니다. 또한, 인터넷 뱅킹 정보 수집을 위해 사용자의 개인정보까지 탈취하는 경우도 있습니다.


[그림1] SSL을 사용하는 인터넷 뱅킹 로그인 화면


이번에 다룰 악성코드는 이메일의 첨부파일을 통해 주로 전파되며 시스템을 원격에서 조종하는 봇넷 기능과 인터넷 뱅킹 정보 탈취 기능을 가지고 있습니다. 특히 단순히 정보의 탈취가 이루어지는 것이 아니라 SSL에서 오가는 정보를 탈취하며, 이를 외부로 빼돌리는 것도 I2P라는 익명 네트워크를 이용하고 있습니다. SSL은 보안 소켓 통신을 의미하는데, 공격자가 정보 탈취를 위해서 SSL까지 노리고 있다는 것을 의미합니다. 또한 공격자는 더욱 철저하고 은밀한 공격을 위해서 I2P 네트워크를 이용합니다.


악성코드 순서도



악성코드 분석


※ 악성파일 분석(fax167829861_pdf.exe)

   

-파일 정보

   

Detection Name 

File Name 

MD5 

Size(Byte) 

 Trojan.Cutwail.Aj

 fax167829861_pdf.exe

 A2B3D66516569B93DD20E4347D1385DD

 37,888


 

- 자기 자신을 임시폴더에 복사 후 실행


최초 유포된 악성코드가 실행되면 파일 이름을 확인합니다. 해당 파일이 informix.exe라는 이름으로 실행된 것이 아니라면, 사용자 계정 이하의 임시 폴더에 informix.exe라는 이름으로 자기 자신을 복사하고 실행시킵니다. 결과적으로 Informix.exe가 실행되고 최초에 실행된 파일은 종료 및 삭제됩니다.


[그림2] 사용자 계정 이하의 임시폴더에 생성된 파일


[사용자 계정 이하 폴더] \Local Settings\Temp\informix.exe

 

 

- UAC 우회


먼저 사용자가 어떤 PC 및 운영체제를 사용하는지 확인하기 위해 시스템과 운영체제 정보를 얻어옵니다.


[그림3] 운영체제 정보 확인


현재 로그온된 사용자가 관리자 권한을 가지고 있는지 검사합니다. 이를 위해서 악성코드는 현재 유저의 SID를 구해와 해당 SID가 관리자 그룹에 속하는지 검사합니다.


[그림4] 현재 사용자가 관리자 그룹인지 확인


만약 현재 계정이 관리자 그룹에 속하지 않는다면 UAC 우회를 시도합니다. UAC를 우회하는 방법은 sdbinst.exe를 이용하는 것입니다. 이러한 UAC의 우회 방법은 인터넷에 많이 공개되어 있기 때문에 더 이상 새로운 기법이 아닙니다.


[그림5] sdbinst.exe를 이용한 UAC 우회


UAC 우회를 완료하였다면 레지스트리에 UAC 우회를 완료하였다는 표시를 해둡니다.


[그림6] UAC 우회 확인 레지스트리


 레지스트리 경로

값 이름 

값 

 HKLM\Software\Microsoft\WindowsNT\CurrentVersion

 Marker_UAC_bypassed

 TRUE



- 슈퍼권한 획득 및 백신 무력화


UAC 우회까지 완료한 후, 슈퍼권한을 획득하여 현재 시스템에 백신이 실행 중인지 확인합니다. 백신이 실행 중이라면 백신과 관련된 프로세스에 코드를 삽입하거나 프로세스를 강제 종료함으로써 백신의 무력화를 시도합니다.


[그림7] 백신 우회 코드


무력화 대상이 되는 백신 목록 및 그에 해당하는 무력화 방법은 아래와 같습니다.


 대상 백신 

 무력화 방법 

 MS Security Essentials

 코드 인젝션

 ESET NOD32 Anti Virus

 코드 인젝션

 MalwareBytes Anti-Malware

 API호출을 통한 강제종료

[표1] 백신 무력화 대상 목록


앞서 백신의 무력화를 시도하는 모습을 살펴보았습니다. 하지만 조금 더 확실히 하기 위해, 악성코드 제작자는 백신의 탐지로부터 회피하는 것을 목적으로 제외처리 리스트까지 건드리는 것을 확인할 수 있었습니다. 다음은 백신의 제외처리 목록에 악성코드와 관련된 값을 등록하는 명령입니다.



MalwareByte 백신인 경우, 백신 라이브러리를 로드한 뒤 SelfProtectionDisable이름을 가진 함수를 직접 호출함으로써 자가보호를 무력화시키려고 시도합니다.


[그림8] MalwareByte Anti-Malware 무력화



- 추가 악성코드 드랍 및 실행


마지막으로 리소스로부터 데이터를 읽어 추가로 악성코드를 드랍 및 실행합니다.


[그림9] 파일 드랍 및 실행



※ 악성파일 분석(zxcvb.exe)


- 파일정보


Detection Name 

File Name 

MD5 

Size(Byte) 

Backdoor.Agent.gc

 zxcvb.exe

 F1744EC33A5D43BB7DF9E3910592EC8C

 414,208



- 악성 서비스 생성


악성코드가 제일 먼저 하는 행동은 Google Update Service라는 이름으로 서비스를 생성하는 것입니다. 이를 위해 악성코드는 슈퍼권한을 획득한 후 svchost.exe 프로세스가 존재하는지 확인합니다. 존재할 경우 Google Update Service라는 이름의 서비스를 등록 시도합니다.


[그림10] Google Update Service라는 이름으로 서비스를 생성하는 부분


만약 서비스 등록에 실패했을 경우에는 직접 Service Control Manager에 접근하여 서비스의 생성을 시도합니다. svchost.exe 프로세스를 찾는 데 실패했거나 슈퍼권한 획득에 실패했을 경우에는 레지스트리 시작 항목에 악성코드 정보를 등록하고 explorer.exe에 직접 인젝션을 시도함으로써 시스템에 악성코드를 삽입하기 위한 시도를 합니다. 최종적으로 아래와 같은 악성 서비스가 생성됩니다.


[그림11] Google Update Service 서비스가 등록된 모습


 악성코드 서비스 레지스트리 경로

 악성코드 파일 경로

 HKLM\SYSTEM\CurrentControlSet\Services\googleupdate

 [윈도우 설치 경로]\[랜덤 파일명].exe

[표2] 악성 서비스 레지스트리 경로 및 관련된 파일 경로


서비스의 생성과 더불어 코드 인젝션도 수행됩니다. 코드 인젝션은 실행 가능한 파일이 디스크에 파일 형태로 존재하고, 이것이 메모리에 로드된 정상적인 형태가 아닌 하드디스크에 파일로 존재하지 않는 실행 코드가 메모리에 바로 올라간 형태를 말합니다. 아래는 svchost.exe에 코드 인젝션된 모습이며 Start Module이 비어있는 모습을 확인할 수 있습니다.


[그림12] svchost.exe 프로세스에 코드 인젝션된 모습


인젝션 코드는 주로 BOT의 기능을 가지고 있습니다. 또한, 생성되는 프로세스를 수시로 감시하여 악성코드가 대상으로 하는 프로세스가 실행됐을 경우 해당 프로세스에 코드 인젝션을 수행하는 기능도 가지고 있습니다.


 

※ 악성파일 분석(zxcvb.dll)


- 파일정보


Detection Name 

File Name 

MD5 

Size(Byte) 

Trojan.Dyzap.A

zxcvb.dll 

 2D56D61D2347749DBF5CBFEBF7E35820

 143,360


 

- PC 및 네트워크 정보 수집


운영체제의 버전을 검사하여 어떠한 운영체제를 사용하는지 파악합니다. 아래 코드를 보면 최신 운영체제인 윈도우8.1까지 염두에 두었음을 확인할 수 있습니다.


[그림13] 운영체제 정보 수집


최근에는 공유기의 NAT기능을 이용하여 공유기 하나로 여러 대의 컴퓨터에서 인터넷을 사용하는 경우가 많습니다. 악성코드 제작자는 이러한 환경 정보를 수집하기 위해 NAT관련 정보를 확인합니다.

 

[그림14] 네트워크 환경 정보 수집

 

NAT환경일 때 가상 IP 주소를 사용할 수 있습니다. 공격자는 이에 대비하여 미리 외부 IP를 확인하는 용도로 사이트를 만들어두고, 해당 사이트에 접속하여 외부 IP를 확인할 수 있도록 해두었습니다.


[그림15] 컴퓨터 외부 아이피 취득



- 인터넷 브라우저 코드 인젝션


현재 실행 중인 프로세스 목록을 실시간으로 감시하면서 크롬, 인터넷 익스플로러, 파이어폭스가 켜지는지 감시합니다. 발견되었을 경우, 코드 인젝션을 수행합니다.


[그림16] 인터넷 브라우저 코드 인젝션을 시도하는 부분


[그림17] 프로세스 확인 및 코드 인젝션



- 인터넷 브라우저 코드 인젝션 - 금융 정보 탈취


인터넷 브라우저에 인젝션되는 코드는 금융 정보 탈취 목적을 가지고 있습니다. Wininet.dll에서 익스포트하고 있지 않고, 내부적으로 사용되는 함수를 후킹하여 정보를 가로채는 기능을 가지고 있습니다.


[그림18] Wininet 모듈에서 후킹하는 부분


위의 두 부분은 Wininet에서 내부적으로 사용되는 함수이기 때문에 정확히 어떠한 기능을 수행하는지는 알 수 없었습니다. 그러나, 심볼을 통해 해당 함수가 ICSecureSocket 클래스의 Receive_Fsm, Send_Fsm 라는 이름을 가진 멤버 함수임을 알 수 있었습니다.


[그림19] Wininet의 내부 함수가 악성코드에 의해 후킹된 모습


[그림20] ICSecureSocket 클래스의 Send_Fsm 멤버 함수


[그림21] ICSecureSocket 클래스의 Receive_Fsm 멤버 함수


위의 멤버 함수들은 ICSecureSocket(SSL) 통신의 SecureSend와 SecureReceive와 관련이 있음을 확인할 수 있습니다. 결국, 공격자가 은행권 홈페이지에서 보안을 위해 사용 중인 SSL의 데이터가 송수신되는 곳을 후킹하여 그 흐름을 가로채는 것이라고 유추해볼 수 있습니다.


이 함수들은 익스포트돼 있지 않기 때문에 위치를 얻어오기가 쉽지 않습니다. 따라서 검색을 통해서 찾는 것이 아닌, 직접 해당 함수의 Offset을 하드코딩으로 명시해두고 단순 (Wininet 기준 주소 + 하드코딩 Offset) 연산을 함으로써 함수의 위치를 얻어오게끔 구현돼 있습니다.

 

[그림22] 악성코드 내부적으로 가지고 있는 Wininet 후킹 포인트 Offset


후킹 프로시저 내부에서는 아래와 같이 내부적으로 사용하는 BOT 설정 내용에 명시된 패턴 및 내용을 근거로 인터넷 뱅킹 관련 URL에 접속하는지 확인하고 뱅킹 정보의 탈취를 시도합니다.


[그림23] 인터넷 뱅킹 관련 URL


사용자가 접속하고자 하는 URL이 인터넷 뱅킹 관련 URL 패턴과 일치한다면, 공격자가 미리 설정해둔 프록시 서버가 해당 접속 요청을 대신 해서 다루며 이때 정보의 탈취를 시도합니다. 아래는 설정 파일에서 발견된 정보 탈취에 사용되는 프록시 서버 URL입니다.


[그림24] 정보 탈취에 사용되는 프록시 서버 URL


설정 파일 내부에 존재하는 인터넷 뱅킹 URL 종류는 매우 많았으며, 아래는 악성코드가 타겟으로 하는 은행들 중 일부를 명시한 것입니다.



 

- 봇넷 기능


공격자는 감염된 PC를 효율적으로 제어하기 위해 악성코드에 봇넷 기능도 탑재하였습니다. 아래의 코드 흐름에서 노출되는 문자열(botid)로부터 악성코드가 봇넷 기능을 가지고 있음을 짐작할 수 있습니다.


[그림25] botID 할당


봇넷 제어를 위해서 Stun이라는 특정 서브도메인을 주로 사용하는 C&C 서버 주소로 통신을 합니다.


[그림26] C&C 서버


통신할 때 익명성이 보장되는 네트워크를 사용하는데 널리 알려진 Tor를 쓰지 않고 I2P를 이용하여 통신합니다.


[그림27] I2P 통신


Tor 네트워크는 밖으로 내보내는 통신과 밖에서 데이터를 가져오는 통신의 경로가 똑같으므로 통신 시작점과 끝점이 같은 것을 알 수 있습니다. 하지만 I2P 네트워크는 Tor 네트워크와 다르게 밖으로 내보내는 통신과 밖에서 데이터를 가져오는 통신의 경로가 다르므로 더욱 익명성이 보장되는 네트워크입니다.


[그림28] Tor와 I2P 통신 방식



악성코드 분석 결론


메일로 유포되는 악성 프로그램은 운영체제 종류 및 32비트 64비트 여부에 따라 능동적으로 UAC 우회 및 백신 무력화를 시도합니다. 윈도우 기본 시스템 프로그램인 svchost와 explorer에 코드를 인젝션하여 활동하기 때문에 탐지 측면에서 다소 까다로운 악성코드입니다. svchost에 인젝션된 코드는 시스템 모니터링 및 봇 기능을 가지고 있으며, 상황에 따라서 추가 기능을 작동시킵니다. 그 중 하나가 인터넷 브라우저에 뱅킹 정보를 탈취하는 기능을 가진 코드를 인젝션하는 것입니다.


인터넷 브라우저에 인젝션되는 코드는 해외 유명 은행의 홈페이지의 민감한 로그인 정보 등을 탈취해갑니다. 여기서 주목해야 할 점은 대부분의 금융권 홈페이지는 보안을 위해 SSL 암호화 통신을 수행하고 있지만, 이 악성코드는 SSL단계에서 후킹을 시도하여 민감한 정보를 탈취해간다는 점입니다. 탈취한 정보는 익명 네트워크 종류 중 하나인 I2P 방식을 이용하여 외부로 전송됩니다.


악성코드는 갈수록 정교하고 은밀하게 작동하려고 하는 경향이 있습니다. 본 악성코드는 최신 버전의 운영체제인 윈도우8.1도 염두에 두고 있으며, NT6 커널부터 도입된 UAC 우회 기능까지 갖추고 있습니다. 또한, 해당 기능은 필요에 따라 매우 정교하게 작동합니다. 프로세스의 메모리 영역에 인젝션되어서 돌아가는 형태이기 때문에 은밀하게 작동하며, 수집한 정보를 외부로 빼돌리는 과정에서도 일반적인 네트워크를 이용하지 않고 익명성이 보장되는 I2P 네트워크를 이용합니다. 


해당 악성코드에 감염되고 나면 이 모든 과정이 순식간에 이루어집니다. 따라서 사용자는 PC를 사용할 때 출처가 명확하지 않은 파일을 열어보지 않는 등, 의심스러운 요소를 항상 경계하는 습관을 길러야 합니다.

 


※ 관련 내용은 알약 보안동향보고서 2월호에서도 확인하실 수 있습니다. 

관련글 더보기

댓글 영역