악성코드 분석 2025-12-24
DragonBreath는
비교적 최근 관측된 지능형 지속 위협(APT)
성향의
공격 그룹이다.
주로
텔레그램
메신저 앱의 설치파일을 감염시키는 방법으로 공격을 진행하고, 최근에는 이중 dll
사이드로딩
기법을 활용한 공격으로 주목을 받은 바 있다.
단발성
공격보다는 장기적인 침투와 지속적인 접근 권한 확보를 목표로 하며, 탐지와 분석을 회피하기 위한 다양한 기법을 공격 전반에 걸쳐
적용한다.
주로
공공/온라인 게임/도박
산업을 집중적으로 공격했다.
이번
캠페인에서 새롭게 발견된 RoningLoader는
DragonBreath의
dll
사이드로딩
기법이 명확하게 관찰된다.
DragonBreath는
정상 실행 파일과 악성 dll을
함께 배포하는 방식을 통해 사용자의 실행을 유도하고, dll을 로드하는 정상 행위를 악용하여 악성코드를 실행한다.
또한
보안 제품을 무력화하기 위한 다양한 회피기법을
사용한다.
이러한
진화는 DrangonBreath가
단순 기존 공격을 반복적으로 사용하는 수준에 머무르지 않고, 탐지 기술의 발전에 맞추어 새로운 공격 기법을 개발/적용하고 있음을 보여준다.
본 보고서에서는 RoningLoader가
최종 악성코드를 설치하고 실행하는 과정을 중점적으로 분석한다.
RoningLoader는 다음과 같은 흐름으로 최종 악성코드를 설치한다.
악성코드는 msi 설치파일로부터 시작된다. 해당 파일에는 letsvpnlatest.exe, Snieoatwtregoable.exe라는 2개의 파일이 들어있다. letsvpnlatest.exe 파일은 정상파일이며 Snieoatwtregoable.exe는 악성행위를 수행하는 악성파일이다.

해당 파일을 실행할 경우 “C:\Program Files\” 경로 아래에 Snieoatwtregoable 라는 폴더를 생성한다. 그 다음 6개의 jpg 파일과, Snieoatwtregoable.dll, tp.png 파일을 생성한다.


파일 생성이 완료되면 Snieoatwtregoable.dll 파일을 regsvr32.exe에 삽입하여 실행한다.

Snieoatwtregoable.dll 파일은 특정 포트(5555)의 localhost에 연결을 시도한다. 어떠한 의미도 없는 행위로 사용되지 않는 코드이거나 악성코드 개발 전 단계에 남은 코드, 향후 기능 확장이나 추가 공격을 위한 사전 구현 단계일 가능성이 있다.

C:\ProgramFiles\Snieoatwtregoable 폴더 아래에 있는 tp.png 파일을 로드하여 ROR, XOR 연산을 포함한 간단한 연상을 이용해 데이터를 복호화한다. 자신의 프로세스 내부에 새로운 메모리 영역을 할당한 뒤 해당 복호화된 데이터를 실행하는 새로운 스레드를 생성한다.


먼저 자신이 관리자 권한으로 실행 중인지 여부를 확인한다. 만약 관리자 권한이 아닐 경우 runas 명령을 이용해 관리자 권한으로 자신의 새로운 인스턴스를 실행하여 권한 상승을 시도한다.

하드코딩된 http://www.baidu.com/과 통신을 시도하도록 구현되어 있다. 코드 상으로는 HTTP 응답 헤더 중 Date 값을 추출해 기록하도록 되어 있으나 확인 시 추가적인 요청이 발생하지 않아 해당 기능은 정상적으로 동작하지 않는 것으로 확인된다. 마찬가지로 기능이 제거되었거나 향후 버전을 위한 코드일 가능성이 있다.

CreateToolhelp32Snapshot을 이용해 현재 실행중인 프로세스 목록을 확보하여 특정 백신 프로그램을 찾는다. 프로그램이 실행 중일 경우 pid를 이용해 종료한다.

프로세스 종료를 거친 후 총 4개의 폴더를 생성한다. ProgramData 경로 아래에는 실행시간을 기반으로 한 랜덤한 숫자를 이용해 폴더를 생성한다.

