DNS TXT 레코드를 활용한 악성코드 실행방법

AhnLab Security Emergency response Center(ASEC)에서는 악성코드를 실행하는 과정에서 DNS TXT 레코드를 활용하는 정황을 확인하였다.

이러한 방식은 존에 악성코드 실행방법으로 널리 활용되지 않았기 때문에 분석/탐지를 비롯한 여러 관점에서 유의미하다고 보여진다.

DNS TXT 레코드는 도메인 관리자가 DNS에 텍스트를 입력할 수 있는 기능이다. 원래는 사람이 읽을 수 있는 메모를 기입하기 위한 목적이었으나, 현재 DNS TXT 레코드는 스팸메일 수신방지 & 도메인 소유권 확인 목적을 비롯하여 DNS에 저장된 다양한 유형의 정보를 나타내기 위해 사용되고 있다.

대표적인 두 가지 사용 목적 1) 스팸메일 수신방지 2) 도메인 소유권 확인 에 대해 간략하게 설명하면 다음과 같다.
스팸 메일을 발송하는 공격자는 종종 이메일을 발송하는 도메인을 위조(스푸핑)하려고 하는데, 이 때 메일을 수신하는 서버는 이메일이 신뢰할 수 있는 주소에서 온 것인지 확인하는 과정을 수행한다. 이 때 사용되는 핵심적인 요소가 DNS TXT 레코드이다.
두번째로, 도메인 관리자는 특정 정보가 포함된 TXT 레코드를 업로드하거나, 현재의 TXT 레코드를 수정함으로써 해당 도메인을 소유하고 있음을 증명할 수 있다.

하지만 본문에서 소개하는 악성코드가 DNS TXT 레코드를 활용한 방식은, 위에 기재한 것과 같이 오늘날 일반적으로 DNS TXT 레코드가 활용되는 방향과는 조금 거리가 있다. 오히려, 본래의 사용 의도였던 DNS 관련정보를 기입하기 위한 것이 더 가깝다고 볼 수 있다.

그림 1) 악성 PPAM 파일이 첨부된 피싱 이메일

공격자는 피싱 이메일에 주문 문의(Order Inquiry)를 가장한 PPAM 파일을 첨부하였다. PPAM 파일은 사용자 정의 매크로 및 VBA코드 등 특수기능을 저장한 파워포인트에서 실행가능한 파일이다. 파워포인트의 매크로가 실행되면 아래의 프로세스 트리와 같이 파워쉘을 통해 nslookup 관리도구가 실행되는 것을 확인할 수 있다.

그림 2) 자사 악성코드 자동분석 인프라 RAPIT에서의 프로세스트리

 

그림 3) PPAM 파일의 매크로코드

PPAM 파일 내부에 존재하는 매크로코드는 그림 3) 과 같이 매우 간단하다. 매크로가 실행되면 PowerShell을 통해 nslookup 도구를 실행 후 DNS TXT 레코드를 쿼리하는 짧은 내용으로 구성되어있다. 매크로코드가 난독화 된 것도 아니며 코드의 내용도 매우 간단하지만, 여기서 주목할만한 점은 DNS TXT 레코드에 공격자가 원하는 다음 프로세스에서의 실행 커맨드를 입력해 둔 것이다.

이를 통해 공격자는 안티바이러스 제품의 탐지를 우회하기 위해 자식 프로세스에 대한 다양한 시도를 해보는 것으로 판단된다.

일반적으로 DNS TXT 레코드의 쿼리결과는 아래와 같다.
아래의 그림 4)는 자사 도메인의 DNS TXT 레코드 결과를 나타낸 것인데, google-site-verification 토큰을 비롯하여 SPF 레코드 설정이 되어있는 것을 알 수 있다. 

그림 4) 정상적인 DNS TXT 레코드 쿼리결과

