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

14. 악성코드 샘플 분석(1)

by jys275 2024. 1. 28.

악성코드 분석은 사실상 정답이 없는 문제를 푸는 것과 유사하다고 표현한다.

즉, 최대한 많은 분석들을 통해서 직접 쌓은 경험을 기반으로 답을 도출해 나가는 과정이다.

 

또한 악성코드는 분석하는 환경에 따라서도 얼마든지 결과가 달라질 수 있으며,

악성코드 자체적으로 시간이 지남에 따라 활동의 변화가 생길 수 있다.

 

Virustotal에서 누군가 과거에 분석한 결과와

본인이 직접 분석한 결과가 다르다고 해도 본인이 틀렸다고 생각할 이유는 없는 것이다.

 

이러한 이유로 악성코드가 어떻게 동작할지 자세하게 알 수 없기 때문에,

우리는 최대한 여러 가지 툴을 잘 활용하고 상세한 분석을 통해 결과를 만들어나가는 것이다.

 

이번 글에서는 "bton02setu.exe" 라는 샘플 파일을 분석해 볼 것이다.

 

 


 

 

먼저 파일의 속성을 살펴보았을 때, 생성일이 2015년으로 현재 시점 기준으로 8년 넘게 지났다.

이는 해당 파일이 현재는 정상적으로 동작할 가능성이 낮겠다고 '추측'할 수 있는 것이다.

 

 

기초분석 - Virustotal

 

 

DETECTION

Virustotal 홈페이지를 확인해 보았을 때, 마지막 분석 시점(Last Analysis Date)이 1달의 기간으로 나타난다.

 

Virustotal 사용 유의점에 대해 알아보았을 때,

해당 분석 시점의 기간을 보고 사용자가 판단하여 재검사를 할 수 있다고 했었다.

 

필자는 재검사를 하지 않은 결과와

재검사를 해본 파일의 결과를 비교해보았지만, 큰 차이점은 발견하지 못했다.

 

보통 1달의 기간가지는 특별한 변화없이 동작하는 경우가 많다고 하지만,

찝찝하다고 하면 시간이 오래걸리지 않으니 재검사 기능을 활용해서 분석을 진행하는 것도 좋다.

 

먼저 결과를 확인했을 때, 72개의 백신 중 52개의 백신이 해당 파일을 악성파일로 진단하였다.

이 말은 즉, 악성파일인 가능성이 매우 높다고 추정해 볼 수 있는 것이다.

 

대신 항상 확정, 확신이라는 말은 사용하지 않는 것이 좋다.

 

그리고 기준이 될 수 있는 Ahnlab-V3 백신 외의 여러 백신에서도

trojan, adware, downloader 등의 진단 카테고리를 보여주었다.

 

결론적으로 Virustotal에서 얻은 결론은 해당 파일이

트로이목마, 애드웨어, 다운로드 유형의 성격을 가지고 있을 수 있다는 것을 알 수 있다.

 

 

DETAILS

DETAILS 탭을 통해서는 해당 파일의 자세한 정보를 확인해 볼 수 있다.

파일의 고유한 해시값을 참고하고자 할 때는 MD5, SHA-256 두 가지를 살펴본다.

 

그 외에 Win32 EXE 라는 파일 타입과

Microsoft Visual C++로 제작되었다는 정보를 확인할 수 있다.

 

이 말은 해당 파일이 Win32 환경에서 구동되며,

C++언어로 제작되었기에 패킹이 되어있지 않다고 추정할 수 있다.

 

 

RELATIONS

RELATIONS 탭에서는 분석하고자 하는 파일이 특정 IP, 도메인과 통신을 하는지 참고할 수 있다.

몇 가지 악성으로 진단된 것이 있다 보니 해당 IP를 참고하고 넘어갈 수 있다.

 

 


 

 

정적분석 - Exeinfo PE

 

 

정적분석 진행할 때, 가장 먼저 확인하는 부분 중에 하나는 해당 파일의 패킹 여부를 확인한다.

 

Exeinfo PE를 통해 제공받은 정보를 보면, “Microsoft Visutal C ++”, ”Not packed”라고 표현한다.

즉, Virustotal에서 추정한 정보와 마찬가지로 Exeinfo PE 또한 패킹이 되어있지 않은 것으로 진단을 하였다.

 

결론적으로 bton02setup.exe 파일은 패킹이 되어있지 않으므로,

특정 언패킹 도구의 도움 없이 내부 문자열을 평문으로 바로 확인해 볼 수 있다.

 

 

 

정적분석 - Bintext

 

 

위와 같이 Bintext로 파일 내부 문자열을 평문으로 바로 확인이 가능하다.

