보안정보
전문화된 보안 관련 자료, 보안 트렌드를 엿볼 수 있는
차세대 통합보안관리 기업 이글루코퍼레이션 보안정보입니다.
랜섬웨어 잡는 SIEM 분석 가이드
2017.09.01
9,310
기술지원센터 분석기술팀 이세호, 진창덕
SPiDER TM V5.0은 이글루시큐리티 보안관제 경험과 빅테이터 활용역량이 집약된 통합보안관리솔루션으로 최초탐지부터 로그/네트워크 패킷 분석까지 일원화 된 관제환경구성을 통해 관제업무의 기민성과 효율성을 높이는 동시에 인프라 전반에 대한 가시성을 확보합니다.
1. 개 요
2015년 4월 ‘크립토락커(CryptoLocker) 랜섬웨어가 한국에 상륙한 이후, 한국도 더 이상 랜섬웨어로 부터 안전하지 않다는 경각심을 가지게 되었다. 크립토락커는 친절하게도 한글로 암호화 사실을 알리고, 비트코인 입금 방법을 안내한 첫 번째 랜섬웨어였다.
2017년 2월 KISA의 사이버 위협 동향 보고서”에 따르면 악성코드(비중)는 랜섬웨어(58.5%), 정보탈취(30%), 원격제어(8.5%), 애드웨어(3%) 순으로 많았다. 불과 2년만에 악성코드 중 랜섬웨어의 비중이 최대가 된 것이다. 특히 과거에는 랜섬웨어의 공격 대상이 일반 사용자 PC였으 최근 인터넷 나야나 리눅스 서버 153대를 감염시킨 에레보스(Erebus)처럼 기업 전산실을 타킷으로 하는 램섬웨어도 점점 증가되고 있다.이처럼 한국형 랜섬웨어가 국내 유입된 지도 2년이 지나면서 외모도 수법도 ‘천태만상’으로 변화해 가고 있다.
2. 랜섬웨어에 감염된 PC의 공통 행위 분석 (Process, Network, DNS질의)
랜섬웨어에 감염된 PC나 서버는 어떤 행위를 할까? 일반적으로 랜섬웨어 감염된 PC나 서버는 새로운 프로세서를 실행시키고 이후 파일을 암호화, 외부 C&C서버와 통신하는 등 공통된 행위를 한다. TeslaCrypt, Locky, Wannacry 3가지 랜섬웨어의 공통 행위를 먼저 살펴보고, 이러한 행위들을 윈도우 이벤트 로그와 방화벽 로그 수집을 통해 탐지하는 방안을 살펴 보고자 한다. 또한 SIEM 에이전트의 자체 무결성 기능에서 수집된 휘발성 데이터를 통해 윈도우 포렌식 분석을 해보겠다.
Wannacry RansomWare
1) 프로세서 생성
[그림 1] Wannacry 생성 프로세서
2) 외부 C&C서버와 통신
[그림 2] Wannacry 외부 통신 상태
3) DNS 질의
[그림 3] Wannacry DNS 질의
4) 기존 랜섬웨어와 달리 SMB 취약점에 의해 네트워크 SCAN 트래픽 발생
[그림 4] Wannacry 유포를 위한 445 Scan
TeslaCrypt RansomWare
1) 프로세서 생성
[그림 5] TeslaCrypt 생성 프로세서
2) 외부 C&C서버와 통신
[그림 6] TeslaCrypt 외부 통신 상태
3) DNS 질의
[그림 7] TeslaCrypt DNS 질의
Locky RansomWare
1) 프로세서 생성
[그림 8] Locky 생성 프로세서
2) 외부 C&C서버와 통신
[그림 9] Locky 외부 통신 상태
3) DNS 질의
[그림 10] Locky DNS 질의
3. 랜섬웨어 감염 시점에 나타나는 공통적인 네트워크 트래픽(FireWall & DNS) 증상
FW(FireWall) 트래픽 증상(Wannacry)
랜섬웨어에 감염된 PC는 이후 외부 C&C 서버와 통신을 위해 장시간 연결된 세션이 발생한다. 이러한 장시간 세션 관리를 위해 보통 방화벽에서 세션 타임아웃 설정은 TCP 3600초, UDP 30초, ICMP 30초, IP 600초로 기본 설정이 되어 있다. 즉, 트래픽이 없으면 강제로 세션을 끊어 버린다.
아래 [그림 3-11]를 살펴보면 https 프로토콜에서 사용하는 기본 포트인 443포트로 8864초 동안 내부 사용자가 해외로 연결된 트래픽을 확인 할 수 있다.
검색어 : log:fw AND duration:[600 TO *] AND protocol:6 NOT (d_country:KR OR d_country:"-")
[그림11] Wannacry C&C 서버와 통신 트래픽
ISP 통신 사업자에 의해 BlackList로 등록이 될 경우 라우터나 방화벽에서 이미 차단되어 반복 접속 시도에 의해 SYN(S+) 패킷이 지속적으로 발생할 수 있다.
검색어 : log:fw AND tcp_flag:S+ NOT (d_country:KR OR d_country:"-")
[그림 12] Wannacry C&C 통신 트래픽
DNS 질의 증상(Wannacry)
JS(JavaScript), VB(VisualBasic) 형식 악성 스크립트 파일들은 통상적으로 드라이브 바이 다운로드(Drive by Download) 방식으로 악성 파일 유포지에 접속하여 실행파일을 다운로드(Dropper)하고 실행하여 사용자의 PC를 감염시킨 후 암호화를 진행한다.
검색어 : log:dns AND s_ip:192.168.1.99(감염PC IP)
[그림 13] Wannacry DNS 질의 쿼리
4. 윈도우 이벤트 로그분석을 통한 랜섬웨어 행위 분석
윈도우 이벤트 수집
윈도우 운영체제 기반의 시스템에서 공격자의 침투경로를 파악하기 위해서는 윈도우 이벤트 로그가 필요하다. 윈도우 이벤트 로그는 외부에서 시스템 접속과 계정 설정 변경, 불법 S/W 설치 및 실행 등 침투/피해 시점에 발생했던 다양한 정보들이 저장되어 있다. 윈도우 이벤트 로그의 종류는 크게 응용프로그램, 시스템, 보안 로그 3가지며, 서비스에 따라 AD, DNS로그 등이 추가 발생한다. 그럼 윈도우 이벤트 로그를 통해 외부 침입자가 해당 시스템에 로그인하는 순간부터 랜섬웨어가 설치되어 실행되는 시점까지 어떤 흔적을 남기는지 살펴 보겠다.
윈도우 이벤트 로그 분석 : Wannacry
윈도우 서버에 누군가가 로그인에 성공한 흔적을 찾으려면 이벤트 ID “4776” 을 찾으면 된다. 계정 로그온 이벤트 감사 ID 4776에는 로그인 한 계정과 컴퓨터 이름정보 등의 로그인 성공 정보를 확인 할 수 있다.
아래 그림을 살펴보면 Win2012name 서버에 Administrator 계정으로 로그인 성공함을 알 수 있다.
검색어 : log:dns AND s_ip:192.168.1.99(감염PC IP)
[그림 14] 윈도우 서버 로그인
로그인 이벤트 감사 로그에는 사용자 로그온/로그오프 또는 네트워크 연결의 각 인스턴스 감사를 남기며 ID “4624” 를 검색해 보면 성공적인 로그인 계정과 workgroup, computer name, 호출 프로세서, 인증 정보등 로그인 성공에 대한 각종 정보를 확인 할 수 있다.
Win2012name 서버의 LEESEHO 워크그룹으로 Administrator 계정이 Kerberos 인증으로 로그인 성공함을 검색할 수 있다.
검색어 : origin:192.168.1.112 AND event_id:4624
[그림 35] 윈도우 서버 로그인 상세 정보
프로세서 추적 감사를 통해 프로세스 활성화/종료 및 간접적 개체 액세스 등의 이벤트에 대한 자세한 추적 정보를 확인 할 수가 있다. 즉 관리자 모르게 실행되는 신규 프로세서와 종료되는 프로세서에 대한 확인이 가능하다. 이벤트 ID 4688과 4689를 통해 새 프로세서 생성과 종료되는 프로세서를 모니터링 할 수가 있다. [그림 3-16]에서 처럼 taskse.exe 프로세스와 @WanaDecryptor@.exe등의 프로세서가 활성화 됨을 확인할 수 있다.
검색어 : origin:192.168.1.112 AND event_id:4688
[그림 16] Wannacry 악성 신규 프로세서 실행
윈도우 이벤트 로그 분석 : TeslaCrypt
이벤트 ID 4688과 4689를 통해 쉽게 검색할 수 있으며 [그림3-17]에서 처럼 TeslaCrypt 랜섬웨어 파일인 “80.exe”가 처음 실행 된 이 후 “wlmdr.exe”와 conhost.exe, cmd.exe가 연속으로 실행된 행위를 분석할 수가 있다.
[그림17] TeslaCrypt 악성 신규 프로세서 실행
80.exe가 실행되면서 자원 모니터링 도구인 프로세서 익스플로러(“procexp64.exe”)를 강제 종료됨을 로그를 통해 확인할 수 있다.
[그림 18] TeslaCrypt 감시 프로세서 강제 종료
랜섬웨어가 파일들을 암호화 시킨 후 감염 사실을 알리기 위해 노트패드와 인터넷 익스플로러를 자동 실행 시킨 행위도 확인 할 수 있다.
[그림 19] TeslaCrypt 감염 사실 팝업 알람
5. SIEM 무결성 기능을 이용한 윈도우 포렌직 분석
Agent 기능 중에 OS에서 실시간 변화는 자원 현황 정보를 수집할 수 있는 기능이 있다. 기본적으로 CPU, Memory, Disk, Network의 사용률과 현재 실행되고 있는 Process, port, Network Session 정보 등을 수집하고 있다. 특히 자원 변화에 대한 정보를 수집하는 기능으로 무결성 기능이 있다. Agent 무결성 기능에는 File Integrity, Process Integrity, Port Integrity, Device Integrity 4가지 종류가 있다. 이중에 랜섬웨어 행위분석 시 필요한 File, Process, Port Integrity 3가지 기능을 이용하여 윈도우 포렌직 분석을 해보겠다.
파일 무결성(File Integrity) 기능
파일 무결성 기능은 시스템의 주요 디렉토리와 중요 파일이 관리자가 아닌 내/외부의 불법적 접근에 의해 생성/변경/삭제 변화를 실시간 감지하여 알람을 할 수 있는 기능이다.
[그림 20] 처럼 다운로드 디렉토리에서 “wannacry.exe” 랜섬웨어 파일이 실행되면 암호화와
외부 C&C 통신에 필요한 토르 파일등 관련 여러 파일이 생성됨을 확인 할 수있지만 SIEM Agent에서 수집된 로그를 보면 사용자 SID별 휴지통(C:$Recycle.Bin
[그림 20] SIEM 파일 무결성
[그림 21] Wannacry 악성 파일들
프로세스 무결성(Process Integrity) 기능
Agent 수집 기능을 통해 현재 OS에서 실행 중인 전체 프로세서 목록을 확인할 수 있다. 또한 프로세스 무결성 기능을 통해 신규 프로세서가 시작되거나 종료되는 상태를 알 수 있다. [그림 3-22]에서 “process_status” 필드의 데이터들 처럼 “wannacry.exe” 프로세서 상태값이 “stop->start”로 신규 프로세서가 실행됨을 확인 할 수 있다. 그외 “taskhsvc.exe”등 다수의 프로세서가 실행이 되었다.
[그림22] SIEM 프로세서 무결성
[그림 23] wannacry 실행 프로세서
포트 무결성
프로세스가 실행이 되면서 LISTENING과 ESTABLISHED 되는 포트들의 상태를 확인 할 수가 있다. [그림 3-24]에서 처럼 9050, 57421, 57422등의 포트가 LISTENING되었고, taskhsvc.exe 프로세스에 의해 외부에 통신이 되어 ESTABLISHED된 네트워크 상태를 확인 할 수 있다. 이 처럼 OS에서 특정 포트가 open 되었는지 또는 close 되었는지의 포트 변화 상태를 실시간 모니터링 할 수가 있다.
[그림 24] SIEM 포트 무결성
[그림 25] LISTENING과 ESTABLISHED된 포트 상태
6. 탐지 방안
외부 C&C 서버와 장시간 세션 및 syn 패킷 탐지 룰 설정
랜섬웨어에 감염이 된 이후 나타나는 공통적인 증상을 파악하여 탐지 할 수 있는 룰을 설정한다.
룰 설명 : 해외로 향하는 트래픽 중에 목적지IP가 유해 IP인 경우 탐지 또는 SYN 패킷 탐지
1) 탐지 조건 (오브젝트 설정)
오브젝트 |
통신 방향 |
목적지 국가 |
TI(위협 정보) |
세션 |
TCP FLAGE |
설명 |
내부 -> 외부 |
해외 |
유해 IP |
장시간 세션 |
SYN 패킷 |
필드 |
d_direction |
d_country |
d_ip |
duration(초) |
Tcp_flage |
연산자 / 값 |
= / OUT |
Not in / KR,- |
= / gm 쿼리 |
> / 3600 |
= / s |
2) 탐지 룰
[그림 26] 랜섬웨어 탐지 룰
3) 탐지 결과
[그림-27] 랜섬웨어 탐지 결과
단일경보 직접입력을 통한 윈도우 이벤트 ID 탐지 설정
특정 한 필드에서 탐지한다거나 오브젝트로 정의하기 어려운 조건을 쿼리형식으로 직접 입력할 때
활용하면 된다. 설정 방법은 [필드명 = ‘데이터 값’] 필드속성이 문자열이면 ‘으로 묶어주면 된다.
예시) 문자속성 필드 s_ip = ‘1.2.3.4’, 숫자속성 필드 d_port = 3389
예시) (event_id = 4688) or (event_id = 4776)
수집된 윈도우 이벤트에서 비인가 로그인 감시를 위한 이벤트 ID4776과, 프로세서 추적 감시를 통한 악성코드 감염 모니터링 이벤트 ID 4688 등은 직접 입력을 통해 간단히 설정할 수 있다. ‘security’ 라는 sublog 유형에서 event id가 4688인 경우를 탐지하는 설정이다.
평소 실행되는 프로세스 외에 이상한 프로세스가 실행 될 경우 탐지하고자 한다면 목록화DB를 이용하여 평판 탐지를 활용하면 쉽게 구분하여 탐지를 할 수 있다.
[그림 28] 단일경보 직접입력
[그림 29] 단일경보 룰 – 직접입력
조건 정의 필드와 직접입력 필드 간은 AND 관계로 동작한다. 조건정의에서 만들어 놓은 오브젝트가 있다면 재사용하여도 되며, 직접입력에서 event id 에 대한 쿼리만 직접입력하여도 된다.
조건 정의와 직접 입력은 하나의 탐지 조건 설정창으로 생각하면 되고, 단지 오브젝트를 사용할 지 직접 쿼리를 사용할 지는 편리성 측면으로 봐도 좋을 것 같다.
[그림 30] 단일경보 룰 – 조건정의 & 직접입력
7. 결론
랜섬웨어가 감염된 PC나 서버의 행위 분석을 위해 SIEM을 활용하여 윈드우 이벤트 로그, 프로세서, 포트무결성 등의 기능과 네트워크 보안 로그를 활용하는 방안을 살펴 보았다.
즉, OS 침투 => 특정 경로에 파일 생성 => 프로세서 실행 => 포트 open => 외부 C&C 서버와 통신하는 일련의 과정을 SIEM을 통해 쉽게 분석할 수 있었다. 또한, 로그만 수집되면 어떠한 필드의 제약 없이 유연하게 탐지할 수 있다.
SIEM 구축 혹은 관제 운영 과정에서 어떤 위협 행위를 탐지/분석할 것인가를 사전 정의한 후 그에 맞는 로그 수집 대상을 선정하는 것은 매우 중요한 과정이다. 이러한 과정을 거쳐 SIEM시스템은 그 사이트에 최적화 된다.
[참고] 윈도우 보안 감사 이벤트 설명
기존의 Evt에서 비스타 이후 부터 Evtx로 사용되고 있으며, 로그 파일의 헤더 및 구성의 변경이 있지만 Evt ID 값에 4096 값을 더해주면 Evtx 형태의 이벤트 ID 값이 된다.
계정 로그온 이벤트 감사 : 계정 유효성을 검사하는 컴퓨터가 아닌 다른 컴퓨터에서의 로그온/로그오프 감사 여부를 결정한다.
Evt ID |
Evtx ID |
내용 |
680 |
4776 |
로그인 성공 정보 |
681 |
4777 |
로그인 실패 정보 |
로그인 이벤트 감사 : 사용자 로그온/로그오프 또는 네트워크 연결의 각 인스턴스 감사 여부를 결정한다. 성공 감사는 로그온 시도가 성공할 때 생성되며, 이 항목은 침입 감지에 유용하게 사용할 수 있다.
Evt ID |
Evtx ID |
내용 |
528 |
4624 |
성공적인 로그인 |
529 |
4625 |
알 수 없는 계정이나 잘못된 암호를 이용한 로그인 시도 |
538 |
4634 |
로그 오프 |
프로세서 추적 감사 : 프로세스 활성화/종료 및 간접적 개체 액세스 등의 이벤트에 대한 자세한 추적 정보를 감사할지 여부를 결정한다. 윈도우 XP SP2 및 서버 2003 SP1 이상에서 프로세스 추적 감사를 사용하면 윈도우 방화벽 구성 요소의 작동 모드 및 상태에 대한 정보도 기록한다.
Evt ID |
Evtx ID |
내용 |
592 |
4688 |
새 프로세스 생성 |
593 |
4689 |
프로세스 종료 |
594 |
4690 |
개체에 대한 힌트의 중복 |
595 |
4691 |
개체에 대한 간접적인 접근 |