오브의 빛나는 별

[오늘의 보안] DLL Hijacking 본문

오늘의 보안

[오늘의 보안] DLL Hijacking

오브의 별 2023. 10. 30. 20:43
반응형

<3줄 요약>

- 정상 EXE 파일과 악성 DLL을 같은 디렉토리에 압축하여 정상 EXE 파일 실행을 유도하는 정보탈취 악성코드가 활발히 유포 중으로 사용자들의 주의 필요
- 암호화된 RAR 압축 파일이 다운로드되며 패스워드는 파일명 혹은 유포 페이지에 명시되어 있음
- 데이터 파일, 정상 EXE, 변조된 악성 DLL이 한 디렉토리 내에 위치해야 악성코드가 동작하고, 데이터 파일은 PNG 이미지 파일로 위장

 

DLL Hijacking: 공격자가 공격에 사용될 DLL 파일 내부에 악성코드를 삽입한 이후 DLL 파일을 검색하고 로드하는 방식을 악용하여 애플리케이션에 악성코드를 주입하는 방식

RAR: TUI 셸 프로그램을 제공해 메뉴를 통해서 파일을 압축하거나 압축을 풀 수 있는 무손실 압축 포맷

EntryPoint: 운영 체제에서 컴퓨터 프로그램으로 이동하는 것을 말하며, 프로세서는 프로그램이나 코드에 진입해서 실행을 시작

LummaC2 악성코드: 정보 탈취형 악성코드로 C2의 응답에 따라 탈취 대상을 지정하고 추가 악성코드 설치가 가능한 악성코드

 

 

 

https://asec.ahnlab.com/ko/58088/

 

정상 EXE 파일 실행 시 감염되는 정보탈취 악성코드 주의 (DLL Hijacking) - ASEC BLOG

정상 EXE 파일 실행을 유도하는 정보탈취 악성코드가 활발히 유포 중으로 주의가 필요하다. 공격자는 유효한 서명을 포함한 정상 EXE 파일과 악성 DLL을 같은 디렉토리에 압축하여 유포하고 있다.

asec.ahnlab.com

정상 EXE 파일 실행을 유도하는 정보탈취 악성코드가 활발히 유포 중으로 주의가 필요하다.

공격자는 유효한 서명을 포함한 정상 EXE 파일과 악성 DLL을 같은 디렉토리에 압축하여 유포하고 있다. EXE 파일은 자체로는 정상 파일이지만, 악성 DLL과 동일한 디렉토리에서 실행될 경우 악성 DLL을 자동으로 실행한다. 이러한 기법을 DLL 하이재킹(DLL Hijacking)이라 하며 악성코드 유포에 종종 사용되는 방식이다.

상용 소프트웨어의 크랙, 키젠 등으로 위장한 악성코드 유포 또한 DLL 하이재킹 방식의 샘플 비중을 점차 늘려가고 있다. 본격적인 유포는 지난 5월경 관측되기 시작하였으며, 다시 8월부터 최근까지 활발하게 유포 중이다.

검색엔진에 각종 상용 프로그램 크랙을 검색할 경우 악성 사이트가 상위 노출되며, 사이트에서 Download 버튼을 클릭하면 여러 리디렉션을 거쳐 최종 유포지에 도달한다. 다운로드되는 파일은 암호화된 RAR 압축 파일이며, 패스워드는 파일명 혹은 유포 페이지에 명시되어 있다. 해당 파일을 압축 해제 후 내부 정상 EXE 파일을 실행할 경우 악성코드에 감염된다. EXE 파일은 대부분 setup.exe, Installer.exe 이름으로 되어있으며 대부분 유명 소프트웨어의 실행파일이므로 유효한 서명을 가지고 있다.

그림1. 악성코드 유포 페이지

악성 DLL 파일은 원본 정상 DLL 파일의 일부분을 변조하여 제작되었다. 변조된 코드는 동일 디렉토리 내 특정 데이터 파일을 읽어 복호화 후 실행하는 행위를 한다. 악성코드 데이터 전체를 DLL 파일에 담을 경우 파일 외형이 심하게 변형되므로 탐지가 쉬워진다. 때문에 원본 DLL 파일에서 최소한의 수정만으로 악성 행위를 구현하기 위해 이러한 방식을 사용한 것으로 추정된다.

그림2. 원본 DLL과 악성 DLL 유사도 비교

