본문 바로가기
IT_정보보안/보안관제 프로젝트

21. 악성코드 샘플 동적분석 • Snort (2)

by jys275 2024. 4. 8.

저번 분석에 이어서 동적분석과 Snort를 통한 탐지 패턴 생성을 진행할 것이다.
 
 


 
 
 
악성샘플 정보 – feb document 10998
 
 

해당 샘플은 ".NET Framework v4.0.30319"가 설치되어 있어야 실행할 수 있는 파일이다.

닷넷 프레임워크는 윈도우 기반 프로그램들이 정상적으로 작동될 수 있도록 여러 가지 기능을 모아두었는데, 
설치되어 있지 않거나 버전이 맞지 않으면 정상 작동하지 않는 경우가 많아 
일반 사용자 입장에서는 설치되어 있는 경우가 대다수이다.

즉, feb document 10998 샘플 파일은 원래라면 기본적으로 설치되어 있는 
.NET Framework의 기능을 악용하여 악성행위를 하는 것으로 추정할 수 있다.
 
해당 샘플 파일을 분석하기 전에 ".NET Framework v4.0.30319"를 설치해 주었다.
 
 


 
 
동적분석 - Process Explorer
 
 

관리자 권한으로 실행 시, 원본 파일은 즉시 삭제되었으며
"feb document 10998.exe", "dllhost.exe", "consent.exe"
세 가지 프로세스가 순간적으로 발생한 것을 확인할 수 있었다.
 
트로이목마 성격 확인 가능.

dllhost.exe, consent.exe 두 가지 파일은 윈도우의 정식 프로세스이나
악성코드의 감염 타겟이 되는 경우가 많은 프로세스이다.

샘플을 실행하자마자 순간적으로 두 가지 프로세스가 발생한 것으로 보아 악성행위로 의심될 수 있으며,
위의 두 프로세스가 C\Windows\system32 경로가 아니라면 악성코드일 가능성이 높다.
 

위와 같이 경로가 파악되지 않은 것을 확인할 수 있다.
 

샘플을 실행시키고 시간이 어느 정도 흐른 후에 새롭게 생성된 두 가지 프로세스인
"svchost.exe"프로세스 및 해당 하위 프로세스 "WerFault.exe"를 발견할 수 있었다.
 

"svchost.exe" 프로세스 또한 악성코드의 감염 타겟이 되는 경우가 많지만, 
경로가 "C:\Windows\System\svchost.exe"으로 나타나며, Virustotal 검사 결과 이상이 없다.

svchost.exe 프로세스 자체로는 악성행위일 가능성이 낮아 보이며, 
바로 하위 프로세스인 WerFault.exe 프로세스를 자세하게 살펴볼 필요성이 있다.
 

WerFault.exe 프로세스의 Properties

TCP/IP 탭 확인 시 104.208.16.93 IP 주소가 HTTP 서버에 SYN 패킷을 보내면서
TCP 연결을 시도하고 있는 것을 확인할 수 있다.
 

위 IP는 US IP로 파악되며, Virustotal을 통해 조회 시, IP 자체는 마이크로소프트 소속으로 보이나
Relations 탭에서 해당 IP 주소와 통신한 파일들이 대다수 악성으로 진단된 것으로 보아
악성코드의 대상이 되는 경우가 많은 것으로 보인다.

즉, 해당 샘플 파일은 svchost.exe를 활용하여 WerFault.exe를 파생시켜
네트워크 행위를 하는 것으로 추정된다.
 
 


 
 
동적분석– Process Moniter
 
 

Process Name을 "feb document 10998.exe"로 지정하여 필터링한다.

전체적인 흐름은 윈도우 내장 함수, NET Framrework를 통한 프로세스와 스레드 시작 및 생성, 
라이브러리 로드, 레지스트리 항목 액세스 작업을 수행한다.

기능을 알 수 없는 ‘pathologist.resources.dll’, 
‘nGKqcjeQbRToBUUnehrgSOOAiJyS.dll’ 파일과 같은 이름으로 지어진 .exe 파일을 발견할 수 있다.
 
두 가지 모두 Result가 이름 및 경로를 찾지 못하고(NAME, PATH NOT FOUND),
불허가(FAST IO DISALLOWED) 결과가 발생한 것을 확인 가능하다.
 
이는 ‘ko-KR’이라는 경로와 nGKqcjeQbRToBUUnehrgSOOAiJyS.dll,
nGKqcjeQbRToBUUnehrgSOOAiJyS.exe 두 가지 파일의 부재로 인해
본래 샘플 파일이 의도했던 행위를 못 하는 것으로 추정된다.
 

