MS-SQL 서버 대상 Proxyjacking 공격 사례 분석

AhnLab Security Emergency response Center(ASEC)은 최근 부적절하게 관리되고 있는 MS-SQL 서버를 대상으로 하는 Proxyjacking 공격 사례를 확인하였다. 외부에 공개되어 있으면서 단순한 형태의 암호를 사용하고 있는 MS-SQL 서버들은 윈도우 시스템을 대상으로 하는 대표적인 공격 벡터 중 하나이다. 일반적으로 공격자들은 부적절하게 관리되고 있는 MS-SQL 서버를 찾아 무차별 대입 공격이나 사전 공격을 통해 로그인에 성공할 경우 감염 시스템에 악성코드를 설치할 수 있다.

해당 공격자는 과거부터 MS-SQL 서버를 대상으로 LoveMiner를 설치하고 있으며 Proxyjacking 공격과 Cryptojacking 공격을 함께 수행하는 것이 특징이다. 최근 공격과 비교해서 차이점이 있다면 Peer2Profit의 Proxyware를 공격에 사용했던 과거와 달리 지금은 IPRoyal Pawns, Traffmonetizer, Proxyrack, PacketStream 업체의 Proxyware들을 공격에 사용하고 있다는 점이다. 이렇게 다양한 Proxyware들이 공격에 사용되었다는 점들 외에도 악성코드를 .NET Native AOT(ahead-of-time) 컴파일 방식으로 제작했다는 점도 특징이다. 여기에서는 동일한 공격자의 과거 공격 사례를 간략하게 소개하고 최근 공격에 사용 중인 악성코드들을 분석한다.


1. Proxyjacking 공격

ASEC에서는 과거 “Proxyware를 이용해 수익을 얻는 공격자들” [1] 포스팅을 통해 최근 유행하고 있는 Proxyjacking 공격 사례를 다룬 바 있다. Proxyjacking 공격이란 사용자의 동의 없이 Proxyware를 설치하여 감염 시스템의 인터넷 대역폭 일부를 외부에 공유하는 방식으로 공격자들이 수익을 얻는 공격 방식이다.

Proxyware란 설치된 시스템에서 현재 사용 가능한 인터넷 대역폭 일부를 외부에 공유하는 프로그램으로서 일반적으로 이를 설치하는 사용자는 대역폭을 제공하는 대신 일정한 금액을 받는다. 만약 공격자가 사용자의 동의 없이 감염 시스템에 Proxyware를 몰래 설치할 경우 감염된 시스템은 비자발적으로 네트워크 대역폭을 탈취당하게 되며 수익은 공격자에게 돌아가게 된다. 이는 Cryptojacking 공격과 유사한데 Proxyware 대신 코인 마이너를 설치하여 감염 시스템의 자원으로 암호 화폐를 채굴하는 것이 차이점이다.

과거 Cisco 사의 Talos의 보고서에서 정상 설치 파일로 위장한 악성코드를 통해 설치되고 있는 Proxyjacking 공격 사례가 보고되었으며 [2], 이후 ASEC 블로그에서는 애드웨어와 부적절하게 관리되고 있는 MS-SQL 서버를 대상으로 한 공격 사례를 다루었다. Proxyjacking 공격은 윈도우 시스템뿐만 아니라 리눅스 시스템을 대상으로도 진행되고 있는데, Log4Shell 취약점 공격이나 [3] SSH 서버에 대한 공격을 통해 설치된 사례도 [4] 보고되고 있다.


2. 과거 공격 사례

LoveMiner 공격자는 2022년 6월 초부터 부적절하게 관리되고 있는 MS-SQL 서버를 공격하여 Peer2Profit 업체의 Proxyware를 “sdk.mdf”라는 이름으로 설치하였다. “sdk.mdf”는 Proxyware에서 제공하는 파일이기 때문에 이와 동시에 이를 악용하는 CLR Assembly를 사용해 대역폭을 탈취하였다. [5]

Figure 1. Proxyware와 CLR Assembly 설치 로그

CLR Assembly인 “Tmp417C.tmp”는 Proxyware인 “sdk.mdf”를 로드하고 익스포트 함수인 p2p_start()를 호출함으로써 사용자의 인지 없이 동작시킨다. p2p_start() 호출 시에는 수익을 가져갈 이메일 주소를 인자로 전달해야 하기 때문에 악성코드에서 공격자의 이메일 주소를 확인할 수 있다.

Figure 2. SqlShell을 이용해 Proxyware를 실행

참고로 CLR Assembly의 이름 “SqlServerWorks.CLR.P2P.dll”은 LoveMiner의 CLR Assembly와 유사한데, 이를 통해 LoveMiner 공격자가 Proxyware를 함께 공격에 사용하는 것을 알 수 있다. 실제 AhnLab Smart Defense (ASD) 로그에서도 LoveMiner와 Proxyware가 거의 동시에 함께 설치되는 경향이 있다.