결과적으로 데이터 파일, 정상 EXE, 변조된 악성 DLL이 한 디렉토리 내에 위치해야 악성코드가 동작한다. 데이터 파일은 PNG 이미지 파일로 위장하고 있다. 악성 DLL의 변조 영역은 EntryPoint 실행 흐름 상 반드시 실행되는 특정 함수의 끝부분 부분과, 일부 코드영역 및 데이터 영역 일부이다. 코드 패턴 탐지를 피하기 위해 모든 코드는 암호화되어있고, 메모리상에서 복호화 하여 실행한다. 실행 후에는 악성 DLL을 삭제하여 흔적을 지우는 모습까지 보인다.

최근 유포된 아래 샘플을 예시로 악성코드 실행 과정을 설명한다.

정상 EXE e634616d3b445fc1cd55ee79cf5326ea (vlc.exe)
악성 DLL 58ea42289ae52e82ffcfa20071c32d7a (libvlccore.dll)
최종 악성코드 LummaC2 Stealer
C2 hxxp://hokagef[.]fun/api

표1 예시 샘플 정보

유포 사이트에서 다운로드한 암호 압축 파일을 파일명에 명시된 패스워드(“2023”)로 압축 해제 시 다음과 같은 파일들이 생성된다.

그림3. 압축파일 내부 파일

“Setup.exe”과 “libvlc.dll” 파일은 유명 소프트웨어인 “VLC Media Player”의 구성 요소로 유효한 서명을 가진 정상 파일이며, “libvlccore.dll” 파일이 조작된 악성 DLL 파일이다. 파일 일부가 조작되어 있기 때문에 서명이 일치하지 않는다. demux, lua 등의 디렉토리는 정상으로 위장하기 위해 넣은 데이터로 실제 악성코드 실행과는 무관하다.

그림4. 정상 EXE 속성
그림5. 악성 DLL 속성

“Setup.exe” 파일을 실행하면 악성 DLL인 “libvlccore.dll”이 자동으로 실행된다. 악성 DLL은 DLL EntryPoint의 실행 흐름에있는 특정 함수 뒷부분이 변조되어 있다. 따라서 DLL 로드 시 DLL EntryPoint가 실행되며 결과적으로 공격자가 변경한 코드가 실행된다.

그림6. 좌: 원본DLL 우:코드가 변조된 악성 DLL

해당 코드의 기능은 동일 디렉토리의 “ironwork.tiff” 파일을 찾아 읽어온 뒤 해당 파일을 읽고 복호화 후 실행한다. 이 파일은 이후 실행할 코드 정보가 담긴 데이터 파일이며 파일 헤더는 PNG 파일이지만 파일 중간 부분부터는 암호화된 악성 데이터로 채워져 있다.

그림6. “ironwork.tiff” 데이터 파일 구조

시스템 디렉토리(SysWow64)의 “pla.dll”을 로드한 후 해당 DLL 메모리의 코드영역에 복호화한 코드를 주입한 뒤 해당 위치로 분기한다. 대부분의 악성코드가 가상 메모리를 할당하여 코드를 쓰는 방식과 대조된다.

이후 과정에서 사용되는 API는 NTDLL 재배치 기법을 사용한다. cmd.exe를 실행한 후 코드를 인젝션하여 실행하는데, 이때에도 일반적인 코드 주입 방식이 아닌, 목표 프로세스에 “pla.dll”을 로드(DLL 인젝션)시킨 후 해당 DLL의 코드영역에 악성코드를 주입하는 방식을 사용한다.

그림7. cmd.exe에 로드된 pla.dll의 변조된 코드 영역

이때 %TEMP% 경로에 악성 행위에 필요한 데이터 파일을 작성하며, 해당 파일 경로는 특정 환경 변수로 등록되어 자식 프로세스인 cmd.exe로 상속된다.

그림8. 데이터 파일 경로와 환경 변수

cmd.exe는 EntryPoint가 “pla.dll”의 코드 영역으로 변조되며, 해당 코드는 환경변수에 등록된 경로의 파일을 읽어 복호화 하여 LummaC2 악성코드 바이너리를 생성한 후 explorer.exe를 실행한 뒤 해당 바이너리를 인젝션하여 실행한다.

  • LummaC2 악성코드 바이너리: 1d1ef4a4155edb56e8f3c8587fde8df0

따라서 전체적인 프로세스 트리 구조는 다음과 같다.

그림9. 악성코드 실행 프로세스 트리

LummaC2는 정보 탈취형 악성코드로 C2의 응답에 따라 탈취 대상을 지정하고 추가 악성코드 설치가 가능한 악성코드이다. 암호화폐 지갑, 브라우저 저장 정보, Steam 등의 어플리케이션 정보, 이메일 클라이언트 정보, 특정 폴더 및 확장자의 파일 등 다양한 민감 데이터를 탈취 가능하다.