정적분석 과정에서 존재했던 meWF.exe 실행파일과 이름이 동일한 ‘meWF.pdb’라는 pdb 파일과
‘mscorlib.resources.exe’ 실행 파일과 관련된 Path가 존재한다.
 
이전과 동일하게 본래 의도했던 행위를 못 하는 것으로 추정된다.

이에 pathologist.resources, nGKqcjeQbRToBUUnehrgSOOAiJyS,
meWF, mscorlib.resources 네 가지 키워드를 필터링해 보았으나, 위의 프로세스 외에는 발견할 수 없다.
 

‘ko-KR’을 Path에 필터링한 결과이다. 
샘플 파일과 관련이 있던 svchost.exe 실행 파일이 ko-KR을 CreateFile 한 Operation을 확인할 수 있다.
 

path에서 ko-KR과 관련된 프로세스(DllHost.exe, feb document 10998.exe 등)는 
모두 정상적인 작동을 하지 못한 것을 확인할 수 있다.

즉, 해당 샘플 파일은 ko-KR 파일을 만드는 행위까지는 정상적으로 작동했으나,
중간 과정에서 모종의 이유로 의도했던 작업을 수행하지 못해
 
결론적으로 이루어져야 할 악성 행위가 이루어지지 못하는 것으로 추정된다.

Process Moniter에서 샘플 파일을 실행시킨 시간 이후로 생긴 로그를 모두 다시 살펴볼 필요성이 있다.
svchost.exe, consent.exe, csrss.exe 세 가지 파일이 샘플 파일 경로로 접근하는 프로세스가 존재한다.
 
그 외로는 모두 윈도우 내장 dll 파일에 접근하는 프로세스가 대다수
 

그중 svchost.exe는 WerFault.exe 실행 파일에 접근하는 것을 확인할 수 있다.

WerFault.exe 실행 파일 필터링 결과, feb document 10998.exe 샘플 파일과 
.NET Framework, 여러 윈도우 내장 dll 파일에 접근하는 것을 확인할 수 있다.

WerFault.exe 실행 파일이 WinSock2, TCPIP6와 관련된 프로세스를 가지는 것으로 보아, 
Process Explorer에서 발견했던 네트워크 행위처럼 어떠한 네트워크 행위를 하는 것으로 추정된다.

Process Explorer에서 찾았던 TCP 통신 프로세스를 찾기 위해, Operation을 TCP contains로 필터링하였다.
104.208.16.93 IP와 TCP 통신을 시도하고 있는 것을 다시 확인할 수 있다.

이 외로는 대부분의 프로세스가 dll 파일 및 .NET Framework 관련 명령 작업이다.
 
 




동적분석 - AutoRuns


시작 프로그램으로 등록된 것은 없는 것으로 파악된다.
 
 


 
 
동적분석 - CurrPorts
 
 

104.208.16.93 IP 주소의 HTTP 포트(포트 번호 80)로 
TCP 연결을 시도(SENT)하고 있는 것을 확인할 수 있다.
 
 


 
 
동적분석 - SmartSniff
 
 

104.208.16.93 IP 주소의 Remote Host가 
"onedsblobprdcus07.centralus.cloudapp.azure.com" 도메인으로 나타난다.

해당 도메인은 Azure 클라우드 플랫폼 내에서 서비스되는 
Azure Blob Storage 리소스에 대한 주소이며, 대규모의 데이터를 저장하기 위한 스토리지 서비스이다.
 
또한 위 도메인의 일부인 "cloudapp.azure.com"은 Azure에서 제공하는
클라우드 애플리케이션 호스팅 서비스인 Azure App Service를 나타낸다.

Virustotal 검사 결과 ‘onedsblobprdcus07.centralus.cloudapp.azure.com’ 
도메인 자체는 문제가 없는 도메인으로 나타난다.

하지만, 타 악성코드 분석 결과에서도 해당 도메인이 공통적으로 첨부되어 있었으며, 
해당 도메인과 통신한 파일들이 대다수 악성으로 진단된 것을 살펴볼 수 있다.

즉, 여러 악성 샘플이 악성 행위에 해당 도메인을 이용하고 있는 것으로 추정할 수 있다.
 
 


 
 
동적분석 - Wireshark
 
 

“ip.dst == 104.208.16.93”으로 필터링한 결과이다.
동일하게 104.208.16.93 IP 주소의 포트 번호 80으로 TCP 연결을 시도하기 위해 SYN 패킷을 보내고 있다.

 

하지만 104.208.16.93 IP로부터 발생한 SYN 패킷에 대한 응답이 RST, ACK 플래그가 설정되어 있다.
즉, 해당 TCP 연결이 더 이상 유효하지 않음을 나타낸다.
 
 


 
 
