RDP를 이용해 감염 시스템을 제어하는 Kimsuky 위협 그룹

북한의 지원을 받고 있다고 알려진 Kimsuky 위협 그룹은 2013년부터 활동하고 있다. 초기에는 한국의 북한 관련 연구기관 등에 대한 공격을 진행하였으며 2014년 한국의 에너지 기관에 대한 공격을 그리고 2017년 이후에는 한국 외 다른 나라에 대한 공격도 확인되고 있다. [1] 주로 스피어 피싱 공격을 통해 국방, 방위산업, 언론, 외교, 국가기관, 학술 분야를 공격 중이며 조직의 내부 정보 및 기술 탈취를 목적으로 한다. [2]

Kimsuky 위협 그룹이 초기 침투 이후 설치하는 악성코드들로는 주로 감염 시스템을 제어하기 위한 백도어나 감염 시스템에 존재하는 민감한 정보들을 탈취하기 위한 인포스틸러 유형들이다. 공격에는 xRAT(Quasar RAT)과 같은 오픈 소스 기반 악성코드나 자체 제작한 악성코드들이 사용되기도 하지만 정상 도구들을 이용해 감염 시스템을 제어하기도 한다.

Kimsuky 그룹은 공격 과정에서 이러한 악성코드들 외에도 원격 제어를 지원하는 다양한 도구들을 함께 사용하는 것이 특징이다. 원격 제어를 위해 가장 많이 사용하는 방식은 RDP(Remote Desktop Protocol)이며 RDP가 설치되어 있지 않은 환경에는 오픈 소스 도구인 RDP Wrapper를 설치하기도 한다. 이미 설치되어 있거나 설치한 이후에는 RDP 접속을 위해 사용자 계정을 추가하거나 추가한 계정을 은폐하고 RDP 다중 세션을 설정하는 악성코드들을 추가적으로 사용한다. [3] [4]

물론 RDP 외에도 공개된 악성코드인 TinyNuke나 오픈 소스 VNC 도구인 TightVNC를 커스터마이징하여 공격에 사용한 사례들도 확인된다. VNC는 가상 네트워크 컴퓨팅(Virtual Network Computing)이라고 불리는 기술로서 RDP와 유사하게 원격으로 다른 컴퓨터를 제어하는 화면 제어 시스템이다. [5] 이외에도 구글 크롬 웹 브라우저가 지원하는 크롬 원격 데스크톱을 설치해 감염 시스템을 제어한 사례도 존재한다. [6]

Figure 1. 크롬 원격 데스크톱을 설치하는 악성코드

여기에서는 Kimsuky 그룹이 스피어 피싱으로 추정되는 공격을 통해 BabyShark를 설치하고 이후 각종 RDP 관련 악성코드를 설치한 최신 사례들을 다룬다. 공격에 사용된 도구들은 담당하는 기능들 자체는 과거 사례들과 유사하지만 PDB 정보들을 통해 최근 새롭게 제작하여 공격에 사용 중인 것으로 추정된다.

Figure 2. 인젝터 악성코드의 PDB 정보

이외에도 새로운 악성코드가 확인되었는데 악성코드 제작 시 공격자가 사용한 이름은 “RevClient”였다. 해당 악성코드는 C&C 서버로부터 공격자의 명령을 받아 동작하며 명령에 따라 사용자 계정을 추가하거나 포트 포워딩 기능을 활성화할 수 있다.


1. 초기 침투 단계

최초 유포 방식은 확인되지 않았지만 스피어 피싱 공격이 사용되었을 것으로 추정된다. 감염 시스템에서는 과거 ASEC 블로그 “문서 뷰어로 위장한 악성 배치 파일(*.bat) 유포 중(Kimsuky)” [7] 에서 소개한 사례와 유사하게 “hwp.bat” 파일이 사용된 이력이 확인되었다. BAT 악성코드는 WMIC 명령어를 이용해 안티바이러스를 확인하고 추가적으로 스크립트 악성코드를 설치한다.

Figure 3. 공격에 사용된 hwp.bat 파일

공격자는 최초 감염 이후에도 악성코드와 C&C 서버 주소를 변경해 가면서 지속적으로 감염 시스템의 정보를 탈취하였다. 설치된 악성코드들로는 대표적으로 키로깅을 담당하는 “k.ps1”과 이를 실행하는 “OneNote.vbs” 파일이 존재한다. “k.ps1” 파일은 로깅한 데이터를 “%APPDATA%\k.log” 파일에 저장한다.