C2의 응답은 XOR 키와 데이터로 구성되어 있으며 해당 응답을 복호화할 경우 다음과 같은 JSON 형식의 데이터이다. C2의 응답은 주기적으로 달라지며 이에 따라 상세 행위도 달라진다.

그림10. LummaC2 C2응답 데이터

이러한 방식의 유포는 유명 소프트웨어의 정상 EXE 실행으로 감염되며, 악성 DLL은 원본 DLL 파일과 외형이 매우 유사하기 때문에 단순 EXE로 유포되는 악성코드와는 다르게 발생 초기 AV 벤더의 진단률이 매우 저조한 편이므로 주의가 필요하다.

한편 ASEC에서는 이러한 방식의 유포 악성코드에 대한 자동 수집 시스템을 통해 모니터링 중이며 변형 발생에 빠르게 대응하고 있다.

그림11. VirusTotal 정보

본문의 예시 샘플 이외에도 다양한 정상 파일과 DLL이 악용되었으며, 유포에 악용된 정상 EXE 파일과 악성 DLL 파일에 대한 정보는 다음과 같다.

[IOC 정보]

PSPad.exe Jan Fiala 4ec1a433d0c1e6b58da254b506e3444f libeay32.dll a3a0395dc0f15e2e92a55dcb7c3a7735
WizTree.exe Antibody Software Limited cce7eaa082751bdd6780707a9444964d winmm.dll c474b9effe72f11e73bfd8e2d5235108
WizTree64.exe Antibody Software Limited 50a40274ffe963e1f214f9f19746e29e winmm.dll 4474e26725db0e84d8418b25137d275b
InstallShield SetupSuite.exe Flexera Software LLC 696e066c4f3d52d5766e724afbdb3594 xmllite.dll 483ad6a57ea6cae5696841f07f1177f0
TSConfig.exe Flexera Software LLC 48c9a0c76b44a5f2729c876085adba4e FNP_Act_Installer.dll 89618931cf9487370542ca40509795a4
VBoxSVC.exe Oracle Corporation c8a2de7077f97d4bce1a44317b49ef41 VBoxRT.dll a860b368e9e2aa5cb4e7cb73607d18b1
SenseCE.exe 8f0717916432e1e4f3313c8ebde55210 MpGear.dll f362e88dd656c5512dbee66efffae107
palemoon.exe Mark Straver 64e3c6d6a396836e3c57b81e4c7c8f3b mozglue.dll 200499eacae55905e27d0b96314cb0c7
topoedit.exe Microsoft Corporation 88691dbfa349db78f96e3278d1afc943 tedutil.dll 8096e5aacfe4dc4ea1afe03ca254982a
vlc.exe VideoLAN e634616d3b445fc1cd55ee79cf5326ea libvlccore.dll 61762b4a21b0b7b479d2eac80b630c2e
Mergecap.exe Wireshark Foundation 23ba27d352305f29d201ac5e43fc4583 libglib-2.0-0.dll 4b8ac7aab387e01cfa2c53cad3ef69b1
AcroBroker.exe Adobe Systems, Incorporated a13bfe522abc659704965388ad4581ee sqlite.dll e74fb90de19d7cc0b01155f29e6c306f
VBoxTestOGL.exe Oracle Corporation ba99b11a84a19051eca441320af22f4e QtCoreVBox4.dll 4f688e1c75cbee5949af010cbc5d4057
vlc.exe VideoLAN e634616d3b445fc1cd55ee79cf5326ea libvlccore.dll 58ea42289ae52e82ffcfa20071c32d7a
TPAutoConnect.exe Cortado AG 1377ef7319507a10d135d5128ac9fbc8 TPSvc.dll 12e5c5c08049ecaa5e15d51bbe58fd41

표2 IOC 정보

C2

  • hxxp://go-vvv[.]com/hittest.php
  • hxxp://cloudsaled[.]xyz/
  • hxxp://cloudsaled[.]xyz/c2conf
  • hxxp://warnger[.]xyz/
  • hxxp://warnger[.]xyz/c2conf
  • hxxp://warnger[.]xyz/
  • hxxp://warnger[.]xyz/c2conf
  • hxxp://5.42.66[.]17/
  • hxxp://nursepridespan[.]fun/
  • hxxp://nursepridespan[.]fun/api
  • hxxp://paintpeasmou[.]fun/
  • hxxp://paintpeasmou[.]fun/api
  • hxxp://spreadbytile[.]fun/
  • hxxp://spreadbytile[.]fun/api
  • hxxp://willywilk[.]fun/api
  • hxxp://tfestv[.]fun/api
  • hxxp://hokagef[.]fun/api
  • hxxp://gonberusha[.]fun/api
반응형