동적분석 - Snort
 
 
Snort Rule을 작성하기 전에 내용을 먼저 정리한다.
 
주요 네트워크 행위
1. 104.208.16.93
2. onedsblobprdcus07.centralus.cloudapp.azure.com

만약 샘플 파일이 활동을 재개한다면 다운로드할 것으로 추정되는 파일 이름
1. pathologist.resources
2. nGKqcjeQbRToBUUnehrgSOOAiJyS
3. meWF

위의 정보를 바탕으로 Snort rules을 작성
- alert tcp any any -> 104.208.16.93 any (msg:"Malware Detection : IP 104.208.16.93"; sid:1000001;) 
- alert tcp 104.208.16.93 any -> any any (msg:"Malware Detection : IP 104.208.16.93"; sid:1000002;) 

샘플 파일이 활동을 재개하는 것을 대비
- alert tcp any any -> any any (content:"pathologist.resources.dll";
msg:"Malware downloads pathologist.resources"; sid:1000003;) 
- alert tcp any any -> any any (content:"pathologist.resources.exe";
msg:"Malware downloads pathologist.resources"; sid:1000004;) 
- alert tcp any any -> any any (content:" nGKqcjeQbRToBUUnehrgSOOAiJyS.dll";
msg:"Malware downloads pathologist.resources"; sid:1000005;) 
- alert tcp any any -> any any (content:" nGKqcjeQbRToBUUnehrgSOOAiJyS.exe";
msg:"Malware downloads pathologist.resources"; sid:1000006;) 
- alert tcp any any -> any any (content:" meWF.dll";
msg:"Malware downloads pathologist.resources"; sid:1000007;) 
- alert tcp any any -> any any (content:" meWF.exe";
msg:"Malware downloads pathologist.resources"; sid:1000008;) 
 
악성코드는 변칙적인 특징이 많이 존재하며,
현재 정상적인 행위를 하지 않는다고 해서 나중에 다시 활동을 재개할 가능성이 없지 않다. 
 
항상 이러한 부분들을 염두에 두고 탐지 패턴을 만드는 것이다.
 

악성으로 추정되는 104.208.16.93 IP에서 필자의 IP로 패킷을 보내고 있는 것만 탐지가 되는 상황이다.
현재는 위 IP와 도메인이 정상적인 활동을 하고 있지 않기 때문에, 이후의 과정이 이루어지지 않은 것으로 보인다.
 
 


 
 
분석결론
 
 
기초분석 결론
Virustotal 확인 결과 파일 제작자가 생성일 정보를 변조한 것으로 추정되며,
공통적으로 'trojan' 진단 카테고리를 제공하였고 패킹은 되어있지 않은 것으로 파악된다.
 
정적분석 결론
Exeinfo PE, PEID에서 또한 패킹은 되어있지 않은 것으로 확인되었고, 그대로 bintext를 통한
내부 문자열 확인 결과 파일, 레지스트리, 프로세스 등의 작업을 수행하는 것으로 파악되었다.
 
그 중 여러 URL 정보와 더불어 ”SSH, Telnet and Rlogin client”, ".NET Framework. Version==v4.0"
문자열을 발견할 수 있었고, 해당 샘플 파일은 네트워크 및 원격 접속 동작을 하는 것으로 추정된다.
 
또한, “meWF.exe” 실행 파일 및 데이터베이스 데이터 삭제 명령어(DELETE FROM, WHERE)와
"SELECT FROM, WHERE" 등 여러 SQL 함수가 존재하였다.
 
즉, 해당 샘플 파일은 데이터베이스 접근 및 삭제 관련 동작 또한 수행하는 것으로 보인다.
 
동적분석 결론
관리자 권한으로 실행 시, 원본 파일은 즉시 삭제되었으며 Process Explorer 확인 결과
"feb document 10998.exe", "dllhost.exe", "consent.exe", "svchost.exe", "WerFault.exe"
프로세스가 순간적으로 발생한 것을 확인할 수 있었다.
 
위 프로세스 중 "WerFault.exe" 프로세스는 104.208.16.93 IP 주소가 
HTTP 서버에 SYN 패킷을 보내면서 TCP 연결을 시도하고 있는 것을 확인할 수 있었다.
 
이후 Process Moniter 확인 결과 pathologist.resources, nGKqcjeQbRToBUUnehrgSOOAiJyS, 
meWF 세 가지 의미를 알 수 없는 파일을 파생시키려는 행위가 존재하였지만, ‘ko-KR’이라는 경로의 
부재로 인해 본래 샘플 파일이 의도했던 행위를 못 하고 있다.

 
또한, WinSock2, TCPIP6와 관련된 프로세스와 다불어 "TCP Reconnect" Operation에서 네트워크 행위 및 104.208.16.93 IP와 TCP 통신을 시도하고 있는 것을 다시 확인할 수 있었다.
 