Figure 4. 탈취한 정보를 업로드하는데 사용된 주소들
Figure 5. Kimsuky 그룹의 키로거 악성코드

이외에도 로더 악성코드인 “pow.ps1”과 인코딩된 데이터 파일인 “desktop.r7u”도 확인되었다. “pow.ps1”는 “%APPDATA%\Microsoft\desktop.r7u” 경로의 파일을 복호화 해 메모리 상에서 실행하며 복호화 된 “desktop.r7u”는 인젝터 악성코드이다. 동일한 경로에 “desktop.r3u” 파일이 존재할 경우 이를 복호화 하여 정상 프로그램인 “MSBuild.exe”에 인젝션 하는 기능을 담당한다. 파일은 확보하지 못했지만 과거 유사한 공격 사례에서는 복호화 된 “desktop.r3u” 파일이 xRAT이었으며 Huntress 사의 보고서에서는 KimJongRAT이 사용되었다고 한다. [8]

Figure 6. desktop.r3u를 복호화해 인젝션하는 루틴


2. 추가 페이로드 설치

일정 기간 이후 BabyShark의 C&C 서버 주소가 변경된 점을 통해 공격자가 최초로 BabyShark를 설치한 이후에도 지속적으로 BabyShark를 업데이트했다는 점을 알 수 있다. BabyShark만으로도 감염 시스템의 정보를 수집할 수 있겠지만 공격자는 이후 RDP 관련 악성코드들을 추가적으로 설치하였다.


2.1. Injector

설치된 악성코드들 중 “process.exe”는 위에서 다룬 인젝터 악성코드인 복호화 된 “desktop.r7u”와 거의 동일하다. 실제 두 악성코드의 PDB 정보를 보면 유사성을 확인할 수 있다.

  • 복호화된 desktop.r7u의 PDB 정보 : H:\Hollow\csharp process hollowing_complete_offset\csharp process hollowing_complete_offset\process\process\obj\x86\Release\process.pdb
  • process.exe의 PDB 정보 : G:\0726_Rev_hollowing\csharp process hollowing_complete_offset\process\process\obj\x86\Release\process.pdb

차이점이 있다면 복호화 대상이 %APPDATA% 경로에 존재하는 “CustomVerification.DIC” 파일이라는 점과 인젝션 대상 프로세스가 “powershell_ise.exe”라는 점이 있다. 비록 “CustomVerification.DIC” 파일은 확인되지 않지만 유사한 시점에 xRAT이 공격에 사용된 사례가 존재하기 때문에 Kimsuky 그룹이 주로 사용하는 악성코드들 중 하나일 것으로 추정된다.


2.2. RDP 서비스 변경

공격자는 이외에도 “multiple.exe”라는 이름의 악성코드를 설치하였다. 해당 악성코드는 사용자 계정을 추가하고 RDP를 활성화하며 이외에도 다중 세션 기능을 지원한다. 악성코드는 먼저 RDP 서비스를 종료한 후 RDP 서비스를 담당하는 “termsrv.dll”을 수정할 수 있도록 권한을 부여한다. 이후 “termsrv.dll” 파일을 “termsrv.pdb”라는 이름으로 변경하고 %APPDATA% 경로에 이미 존재하는 “termsrv.dll”을 %SystemDirectory% 경로에 복사한다.

Figure 7. 다중 세션을 지원하기 위해 패치된 termsrv.dll로 변경하는 루틴

일반적으로 윈도우 데스크톱 환경에서는 서버와 달리 RDP 연결 시 하나의 세션만 지원한다. 이에 따라 다른 사용자라고 하더라도 하나의 시스템에는 하나의 세션만 지원하기 때문에 만약 공격자가 원격으로 시스템에 접속할 경우 기존 사용자는 연결이 끊기게 된다. 미미카츠나 Kimsuky 그룹의 다른 악성코드들은 현재 실행 중인 RDP 서비스 프로세스의 메모리를 패치하여 이를 우회한다.

하지만 현재 공격에 사용된 악성코드는 기존 정상 “termsrv.dll”을 직접 패치한 “termsrv.dll” 파일로 변경하는 방식이 사용되었다. 공격자가 미리 %APPDATA% 경로에 생성했던 “termsrv.dll”은 정상 “termsrv.dll” 파일과 비교하면 CDefPolicy::Query() 함수가 패치된 것을 알 수 있다.

  • 정상 termsrv.dll의 CDefPolicy::Query() 함수 루틴 : 39 81 3C 06 00 00 0F 84 E7 43 01 00
  • 패치된 termsrv.dll의 CDefPolicy::Query() 함수 루틴 : B8 00 01 00 00 89 81 38 06 00 00 90

