
2024년 11월, 공격자는 인터넷에 노출된 RDP 서버를 대상으로 Password Spray 공격을 수행하고, 관리자 권한이 부여된 사용자 계정으로 RDP 세션에 접속했다. 이후 내부 시스템을 탐색하고 추가 자격 증명을 탈취해 도메인 컨트롤러, 파일 서버, 백업 서버, 하이퍼바이저 서버로 이동했다.
공격자는 중요 자료를 Rclone과 SFTP를 이용해 외부로 유출한 후 RansomHub 랜섬웨어를 배포했다. 최초 침입부터 랜섬웨어 실행까지는 약 118시간(6일)이 소요됐다.
공격자는 인터넷에 노출된 RDP 서버를 대상으로 약 4시간 동안 여러 사용자 계정에 로그인 시도를 수행했다. 사용된 출발지 IP는 동일 ISP 대역의 두 개 IP였으며, OSINT 상으로도 방화벽·관리 인터페이스에 대한 인증 공격 이력이 확인된 IP였다.
Password Spray는 하나 또는 소수의 공통 비밀번호를 여러 계정에 대입하는 방식으로, 계정별 로그인 실패 횟수를 낮게 유지해 계정 잠금 정책과 단순 임계치 기반 탐지를 회피한다. 이번 사고에서는 동일 출발지 IP가 여러 계정에 낮은 실패 횟수로 접근한 끝에 6개 사용자 계정의 인증에 성공했다.
동일한 출발지 IP
+ 여러 사용자 계정에 로그인 시도
+ 계정별 로그인 실패 횟수는 적음
+ 일부 계정에서 인증 성공
Password Spray가 시작된 약 4시간 뒤, 공격자는 인증에 성공한 계정 중 하나를 이용해 RDP 서버에 접속했다. 로그인 이벤트에서는 Logon Type: 10(RemoteInteractive)과 Elevated Token: Yes가 확인됐다. 즉 공격자는 최초 RDP 접속 단계부터 관리자 권한을 가진 세션을 확보한 상태였다.
특히 실제 RDP 침입에 사용된 IP(164.138.90.2)는 Password Spray를 수행한 IP와 달랐다. 따라서 동일한 IP에서 발생한 로그인 실패와 성공만 연결해서 분석하면 실제 침입을 놓칠 수 있으며, Password Spray 대상이 된 계정을 기준으로 이후의 로그인 이벤트를 추적해야 한다.
RDP 접속에 성공한 공격자는 Windows 기본 명령어와 네트워크 스캐너를 이용해 침해 시스템과 내부 네트워크를 조사했다.
확인된 주요 명령어는 다음과 같다.
nslookup
net user / net group
nltest
ipconfig
route
ping
공격자는 이를 통해 다음 정보를 확인한 것으로 분석된다.
Advanced IP Scanner와 SoftPerfect NetScan도 내부 시스템과 서비스 탐색에 사용됐다.
Advanced IP Scanner는 공식 사이트에서 다운로드해 도메인 관리자 계정의 Downloads 폴더에서 3회 실행하고 매번 삭제하는 패턴을, NetScan은 여러 호스트의 Desktop 폴더에 배포되어 반복 실행되는 패턴을 보였다. NetScan이 공유 폴더 쓰기 권한을 확인할 때는 delete.me라는 파일이 원격 호스트에 생성되는 특징적인 흔적을 남긴다.
도메인 관리자 권한 확보 이후에는 dnsmgmt.msc, domain.msc, dssite.msc, dsa.msc 등 MMC 스냅인을 여러 도메인 컨트롤러에서 GUI로 직접 실행해 DNS, 도메인/포리스트 트러스트, AD 사이트 복제 토폴로지, 사용자·그룹 정보를 확인했다.
공격자는 CredentialsFileView로 Windows에 저장된 자격 증명 파일을 확인한 뒤, Mimikatz로 lsass.exe 프로세스 메모리에 접근해 추가 계정의 자격 증명을 추출했다(sekurlsa::logonpasswords 계열 명령 사용 정황).
CredentialsFileView 실행
→ 저장된 자격 증명 확인
→ Mimikatz 실행
→ lsass.exe 프로세스 접근
→ 추가 계정의 자격 증명 확보
여기에 더해, 공격자는 여러 호스트에서 Mimikatz를 실행하면서 자식 도메인(child domain)명으로 이름 붙인 CSV 결과 파일을 다수 생성했다. 이는 Active Directory 동기화 관련 이벤트(Event ID 4662)와 함께 관찰되는데, 전체 계정을 동기화(DCSync)했다기보다는 확보한 도메인 관리자 계정이 여러 자식 도메인에서 동일한 비밀번호로 통용되는지를 확인하려는 목적으로 분석된다.
lsadump::dcsync /domain:CHILD.DOMAIN.EXAMPLE /user:DOMAINADMINUSER /csv > CHILD.csv
이를 통해 공격자는 최초 침입에 사용한 계정 외에도 여러 도메인에서 통용 가능한 고권한 계정을 확보했다.
최초 RDP 침입 후 약 2시간 뒤, 공격자는 가장 먼저 도메인 컨트롤러 2대로 이동했다. 이 시점부터 확보한 계정이 도메인 관리자 권한을 갖고 있었던 것으로 보인다.
이후 같은 날 백업 서버, 파일 서버, 하이퍼바이저 서버, 추가 도메인 컨트롤러로 이동을 확장했으며, 각 시스템에서 net 명령과 Mimikatz를 반복 수행했다. 첫날 마지막에는 확보한 고권한 계정으로 여러 파일 공유 서버에 접속해 문서를 열람했고, 2일 차에는 Beachhead 호스트로 돌아와 Advanced IP Scanner와 NetScan을 재실행해 더 폭넓은 네트워크 매핑을 수행했다.
5일 차에는 공격자가 도메인 컨트롤러를 포함한 여러 호스트에서 net 명령으로 다수 사용자 계정의 비밀번호를 동일한 값으로 초기화했다. 이 시점은 랜섬웨어 배포 직전과 맞물려 있어, 내부 확산을 돕거나 관리자의 계정 접근을 차단하려는 의도로 추정된다.
공격자는 백업 서버 2대에 Atera RMM 도구를 설치해 기존 RDP 연결이 차단되더라도 정상 관리 트래픽으로 위장해 재접속할 수 있는 수단을 마련했다.
5일 차에는 그중 한 백업 서버에 설치된 Splashtop을 통해 재접속했으며, 이 세션으로 NetScan 재실행, 도메인 컨트롤러 접속, 비밀번호 초기화, 랜섬웨어 바이너리 반입까지 수행했다. 즉 Atera는 지속성 확보용, Splashtop은 실제 재접속 경로로 역할이 구분됐다.
백업 서버 2대에 Atera 설치 (지속성 확보)
→ (5일 차) 백업 서버 1대의 Splashtop으로 재접속
→ NetScan 재실행 → DC 접속 → 계정 비밀번호 초기화
→ 랜섬웨어 바이너리 반입 및 실행
3일 차 시작 시점, 공격자는 여러 파일 서버에서 Rclone을 이용한 데이터 유출을 수행했다. nocmd.vbs가 rcl.bat을 백그라운드로 실행하고, rcl.bat은 include.txt에 정의된 확장자(문서·스프레드시트류 외에 .pst, .msg, .edb, .mbox 등 이메일·DB 파일 포함) 목록을 기준으로 Rclone 작업을 수행했다.
외부 통신은 목적지 443번 포트로 이뤄졌지만 실제 프로토콜은 SFTP였으며, 약 40분간 총 2.03GB가 전송됐다. 이는 포트 번호만으로 프로토콜을 단정해서는 안 된다는 점을 보여준다.
공격자는 흔적을 완전히 지우지는 않았지만, 유출로부터 약 20시간 뒤 파일 서버로 다시 접근해 Rclone 관련 파일을 삭제하는 정리 행위를 수행했다.
중요 파일 탐색
→ 수집 대상 파일 선별 (include.txt)
→ nocmd.vbs → rcl.bat → rclone 실행
→ 외부 서버(443/tcp, 실제 프로토콜 SFTP)로 연결
→ 약 40분간 2.03GB 전송
6일 차, 공격자는 Splashtop 세션으로 반입한 amd64.exe를 cmd.exe에서 직접 실행했다. 랜섬웨어는 실행과 함께 다음 사전 조치를 수행했다.
Stop-VM -Force)fsutil로 원격→로컬/원격 심볼릭 링크 평가를 허용하도록 설정 변경 (원격 전파를 원활히 하기 위한 조치로 추정)vssadmin으로 섀도 복사본 삭제, wevtutil로 Security/System/Application 이벤트 로그 삭제이후 실행 파일은 SMB를 통해 다른 시스템으로 복사됐으며, 무작위 6자리 이름의 원격 Windows 서비스를 생성해 실행됐다(-only-local 플래그로 전파 루프 방지). 최초 침입부터 랜섬웨어 실행까지는 약 118시간(6일)이 소요됐다.
| 단계 | 주요 행위 |
|---|---|
| 최초 접근 | 인터넷에 노출된 RDP 서버를 대상으로 Password Spray 수행 |
| 세션 확보 | 탈취한 계정으로 관리자 권한 RDP 세션 생성 (Elevated Token) |
| 탐색 | 도메인·시스템·네트워크 정보 수집, MMC 스냅인 활용 |
| 자격 증명 접근 | 저장된 자격 증명, LSASS 메모리, 다중 도메인 계정 유효성 확인 |
| 내부 이동 | RDP를 이용해 DC → 백업·파일·하이퍼바이저 서버로 확장 이동 |
| 지속적 접근 | Atera(백업 서버 2대) 설치, 이후 Splashtop으로 재접속 |
| 정보 수집 | 문서, 이메일, DB 백업 등 중요 파일 수집 |
| 외부 유출 | Rclone과 SFTP를 이용해 약 2.03GB 자료 전송 |
| 흔적 정리 | 유출 20시간 후 Rclone 관련 파일 삭제 |
| 확산 준비 | 다수 계정 비밀번호 초기화 |
| 영향 | VM 종료, RansomHub 배포, 파일 암호화 및 복구 방해 |
하나 또는 소수의 공통 비밀번호를 여러 계정에 대입하는 방식이다. 계정별 실패 횟수는 낮게 유지되므로, 단일 계정의 실패 횟수보다 동일 출발지 IP가 접근한 고유 계정 수를 함께 확인해야 한다.
이번 사례에서는 외부에서의 최초 침투와 내부 시스템 간 이동에 모두 사용됐다. RDP는 정상적인 관리 기능이므로 출발지 IP, 로그인 계정, Logon Type 10, 관리자 권한 여부(Elevated Token), 접속 직후 실행된 프로세스, 평소 사용 여부를 함께 확인해야 한다.
NirSoft 유틸리티로 Windows에 저장된 자격 증명 파일을 복호화할 수 있다. 정상 보안 점검에도 쓰이지만, 외부 RDP 침입 직후 사용자 Desktop 등 비표준 경로에서 실행됐다면 탈취 가능성을 확인해야 한다(Event ID 5379).
lsass.exe 프로세스 메모리에서 자격 증명을 추출하는 도구로, 이번 사고에서는 자식 도메인별 결과 파일을 나눠 생성하며 계정의 다중 도메인 통용 여부를 검증하는 데도 활용됐다(DCSync 유사 패턴). 보안 프로그램도 LSASS에 접근할 수 있으므로 접근 프로세스의 경로·서명·계정·요청 권한을 함께 확인해야 한다.
내부 네트워크의 시스템·서비스·포트·공유 자원을 탐색하는 스캐너다. 정상적인 자산 관리에도 쓰이지만, 외부 RDP 로그인 직후 서버에서 갑자기 실행되거나 짧은 시간에 다수 내부 IP·포트로 연결한다면 침해 가능성을 검토해야 한다.
정상적인 원격 관리 도구지만, 이번 사고에서는 Atera(백업 서버 2대, 지속성 확보)와 Splashtop(실제 재접속 경로)으로 역할이 구분됐다. 조직 승인 여부, 설치 계정·시간, 등록된 서비스(Event ID 7045), 연결한 외부 관리 서버를 함께 확인해야 한다.
클라우드·원격 저장소 간 파일 동기화를 지원하는 정상 프로그램이지만, 대용량 전송이 가능해 데이터 유출에 악용된다. 이번 사고에서는 VBS/배치 스크립트로 은닉 실행됐고, 443번 포트로 위장한 SFTP 트래픽을 사용했다. 실행 경로, 전체 명령줄, 구성 파일, 목적지 IP·포트, 전송량을 확인해야 한다.
랜섬웨어 실행 파일이 SMB로 전파되고, 무작위 6자리 이름의 원격 서비스(Event ID 7045)로 실행됐다. 동일 크기의 무작위 파일명이 다수 시스템에 짧은 시간 내 생성된다면 확산 가능성을 확인해야 한다.
파일 암호화 외에도 Hyper-V VM 강제 종료, 심볼릭 링크 평가 설정 변경, 섀도 복사본·이벤트 로그 삭제 등 복구·전파 방해 행위를 함께 수행했다.
| 순서 | 공격 행위 | Tactic | Technique | ATT&CK ID |
|---|---|---|---|---|
| 1 | 여러 계정에 공통 비밀번호 대입 | Credential Access | Brute Force: Password Spraying | T1110.003 |
| 2 | 탈취한 계정으로 로그인 | Initial Access | Valid Accounts | T1078 |
| 3 | 인터넷에 노출된 RDP 서비스 이용 | Initial Access | External Remote Services | T1133 |
| 4 | 로컬 계정 정보 확인 | Discovery | Account Discovery: Local Account | T1087.001 |
| 5 | 도메인 계정 정보 확인 | Discovery | Account Discovery: Domain Account | T1087.002 |
| 6 | 도메인 신뢰 관계 탐색 (nltest) | Discovery | Domain Trust Discovery | T1482 |
| 7 | 내부 호스트와 서비스 탐색 | Discovery | Network Service Discovery | T1046 |
| 8 | LSASS 메모리에서 자격 증명 추출 | Credential Access | OS Credential Dumping: LSASS Memory | T1003.001 |
| 9 | 자식 도메인별 계정 유효성 확인 | Credential Access | OS Credential Dumping: DCSync | T1003.006 |
| 10 | RDP를 이용한 내부 이동 | Lateral Movement | Remote Services: Remote Desktop Protocol | T1021.001 |
| 11 | Atera·Splashtop을 이용한 원격 접속 | Command and Control | Remote Access Software | T1219 |
| 12 | 원격 관리 도구 등을 서비스로 등록 | Persistence | Create or Modify System Process: Windows Service | T1543.003 |
| 13 | SMB를 통해 랜섬웨어 파일 전송 | Lateral Movement | Lateral Tool Transfer | T1570 |
| 14 | Rclone과 SFTP를 이용한 자료 유출 | Exfiltration | Exfiltration Over Alternative Protocol | T1048 |
| 15 | Windows 이벤트 로그 삭제 | Defense Evasion | Clear Windows Event Logs | T1070.001 |
| 16 | 심볼릭 링크 평가 설정 변경 | Defense Evasion | File and Directory Permissions Modification | T1222 |
| 17 | 섀도 복사본 삭제 / VM 강제 종료 | Impact | Inhibit System Recovery | T1490 |
| 18 | 파일 암호화 | Impact | Data Encrypted for Impact | T1486 |
| 구분 | 확인 대상 |
|---|---|
| 자격 증명 탈취 도구 | Mimikatz, CredentialsFileView 실행 흔적, 자식 도메인명 CSV 파일 |
| 네트워크 스캐너 | Advanced IP Scanner, NetScan 실행 흔적, delete.me 파일 |
| 데이터 전송 도구 | rclone.exe, nocmd.vbs, rcl.bat, include.txt |
| 원격 관리 도구 | Atera, Splashtop 신규 설치 |
| 서비스 생성 | 승인되지 않은 신규 Windows 서비스(무작위 6자리 이름 포함) |
| 복구/전파 방해 | VM 강제 종료, 심볼릭 링크 설정 변경, 섀도 복사본 삭제 |
| 흔적 삭제 | 이벤트 로그 삭제, Rclone 관련 파일 사후 삭제 |
| 계정 조작 | 다수 계정 비밀번호 동일값 초기화 |
| 네트워크 | 외부 IP의 TCP 3389 다수 계정 접근, 443번 포트의 실제 SFTP 트래픽(약 2.03GB) |
| 주요 이벤트 ID | 4624/4625(로그인), 5379(자격 증명 읽기), 4662(AD 동기화), 7045(서비스 생성) |
| Sysmon | 1(프로세스 생성), 3(네트워크 연결), 10(LSASS 접근), 11(파일 생성) |
Password Spray 및 후속 로그인: 실패 횟수보다 하나의 출발지 IP가 접근한 고유 계정 수를 기준으로 탐지한다. Password Spray IP와 실제 침입 IP가 다를 수 있으므로, 대상이 된 계정을 기준으로 이후 새로운 IP·RDP Logon Type 10·Elevated Token 여부를 함께 추적해야 한다.
RDP 로그인 후 탐색·자격 증명 접근: 외부 로그인 직후 net, nltest 등 탐색 명령이나 스캐너, MMC 스냅인이 짧은 시간 안에 연속 실행되는지 확인한다. Sysmon Event ID 10(LSASS 접근)과 4662가 여러 자식 도메인을 대상으로 반복 발생한다면 DCSync 유사 행위 가능성을 검토한다.
원격 관리 도구 오남용: 외부 RDP 로그인 직후 신규 설치(Event ID 7045) 후 그 도구를 통한 실제 재접속 세션과 후속 행위(계정 조작·파일 반입)가 이어지는지 연결해서 확인한다.
Rclone을 이용한 데이터 유출: 443번 포트 연결의 실제 프로토콜이 HTTPS가 아닌 SSH/SFTP인지, 스크립트로 은닉 실행되는지, 장시간 대량 아웃바운드 전송이 있는지 확인한다. 포트 번호만으로 프로토콜을 판단해서는 안 된다.
랜섬웨어 배포 단계: 다수 계정 비밀번호가 짧은 시간에 동일값으로 변경되는지, SMB를 통해 동일 크기의 무작위 파일명이 여러 시스템에 복사되고 신규 서비스로 실행되는지, VM 강제 종료·섀도 복사본 삭제·이벤트 로그 삭제가 연쇄적으로 발생하는지 확인한다.
| 구분 | 정상 행위 | 의심 행위 |
|---|---|---|
| 로그인 실패 | 특정 계정에서 소수 발생 | 짧은 시간 내 여러 계정에서 발생 |
| 로그인 성공 위치 | 평소 사용하던 위치 | Password Spray 이후 새로운 IP |
| 원격 관리 도구 | 사전 승인된 설치 | 침입 직후 신규 설치, 이후 실제 재접속에 사용 |
| 계정 관리 활동 | 개별 계정의 개별 사유 변경 | 다수 계정이 짧은 시간에 동일값으로 변경 |
| 파일 행위 | 소수 파일 수정 | 짧은 시간 동안 대량 수정·암호화, VM 강제 종료 동반 |
이번 사례는 인터넷에 노출된 RDP 서버와 취약한 계정 관리가 전체 내부망 침해로 이어질 수 있음을 보여준다. 공격자는 Password Spray로 확보한 계정으로 처음부터 관리자 권한 RDP 세션을 얻었고, Mimikatz로 LSASS 자격 증명은 물론 여러 자식 도메인에서 통용되는 계정까지 확보해 도메인 컨트롤러·백업·파일·하이퍼바이저 서버로 이동을 확장했다.
이후 Atera·Splashtop으로 지속 접근 수단을 마련하고, Rclone·SFTP로 자료를 유출한 뒤 계정 비밀번호를 대량 초기화하고 VM을 강제 종료해 RansomHub를 SMB로 전파, 암호화했다.
특히 주목할 점은 두 가지다.
Password Spray 수행 IP와 실제 RDP 침입 IP가 달랐다.
동일 IP의 로그인 실패·성공만 연결해서는 공격을 놓칠 수 있으며, 대상 계정을 기준으로 새로운 IP에서의 후속 로그인·탐색·내부 이동을 연계해 분석해야 한다.
지속성 확보(Atera)와 실제 재접속(Splashtop) 도구가 구분되어 있었다.
RDP, Rclone, Atera, Splashtop은 모두 정상 업무에도 쓰이는 도구이므로, 프로그램 이름이 아니라 실행 계정과 권한, 접속 시각과 경로, 명령줄, 외부 통신 목적지, 선후행 행위를 종합적으로 봐야 한다.
결국 효과적인 침해 탐지는 하나의 이벤트나 IOC를 찾는 것이 아니라, 여러 로그의 행위를 시간 순서로 연결해 하나의 공격 흐름으로 재구성하는 데서 시작된다.