시작 프로그램으로 등록된 것을 없는 것으로 파악되었고, SmartSniff 확인 결과 104.208.16.93 IP 주소의
Remote Host가 "onedsblobprdcus07.centralus.cloudapp.azure.com" 도메인으로 나타났다.

Wireshark 및 Snort에서 해당 IP로 통신을 시도하는 과정이 존재했지만, 현재는 위 IP와
제작자가 사용자 정의한 것으로 보이는 위 도메인이 정상적인 활동을 하고 있지 않기 때문에,
이후의 과정이 이루어지지 않은 것으로 추정된다.


 
최종 분석 결론 : 악성파일의 유형
원본 파일인 ’feb document 10998.exe’ 실행 시, 윈도우 내장 파일을 통해 파일 및 레지스트리 작업을 수행하면서
pathologist.resources, nGKqcjeQbRToBUUnehrgSOOAiJyS, meWF 
세 가지 의미를 알 수 없는 파일을 파생시키려는 행위가 존재하며, 원본 파일은 삭제되었다.

또한, bintext에서 발견된 ‘SSH, Telnet and Rlogin client’ 문자열과
데이터베이스 데이터 삭제 명령어(DELETE FROM, WHERE)와 SQL 함수 등이 존재했던 것으로 보아,
본래에는 원격 제어 및 데이터베이스 접근 및 삭제 관련 행위를 수행하려는 것으로 추정된다.

즉, 해당 악성코드 샘플은 다운로더, 트로이목마, 백도어 유형의 악성코드로 추정된다.

또한 2016년에 등장하여 현재까지도 꾸준하게 유포되고 있는 정보 탈취 유형의 ‘FormBook’ 악성코드라고 추정할 수 있다.
이는 웹 브라우저 개인 정보, 스크린샷, 키 로깅을 포함하여 다양한 유형의 데이터를 탈취하며, 다운로더 역할까지 수행할 수 있다.

FormBook 유형의 악성코드는 주로 메일의 첨부파일을 통해 
견적서, 발주서 제목 및 입찰&계약 관련 내용으로 유포되는 정황이 존재한다(document 등).
 
이는 윈도우 정상 프로세스인 explorer.exe 및 system32 경로에 있는
정상 프로세스(.dll 등)에 인젝션함에 따라 악성 행위는 정상 프로세스에 의해서 수행된다. 

fed document 10998 실행 후 발생한 explorer.exe 프로세스

또한, 해당 악성코드는 C2 정보 파악을 어렵게 하기 위해 여러 개의 URL 리스트를 가지고 있다. 
 
하지만, 지금까지 활용했던 분석 툴을 통해서는
“onedsblobprdcus07.centralus.cloudapp.azure.com"도메인 외에는 발견하지 못했다.
 
해당 도메인과 통신한 파일들이 대다수 악성으로 진단된 것으로 보아, 만약 해당 도메인으로부터
feb document 10998 파일이 원하는 유효한 응답을 받을 경우 추가 악성행위가 발생할 것으로 추정된다.

최종 분석 결론 : 악성파일의 특징 및 행위
feb document 10998.exe 샘플 파일은 기본적으로 svchost, csrss, consent, WerFault, mscorlib 등 
윈도우 내장 파일을 활용하여 프로세스, 스레드, 레지스트리 작업을 수행하는 것으로 추정된다.

이후에 WinSock, 닷넷 프레임워크, WerFault를 통해 104.208.16.93 IP (Host : onedsblobprdcus07.centralus.cloudapp.azure.com)와 통신을 하여

feb document 10998.exe 파일이 설치된 경로에 ‘ko-KR’ 파일을 생성하고, pathologist.resources, nGKqcjeQbRToBUUnehrgSOOAiJyS, meWF 세 가지 파일을 .dll과 .exe 유형으로 가져와
SSH, Telnet을 통한 원격 접속 동작을 수행하려고 했던 것으로 추정된다.

하지만, 해당 샘플 제작자가 사용자 정의한 “onedsblobprdcus07”이라는 이름은 가진 
“cloudapp.azure.com” 도메인과 104.208.16.93 IP로부터 유효한 응답을 받지 못하고 있기 때문에,
현재는 악성 행위를 하고 있지 않은 것으로 추정된다.

 


 
 
다음 글에서는 해당 샘플 파일과 같은 악성코드 유형의 예방 및 대응 방안 등을 포함하여,
악성코드 분석 보고서를 작성할 예정이다.