'Text' 탭을 확인해보았을 때, 여러 가지 C++, Win32 Api 함수가 확인된다.
디렉터리 경로 검색, 프로세스 우선순위 조정, 프로세스 관련 함수, Key 관련 함수 등이 확인된다.

 

중점적으로 봐야하는 항목 중 함수 또는 명령어에 해당하는 문자열을 확인한 것이다.

아직까지는 정확하지 않지만 해당 파일이 디렉터리와 관련된 행위를 한다는 것을 추정할 수 있다.

 

 

더 자세히 살펴보는 과정에서 악성코드에 자주 사용되는 dll 파일의 존재를 알 수 있었다.

 

프로세스, 레지스트리 등 여러 작업이 가능한 KERNEL32, USER32, ADVAPI32와

네트워크 관련 작업이 가능한 WSOCK32, NETAPI32 등을 확인할 수 있다.

 

이 과정에서는 해당 파일이 네트워크 관련 작업도 수행한다는 것을 알 수 있었다.

 

또한 함수에는 크게 두 가지 형태의 함수가 존재한다.

더보기

import 함수, export 함수이다.

 

import 함수는 내부 함수라고 표현하며, export 함수는 외부 함수라고 표현한다.

조금 풀어서 이야기하면, import 함수는 윈도우에 내장되어 있는 공통된 함수이다.

 

WSOCK32의 내부 함수는 네트워크 작업을 수행할 수 있는 것처럼 함수들의 기능이 정해져 있는 것이다. 

 

하지만 export 함수는 외부에서 공격자가 커스터마이징한 즉, 임의로 만든 함수이다.

그렇기 때문에 WSOCK32라고 불리지만 네트워크가 아닌 다른 기능을 담당하고 있는 함수일 수도 있다는 것이다.

 

그래서 export 함수는 공격자가 임의로 만든 함수이기 때문에, 해당 함수가 어떠한 역할을 하는지 알 수 없다.

어느 정도는 해당 함수의 이름을 통해서 유추는 가능하겠지만, 이름이랑 전혀 다른 기능을 수행할 수 있기 때문이다.

 

그렇다면 import 함수와 export 함수는 어떻게 구분을 할까? 

각각의 파일들은 고유한 값인 hash라는 정보를 가지고 있다.

 

이 hash는 그 파일에 대해서 구조를 변경을 하거나 그러지 않는 이상은 동일한 hash 값을 가지고 있다.

즉, 윈도우에 내장되어 있는 import 함수들은 각 함수들마다 동일한 hash 값을 가지고 있으며,

본인뿐만이 아니라 다른 사람의 PC에서도 동일한 해시값을 나타낸다는 것이다.

 

하지만 공격자가 만든 임의의 함수는 내부 파일의 구조를 뜯어고친 것이기 때문에, 해시값이 변경되어 있다.

즉, 우리는 이러한 정보를 바탕으로 import 함수와 export 함수를 구분한다.

 

추가적으로 중점적으로 봐야 하는 부분 중 URL 주소, 실행 파일 또한 찾을 수 있었다.

 

URL 주소는 해당 파일이 네트워크와 관련된 작업을 수행하거나 

원격 서버와 통신하고 다운로드를 시도할 수 있음을 의미한다.

 

실행 파일(.exe)은 해당 파일이 컴퓨터에서 실행될 수 있음을 의미한다.

알려진 파일이 아니기에 자체 제작한 파일로 추정된다.

 

윈도우 경로 관련 문자열은 파일이 디렉터리와 관련된 리소스에 접근하려는 것으로 추정할 수 있다.

 

추가적으로 Repeat(반복), del(삭제) 등의 문자열도 나타나는 것으로 보아

삭제 및 반복의 행위도 할 수 있다고 추정할 수 있다.

즉, 위와 같은 문자열이 함께 나타나는 것으로 보아

파일과 네트워크 상에서 어떠한 작업을 수행하려는 것일 가능성이 높다.

 

또한 앞으로 동적분석 과정에서 네트워크 쪽 행위를 확인하면서,

위에서 알아본 URL 주소 및 실행 파일을 참고할 수 있는 것이다.

 

 

 

정적분석 - PEview

 

 

4D 5A (MZ)를 보았을 때 실행파일(.exe)임을 다시 확인 가능하다.
또한 Virtual Size와 Size of Raw Data 간의 크기 차이가 크기 않기에 패킹되어있지 않음을 다시 확인했다.

 

 

bintext에서 확인했던 dll 파일을 한눈에 다시 확인할 수 있다.
즉, 지금까지 진행되었던 분석 과정에 큰 문제가 없었음을 PEview를 통해 다시 한번 확인이 가능했다.

 


