보안정보

전문화된 보안 관련 자료, 보안 트렌드를 엿볼 수 있는
차세대 통합보안관리 기업 이글루코퍼레이션 보안정보입니다.

침해사고의 재구성 – Bees are attracted to flowers (해결편)

2017.06.07

7,057

 

 

보안관제센터 보안분석팀 김지우

 

 

침해사고의 재구성은 실제 발생했던 침해사고 기록을 각색하여 한 편의 에피소드처럼 다루는 장으로 사건편과 해결편이 한 묶음이다. 

이를 통해 침해사고 발생 시 어떠한 부분은 점검하고 확인해야 하는지 침해대응 방법에 대해 다뤄보고자 한다.

 

 

1. 사건 줄거리

 

김과장은 자신의 PC에서 발생하는 알 수 없는 현상(퇴근 후 PC부팅, 휴지통 비우기 등)에 대해 의문을 가지게 된다. 그냥 그대로 사용하기에는 왠지 모를 꺼림칙한 기분이 들었던 김과장은 나보안씨에게 PC 점검을 요청하게 되고 지난 스팸메일 사건으로 인해 의기소침해 있던 나보안씨는 의욕을 불태우며 조사를 시작한다. 

 

나보안씨는 김과장 PC에서 알려진 악성코드 유포지로 접근한 기록은 발견하지 못했지만 몇 가지 이상한 점을 발견한다. 

 

그리고 그에 대한 조사결과 나보안씨는 김과장이 느꼈던 이상한 기분의 원인을 찾을 수 있었고 바로 조치하여 김과장에게 감사의 인사와 함께 점심약속까지 잡을 수 있었다.

 

 

2. 사건 재분석

 

1) 휘발성 데이터 분석

 

휘발성 데이터란 컴퓨터가 켜져 있을 때, 물리 메모리(RAM)에 로딩되었다가 전원의 공급이 끊기거나 시간이 흐름에 따라 자연히 저장 공간에서 사라지는 데이터를 뜻한다. 이러한 휘발성 데이터는 사고 당시의 시스템 상태를 정확하게 파악할 수 있도록 도움을 주는데 조사 시점에 연결된 네트워크와 동작 중인 프로세스를 비롯한 각종 운영체제의 자원 등을 현장에서 수집해야 한다. 

 

휘발성 데이터 수집은 일반적으로 분석에 필요한 데이터를 한번에 일괄 수집할 수 있는 자동화 스크립트나 도구를 이용한다. 이때 주의할 점은, 시스템 유틸리티는 가급적 대상 시스템의 것을 사용하지 않고,미리 준비해간 유틸리티를 사용하는 것이 바람직하다.

 

나보안씨 또한 이 PC의 이상증상이 현재 진행형이라고 판단하고 이에 대한 원인을 확인하기 위해 휘발성 데이터인 네트워크와 프로세스 정보를 확인하였다.

 

∙ System : Kernel에서만 실행되는 system thread들을 호스팅하는 프로세스

∙ Chrome : 웹 브라우저 프로세스

∙ keylogger.exe : ?

∙ Ucware_m.exe : 메신저 프로세스

 

이 가운데 프로세스 정보가 확실하지 않는 것은 “keylogger.exe” 이며 해당 프로세스에서 내부 네트워크(172.16.1.100)로 통신이 행해지고 있음을 확인할 수 있다. 또한 목적지 포트가 21/FTP 인 것으로 보아 해당 프로세스는 FTP 를 이용해 정보를 전송하는 용도로 사용되는 것으로 판단할 수 있다.

 

프로세스(PID)

From

From Port

To

To Port

System(4)

localhost

0

localhost

0

Chrome.exe(7777)

localhost

53774

91.190.217.146

443

Chrome.exe(7777)

Localhost

53774

123.123.123.123

80

keylogger.exe

Localhost

4442

172.16.1.100

21

Ucware_m.exe

localhost

53818

61.34.170.30

0

  

[표 1] 네트워크 통신 기록

 

 

2) MFT 분석

 

NTFS(New Technology File System)는 윈도우 NT 계열 운영체제의 파일 시스템으로 NTFS의 전체적인 구조는 다음과 같다.

  

 


 

[그림 1] NTFS 구조 (출처 : FORENSIC-PROOF)

 

 

