상세 컨텐츠

본문 제목

[악성코드 분석리포트] Trojan.Agent.SnsBot

악성코드 분석 리포트

by 알약(Alyac) 2016. 12. 26. 11:34

본문

Trojan.Agent.SnsBot


봇넷 계열의 악성코드들은 일반적으로 감염 후 C&C 서버와 통신하여 감염된 PC의 정보를 전달하거나, 추가적인 악성코드를 실행하는 등 추가적인 동작을 수행합니다.


때문에 보통 해당 C&C 서버를 차단하여 감염된 PC에서의 추가적인 행동을 하지 못하게 합니다. 공격자들은 이러한 단점을 최소화하기 위하여 일반적인 탈취된 서버들을 사용해왔는데, 최근에는 SNS 등을 통해 특정 명령 또는 감염된 PC의 정보를 암호화하여 글을 게시하며 C&C 서버 차단을 우회하고 있는 방식을 활발히 사용하고 있습니다.


악성코드 상세 분석


악성코드 분석 우회


악성코드 “Trojan.Agent.SnsBot”은 악성 기능 동작 전에 현재 PC 환경이 악성코드 분석 환경인지를 확인하기 위해 3가지 기능을 동작한 후 실제 악성 기능을 동작시킵니다.


[그림 1] 부모 프로세스 확인


일반적으로 윈도우 운영체제 환경에서 프로세스가 시작되면 “explorer.exe”의 자식 프로세스로 프로세스가 실행됩니다.

하지만 악성코드 분석을 위해 임의로 다른 디버깅 도구를 이용하여 실행하는 경우에는 부모 프로세스가 “explorer.exe” 가 아니기 때문에, 이를 통해 정상적인 실행 여부를 확인할 수 있습니다.


[그림 2] Win32 API 를 통한 디버그 환경 확인


 Win32 API 중 프로세스의 디버깅을 확인하는 API 인 IsDebuggerPresent 함수로 현재 프로세스의 디버깅 상태를 확인합니다.



[그림 3] 실행중인 프로그램 확인


  현재 실행되는 모든 프로세스들을 검사하며, 프로세스의 이름을 확인하여 특정 프로세스가 실행 중일 경우 악성코드의 동작을 종료하기 위해 14개 프로세스의 이름을 검사합니다.


 검사하는 프로세스들을 살펴보면 대부분 윈도우 환경에서 다른 프로세스들의 동작을 감시하는 모니터링 계열의 프로세스입니다.


 

 프로세스 명

 1

vmtoolsd

 2

 ollydbg

 3

python 

 4

filemon 

 5

regmon 

 6

peid 

 7

Procexp 

 8

Vbox 

 9

Filddler 

 10

Wireshark 

 11

Procmon 

 12

Autorun 

 13

Tcpview 

[표 1] 확인 대상 프로세스 명


해당 13개의 프로세스 명 확인 후, 위에서 서술한 2개의 디버그 환경이 발견되면 악성코드는 더 이상 동작을 하지 않고 종료됩니다.


추가 악성코드 실행기능


봇넷 계열 악성코드의 대표적인 기능에는 지속적인 C&C 서버와의 통신을 통하여 추가 악성코드를 다운받아 실행시키는 기능이 있습니다. 본 악성코드도 동일한 기능을 가지고 있으며, C&C 서버 대신 사용하는 특정 SNS 계정의 게시글을 확인하기 전, 특정 경로에 파일이 존재할 경우 해당 파일을 실행하는 기능입니다.


[그림 4]  특정 경로의 파일 확인 및 실행


“c:\temp\esoftscrap.jpg” 경로에 파일이 존재 할 경우 간단한 XOR 연산을 통하여 파일을 복호화하고,  이후 “c:\users\appdata\local\svchost.exe” 경로로 새로운 파일을 생성하여 실행합니다.


[그림 5] 파일 다운로드


[그림 5] 의 파일 다운로드 기능은 [그림 4] 의 특정 경로에 파일이 확인되지 않을 경우 동작하는 다운로드 기능입니다.