정적분석 결론

트로이목마, 애드웨어, 다운로더 유형의 파일 및 네트워크 상에서 활동을 하는 악성 실행파일로 추정된다.

특히나 ”a-ton.co.kr”, “nskSetup.exe” 등의 정보를 기억하고 동적분석으로 넘어갈 수 있다.

 

 


 

 

동적분석 - Process Explorer

 

 

실시간으로 프로세스가 어떻게 변하는지 확인하기 위해 보다 간편한 Process Explorer 실행해 놓고, 
bton02setup.exe 파일을 실행할 때 어떠한 일이 발생하는지 확인한다.

가상환경 상에서 특별한 일은 발생하지 않았으나, 잠시 Process Explorer에서 프로세스가 캡처되었다.

 

사실 해당 툴은 조금 사용하기 까다롭다.

악성코드는 바로 실행되는 경우들도 있지만 불친절하게도

일정 시간이 지나거나 재부팅을 해야지만 프로세스가 생성되는 경우도 있다.

 

그러다 보니 실제로 모니터링하면서 프로세스 분석하기가 쉽지 않다.

 

하지만 이러한 문제는 한 가지의 툴을 사용하더라도 스냅샷 기능을 여러 번 똑같이 반복해서

정말로 악성 행위가 없는 게 맞는 건지, 있다면 그 행위가 맞는 건지 최대한 많이 해보는 것이 필요하다.

 

일단 필자의 경우는 스냅샷을 5번 이상 반복해 보았지만, 악성행위가 일어나지 않았다.

 

 

위와 같이 잠시동안 bton02setup.exe 프로세스가 생성되며, 호환성 관리자 탭이 나타남과 동시에

bton02setup.exe 파일은 사라지고, 프로세스도 확인할 수 없었다.

 

여기서 악성코드의 트로이목마 성격을 확인할 수 있었다.

 

 

 

동적분석 - Process Moniter

 

 

보다 상세한 분석을 위해 프로세스에 대한 로그가 남는 Process Moniter 툴을 실행하였다.

 

bton02setup.exe 필터링 후, 해당 결과 확인해 보니 Result가 SUCCESS 외에

DISALLOWED, NAME NOT FOUND 등 부정적으로 발생한 프로세스가 확인된다.

 

이는 해당 파일이 원래 의도하였던 작동 과정이 원활하게 이루어지지 않는 것으로 보이므로,

조금 더 자세하게 확인할 필요가 있어 보인다.

 

 

자세히 살펴보던 중, 정적분석 중에 발견한 “nskSetup.exe” 확인할 수 있었다.

 

위의 프로세스를 해석해 보면 C:\WINDOWS\ 경로로 시작하여 “nskSetup.exe” 파일을 실행하려 했으나,

결국 찾지 못하고(NAME NOT FOUND) 불허가(FAST IO DISALLOWED) 결과가 발생함을 알 수 있다.

 

즉, 파일 상에서 악성 행위를 시도하려 했으나, ”nskSetup.exe” 파일의 부재로 시도 실패한 것이다.

 

보통은 연결된 url을 통해서 파일을 가져오는 경우가 있기에,

이러한 네트워크 관련 과정을 수행하지 못한 것으로 추정도 가능하다.

 

 

필자는 필터링 기능을 더 활용하여 “bton02setup.exe, nskSetup.exe"

두 실행파일을 제외한 이외의 실행파일에 관련된 프로세스는 없는지 확인해 보았다.


결과는 cmd를 실행시키려고 시도한 프로세스를 확인하였다.

 

 

cmd를 필터링에 추가하여 bton02setup.exe 파일과 동시에 프로세스 분석을 해보았다.
좌측 "Time of Day" 탭의 정보를 봤을 때, 동시간대에 활동이 발생했음을 알 수 있다.

“Operation” 탭의 정보를 확인해 보면,

Bintext에서 확인했던 파일과 관련된 작업이나 키를 생성하는 등의 함수를 다시 확인할 수 있다.

 

그 외에 시스템 제어 관련 함수(DeviceIoControl),

추가적인 프로세스 프로파일링 함수(Process profiling) 또한 확인을 하였다.

즉, 해당 악성파일은 cmd 실행을 통해서도 파일과 네트워크 관련 작업과 더불어

시스템 제어 작업 또한 수행한다는 정보를 알 수 있었다.

 

 

 

동적분석 - Autoruns

 

 

bton02setup.exe 파일을 실행하기 전과 후의 레지스트리 쪽의 변화를 확인해 보기 위해,