이 중 MFT(Master File Table)는 볼륨에 존재하는 모든 파일, 디렉터리에 대한 정보를 가지고 있는 테이블로 MFT 엔트리라는 1024 Byte로 이루어진 구조(레코드)의 집합이며 파일 및 디렉터리의 수에 비례하여 점점 커진다. MFT는 레코드 단위로 나누어져 있으며 레코드 0~11번 까지는 지정된 레코드가 쓰여져 있고 12~15번 까지는 미래를 위해 예약되어 있다. 또한 윈도우 2000 이후로 4개의 기본 레코드($Objid, $Quota, $Reparse, $UsnJrnl) 가 더 추가 되었다.  

 

 

 엔트리 번호

 엔트리 이름

 설명

 0

 $MFT

 MFT 영역에 대한 MFT 엔트리

 1

 $MFTMirr

 $MFT의 백업본

 2

 $LogFile

 메타데이터(MFT)의 트랜잭션 저널 정보

 3

 $Volume

 볼륨의 레이블, 식별자, 버전 등의 정보

 4

 $AttrDef

 속성의 식별자, 이름, 크기 등의 정보

 5

 .(Root Directory)

 볼륨의 루트 디렉터리

 6

 $Bitmap

 볼륨의 클러스터 할당 정보

 7

 $Boot

 (볼륨이 부팅 가능할 경우) 부트 섹터 정보

 8

 $BadClus

 배드 섹터를 가지는 클러스터의 정보

 9

 $Secure

 파일의 보안, 접근제어와 관련된 정보

 10

 $Upcase

 모든 유니코드 문자의 대문자

 11

 $Extend

 $ObjID, $Quota, $Reparse points, $UsnJrnl 등의 추가적인 파일의 정보

 12-15

 

 미래를 위해 예약됨

 

 $ObjId

 파일의 고유한 ID 정보

 

 $Quota

 사용자별 할당량 정보

 

 $Reparse

 Reparse points 정보

 

 $UsnJrnl

 파일, 디렉토리 변경 정보

 

[표 2] 예약된 MFT 레코드

 

 

결과적으로 대상 시스템이 NTFS를 사용한다면 MFT 영역를 수집하여 특정 시간에 사용한 파일이나, 암호화된 파일, 숨겨진 파일, 파일 이름에 의한 검색 등의 효과적인 분석을 수행할 수 있다. 

 

나보안씨 역시 이 MFT 파일을 수집 후 파싱하여 해당 실행파일의 생성시기를 확인하였다.

 

 

 


 

[그림 2] MFT(Master File Table) 파일

 

 

 

[그림 3] MFT(Master File Table) 파싱 데이터

 

 

그 결과 실행파일(keylogger.exe)은 13일 9시 16분에 최초 생성되었음을 알 수 있고 김과장과의 인터뷰 결과 생성시간 무렵인 13일 9시 10분부터 9시 30분까지 회의가 있어 컴퓨터를 켜 놓은 상태에서 자리를 비웠으며 화면보호기 설정은 안되어 있다는 사실을 알게 된다.

 

이러한 사실로 미루어보아 해당 실행파일은 김과장이 아닌 누군가에 의해 생성되었을 것으로 판단할 수 있고 파일 생성경로가 드라이브 최상단에 있다는 점은 악성코드나 Exploit 공격이 아닌 수동으로 옮겨 졌을 것이라 추측해 볼 수 있다.

 

 

3) USB 사용 기록

 

USB가 연결되면, 적절한 드라이버가 설치되어 있는지 확인 후 드라이브가 있으면 로드하고 설치가 안된 경우 PnP 관리자 기능에 의해 드라이브를 설치한 뒤 레지스트리에 기록한다. 그리고 마지막으로 이 일련에 과정을 Setupapi 로그에 저장한다. 그러므로 레지스트리와 Setupapi 로그를 분석하면 USB 사용기록 확인이 가능하다. 

 

∙ 레지스트리(1) : HKEY_LOCAL_MACHINESYSTEMControlSet001EnumUSB

∙ 레지스트리(2) : HKEY_LOCAL_MACHINESYSTEMControlSet001EnumUSBSTOR

∙ Setupapi 로그 : %SystemRoot%infSetupapi.dev.log

 

레지스트리 경로 중 USB에는 스마트폰, 마우스 등의 장치 정보가 저장되며 USBSTOR는 외장 USB와 같은 저장장치의 연결 정보가 담겨져 있다. 나보안씨는 이러한 정보를 간편하게 확인할 수 있는 도구(USBDeview)를 이용해 USB 사용기록을 확인하였고 그 결과 13일 9시 15분에 USB를 사용한 기록을 확인할 수 있었다. 

 

 

 


 

[그림 4] USB 접속 기록

 

 