폴더를 생성한 후 각 폴더에 파일을 생성한다. .txt 파일은 특정 형식으로 설계된 컨테이너 파일로 다른 코드 베이스에서 차용된 것으로 추정된다. hjk.txt 파일에는 1.bat, fhq.bat 파일이, agg.txt에는 enpug.bin, goldendays.dll, trustinstaller.bin 파일이, kill.txt.에는 1.dll 파일이 포함되어 있다.

생성된 1.bat 파일은 EnableLUA 값을 0으로 설정함으로써 사용자 계정 컨트롤(UAC)을 비활성화 하는 단순한 배치 스크립트이다.

fhq.bat 파일은 C:\ProgramData\lnk\123.txt에 정의된 프로그램과 치후 360 보안 소프트웨어를 대상으로 인바운드 및 아웃바운드 통신을 차단하는 방화벽 규칙을 생성하는 스크립트이다. 모든 방화벽 프로파일에 대해 방화벽 알림을 비활성화 한다.

1.dll의 경우 C:\Windows\System32\경로에 Wow64Log.dll로 복사된다. 미리 정의된 프로세스 목록을 종료하는 기능을 가지고 있다.


또한 Windows Defender Application Control(WDAC)을 직접적으로 무력화하기 위해 정책파일을 아래 경로에 작성한다. 활성 WDAC 정책을 조작해 무결성 검사를 우회하려는 시도로 추정된다.

현재 실행중인 프로세스 목록을 다시 확인해 텔레그램이 실행 중일 경우 해당 텔레그램의 언어를 중국어로 변경한다.


MicrosoftSoftware2ShadowCop4yProvider 라는 이름으로 서비스를 생성한 후 실행시켜 기존에 생성한 goldendays.dll 파일을 실행시킨다.

goldendays.dll은 실행중인 프로세스 목록을 확인해 elevation_service.exe의 실행여부를 확인한다. 만약에 해당 프로세스가 실행되고 있지 않다면 MicrosoftEdgeElevationService 서비스를 시작해 elevation_service.exe 서비스를 실행시킨다.


그런 다음 elecation_service.exe 파일을 모니터링하는 배치파일을 생성한다. elecation_service.exe의 PID를 확인해 해당 프로세스의 실행여부를 확인한다. 프로세스가 종료됐다고 판단되면 MicrosoftEdgeElevationService를 재실행한다. 배치파일은 C:\Windows\ 폴더 아래에 {영문랜덤10} 파일명으로 생성된다.


해당 배치파일을 CreateProcess를 이용해 실행한다.


마지막으로 기존에 생성한 trustinstaller.bin 파일의 내용을 읽은 뒤 elevation_service.exe에 인젝션한다. 인젝션은 VirtualAllocEx, WriteProcessMemory, CreateRemoteThread를 이용해 진행된다.

마찬가지로 trustinstaller.bin도 최종 악성 페이로드를 정상 프로세스에 인젝션하는 역할을 수행한다. 미리 정의된 프로세스 목록 중 특정 대상이 확인되면, 기존에 생성된 Enpug.bin을 해당 프로세스에 삽입함으로써 최종 악성코드의 설치 과정이 완료된다.

본
보고서는 DragonBreath
공격
그룹이 사용하는 새로운 로더인
RoningLoader의
동작 방식과 다단계 공격 구조를 중심으로,
최종
악성코드가 설치되는 과정을 분석하였다.
RoningLoader는
초기 침투 단계에서 Dll
사이드로딩을
통해 은밀하게 실행되며,
여러
단계에 걸쳐 페이로드를 순차적으로 로드하는
구조를 갖는다.
이러한
방식은 분석을 회피하기 위한 의도로 추정된다.
RoningLoader는
DragonBreath
공격
그룹의 기술적 성숙도와 지속적인 진화 양상을 잘 드러내는 사례로, 향후 유사한 변형 로더나
새로운 공격 기법이 등장할 가능성이 높다.
이에
따라 기업에서는 사이드 로딩 기법,
보안
기능 무력화 시도 등을 포괄적으로 고려하여 지속적인 모니터링 체계를 강화할 필요가 있다.