귀신 랜섬웨어의 실체를 파헤치다

지난해 등장한 귀신(Gwisin) 랜섬웨어는 이름에서 알 수 있듯 소위 ‘한국형’ 랜섬웨어로 국내 여러 기업/기관들을 공격해왔다. 안랩은 그 동안 귀신 랜섬웨어의 활동을 면밀하게 추적 및 분석해왔고 최초 침투부터 랜섬웨어 실행까지 단계 별로 유의미한 특징들을 도출해냈다.

 

이번 글에서는 귀신 랜섬웨어의 전체적인 동작 방식과 보안 시사점을 살펴본다.

귀신(Gwisin) 랜섬웨어는 매그니베르(Magniber) 랜섬웨어와 동일하게 MSI 설치 파일 형태로 동작하지만, 불특정 다수를 대상으로 유포되는 매그니베르와 달리 특정 기업을 타겟으로 제작되어 유포되고 있다. 참고로, MSI 파일이란 윈도우 인스톨러 패키지 파일을 뜻한다.

 

귀신 랜섬웨어는 파일 실행만으로는 악성 행위가 발현되지 않으며, 특별한 실행 인자 값이 필요하다. 이 때문에, 샌드박스 기반 보안 제품에서 파일을 실행하는 것만으로는 악성 행위가 발생하지 않아 탐지가 어려울 수 있다.

 

아래는 귀신 랜섬웨어 동작 방식의 특징을 요약한 것이다.

(1) MSI 설치 파일 형태로 유포

(2) MSI 실행 시 사용한 인자 값을 통해 내부 DLL 구동에 사용

(3) 윈도우 시스템 프로세스에 인젝션하여 랜섬웨어 행위

(4) DLL 내부에 감염 대상 기업 정보 존재 (랜섬노트에 표시)

(5) 안전 모드에서 파일 암호화 기능 지원

 

다음으로, 실제 귀신 랜섬웨어 감염 사례를 통해 구체적인 공격 방식을 알아본다.

 

1. 최초 침투 방법​

공격자는 외부에 공개되어 있는 공격 대상의 서버에 침투한 후, 해당 서버를 거점으로 내부 인프라에 랜섬웨어를 배포한다. 내부 인프라에 랜섬웨어를 배포하기 위해 ▲SFTP ▲WMI ▲통합관리솔루션 ▲IIS 웹서비스 등 다양한 방법을 사용하는데, 이번에 분석한 사례에서는 IIS 웹서비스를 통해 랜섬웨어를 배포했다.

 

서버 침투 방식을 보면, 웹 서버를 대상으로 웹 해킹 공격을 직접 수행해 침투한다. 스피어피싱(Spear Phishing), 워터링 홀(Watering Hall) 등의 기법을 활용해 사용자 PC를 장악하고, 관리자 권한을 획득하여 기업 내부 네트워크 시스템에 랜섬웨어를 전파 및 실행시키는 최근 악성코드의 공격 방식과는 차이가 있다.

 

공격자는 랜섬웨어를 유포하기에 앞서, 외부에 노출된 웹 서버를 대상으로 스캐닝 및 SQL 인젝션을 수행한다. 목적은 시스템 계정 정보 탈취로 추정된다. 공격 흔적을 보면, MS SQL 서버를 대상으로 작성된 SQL 인젝션 공격 코드가 리눅스 서버에서 발견된 경우도 있는데, 자동화된 공격 도구를 이용해 무차별 공격을 수행하는 것으로 보인다.

 

[그림 1] 리눅스 서버에서 발견된 귀신 랜섬웨어 공격자의 SQL 인젝션 공격 코드

 

웹 서버 공격 성공 후에는 ‘웹쉘(WebShell)’을 사용한다. 웹 애플리케이션 서버(WAS)에 있는 기존 PHP 파일에 웹쉘을 삽입한 경우도 있고, 독립적인 웹쉘 파일을 생성한 경우도 있다. 다만, 어떤 방법으로 웹쉘 코드를 기존 파일에 삽입했는지, 혹은 파일을 업로드했는지는 아직 확인되지 않았다.

 

