일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 보안
- C
- ctf
- 오늘의 보안동향
- Code Up
- 리버싱
- SQLD
- codeup
- sql
- 다운로드
- Volatility
- 멀웨어
- C language
- 오늘의 영어
- Memory Forensics
- 오늘의 보안
- 정보보안기사
- Defcon DFIR CTF 2019
- c언어
- 악성코드
- 리버싱 핵심원리
- cmd
- 보안동향
- 설치
- DEFCON
- C 프로그래밍
- 코딩
- 랜섬웨어
- defcon.mem
- 코드업
- Today
- Total
오브의 빛나는 별
[오늘의 보안] DLL Hijacking 본문
<3줄 요약>
- 정상 EXE 파일과 악성 DLL을 같은 디렉토리에 압축하여 정상 EXE 파일 실행을 유도하는 정보탈취 악성코드가 활발히 유포 중으로 사용자들의 주의 필요
- 암호화된 RAR 압축 파일이 다운로드되며 패스워드는 파일명 혹은 유포 페이지에 명시되어 있음
- 데이터 파일, 정상 EXE, 변조된 악성 DLL이 한 디렉토리 내에 위치해야 악성코드가 동작하고, 데이터 파일은 PNG 이미지 파일로 위장
DLL Hijacking: 공격자가 공격에 사용될 DLL 파일 내부에 악성코드를 삽입한 이후 DLL 파일을 검색하고 로드하는 방식을 악용하여 애플리케이션에 악성코드를 주입하는 방식
RAR: TUI 셸 프로그램을 제공해 메뉴를 통해서 파일을 압축하거나 압축을 풀 수 있는 무손실 압축 포맷
EntryPoint: 운영 체제에서 컴퓨터 프로그램으로 이동하는 것을 말하며, 프로세서는 프로그램이나 코드에 진입해서 실행을 시작
LummaC2 악성코드: 정보 탈취형 악성코드로 C2의 응답에 따라 탈취 대상을 지정하고 추가 악성코드 설치가 가능한 악성코드
https://asec.ahnlab.com/ko/58088/
정상 EXE 파일 실행을 유도하는 정보탈취 악성코드가 활발히 유포 중으로 주의가 필요하다.
공격자는 유효한 서명을 포함한 정상 EXE 파일과 악성 DLL을 같은 디렉토리에 압축하여 유포하고 있다. EXE 파일은 자체로는 정상 파일이지만, 악성 DLL과 동일한 디렉토리에서 실행될 경우 악성 DLL을 자동으로 실행한다. 이러한 기법을 DLL 하이재킹(DLL Hijacking)이라 하며 악성코드 유포에 종종 사용되는 방식이다.
상용 소프트웨어의 크랙, 키젠 등으로 위장한 악성코드 유포 또한 DLL 하이재킹 방식의 샘플 비중을 점차 늘려가고 있다. 본격적인 유포는 지난 5월경 관측되기 시작하였으며, 다시 8월부터 최근까지 활발하게 유포 중이다.
검색엔진에 각종 상용 프로그램 크랙을 검색할 경우 악성 사이트가 상위 노출되며, 사이트에서 Download 버튼을 클릭하면 여러 리디렉션을 거쳐 최종 유포지에 도달한다. 다운로드되는 파일은 암호화된 RAR 압축 파일이며, 패스워드는 파일명 혹은 유포 페이지에 명시되어 있다. 해당 파일을 압축 해제 후 내부 정상 EXE 파일을 실행할 경우 악성코드에 감염된다. EXE 파일은 대부분 setup.exe, Installer.exe 이름으로 되어있으며 대부분 유명 소프트웨어의 실행파일이므로 유효한 서명을 가지고 있다.
악성 DLL 파일은 원본 정상 DLL 파일의 일부분을 변조하여 제작되었다. 변조된 코드는 동일 디렉토리 내 특정 데이터 파일을 읽어 복호화 후 실행하는 행위를 한다. 악성코드 데이터 전체를 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”)로 압축 해제 시 다음과 같은 파일들이 생성된다.
“Setup.exe”과 “libvlc.dll” 파일은 유명 소프트웨어인 “VLC Media Player”의 구성 요소로 유효한 서명을 가진 정상 파일이며, “libvlccore.dll” 파일이 조작된 악성 DLL 파일이다. 파일 일부가 조작되어 있기 때문에 서명이 일치하지 않는다. demux, lua 등의 디렉토리는 정상으로 위장하기 위해 넣은 데이터로 실제 악성코드 실행과는 무관하다.
“Setup.exe” 파일을 실행하면 악성 DLL인 “libvlccore.dll”이 자동으로 실행된다. 악성 DLL은 DLL EntryPoint의 실행 흐름에있는 특정 함수 뒷부분이 변조되어 있다. 따라서 DLL 로드 시 DLL EntryPoint가 실행되며 결과적으로 공격자가 변경한 코드가 실행된다.
해당 코드의 기능은 동일 디렉토리의 “ironwork.tiff” 파일을 찾아 읽어온 뒤 해당 파일을 읽고 복호화 후 실행한다. 이 파일은 이후 실행할 코드 정보가 담긴 데이터 파일이며 파일 헤더는 PNG 파일이지만 파일 중간 부분부터는 암호화된 악성 데이터로 채워져 있다.
시스템 디렉토리(SysWow64)의 “pla.dll”을 로드한 후 해당 DLL 메모리의 코드영역에 복호화한 코드를 주입한 뒤 해당 위치로 분기한다. 대부분의 악성코드가 가상 메모리를 할당하여 코드를 쓰는 방식과 대조된다.
이후 과정에서 사용되는 API는 NTDLL 재배치 기법을 사용한다. cmd.exe를 실행한 후 코드를 인젝션하여 실행하는데, 이때에도 일반적인 코드 주입 방식이 아닌, 목표 프로세스에 “pla.dll”을 로드(DLL 인젝션)시킨 후 해당 DLL의 코드영역에 악성코드를 주입하는 방식을 사용한다.
이때 %TEMP% 경로에 악성 행위에 필요한 데이터 파일을 작성하며, 해당 파일 경로는 특정 환경 변수로 등록되어 자식 프로세스인 cmd.exe로 상속된다.
cmd.exe는 EntryPoint가 “pla.dll”의 코드 영역으로 변조되며, 해당 코드는 환경변수에 등록된 경로의 파일을 읽어 복호화 하여 LummaC2 악성코드 바이너리를 생성한 후 explorer.exe를 실행한 뒤 해당 바이너리를 인젝션하여 실행한다.
- LummaC2 악성코드 바이너리: 1d1ef4a4155edb56e8f3c8587fde8df0
따라서 전체적인 프로세스 트리 구조는 다음과 같다.
LummaC2는 정보 탈취형 악성코드로 C2의 응답에 따라 탈취 대상을 지정하고 추가 악성코드 설치가 가능한 악성코드이다. 암호화폐 지갑, 브라우저 저장 정보, Steam 등의 어플리케이션 정보, 이메일 클라이언트 정보, 특정 폴더 및 확장자의 파일 등 다양한 민감 데이터를 탈취 가능하다.
C2의 응답은 XOR 키와 데이터로 구성되어 있으며 해당 응답을 복호화할 경우 다음과 같은 JSON 형식의 데이터이다. C2의 응답은 주기적으로 달라지며 이에 따라 상세 행위도 달라진다.
이러한 방식의 유포는 유명 소프트웨어의 정상 EXE 실행으로 감염되며, 악성 DLL은 원본 DLL 파일과 외형이 매우 유사하기 때문에 단순 EXE로 유포되는 악성코드와는 다르게 발생 초기 AV 벤더의 진단률이 매우 저조한 편이므로 주의가 필요하다.
한편 ASEC에서는 이러한 방식의 유포 악성코드에 대한 자동 수집 시스템을 통해 모니터링 중이며 변형 발생에 빠르게 대응하고 있다.
본문의 예시 샘플 이외에도 다양한 정상 파일과 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
'오늘의 보안' 카테고리의 다른 글
[오늘의 보안] 램코스 악성코드(Remcos RAT) (1) | 2023.11.07 |
---|---|
[오늘의 보안] AvosLocker 랜섬웨어 (0) | 2023.11.04 |
[오늘의 보안] Balada 인젝터 (0) | 2023.10.26 |
[오늘의 보안] Volgmer, Scout 악성코드 (1) | 2023.10.23 |
[오늘의 보안] ShellBot DDoS 악성코드 (1) | 2023.10.19 |