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

정상 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을 삭제하여 흔적을 지우는 모습까지 보인다.

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

정상 EXEe634616d3b445fc1cd55ee79cf5326ea (vlc.exe)
악성 DLL58ea42289ae52e82ffcfa20071c32d7a (libvlccore.dll)
최종 악성코드LummaC2 Stealer
C2hxxp://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 파일이지만 파일 중간 부분부터는 암호화된 악성 데이터로 채워져 있다.

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

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

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

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

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

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

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

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

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

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

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

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

그림11. LummaC2 C2응답 데이터

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

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

그림12. VirusTotal 정보

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

[IOC 정보]

PSPad.exeJan Fiala4ec1a433d0c1e6b58da254b506e3444flibeay32.dlla3a0395dc0f15e2e92a55dcb7c3a7735
WizTree.exeAntibody Software Limitedcce7eaa082751bdd6780707a9444964dwinmm.dllc474b9effe72f11e73bfd8e2d5235108
WizTree64.exeAntibody Software Limited50a40274ffe963e1f214f9f19746e29ewinmm.dll4474e26725db0e84d8418b25137d275b
InstallShield SetupSuite.exeFlexera Software LLC696e066c4f3d52d5766e724afbdb3594xmllite.dll483ad6a57ea6cae5696841f07f1177f0
TSConfig.exeFlexera Software LLC48c9a0c76b44a5f2729c876085adba4eFNP_Act_Installer.dll89618931cf9487370542ca40509795a4
VBoxSVC.exeOracle Corporationc8a2de7077f97d4bce1a44317b49ef41VBoxRT.dlla860b368e9e2aa5cb4e7cb73607d18b1
SenseCE.exe8f0717916432e1e4f3313c8ebde55210MpGear.dllf362e88dd656c5512dbee66efffae107
palemoon.exeMark Straver64e3c6d6a396836e3c57b81e4c7c8f3bmozglue.dll200499eacae55905e27d0b96314cb0c7
topoedit.exeMicrosoft Corporation88691dbfa349db78f96e3278d1afc943tedutil.dll8096e5aacfe4dc4ea1afe03ca254982a
vlc.exeVideoLANe634616d3b445fc1cd55ee79cf5326ealibvlccore.dll61762b4a21b0b7b479d2eac80b630c2e
Mergecap.exeWireshark Foundation23ba27d352305f29d201ac5e43fc4583libglib-2.0-0.dll4b8ac7aab387e01cfa2c53cad3ef69b1
AcroBroker.exeAdobe Systems, Incorporateda13bfe522abc659704965388ad4581eesqlite.dlle74fb90de19d7cc0b01155f29e6c306f
VBoxTestOGL.exeOracle Corporationba99b11a84a19051eca441320af22f4eQtCoreVBox4.dll4f688e1c75cbee5949af010cbc5d4057
vlc.exeVideoLANe634616d3b445fc1cd55ee79cf5326ealibvlccore.dll58ea42289ae52e82ffcfa20071c32d7a
TPAutoConnect.exeCortado AG1377ef7319507a10d135d5128ac9fbc8TPSvc.dll12e5c5c08049ecaa5e15d51bbe58fd41
표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

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

5 3 votes
별점 주기
Subscribe
Notify of
guest

0 댓글
Inline Feedbacks
View all comments