각각 스냅샷을 저장하고 비교해 본 결과, 차이점이 없음을 확인하였다.

 

즉, 레지스트리 관련 함수와 명령어들이 존재하였지만 레지스트리 쪽의 변화가 없는 것으로 보아

현재는 정상적인 활동을 못하고 있는 것으로 추정이 가능하다.

 

 

 

동적분석 - SmartSniff

 

 

지금까지 “a-ton.co.kr”에 대한 자세한 분석 결과는 나오지 않았기 때문에,

외부와 통신을 시도하는 것을 캐치하기 위해 SmartSniff를 통해 간단히 분석하였다.

파일을 실행시키고, 모니터링한 결과 하나의 인덱스가 추가됨을 살펴볼 수 있었다.

 

여기서 UDP를 통하여 연결을 시도하려는 것 같았으나, Local Address와 Remote Address가

모두 필자의 공유기 IP 주소 및 게이트웨이 주소로 나타났다,

만약에 이 파일이 네트워크 활동을 정상적으로 하면 이 Local address가 필자의 IP로 나타나고,

Remote address가 악성 IP 주소로 나타나야 하는 것이 정상이다. 

 

즉, 외부와의 통신을 시도하는 것이었으면 악성 원격 IP 주소가 나왔을 것이기에

현재는 네트워크 활동을 하지 않는 것으로 나타난다.

 

 

 

동적분석 - Wireshark

 

 

좀 더 심층적인 분석을 위해 Wireshark를 통해 트래픽 검사를 하였다.

 

동일하게 IP 주소는 필자의 공유기 주소였으며, 
“Standard query response 0x0ab4 No such name A a-ton.co.kr SOA g.dns.kr”라는

DNS 서버로부터의 응답을 해석하면, DNS쿼리에 대해서 DNS 서버가 “a-ton.co.kr” 도메인을 찾을 수 없다는 것을 의미한다.

 

 


 

 

분석 결론

 

 

악성파일의 유형

Bintext 등을 확인해 봤을 때, 추가적인 실행 파일인 일이 들어가 있는 걸로 보아 

원본 파일에 의해서 파생되는 것으로 추정해 볼 수 있다.

 

또한 동적분석 과정 중 nskSetup.exe 파일을 어떻게 동작하기 위한 일련의 과정들도 있었다.

이러한 특징들을 종합해 보면 다운로더의 일반적인 특징을 가지고 있다고 추정할 수 있다.

 

만약 네트워크 쪽에서 동작이 이루어졌다고 하면, 위의 과정들이 Wireshark 내에 담겨있었을 것이다.

 

추가로 모든 악성 코드들은 정상인 파일인 것처럼 위장을 한 상태에서

실행을 유도하기 때문에, 트로이목마의 성격을 가지고 있다.

 

분석 과정 중 원본 파일이 삭제가 되었던 것도 트로이목마 성격이다.

 

애드웨어 관련 추정해 볼 수 있는 내용은 존재하지 않았지만 총정리를 해보면,

결론적으로 다운로더와 트로이목마에 해당하는 유형을 포함한 악성파일로 추정된다고 결론 내릴 수 있다.

 

 

악성파일의 특징 및 행위

악성파일은 여러 가지 방법으로 작동을 하지만 해당 파일은 본래에

”a-ton.co.kr” 도메인으로 접근하여 “nskSetup.exe” 실행 파일을 불러온 후에

 

디렉터리와 관련된 리소스에 접근하여 파일 삭제 및 변경,

시스템 제어와 같은 작업을 수행하는 악성파일이었을 것으로 추정된다.

하지만 현재는 ”a-ton.co.kr” 도메인이 존재하지 않으므로, 네트워크 행위를 할 수 없는 것이며

그에 따라 파일도 원래 의도하였던 행위를 정상적으로 수행하지 못하는 것으로 보인다.

 

 

대응방안

네트워크에서의 트로이목마나 다운로더의 전파를 방지하기 위해

네트워크 보안 솔루션을 도입하여, 악성 트래픽을 탐지하고 차단하여 감염을 막을 수 있을 것이다.

 

또한 백신을 활용하여, 실시간으로 악성파일을 탐지하고

정기적인 소프트웨어 업데이트 및 사용자가 이메일과 악성 URL부터로 전파되는 것을 예방해야 한다.

 

혹여나 악성 실행파일이 PC에 침투를 하고 있었다면, 위와 같은 실행파일을

무심코 실행하지 않도록 최소한의 권한 부여가 필요할 것이다.

 

 


 

 

다음 글에서는 다른 악성 파일을 분석할 예정이다.