LoveMiner는 다운로더 형태의 CLR Assembly와 로더 형태의 CLR Assembly로 나뉘는데, 로더 형태의 경우 내부 리소스 “gmp”에 저장된 XMRig를 메모리 상에서 로드하는 역할을 담당한다. “gmp” 또한 커스터마이징된 XMRig로서 초기 루틴에서 마이닝 풀 주소 등 마이닝에 필요한 정보를 설정한다. 참고로 리소스 이름에서 사용된 “gmp” 문자열은 최신 공격에서도 사용되고 있다.

Figure 3. 로더 형태의 LoveMiner CLR Assembly


3. 최신 공격 사례

ASEC에서는 최근 LoveMiner 공격자가 “sdk.mdf” 대신 “winupdate0.mdf”라는 이름의 악성코드를 생성하고 있는 것을 확인하였다. DLL 포맷인 악성코드는 버전 정보가 “SqlserverCLRV2.NativeLib.dll”이다. 이는 LoveMiner CLR Assembly의 파일명과 유사하며 Export 함수 중 “GmpStart”라는 문자열이 사용되었다는 점도 동일한 공격자가 제작한 것으로 추정할 수 있는 근거 중 하나이다.

Figure 4. 드로퍼 악성코드의 버전 정보

“winupdate0.mdf”는 드로퍼 악성코드로서 감염 시스템에 다양한 Proxyware들을 설치한다. .NET으로 개발된 LoveMiner의 CLR Assembly와 달리 “winupdate0.mdf”는 .NET이 아니라 .NET Native AOT 컴파일 방식으로 제작된 것이 특징이다. .NET Native AOT는 .NET 7부터 도입된 메커니즘으로서 닷넷 코드를 CIL이 아닌 네이티브 코드로 직접 컴파일하는 방식이다. 개발자 입장에서는 이를 통해 성능 상 이점을 얻을 수 있지만, 악성코드를 분석하는 관점에서는 일반적인 닷넷 실행 파일들과 달리 더 많은 리소스가 필요한 경향이 있다. [6]

Figure 5. .NET Native AOT 컴파일 방식으로 제작된 드로퍼 악성코드

GmpStart() 함수는 실질적인 드로퍼 기능을 담당하며 런처 악성코드인 “warpstrat.dll”와 Proxyware 도구들인 Traffmonetizer, IPRoyal, Proxyrack, PacketStream을 설치한다. GmpStart() 함수는 다음과 같이 단순한 형태로서 각각의 함수들에서 차례대로 설치를 담당하며 파일들은 모두 %APPDATA% 경로에 설치된다.

Figure 6. GmpStart() 함수의 메인 루틴

드로퍼는 설치한 Proxyware들을 직접 실행하는 대신 “warpstrat.dll”을 이용해 간접적으로 실행한다. “warpstrat.dll”은 이름과 달리 EXE 실행 파일이며 인자로 전달받은 명령을 실행시켜 주는 단순한 형태의 닷넷 런처 도구이다.

Figure 7. warpstrat 런처 도구


4. 공격에 사용된 Proxyware

종류경로명파일기능
Launcher%APPDATA%\warpstrat.dll런처 도구
Traffmonetizer%APPDATA%\sraffzer\sraffzer.exe 등Traffmonetizer Proxyware
%APPDATA%\traffmonetizer\settings.json 등Traffmonetizer 설정 파일
IPRoyal%APPDATA%\SQLSERVERHUP.dllIPRoyal Proxyware
%APPDATA%\ip_royal_paws\기타 파일들IPRoyal 설정 파일
Proxyrack%APPDATA%\sqlgo.exeProxyrack Proxyware
%APPDATA%\prokey.objProxyrack 설정 파일
PacketStream%APPDATA%\psexitnode.exePacketStream Proxyware
Table 1. 설치되는 Proxyware 목록


4.1. Traffmonetizer

가장 먼저 설치되는 것은 Traffmonetizer이다. [7] 공격자는 먼저 “%APPDATA%\traffmonetizer\” 경로에 “settings.json” 파일을 생성하는데 여기에는 공격자의 토큰 정보가 저장되어 있다.

{“Token”:”numNo223zAbqep0Eveul2JZbvh3hYRkAL1HQfg4L5tw=”,”StartWithWindows”:false,”Accepting”:true}

이후 바이너리에 포함되어 있는 “s.zip” 파일을 생성하고 “%APPDATA%\sraffzer\” 경로에 압축을 해제한다. 해당 압축 파일에는 Traffmonetizer 프로그램들이 존재하며 이후 warpstrat을 이용해 이를 실행시킨다.

Figure 8. 압축 파일에 포함되어 있는 Traffmonetizer 파일들

Traffmonetizer의 트레이 아이콘을 더블 클릭하면 최근 3개월간의 수익을 확인할 수 있는데 해당 토큰을 사용하는 공격자는 다수의 시스템들을 감염시켜 이미 상당한 수익을 얻은 것으로 보인다.

Figure 9. Traffmonetizer를 이용해 공격자가 얻은 수익


4.2. IPRoyal Pawns

