보안 제품정보


MS-SQL 서버에서 악성코드 설치 수단으로 사용되는 CLR SqlShell 분석 2023.05.09

안랩 ASEC 분석팀, CLR SqlShell 분석...랜섬웨어·코인마이너 악성코드 추가 설치
부적절하게 계정정보 관리되는 시스템 대상 무차별 대입 공격 및 사전 공격 시도해


[보안뉴스 김영명 기자] 최근 부적절하게 관리되고 있는 MS-SQL 데이터베이스 서버를 대상으로 SqlShell 악성코드가 설치되고 있다. SqlShell은 백도어나 코인마이너, Proxyware와 같은 추가 악성코드를 설치하거나, WebShell처럼 공격자의 명령을 전달받아 악의적인 명령을 수행하는데 사용될 수 있다.

[이미지=utoimage]


안랩 ASEC 분석팀(이하 ‘ASEC’)은 MS-SQL 서버를 대상으로 하는 공격에 사용되는 CLR SqlShell 악성코드들을 분석했다. SqlShell은 웹 서버에 설치되는 WebShell처럼 MS-SQL 서버에 설치돼 공격자의 명령 실행 또는 악의적인 행위를 지원하는 악성코드다. 공격자는 주로 코인마이너나 랜섬웨어 등 최종적인 악성코드의 설치 수단으로 SqlShell을 사용한다.

MS-SQL 서버 공격에 사용되는 악성코드 중 CLR SqlShell 유형의 악성코드가 다수 확인되는데, 이는 CLR Stored Procedure 형태의 DLL 악성코드다. SqlShell 중에는 단순한 명령 실행 형태부터 파일 다운로드·업로드나 권한 상승, 다운로더 등 다양한 유형이 있다.

첫 번째로, MS-SQL 대상 공격 방식을 보면, 1433번 포트가 오픈된 서버를 스캐닝해 찾는다. 스캐닝 이후에는 확인된 MS-SQL 서버에 무차별 대입 공격이나 사전 공격으로 로그인을 시도한다. 부적절하게 관리되고 있는 MS-SQL 서버들을 대상으로 전파되는 악성코드는 LemonDuck 코인마이너가 대표적이다. LemonDuck은 내부 전파 과정에서 MS-SQL 서버를 대상으로 사전 공격을 하지만, Kingminer나 Vollgar 코인마이너는 오픈된 MS-SQL 서버를 대상으로 무차별 대입 공격을 수행한다.

▲LemonDuck의 CLR SqlShell[자료=안랩 ASEC 분석팀]


공격자 또는 악성코드가 sa 계정이나 sa 계정의 권한을 획득했다 하더라도 MS-SQL 데이터베이스 서버의 제어를 획득했을 뿐 윈도 운영체제 자체 제어를 획득한 것은 아니다. 즉, SQL 명령을 실행할 수는 있지만, 윈도 운영체제에 영향을 미치는 행위는 제공하지 않는다.

하지만 MS-SQL은 윈도에서 OS 명령 실행과 관련된 여러 기능을 지원하며, 이를 악용할 경우 OS 명령을 실행할 수 있다. MS-SQL DB 서버를 통해 OS 명령을 실행할 수 있는 기능들은 기본적인 SQL 관련 명령이 아니라서 보안에 취약하고, 대부분 비활성화됐다. 관리자 계정은 해당 설정을 활성화할 수 있어 sa 계정이 있다면 윈도 운영체제의 제어권을 가질 수 있다.

▲메타스플로잇을 이용한 공격 사례에 대한 안랩 ASD 로그[자료=안랩 ASEC 분석팀]


CLR SqlShell의 기본적인 유형을 보면, 공격 과정에서 SqlShell은 다른 악성코드를 설치하는 중간 단계로서 자주 사용되기 때문에 이렇게 단순한 형태들도 공격 과정에서 자주 확인되는 편이다. 또한, CLR SqlShell은 확장된 기능들을 제공하는 유형도 있다. 공격자들은 훨씬 다양한 기능들을 제공하는 SqlShell을 사용할 수 있다. 다양한 기능들이 제공될수록 공격자들은 악성코드 설치처럼 다음에 수행할 악성 행위들을 훨씬 간편하게 진행할 수 있기 때문이다.

▲PingCastle이 함께 구현된 SqlShell[자료=안랩 ASEC 분석팀]