하지만 공격자 서버(abena-dk[.]cam)의 DNS TXT레코드를 확인해보면, 아래의 그림 5)와 같이 DNS TXT 레코드의 일반적인 사용 목적과는 거리가 먼 데이터가 출력 되는 것을 알 수 있다. 공격자는 다양한 서브도메인을 생성하여 계산기(calc.exe)를 실행시킨다거나, js 파일이 아닌 vbs 파일도 활용하여 수차례의 테스트를 수행해 본 것으로 판단된다.

그림 5) 공격자 웹서버의 다양한 서브도메인에 대한 nslookup 확인결과

공격자는 DNS TXT 레코드에 파워쉘 커맨드를 비롯한 다양한 커맨드를 업로드 해두었으며, nslookup을 통해 DNS TXT 레코드 쿼리 시 해당 커맨드가 실행되도록 하는 것이다. 단순히 매크로 코드에 파워쉘 커맨드를 작성한 것이 아니라, 지금까지는 확인되지 않던 새로운 방식으로 nslookup 도구를 악성코드 실행에 활용한 점이 특징이라고 할 수 있다.

이어서, 파워쉘 커맨드의 URL에 존재하는 methewPayload.js 파일을 meth.js 로 저장 후 wscript.exe 를 통해 실행하는데, meth.js 파일은 파워쉘을 통해 또 다른 외부URL에서 Base64 인코딩 된 바이너리를 받아온다.

그림 6) 외부 URL에 저장된 Encoded PE

외부 URL에서 확보할 수 있는 Base64 인코딩 데이터는 DLL 바이너리인데, 알려지지 않은 새로운 종류의 악성파일이 로드되는 것은 아니며 2021년 후반부터 유포되는 Hagga(Aggah)라는 공격그룹에 의해 제작된 유형의 악성코드이다. 최초 유포 시도는 악성 매크로가 삽입된 문서 파일에서 시작하는 점, 알려진 닷넷 기반의 코드에서 확인되는 특징적인 함수/변수들의 이름과 StrReverse 함수를 활용하는 점, 외부에서 추가 악성파일을 다운로드 한 뒤 메모리에서 실행하는 전체적인 TTP를 토대로 Threat Actor를 추정하였다. 추가로 다운로드 되는 악성파일은 AgentTesla 와 같은 닷넷 기반의 인포스틸러 악성코드 유형인 것으로 확인된다.

V3에서는 본문에서 소개한 악성코드에 대해 아래와 같이 진단하고 있다.

[파일 진단]
Downloader/PPT.MalQuery (2023.06.16.00)
Downloader/JS.Runner (2023.06.16.00)
Trojan/Win.Generic.R526355 (2022.10.12.00)
Trojan/Win.Injector.C4641320 (2021.09.22.01)

[행위 진단]
Execution/MDP.Powershell.M2514

[IOC]
f6b8a4c6ed15a1a17896797ce3fe2440
4a647e9baffe95acb9e2ec989b23808b
2a59f2a51b96d9364e10182a063d9bec
hxxp://abena-dk[.]cam
hxxp://calc.abena-dk[.]cam
hxxp://blessed.abena-dk[.]cam
hxxp://methew.abena-dk[.]cam
hxxps://bitbucket[.]org/mounmeinlylo/rikirollin/downloads/methewPayload.js
hxxps://bitbucket[.]org/mounmeinlylo/rikirollin/downloads/blessed_Payload.js
hxxps://bitbucket[.]org/mounmeinlylo/rikirollin/downloads/test_Payload.vbs
hxxps://firebasestorage.googleapis[.]com/v0/b/fir-8c14f.appspot.com/o/rumpe_js.txt?alt=media&token=0ebb3747-9f9d-427c-a6fd-d0c057ba176e

연관 IOC 및 관련 상세 분석 정보는 안랩의 차세대 위협 인텔리전스 플랫폼 ‘AhnLab TIP’ 구독 서비스를 통해 확인 가능하다.

Categories:악성코드 정보

5 2 votes
별점 주기
Subscribe
Notify of
guest

0 댓글
Inline Feedbacks
View all comments