또한, 공격자는 리버스 커넥션을 맺기 위해 파이썬(Python)으로 작성된 ‘리버스 쉘(Reverse Shell)’ 코드도 이용한다. 기존 시스템에 있는 ‘init’ 계열 리눅스 쉘 스크립트에 리버스 쉘 역할을 수행하는 service_issue() 함수를 추가하는데, 해당 함수를 통해 TCP 소켓을 생성하고 공격자 서버에 접속한 뒤, ‘sh’를 실행하여 공격자에게 리눅스 쉘을 제공한다.

 

*용어 참고:

▶웹쉘: 웹서버 취약점을 통해 업로드되어 시스템에 명령을 내릴 수 있는 코드.

▶​리버스 커넥션: 서버(공격 대상)에서 클라이언트(공격자)로 역으로 연결하는 것.

▶​리버스 쉘: 서버에서 클라이언트 쪽으로 접속해 통신할 수 있도록 하는 코드.

​​▶init 프로세스: 리눅스/유닉스 시스템이 부팅될 때 가장 먼저 실행되는 프로세스.

▶​sh: 리눅스에서 사용되는 명령어 인터페이스

 

[그림 2] 공격자가 삽입한 리버스 쉘 코드

 

2. 침해 후 행위​

공격자는 리눅스 시스템을 장악한 뒤, RPM(RedHat Package Manager)을 이용해 NMAP(네트워크 스캐닝 툴)을 설치한다. 그리고, 내부 시스템에 대한 포트 스캔을 수행하여 추가 공격 대상을 식별한다.

 

[그림 3] 설치된 NMAP 확인

 

[그림 4] NMAP을 이용한 스캐닝 결과

 

3. 내부 이동

공격자는 공격 대상을 식별하고 내부 네트워크의 윈도우 시스템을 장악한 뒤, 추가 크리덴셜(Credential) 획득을 시도한다. 이를 위해 lsass.exe 프로세스의 메모리를 풀 메모리 덤핑(Full Memory Dumping)하는 서비스를 등록하고, 메모리 덤프를 확보한다.

 

*용어 참고:

▶lsass.exe: Local Security Authority Subsystem Service의 약자로 로그인 검사, 비밀번호 관리 등을 수행하는 윈도우 기본 프로세스

▶메모리 덤프: 메모리와 프로그램 상태를 기록한 것

 

[그림 5] lsass.exe 덤핑 서비스 등록 이벤트 로그

 

이렇게 크리덴셜을 확보하고 나면, 다른 시스템에 리버스 커넥션 명령을 전달한다. 명령을 전달받은 피해 시스템 중 인터넷 접속이 가능한 시스템의 경우, 공격자의 C2 서버에 접속된다. 즉, 공격자는 외부에서 내부 시스템을 직접 제어할 수 있게 되는 것이다.

 

[그림 6] 공격자 IP로 리버스 커넥션을 시도한 흔적

 

4. 랜섬웨어 배포 방법

공격자는 피해 조직 내부 시스템에 랜섬웨어를 전파하기 위해, 최초 장악한 시스템에 IIS 웹 서비스를 설치한다. 이후, ‘웹 루트 디렉토리(C:\inetpub\wwwroot)’에 랜섬웨어 파일을 생성 및 배포한다.

▶윈도우용 랜섬웨어 파일: x64_install.msi

▶리눅스용 랜섬웨어 파일: x64_nix, x86_nix

 

[그림 7] IIS 서비스 설치 이벤트 로그 일부

 