여기까지의 과정이 끝나면 이후 감염 시스템을 제어하기 위한 계정으로써 “IIS_USER”라는 이름의 계정을 생성하고 관리자 그룹에 등록한다. 참고로 계정이 추가되면 로그온 시 추가된 계정이 함께 보이기 때문에 시스템의 사용자가 이를 인지할 수 있다. 이를 막기 위해 악성코드는 SpecialAccounts에 생성한 “IIS_USER” 계정을 등록하여 로그온 시에도 보이지 않게 한다.

Figure 8. 사용자 계정을 등록하고 은폐하는 명령들
  • multiple.exe의 PDB 정보 – 1 : Z:\5-program\multiple\multisession_complete\multisession_complete\Release\x64\Multisession.pdb
  • multiple.exe의 PDB 정보 – 2 : G:\0711_uac_multiple_work\multisession_complete\multisession_complete\x64\Release\Multisession.pdb


2.3. RevClient

RevClient는 RDP 관련 악성코드로서 C&C 서버로부터 명령을 전달받아 동작하며 명령에 따라 사용자 계정 작업 및 포트 포워딩을 수행할 수 있다. 다음은 공격에 사용된 RevClient의 설정 데이터로서 해당 악성코드가 “1.0” 버전임을 알 수 있으며 뮤텍스 이름으로는 “ZhengReversePC”라는 문자열이 사용된 것이 특징이다. 실질적인 설정 데이터는 Base64로 암호화된 “AllSettings” 문자열에 포함되어 있다.

Figure 9. RevClient의 설정 데이터

Base64 문자열을 복호화 하면 나머지 설정 데이터도 확인이 가능하다.

설정데이터
버전“1.0”
뮤텍스“ZhengReversePC”
Host IP5.61.59[.]53
Host Port0
MSTSC (RDP) IP127.0.0.2
MSTSC (RDP) Port3389
Main (C&C) Port2086
Table 1. RevClient의 설정 데이터

C&C 주소는 Host IP 주소와 Main Port를 조합해 만들어 접속한다. 이후 감염 시스템에 대한 기본적인 정보를 수집하여 전달한 후 응답으로 설정이나 명령을 전달받는다.

  • C&C 주소 : 5.61.59[.]53:2086
항목데이터
시그니처 문자열“NAT”
감염 시스템 정보[User Name]@[PC Name]를 Base64로 암호화한 문자열
운영체제 정보운영체제 정보
버전“1.0”
Host Port처음에는 0을 갖으며 이후 C&C 서버로부터 전달받을 수 있다.
Table 2. C&C 서버에 전달하는 데이터

응답은 “;”를 구분자로 하여 4개로 나누어져 있으며 명령에 따라 사용하는 항목이 정해져 있다. 처음 응답으로는 4번째 항목인 Host Port 번호가 전달될 것으로 추정되며 이후 응답에서는 3번째 항목인 명령 번호와 함께 추가적인 데이터가 전달될 것이다.

응답데이터
사용자 계정 이름사용자 계정 추가 또는 삭제에 사용 (Base64 암호화)
사용자 계정 비밀번호사용자 계정 추가에 사용 (Base64 암호화)
명령명령 번호
Host Port포트 포워딩 용 포트 번호
Table 3. 명령 구조
Figure 10. 명령 수행 루틴
명령데이터
100포트 포워딩 시작
200사용자 계정 삭제
300사용자 계정 추가 및 은폐
400포트 포워딩 종료 및 Host Port 초기화
500포트 포워딩 종료
Table 4. 명령 목록

“100” 명령이 전달되면 이전에 전달받은 Host Port 번호를 조합해 5.61.59[.]53:(HostPort) 주소에 연결한 이후 해당 주소와 127.0.0.2:3389 주소를 연결해 준다. 일반적으로 RDP 관련 포트 포워딩 도구들은 외부에서 공격자가 NAT 환경에 직접 접근할 수 없는 점을 극복하기 위해 사용된다. 즉 리버스 커넥션 방식으로 공격자의 주소에 먼저 연결한 이후 감염 시스템의 RDP 포트에 연결하여 두 개의 통신을 중개해 준다.

Figure 11. 포트 포워딩 루틴

