시스템 제어에 정보 탈취까지! 취약한 서버 대상 공격 주의
Larva-24011 공격자는 금전적 수익을 목적으로 취약한 시스템들을 공격해 코인마이너(CoinMiner)와 프록시웨어(Proxyware)를 설치하고 있다. 이 외에도 원격 제어 악성코드를 설치하거나 백도어 계정을 추가하는 등 감염 대상 시스템을 제어하고 정보를 탈취하는 것으로 확인됐다. 이번 글에서는 Larva-24011 공격자의 최신 공격 동향을 자세히 살펴본다.
Larva-24011 공격자는 2021년부터 부적절하게 관리되는 IIS, Tomcat 웹 서버와 MS-SQL 서버를 위주로 공격해오고 있다. 다수 공격 툴에서 중국어가 확인되는 것으로 보아, 공격자는 중국어 사용자인 것으로 추정된다.
최근 공격 사례에서 공격자는 고스트 RAT(Gh0st RAT)과 같은 원격 제어 악성코드를 설치하거나 백도어 계정을 추가하고 있다. 또한, RDP Wrapper와 프록시 툴을 설치함으로써 감염 대상 시스템에 대한 제어 권한을 탈취하고 있다.
1. 초기 침투 사례
1.1. MS-SQL 서버
공격자는 초기에는 부적절하게 관리되는 취약한 MS-SQL 서버에 대한 무차별 대입 및 사전 공격을 통해 코인 마이너를 설치했다.
외부에 공개돼 있으면서 단순한 형태의 암호를 사용하는 MS-SQL 서버들은 윈도우 시스템을 노린 대표적인 공격 벡터 중 하나이다. 일반적으로 공격자들은 부적절하게 관리되는 MS-SQL 서버를 찾아 무차별 대입 공격이나 사전 공격을 통해 로그인에 성공할 경우 감염 대상 시스템에 악성코드를 설치할 수 있다.
공격자가 MS-SQL 서버에 관리자 계정으로 로그인한 이후 실질적으로 악성코드를 설치하는 데 사용되는 방식으로는 대표적으로 xp_cmdshell 명령이 있으며, 해당 명령을 통해 윈도우 환경에서도 동작할 수 있는 악의적인 명령을 실행할 수 있다. 이 외에 OLE Stored Procedure에 명령을 등록하거나 MS-SQL Agent Jobs라고 하는 작업에 악의적인 명령을 등록하는 방식도 윈도우 명령을 실행할 수 있는 방식 중 하나이다.
물론 이렇게 명령을 실행하는 방식 대신 특정 기능이 구현된 실행 파일을 제작해 등록함으로써 해당 기능을 수행하도록 하는 방식도 존재한다. MS-SQL 서버에서는 이를 수행하기 위해 CLR SqlShell과 같은 확장 기능을 지원한다. SqlShell은 웹 서버에 설치될 수 있는 웹 셸(Web shell)과 유사하게 MS-SQL 서버에 설치돼 공격자의 명령을 실행하거나 다양한 악의적인 행위를 수행할 수 있는 기능을 지원하는 악성코드이다.
Larva-24011 공격자 또한 SqlShell을 공격에 사용한다. [그림 1]의 상단 이미지는 프록시웨어를 설치하는 SqlShell이며, 하단 이미지는 XMRig 코인 마이너를 설치하는 SqlShell이다. 해당 사례에서 SqlShell은 단순히 리소스에 포함된 프록시웨어나 코인마이너에 대한 드로퍼 및 로더 기능을 수행했으며 공격자의 명령을 이행하는 부분은 확인되지 않았다.
[그림 1] Larva-24011 공격자가 사용한 SqlShell
하지만 최신 공격 사례에서는 리소스에 “CMD” 프로그램을 포함하며, SqlShell 또한 이를 이용한 명령 실행, Potato 기능을 활용한 권한 상승, 프록시, 파일 다운로드 등 감염 대상 시스템을 제어하는 기능들을 탑재한 점이 특징이다.
[그림 2] 최신 공격 사례에서 확인된 SqlShell
1.2. 웹 서버
Larva-24011 공격자는 취약한 MS-SQL 서버 외에 웹 서버도 공격 대상으로 삼고 있다. IIS 서버와 톰캣(Tomcat) 서버를 공격한 정황이 확인됐다. 공격 방식은 먼저 웹 셸을 설치하고, 이후 이를 이용해 추가 페이로드를 설치하는 것으로 알려졌다.
[그림 3] 취약한 톰캣 서비스에 의해 생성된 악성코드
참고로 수집된 웹 셸들 중에는 [그림 4]와 같이 중국어가 포함된 경우도 있다. 이 외에도 다수의 샘플에 중국어 문자열이 포함돼 있는데, 이는 공격자가 중국어 사용자일 가능성을 보여준다.
[그림 4] 중국어 주석이 포함된 웹 셸
2. 코인마이너 공격 사례
과거 공격 사례에서는 초기 침투 이후 MS-SQL 데이터 폴더(ex : %ProgramFiles%\microsoft sql server\mssql13.mssqlserver\mssql\data)에 sqlbase 폴더를 생성하고 해당 경로에 “SqlBase.exe”라는 이름의 악성코드를 생성했다. SqlBase.exe는 닷넷(.NET)으로 개발된 단순한 형태의 다운로더 악성코드로, C&C 서버로부터 설정 데이터 및 코인마이너를 다운로드해 설치하는 기능을 수행한다.
[그림 5] 복호화된 XMRig 설정 데이터
이후 다음 주소에서 XMRig 악성코드를 다운로드하는데, MS-SQL에서 사용하는 데이터 파일 (Primary Data File), 즉 mdf 확장자로 위장한 것이 특징이다. 실제 MS-SQL 데이터 폴더인 “%ProgramFiles%\microsoft sql server\mssql13.mssqlserver\mssql\data\”를 보면 다수의 mdf 및 ldf(Log File) 파일들 등 MS-SQL 관련 데이터 파일들을 확인할 수 있다.
코인마이너는 비록 과거에 비해 수량이 많이 줄어들었지만, 최신 공격 사례에서도 확인된다. 정상 프로그램을 위장한 형태로 유포되며, XMRig를 서비스에 등록한다. 하지만 [그림 6]과 같이 코인마이너가 리소스에 “gmp”라는 이름으로 저장된 점은 과거와 동일하다.
[그림 6] “gmp”라는 이름의 리소스에 저장된 코인마이너 악성코드
3. 프록시웨어 공격 사례
3.1. 프록시웨어
프록시웨어는 설치된 시스템에서 현재 사용 가능한 인터넷 대역폭 일부를 외부에 공유하는 프로그램이다. 이 프록시웨어를 사용자의 동의 없이 설치하는 공격이 바로 프록시재킹(Proxyjacking)이다. 프록시재킹에 의해 악성코드에 감염된 사용자는 비자발적으로 네트워크 대역폭을 탈취당하며, 공격자는 이를 통해 수익을 얻는다. 이처럼 감염 대상 시스템의 리소스를 이용해 수익을 얻는 방식은 코인마이너와 유사하다.
3.2. 프록시웨어 초기 버전
Larva-24011 공격자는 2022년 6월 초부터 부적절하게 관리되고 있는 MS-SQL 서버를 공격해 Peer2Profit 업체의 프록시웨어를 “sdk.mdf”라는 이름으로 설치했다. “sdk.mdf”는 프록시웨어에서 제공하는 파일이기 때문에 이를 악용하는 CLR Assembly를 사용해 대역폭을 탈취했다. CLR Assembly는 프록시웨어인 “sdk.mdf”를 로드하고 익스포트 함수인 p2p_start()를 호출함으로써 사용자의 인지 없이 동작 시킨다. p2p_start() 호출 시에는 수익을 가져갈 이메일 주소를 인자로 전달해야 하기 때문에 악성코드에서 공격자의 이메일 주소를 확인할 수 있다.
[그림 7] SqlShell에 포함된 공격자의 이메일 주소
참고로 CLR Assembly의 이름 “SqlServerWorks.CLR.P2P.dll”은 러브마이너(LoveMiner)의 CLR Assembly와 유사한데, 이를 통해 러브마이너 공격자가 프록시웨어를 함께 공격에 사용하는 것을 알 수 있다. 실제 AhnLab Smart Defense (ASD) 로그에서도 러브마이너와 프록시웨어가 거의 동시에 설치되는 것으로 나타났다.
3.3. 프록시웨어 후기 버전
공격자는 코인마이너뿐만 아니라 프록시웨어도 지속적으로 업데이트했다. 2023년 8월경에는 “sdk.mdf” 대신 “winupdate0.mdf”라는 이름의 악성코드를 생성했다. DLL 포맷인 악성코드는 버전 정보가 “SqlserverCLRV2.NativeLib.dll”이다. 이는 평소 Larva-24011 공격자가 사용하던 CLR Assembly의 파일명과 유사하며, Export 함수 중 “GmpStart”라는 문자열이 사용됐다는 점도 동일한 공격자가 제작한 것으로 추정할 수 있는 근거 중 하나다.
“winupdate0.mdf”는 드로퍼 악성코드로, 감염 대상 시스템에 다양한 프록시웨어를 설치한다. .NET으로 개발된 기존 CLR Assembly 달리 “winupdate0.mdf”는 .NET이 아니라 .NET Native AOT 컴파일 방식으로 제작된 것이 특징이다. .NET Native AOT는 .NET 7부터 도입된 메커니즘으로서 닷넷 코드를 CIL이 아닌 네이티브 코드로 직접 컴파일하는 방식이다. 개발자 입장에서는 이를 통해 성능 면에서 이점을 얻을 수 있지만, 악성코드를 분석하는 관점에서는 일반적인 닷넷 실행 파일들과 다르게 더 많은 리소스가 필요하다는 단점이 있다.
[그림 8] Native AOT 방식으로 제작된 프록시웨어
GmpStart() 함수는 실질적인 드로퍼 기능을 담당하며 런처 악성코드인 “warpstrat.dll”와 프록시웨어 툴인 Traffmonetizer, IPRoyal, Proxyrack, PacketStream을 설치한다. GmpStart() 함수는 다음과 같이 단순한 형태로서 각각의 함수들에서 차례대로 설치를 담당하며 파일들은 모 두 %APPDATA% 경로에 설치된다. 드로퍼는 설치한 프록시웨어를 직접 실행하는 대신 “warpstrat.dll”을 이용해 간접적으로 실행한다.
[표 1] 설치되는 프록시웨어 목록
4. 원격 제어
4.1. 백도어 악성코드
공격자는 주로 RDP를 통해 시스템을 제어하지만, 백도어 악성코드를 설치하기도 한다. 공격 사례에서 직접 확인된 악성코드는 고스트 RAT뿐이지만 다운로더 유형의 악성코드들도 소수 확인되는 점을 통해 또 다른 악성코드를 이용할 가능성도 존재한다.
고스트 RAT은 C. Rufus Security Team에서 개발한 원격 제어 악성코드다. 소스 코드가 공개돼 있어 악성코드 개발자가 다양한 변종을 개발하고 있으며, 지속적으로 공격에 사용하고 있다. 고스트 RAT은 주로 취약한 서비스, 즉 웹 서버나 MS-SQL 서버 대상 공격에 사용되며, 중국어를 하는 공격자들이 많이 사용한다.
[그림 9] 공격에 사용된 고스트 RAT
이 외에도 보안 제품을 우회하기 위해 정상적인 목적으로도 사용되는 원격 제어 툴인 애니데스크(AnyDesk)를 설치한 사례도 확인된다. 이러한 알려진 악성코드 외에 새로운 유형의 악성코드들도 확인된다. 대부분 다운로더 유형이며, 대표적으로 AuAgent가 있다. AuAgent는 “mpclient.exe”, “mpclient.dll”, “mpclient.dat” 파일을 다운로드하는 다운로더로, “.dat” 파일이 사용되는 것을 보면 중국 기반 공격자가 자주 사용하는 PlugX로 추정되지만 분석 당시 다운로드에 실패해 실제 악성코드는 확인할 수 없다.
[그림 10] AuAgent의 설정 데이터
4.2. RDP
공격자는 미미카츠(Mimikatz)를 이용해 기존 사용자의 자격 증명 정보를 탈취하거나 NetUser 툴을 이용해 백도어 계정을 추가하기도 한다. 대부분의 유형은 공격자의 명령을 전달받아 동작하는 NetUser 툴이지만 [표 2]와 같이 추가할 계정의 ID/PW가 직접적으로 하드코딩돼 있는 경우도 있다.
[표 2] 공격자가 사용하는 자격 증명 정보
참고로 공격 과정에서 확인된 웹 셸뿐만 아니라 NetUser 툴도 [그림 11]과 같은 중국어 문자열들을 확인할 수 있다.
[그림 11] 악성코드에서 확인되는 중국어
이후 공격자는 확보된 계정을 통해 감염 대상 시스템을 원격으로 제어하기 위해 RDP Wrapper를 설치한다. 감염 대상 시스템이 내부망에 존재할 경우에 대비해 포트 포워딩 툴인 PortTranC를 사용하기도 한다. PortTranC가 사용된 로그 및 악성코드가 모두 C&C 서버와 로컬의 3389 포트를 연결하는 것을 보면 공격자는 PortTranC를 RDP 원격 제어를 위해 사용하는 것으로 보인다.
[그림 12] 공격에서 사용되는 PortTranC
5. 기타 툴
이 밖에, 공격자는 다양한 해킹 툴을 사용한다. 웹 서버나 MS-SQL 서버 등 취약한 서비스를 공격하기 때문에 PrintSpoofer나 Potato와 같은 권한 상승 툴의 비중이 높다. 더 나아가, SQL 서버의 비밀번호 크랙 툴인 SQLck나 비밀번호 스니퍼인 SQLServerSniffer를 감염 대상 시스템에 설치하기도 한다.
[그림 13] 감염 대상 시스템에 설치된 SQL 핵 툴
결론
Larva-24011 공격자는 수년간 웹 서버나 MS-SQL 서버와 같이 취약한 시스템을 대상으로 공격 중이며 국내 다수 시스템에 코인마이너와 프록시웨어, 원격 제어 악성코드를 설치해왔다. MS-SQL 서버 관리자들은 계정의 비밀번호를 추측하기 어려운 형태로 사용하고 주기적으로 변경해 무차별 대입 공격과 사전 공격으로부터 데이터베이스 서버를 보호해야 하며, 최신 버전으로 패치해 취약점 공격을 방지해야 한다. 또한, 방화벽과 같은 보안 제품을 활용해 공격자가 외부에 오픈된 데이터베이스 서버에 대한 접근을 통제해야 한다.
이 같은 조치가 선행되지 않으면 지속적으로 공격을 받거나 악성코드에 감염될 수 있다. 또한, AhnLab V3를 최신 버전으로 업데이트해 악성코드 감염을 사전에 차단할 수 있도록 신경 써야 할 것이다.
출처 : AhnLab