PingCastle이 함께 구현된 CLRSQL SqlShell은 ShadowForce의 공격 과정에서도 사용된다. ShadowForce은 2013년부터 확인된 공격 그룹으로서 주로 한국의 기업과 기관을 공격해왔다. CLRSQL SqlShell의 특징은 주로 MS-SQL 서버를 공격 대상으로 한다는 점이다.

ShadowForce에 의해 공격받은 시스템들에서 부적절하게 관리되고 있는 MS-SQL 서버들을 대상으로 공격하는 다른 악성코드들이 함께 확인되는 것을 보면 ShadowForce도 부적절한 계정 정보를 사용하는 시스템을 주요 공격 대상으로 하는 것으로 보인다.

안랩의 ASD 로그를 보면 먼저 ‘Tmp1C4E.tmp’, 즉 SqlShell이 설치되고 이후 차례대로 ShadowForce의 다른 악성코드들이 생성되는 것을 확인할 수 있다. ShadowForce는 부적절하게 관리되고 있는 MS-SQL에 침투한 이후 추가 악성코드들을 설치하기 위해 CLR Stored Procedure 악성코드를 사용하고 있으며 대부분의 공격 과정에서 동일한 흐름이 확인된다.

▲안랩 ASD에서 확인된 ShadowForce의 공격 로그[자료=안랩 ASEC 분석팀]


또한, CLR_MODULE(SHADOWFORCE 공격 그룹이라는 이름의 SqlShell도 CLRSQL과 유사하게 다양한 기능들과 함께 PingCastle을 지원한다는 공통점이 있다. 차이점이라고 한다면 CLR_module은 CLRSQL이 제공하는 기능들 외에도 추가로 BadPotato, EfsPotato 등 권한 상승 도구들을 함께 제공한다는 점이다. 이러한 추가적인 기능들 때문인지 ShadowForce의 공격 과정에서도 CLRSQL과 함께 확인되는 사례가 다수 존재한다.

CLR SqlShell은 코인마이너를 설치한다. SqlShell 자체적으로 특정 기능이 구현된 형태들은 대부분 코인 마이너를 설치하는 유형들이며 이에 따라 공격에 사용된 SqlShell들은 대부분 다운로더 또는 드로퍼 기능을 담당한다.

▲MrbMiner의 SqlShell[자료=안랩 ASEC 분석팀]


▲드로퍼 형태의 LoveMiner SqlShell[자료=안랩 ASEC 분석팀]


공격자는 MS-SQL 서버에 ‘sdk.mdf’라는 이름의 Proxyware를 설치하고 동시에 이를 실행하는 SqlShell을 사용해 대역폭을 탈취했다. ‘sdk.mdf’는 실질적인 기능을 담당하는 DLL 파일이며, 함께 생성된 SqlShell ‘Tmp417C.tmp’는 Proxyware인 ‘sdk.mdf’를 로드하고 익스포트 함수인 p2p_start()를 호출해 사용자의 인지 없이 동작시킨다. p2p_start() 호출할 때는 수익을 가져갈 이메일 주소를 인자로 전달해야 하며, 공격자의 이메일 주소를 확인할 수 있다.

MS-SQL 데이터베이스 서버를 대상으로 하는 공격에는 대표적으로 부적절하게 계정 정보를 관리하고 있는 시스템들에 대한 무차별 대입 공격(Brute Forcing)과 사전 공격(Dictionary Attack)이 있다. 공격 대상이 되는 MS-SQL 서버의 경우 데이터베이스 서버로서 직접 구축한 형태 외에도 ERP 및 업무용 솔루션 설치 과정에서 함께 설치되는 경우도 다수 있다.

ASEC 관계자는 “관리자들은 계정의 비밀번호를 추측하기 어려운 형태로 사용하고 주기적으로 변경해 무차별 대입 공격과 사전 공격으로부터 데이터베이스 서버를 보호해야 하며, 최신 버전으로 패치해 취약점 공격을 방지해야 한다”고 말했다. 이어 “외부에 오픈돼 접근 가능한 데이터베이스 서버에 대해 방화벽과 같은 보안 제품을 이용해 공격자로부터의 접근을 통제하는 것이 필요하다”고 덧붙였다.
[김영명 기자(boan@boannews.com)]

<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>