공격자가 내부 시스템에 설치한 IIS 웹 서비스를 사용하면, AD 정책 혹은 WMI 명령을 통해 도메인에 연결되어 있는 여러 시스템에 랜섬웨어를 쉽게 유포할 수 있다. 또한, 인터넷을 통해 악성코드 배포 서버에 직접 접근할 필요가 없어, 외부 인터넷 접근이 어려운 내부 시스템에도 랜섬웨어를 배포할 수 있다.

 

[그림 8] 랜섬웨어 다운로드 및 실행 명령

 

공격자가 랜섬웨어를 다운로드하고 실행하는 명령은 [그림 8]과 같다. 명령이 수행되면 IIS 웹 루트 경로에 있는 랜섬웨어 파일 ‘x64_install.msi’이 다운로드 및 실행되는 형태다.

 

5. 랜섬웨어 실행, 그리고 암호화

서두에 귀신 랜섬웨어 실행을 위해서는 특정 인자 값이 필요하다고 언급한 바 있다. MSI 파일이 실행되면 내부 랜섬웨어 DLL의 익스포트 함수 update()를 호출하는데, 함수는 실행 시 인자를 검사하며 비정상적일 경우 동작하지 않는다. 즉, 올바른 인자값 입력이 필요하다.

 

[그림 9] MSI 파일 실행 시 인자를 검증하는 루틴

 

그리고, 귀신 랜섬웨어는 암호화 시점에 [그림 10]과 같은 인자로 실행된다.

 

[그림 10] 랜섬웨어 실행 명령

 

각 인자가 의미하는 바는 다음과 같다.

▶LICENSE: 인코딩된 랜섬웨어를 복호화 하는 키 - SERIAL과 조합하여 복호화 키 생성

▶​SERIAL: 인코딩된 랜섬웨어를 복호화 하는 키 - LICENSE와 조합하여 복호화 키 생성

▶​SMM: System Management Mode의 약자, 0과 1의 인자값을 갖는다.

- ​0: 일반적인 파일 암호화

- 1: 안전모드에서 동작

 

SMM에 대한 설명을 부연하면, 일반적인 파일 암호화 행위는 SMM이 0인 경우에 진행되는 루틴이다. 만약 SMM이 1이라면, 안전모드에서 암호화가 동작하도록 하는 방식이다.

 

귀신 랜섬웨어는 자신을 ProgramData의 특정 경로에 복사한 후 서비스에 등록한다. 이후 bcdedit을 이용해 부팅 옵션을 안전모드로 설정한다. 마지막으로, 5초 후에 강제로 재부팅하고, 안전모드로 부팅한 후 등록한 서비스가 동작하여 파일 암호화를 진행한다.

 

한편, 인자 검증 과정이 끝나면 검증된 인자를 이용해 내부에 있는 쉘코드를 복호화한다. 그리고 정상 프로그램인 ‘certreq.exe’를 실행한 후, 복호화한 쉘코드를 인젝션한다. 인젝션된 쉘코드는 최종 귀신 랜섬웨어를 복호화하여 메모리 상에서 실행하는 기능을 담당한다. 참고로, ‘certreq.exe’ 외에도 다양한 윈도우 정상 프로세스가 랜섬웨어 행위 주체로 이용되고 있다.

 

[그림 11] 귀신 랜섬웨어 프로세스 트리

 

랜섬웨어에 의해 파일이 암호화되면, 파일에 피해 기업 이름과 유사한 확장자가 추가된다. 또한 동일한 경로에 확장자 끝에 ‘0’이 붙은 파일도 추가로 생성되는데, 이 파일은 원본 파일 복구 시 필요한 정보를 담고 있다.

 

[그림 12] 랜섬웨어에 감염된 파일

 

그리고, 랜섬노트가 생성된다. 랜섬노트 파일명과 본문에는 피해 기업을 식별할 수 있는 문자열이 포함된다. 랜섬노트에는 공격자와 연락이 가능한 URL 주소와 해당 사이트에 로그인할 수 있는 계정과 비밀번호가 들어있다.

 

[그림 13] 귀신 랜섬웨어 랜섬노트 (!!!_HOW_TO_UNLOCK_FILES_!!!.TXT)

 