참고로 RevClient는 위의 “multiple.exe”와 유사한 기능이 구현된 NewConcurrentRDPatcher() 함수가 구현되어 있다. 차이점이 있다면 이미 패치된 “termsrv.dll” 파일을 변경하는 “multiple.exe”와 달리 NewConcurrentRDPatcher() 함수는 윈도우 버전에 따라 직접 “termsrv.dll” 파일을 패치하고 변경한다. 비록 NewConcurrentRDPatcher() 함수를 실행하는 루틴은 존재하지 않지만 RevClient의 다른 버전에서는 C&C 서버의 명령을 통해 또는 초기화 루틴에서 해당 작업을 수행할 것으로 보인다.

Figure 12. RevClient의 RDP 패치 루틴


3. 결론

Kimsuky 위협 그룹은 감염 시스템을 제어하고 정보를 탈취하기 위해 RDP를 지속적으로 악용하고 있다. RDP는 이외에도 무차별 대입 공격 및 사전 공격을 이용한 초기 침투 과정이나 측면 이동 과정에서 사용 가능하다. RDP는 윈도우 시스템에서 기본적으로 설치되어 있는 서비스 중 하나이기 때문에 이를 탐지하거나 예방하기 위해서는 적절한 관리가 필요하다.

사용자들은 의심스러운 메일을 받게 된다면 첨부 파일의 실행을 지양해야 하며, 외부에서 프로그램 설치 시 공식 홈페이지에서 구매하거나 다운로드하는 것을 권장한다. 그리고 계정의 비밀번호를 복잡한 형태로 사용 및 주기적으로 변경해야 한다.

또한 V3를 최신 버전으로 업데이트하여 악성코드의 감염을 사전에 차단할 수 있도록 신경 써야 하며 엔드포인트 보안 제품(V3) 뿐만 아니라 MDS와 같은 샌드박스 기반의 APT 솔루션을 도입하여 사이버 공격에 대한 피해를 예방해야 한다.

안랩 MDS 샌드박스에서는 RDP를 패치하여 다중 세션을 활성화하는 악성코드를 “Execution/MDP.Command.M10645” 진단명으로 탐지하고 있다.

Figure 13. 안랩 MDS 제품의 악성코드 탐지 화면
Figure 14. 파일 소유권 변경 행위 탐지

파일 진단
– Trojan/Win.Agent.C5502241 (2023.10.08.03)
– Trojan/Win.Injector.C5502245 (2023.10.08.03)
– Backdoor/Win.RevClient.R609964 (2023.10.08.03)
– Trojan/Win.Agent.R5502241 (2023.10.08.03)
– Backdoor/PowerShell.XRatLoader.SC192386 (2023.09.13.00)
– Trojan/VBS.KeylogLoader.SC192383 (2023.09.13.00)
– Keylogger/PowerShell.Agent (2023.09.13.00)
– Data/BIN.Encoded (2023.09.13.00)

행위 진단
– Execution/MDP.Command.M10645

AMSI 진단
– Trojan/Win.Injector.C5485760

IOC
MD5

– ad9a3e893abdac7549a7d66ca32142e8 : Keylogger 런쳐 – BabyShark (OneNote.vbs)
– 116a71365b83cc38211ccfc8059b363e : Keylogger – BabyShark (k.ps1)
– c8d589ac5c872b12e502ec1fc2fee0c7 : Loader – BabyShark (pow.ps1)
– 0d6717c3fa713c5f5f5cb0539b94b84f : Injector – BabyShark (desktop.r7u)
– 0d691673af913dc0942e55548f6e2e4e : Injector (process.exe)
– 2dbe8e89310b42e295bfdf3aad955ba9 : RDP Pacher (multiple.exe)
– 7313dc4d9d6228e442fc6ef9ba5a1b9a : RDP Pacher (multiple.exe)
– be2f73a637258aa872bdf548daf55336 : RevClient (RevClient.exe)
– 02804d632675b2a3711e19ef217a2877 : RevClient (RevClient_x86.exe)

C&C
– hxxps://onessearth[.]online/up/upload_dotm.php : BabyShark
– hxxps://powsecme[.]co/up/upload_dotm.php : BabyShark
– 5.61.59[.]53:2086 : RevClient

샌드박스 기반 동적 분석으로 알려지지 않은 위협을 탐지 대응하는 AhnLab MDS에 대한 자세한 정보는 안랩닷컴에서 확인이 가능하다.

Categories:안랩 탐지

Tagged as:,,

5 2 votes
별점 주기
Subscribe
Notify of
guest

0 댓글
Inline Feedbacks
View all comments