IPRoyal Pawns는 과거 사례를 포함하여 대부분의 공격에서 확인되는 Proxyware 중 하나이다. [8] IPRoyal Pawns의 특징 중 하나는 Proxyware를 실행할 때 계정 정보가 필요하다는 점이다. 이에 따라 설치 과정에서 공격자의 이메일 주소와 비밀번호를 확인할 수 있다.

Figure 10. IPRoyal Pawns Proxyware 설치에 사용되는 공격자의 계정 정보
  • 버전 : pawnsapp_gui 1.4.6
  • 공격자의 이메일 주소 : gmpgmp@duck[.]com


4.3. Proxyrack

Proxyrack은 “device_id”로서 랜덤한 문자열을 생성하여 이를 인자로 Proxyware를 실행한 후 홈페이지에서 자신의 계정에 해당 “device_id”를 등록하는 방식으로 수익을 얻을 수 있다. [9] Proxyrack은 이외에도 API를 지원하는데 계정의 API를 이용해 “device_id”를 POST로 요청하여 등록할 수도 있다.

Figure 11. Device ID 등록 방식

드로퍼는 Proxyrack의 Proxyware를 “%APPDATA%\sqlgo.exe” 경로에 생성하여 실행하는데 그 이전에 “prokey.obj” 파일이 존재하는지를 검사한다. 만약 존재하지 않을 경우에는 랜덤한 문자열을 생성하여 “prokey.obj” 파일에 저장하고 Proxyware 실행 시 “device_id” 인자로 사용한다. 드로퍼에는 API를 이용해 랜덤으로 생성한 “device_id”를 등록하는 부분이 확인되지 않는데, 이는 공격자가 드로퍼와 함께 “prokey.obj” 파일을 미리 생성하거나 아니면 다른 방식으로 “device_id”를 수집했을 것으로 추정된다.

–homeIp point-of-presence.sock[.]sh –homePort 443
–id [Device ID]
–version 56 –clientKey proxyrack-pop-client –clientType PoP
–ppid [PPID] –osType [OS 종류] –osRelease [OS 버전] –osArch ia32


4.4. PacketStream

PacketStream은 다른 Proxyware보다 상대적으로 간단한 형태이다. [10] “%APPDATA%\psexitnode.exe” 경로에 Proxyware를 설치한 이후 다음과 같은 인자를 전달하고 실행시키는 방식이 사용된다.

> psexitnode.exe “1332868?client_version=20.202.1548”


5. 결론

최근 확인되고 있는 Proxyware 드로퍼 악성코드는 시스템의 리소스를 이용해 수익을 얻는다는 점에서 코인 마이너와 유사하다. 이러한 악성코드들은 애드웨어를 이용해 유포되거나 취약한 MS-SQL 서버를 대상으로 설치되고 있다.

MS-SQL 서버의 관리자들은 계정의 비밀번호를 추측하기 어려운 형태로 사용하고 주기적으로 변경하여 무차별 대입 공격과 사전 공격으로부터 데이터베이스 서버를 보호해야 하며, 최신 버전으로 패치하여 취약점 공격을 방지해야 한다. 또한 외부에 오픈되어 접근 가능한 데이터베이스 서버에 대해 방화벽과 같은 보안 제품을 이용해 외부 공격자로부터의 접근을 통제해야 한다. 위와 같은 조치가 선행되지 않을 경우 공격자 및 악성코드들에 의해 계속적인 감염이 이루어질 수 있다. 또한 V3를 최신 버전으로 업데이트하여 악성코드의 감염을 사전에 차단할 수 있도록 신경 써야 한다.

파일 진단
– Dropper/Win.Proxyware.C5471194 (2023.08.15.03)
– HackTool/Win.Launcher.C5471202 (2023.08.16.00)
– PUP/Win.TraffMonetizer.C5471479 (2023.08.16.02)
– Unwanted/Win.PacketStream.C5471480 (2023.08.16.02)
– Unwanted/Win.IPRoyal.C5471481 (2023.08.16.02)
– PUP/Win.Proxyrack.C5471483 (2023.08.16.02)
– Data/BIN.Config (2023.08.16.02)

IOC
MD5
– e8997e7d0cfee9875eb64b3aae8cc76a : Proxyware Dropper (winupdate0.mdf)
– ec336ebe46d1ed6b0381801d06fb30b4 : Proxyware Dropper (winupdate0.mdf)
– 407eee5f4342af292a66b8d49794f64f : Launcher (warpstrat.dll)
– 0bd9711e8566b28142dde063c0fc2e55 : Traffmonetizer Proxyware (sraffzer.exe)
– 5a8eee8fe217634cb47f2967a3d6bb37 : Traffmonetizer Config (settings.json)
– a88e1eaf5576d27572ccc5655afb9d1a : IPRoyal Proxyware (SQLSERVERHUP.dll)
– dd7c9fe604867e2705dc581fedc1f554 : Proxyrack Proxyware (sqlgo.exe)
– 2d9c5507f204fc5a223bff457b4cb0e7 : PacketStream Proxyware (psexitnode.exe)

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

5 3 votes
별점 주기
Subscribe
Notify of
guest

0 댓글
Inline Feedbacks
View all comments