PC 정보 수집 및 전송


 해당 악성코드의 기본적인 기능 중 하나는 감염된 PC의 정보를 특정 SNS 계정으로 전송하고 SNS 계정을 통하여 명령을 내려 받고 있다는 것입니다.


[그림 6] PC 정보 수집


[그림 6] 은 PC 사용자 이름 및 컴퓨터 이름을 수집하는 기능이며, 수집에 실패할 경우에만 특정 이름으로 저장합니다. 이외에 수집하는 정보에는 OS 정보(32Bit / 64Bit) 및 권한 정보 등이 존재하며, 랜덤으로 생성된 정보 또한 수집합니다.


[그림 7] 수집된 정보 전송 코드


정보 전송시에는 9개의 문자열 “SHA”, “TOM”, “BRN”, “JMS”, “ROC”, “JAN”, “PED”, “JHN”, “KIM”, “LEE”문자열에 Header로 암호화된 Data를 붙여 SNS에 게시합니다.


[그림 8] 전송 데이터


[그림 8] 은 악성코드가 수집한 정보를 SNS 서버로 전송하는 HTTP GET 헤더입니다.


봇 기능 동작


공격자가 C&C 서버 대신 이용하는 특정 SNS 계정의 글에는 감염 PC에서 수행할 명령어를 포함하고 있습니다. 분석 시점에는 해당 SNS 계정이 정지되어 확인이 불가했지만, 악성코드 파일 내부에는 게시글을 읽고 동작하는 기능들이 존재하여 분석을 진행했습니다.


[그림 9] SNS 게시글 파싱 코드


SNS 게시글을 확인하여 특정 기능을 수행합니다.


[그림 10] 다운로드 기능


[그림 10]은 봇 기능 중 하나인 파일 다운로드 후 메모리 상에 적재한 뒤 특정 기능을 수행하는 코드입니다.


명령어 

 기능

 7

정보수집/봇기능 종료 

 C

SNS 전송정보 수정

 D

SNS 전송정보 수정

 E

SNS 전송정보 수정

 F

SNS 전송정보 수정

 G

다운로더(코드 다운/실행)

 Z

프로세스 종료

 I

파일 삭제

 J

파일 이동

 M

프로세스 종료

 W2

SNS 전송정보 수정

 W3

SNS 전송정보 수정

[표 2] 봇 기능 정리


봇의 기능들은 [표 2]에 나타나 있으며, 프로세스 종료, 파일 다운로드 후 시작 등 기본적으로 감염 후 감염된 정보를 바탕으로 추가적인 악성코드를 내려받아 실행시키는 구조를 가진 일반적인 봇넷 계열의 악성코드와 동일했습니다.



결론


본 악성코드 Trojan.Agent.SnsBot는 기존 봇넷 계열 악성코드의 기능들과 동일하게 감염된 정보를 전송하고 공격자의 명령을 받아 추가적인 동작을 수행하는 악성코드입니다.


기존 봇넷 계열의 악성코드는 정보를 전송하거나, 명령을 받는 C&C 서버의 경우에는 국가적인 차원으로 ISP 업체에서 차단하여 추가적인 동작 수행이 불가능하도록 대응했습니다. 또, 해킹된 서버를 C&C 서버로 이용하는 경우, 해킹된 서버를 보호하여 명령을 더 이상 내려 받지 못하게 해 추가 동작이 불가능했습니다. 이러한 단점을 극복하기 위해 SNS에 게시물을 올려 정보를 전송하고 추가적인 동작을 하도록 하는 게시물을 작성하여 동작하는 봇들이 예전부터 존재해왔습니다. 


SNS 이전에도 블로그나 여러 인터넷 사이트의 게시물을 이용한 악성코드가 발견되면, 사용하는 SNS 혹은 블로그의 운영 측에 전달하여 추가적인 조치가 필요했습니다. 이러한 기법들을 연구하여 빠른 분석 및 조치가 필요한 시점입니다.


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

관련글 더보기

댓글 영역