이제까지 나온 조사결과를 종합해 보면 김과장이 회의를 위해 잠시 자리를 비운 순간 누군가 9시 15분에 USB를 연결한 후 실행파일(keylogger.exe)을 시스템으로 복사하고 실행했을 것이라 추측할 수 있고 “keylogger.exe”를 통해 PC 정보를 수집하여 “172.16.1.100”으로 전송하고 있다는 걸 알 수 있다. 

그렇다면 “172.16.1.100”의 IP를 사용하는 사람이 이러한 행위를 한 유력한 용의자로 볼 수 있다. 

 

과연 이 용의자는 정보를 수집한 후 무엇을 하였을까?

 

 

4) 시스템 분석

 

윈도우 시스템에서는 시스템의 로그가 이벤트 로그형식으로 관리되는데 응용 프로그램 로그, 보안 로그, 시스템 로그와 같은 세가지 로그를 이벤트에 기록하며, OS 구성에 따라 디렉토리 서비스 로그, 파일 복제 서비스 로그, DNS 서버 로그 가 추가될 수 있다. 

 

 

 

 이벤트로그

 설명

응용 프로그램 로그

응용 프로그램이 기록한 다양한 이벤트가 저장되며, 기록되는 이벤트는 소프트웨어 개발자에 의해 결정

보안 로그

유효하거나 유효하지 않은 로그온 시도 및 파일 생성, 열람, 삭제 등의 리소스 사용에 관련된 이벤트를 기록. 감사로그 설정을 통해 다양한 보안 이벤트 저장이 가능

시스템 로그

윈도우 시스템 구성요소가 기록하는 이벤트로 시스템 부팅 시 드라이버가 로드되지 않는 경우와 같은 구성요소의 오류를 이벤트 기록

 

[표 3] 윈도우 로그설명

 

 

이 가운데 보안 로그는 어떤 사용자 계정이 사용되었는지, 어떤 컴퓨터에서 접근했는지에 대한 관련정보가 포함되어 있어 사고 분석에 있어 가장 중요한 로그라 할 수 있다. 이러한 이벤트 로그를 확인하기 위해서는 윈도우의 이벤트 뷰어를 이용하지만 가독성이 떨어지는 면이 있어 로그파싱 도구(LogParser)를 많이 사용한다. 

 

 

 


 

[그림 5] Windows Event 로그(Security)

 

 

파싱된 데이터를 살펴보면 EventID(4624)는 로그온 성공을 뜻하며 13일 14:52분부터 용의자 IP로 여러 번의 반복 접속이 있었음을 알 수 있다. 

 

 

그 중 Guest 계정은 기본적으로 비활성화되어 있어 로그인이 불가능한데 Administrator으로 로그인 후 이를 임의로 활성화 시켰다고 볼 수 있으며 실제 나보안씨가 Guest 계정에 대한 정보를 확인한 결과 활성화 뿐만 아니라 Guest 계정을 관리자 그룹에 포함시키고 비밀번호를 부여한 것을 알 수 있었다.

 


 

[그림 6] Guest 계정 정보

 

 

3. 문제풀이

  

1) 과연 나보안씨가 밝혀낸 진실은 무엇일까요?

 

김과장이 회의를 위해 잠시 자리를 비운 틈을 타 용의자(172.16.1.100)가 김과장 PC에 키로깅 프로그램을 복사 및 실행하였고 자신의 PC에서 FTP 서버를 활성화하여 김과장의 개인정보를 수집하고 있었습니다. 이후 계정정보 획득 한 후에는 김과장 PC에 원격 접근하여 Guest 계정을 활성화하고 비밀번호를 부여하여 자신만 접속할 수 있도록 백도어 계정을 만들어두었습니다.

김과장에게 관심이 많았던 용의자가 이러한 계획을 용의주도하게 미리 준비하고 있다가 김과장이 잠시 자리를 비운 순간 위와 같은 일을 저지른 것이었고 이는 순간의 방심이 자신의 안전을 위협할 수 있다는 걸 보여줍니다.

 

 

2) 진실의 내용을 Time Table로 작성해 보세요.


시간

행위자

행위

2017-04-13 09:15

-

USB 연결

2017-04-13 09:16

-

파일(Keylogger.exe) 이동 및 실행

2017-04-13 14:52

172.16.1.100

원격접근 시도 및 Administrator 계정 로그인 성공

2017-04-13 14:52

172.16.1.100

Guest 계정 활성화(관리자 그룹 등록)

2017-04-13 14:53

172.16.1.100

원격접근 시도 및 Guest 계정 로그인 성공

2017-04-13 15:34

172.16.1.100

원격접근 시도 및 Administrator 계정 로그인 성공

2017-04-13 15:34

172.16.1.100

Guest 계정 비밀번호 설정