[그림 14] 랜섬웨어 감염 이후 변경되는 바탕화면

 

귀신 랜섬웨어는 파일을 암호화한 후에 시스템의 이벤트 로그와 랜섬웨어 파일을 삭제한다.

 

귀신 랜섬웨어 상세 정보

이번 사례에서 확인된 귀신 랜섬웨어의 파일 진단명과 MD5 및 상세 분석 내용을 정리하면 다음과 같다.

 

 

파일 진단

▶​Ransomware/Win.Gwisin (2022.07.27.03)

▶​Trojan/Linux.Agent (2022.08.05)

 

파일 MD5

▶​13EEF02D5E5F5543E83AD8C8A8C8FF9A

▶​95237D0C6E6B1822CECCA34994C0D273

 

IP/URL

▶​158.247.221[.]23

 

시사점

지금까지, 귀신 랜섬웨어의 구체적인 공격 방식을 살펴봤다. 공격 단계 별로 파악한 귀신 랜섬웨어의 특징을 토대로, 다음과 같이 보안 시사점을 제시한다.

 

A. 웹 취약점 점검 및 DB 보안 강화

공격자는 웹 서버를 대상으로 웹 해킹 공격을 직접 수행하여 침투한 뒤, 해당 서버를 거점으로 내부 인프라에 랜섬웨어를 배포했다. 따라서 기업들은 웹 해킹 공격에 대한 근본적인 대응을 위해 웹 취약점을 점검하고, 연동되어 있는 데이터베이스(DB) 보안을 강화해야 한다.

 

B. 방화벽 아웃바운드 보안 강화

공격자는 최초 침투한 이후 리버스 쉘을 통해 리버스 커넥션을 맺고 C2 통신을 진행한다. 이는 보통 방화벽 정책을 인바운드(Inbound) 포트 위주로 관리하는 허점을 노린 것이다. 따라서, 방화벽 아웃바운드(Outbound) 포트에 대해서도 정책 강화 및 모니터링이 필요하다.

 

C. V3 ‘행위 기반 진단 사용’ 옵션 활성화

공격자는 백신 프로그램을 무력화하기 위해 안전모드로 부팅 후 랜섬웨어를 실행했다. V3는 행위 기반 탐지를 통해 이러한 동작 방식을 인젝션 단계에서 사전 차단하고 있다. 따라서, V3의 ‘행위 기반 진단 사용’ 옵션을 활성화해야 한다.

 

D. EDR 솔루션 활용

귀신 랜섬웨어와 같이 고도화된 기법을 활용하는 공격 대응을 위해서는 엔드포인트 보안 위협을 상시 탐지하고, 침해를 빠르게 인지할 수 있도록 하는 EDR(Endpoint Detection & Response) 솔루션을 도입해 운영하는 것이 효과적이다. 특히, EDR은 백신과 함께 운영할 경우 위협 탐지와 차단이라는 측면에서 시너지를 낼 수 있다.

 

E. 시스템 장악 & 랜섬웨어 전파 과정 분석

귀신 랜섬웨어는 침투 후, 공격 대상 사전 식별을 거쳐 내부 시스템을 장악하고 랜섬웨어를 배포해 실행했다. 따라서, 귀신 랜섬웨어에 감염되었을 경우 내부 시스템에 대한 장악과 전파가 어떻게 진행되었는지 분석하는 작업이 필요하다. 원인을 분석하지 못하면, 또 다른 종류의 랜섬웨어로부터 유사한 피해를 입을 수 있다.

 

F. 백업 시스템 점검

공격자는 랜섬웨어 실행 후, 시스템의 이벤트 로그를 모두 삭제했다. 이에, 이벤트 로그 백업 서버를 운영하고, 이에 대한 정기적 검토가 필요하다.

 

 

출처 : AhnLab

02-553-2331
견적 요청
카카오톡 문의