2017.11.13

악성 코드에 감염됐다면?··· ‘꼭’ 윈도우 레지스트리 확인

Roger A. Grimes | CSO
마이크로소프트 윈도우를 노리는 악성코드 변종이 무수히 많다. 그리고 이 중 일부는 윈도우 레지스트리 데이터베이스(레지스트리)를 변경한다. 재부팅 후 실행하도록 하거나 은닉하고, 기존 적법한 프로세스와 병합하기 위해서다. 따라서 악성코드로 자주 변경되는 레지스트리 영역을 알아두고 꾸준히 모니터링 하는 것이 좋다.



단, 문제가 있다. 적법한 소프트웨어 역시 같은 레지스트리 키를 변경한다는 것이다. 즉 거짓 긍정(False Positive, 긍정 오류) ‘노이즈’가 상당히 많다. 그러나 올바르게 모니터링 하면, 악성코드를 탐지해 관계자에게 경고하거나 도움을 요청할 수 있다.

확인해야 할 레지스트리 키
수 많은 레지스트리 키 중 감사(audit)해야 할 키는 무엇일까? 100% 정확하고 완전한 리스트는 없지만 이를 판단할 때 마이크로소프트의 시스인터널 오토런(Sysinternals Autoruns) 프로그램을 사용하면 큰 도움이 된다. 비슷한 프로그램으로 사일런트 러너(Silent Runners.vbs)도 있다. 오토런은 마이크로소프트에 도입된 프로그램이고, 유명한 마크 러시노비치가 개발했으며, 업데이트도 자주 되는 편이다.

오토런은 19종류의 레지스트리 키 섹션을 검사하며, 빠르게 새로운 공격 벡터를 파악한다. 또한 자동 실행되는 항목을 확인, 비활성화하고 바이러스토탈닷컴(VirusTotal.com)에서 파일 해시를 받아 ‘이전 및 이후’를 비교 분석한다. 레지스트리 키 경로를 추출하기도 쉬워, ‘Save’ 옵션, 명령줄의 ‘Autorunsc.exe’를 사용하면 된다. 사일런트 러너도 오토런과 같은 레지스트리 키 여러 개를 대상으로 한다.

단, 악성코드의 1% 정도는 반영구 스토리지에 쓰기를 하지 않는 메모리 상주형이다. 이 경우 지금까지 살펴본 레지스트리 키 중 하나를 변경하지 않는다. 이러한 메모리 상주형 악성코드는 다른 방법으로 탐지해야 한다.



바이러스토탈로 악성코드 찾기
레지스트리에서 악성 변경과 적법한 변경을 구분하는 것이 정말 중요하다. 과거에는 몇 년의 경험이 필요했고, 머신 별로 1시간 이상을 투자해야 했다. 그러나 이제 15초면 꽤 정확하게 구분을 할 수 있다. 오토런의 바이러스토탈 기능을 켜면 된다.

바이러스토탈은 모든 파일 해시를 모든 바이러스 백신 소프트웨어에 대해 실행하는 구글 서비스이다. 현재 67개 바이러스 백신 엔진이 탑재돼 있으며, 그 수가 계속 증가하고 있다. 바이러스토탈은 그 자체로 매우 유용한 도구이다. 사용자가 개별적으로 파일을 제출해 악성코드 감염 여부를 확인할 수 있다. 그러나 오토런, 프로세스 익스플로러(Process Explorer)와 같이 사용할 때 진정한 장점을 발휘한다.

유틸리티로 실행시키거나, 체크 바이러스 토탈(Check VirusTotal) 옵션을 켜면 각 관련 파일을 자동으로 바이러스토탈에 제출하고, 각 파일에 대한 결과를 확인할 수 있다. 결과는 분수 형태인데, 여기서 분모는 제출 파일을 검사하는 바이러스 백신 엔진 수다. 통상 67개 이하이다. 분자는 이들 엔진이 악성으로 분류한 파일의 수이다. 분자가 0이라면 악성으로 분류된 파일이 없다는 의미다. 그러나 3 이상이라면 악성 프로그램이 설치돼 있을 가능성이 높다. 1이나 2라면 상대적으로 알려지지 않은 바이러스 백신 엔진의 거짓 긍정(긍정 오류)이다.

이렇게 활용할 경우 바이러스토탈은 꽤 정확하다. 이처럼 오토런/바이러스토탈닷컴은 큰 도움이 된다. 단, 이런 프로세스까지 자동화, 또는 프로그래밍 하는 간단한 방법은 없다. 레지스트리 키 변경을 수집해 통합하는 것이 출발점이 될 것이다. 이후 수집한 것을 분석하고 악성 에이전트를 탐지하는 방법과 엄격함 정도를 규정할 수 있다. 많은 관리자가 이 정도도 하지 않고 있다.


레지스트리 감사 활성화
윈도우에 기본 탑재된 감사 기능을 사용해 레지스트리 감사 기능을 활성화할 수 있다. 먼저 윈도우 레지스트리 감사 기능을 활성화한다. 2단계 프로세스인데, 먼저 윈도우 이벤트 로거에서 레지스트리 감사 기능을 켜야 한다. 액티브 디렉터리나 로컬 그룹 정책을 사용해 고급 감사 정책 구성(컴퓨터 구성>윈도우 설정>보안 설정) 아래 개체 액세스의 레지스트리 감사 항목을 찾아 활성화하면 된다. 그리고 성공(Success) 및 실패(Failure) 옵션을 활성화한다. 후자는 적절한 권한이 없는데 레지스트리 키를 변경하려 시도하는 프로그램이나 사용자를 파악할 수 있다.

이제 레지스트리 편집기(Regeddit.exe)를 사용해 각 레지스트리 키를 연다. 감사하고 싶은 레지스트리 키를 오른쪽 클릭한 후 권한(Permissions) 옵션을 선택하고, 고급 버튼과 감사 탭을 차례대로 선택한다. ‘Everyone' 그룹을 감사 대상으로 추가하고 3가지 기본 권한(Basic Permissions) 대신 고급 권한 보기(Show Advanced Permissions)를 선택한다. 그리고 다음 권한을 활성화한다.

- 값 설정
- 하위키 생성
- 링크 생성
- DAC 쓰기
- 쓰기 소유자

이제 모니터링 할 각 레지스트리에 이와 같은 권한을 반복해 적용한다. ‘겁쟁이’들만 레지스트리를 감사하는 것이 아니다. 가치가 높은 데이터와 전략적인 자산(도메인 컨트롤러, 인프라 서버, 점프 박스 등)이 포함된 컴퓨터의 레지스트리 키를 집중 관리하는 것이 좋다. 자주 변경되어서는 안 되는 부분이다. 일부는 이러한 과정이 어렵게 느껴질 것이다. 그러나 컴퓨터와 네트워크의 문제를 탐지할 수 있는 유용한 방법이다. ciokr@idg.co.kr 
CSO
2017.11.13

악성 코드에 감염됐다면?··· ‘꼭’ 윈도우 레지스트리 확인

Roger A. Grimes | CSO
마이크로소프트 윈도우를 노리는 악성코드 변종이 무수히 많다. 그리고 이 중 일부는 윈도우 레지스트리 데이터베이스(레지스트리)를 변경한다. 재부팅 후 실행하도록 하거나 은닉하고, 기존 적법한 프로세스와 병합하기 위해서다. 따라서 악성코드로 자주 변경되는 레지스트리 영역을 알아두고 꾸준히 모니터링 하는 것이 좋다.



단, 문제가 있다. 적법한 소프트웨어 역시 같은 레지스트리 키를 변경한다는 것이다. 즉 거짓 긍정(False Positive, 긍정 오류) ‘노이즈’가 상당히 많다. 그러나 올바르게 모니터링 하면, 악성코드를 탐지해 관계자에게 경고하거나 도움을 요청할 수 있다.

확인해야 할 레지스트리 키
수 많은 레지스트리 키 중 감사(audit)해야 할 키는 무엇일까? 100% 정확하고 완전한 리스트는 없지만 이를 판단할 때 마이크로소프트의 시스인터널 오토런(Sysinternals Autoruns) 프로그램을 사용하면 큰 도움이 된다. 비슷한 프로그램으로 사일런트 러너(Silent Runners.vbs)도 있다. 오토런은 마이크로소프트에 도입된 프로그램이고, 유명한 마크 러시노비치가 개발했으며, 업데이트도 자주 되는 편이다.

오토런은 19종류의 레지스트리 키 섹션을 검사하며, 빠르게 새로운 공격 벡터를 파악한다. 또한 자동 실행되는 항목을 확인, 비활성화하고 바이러스토탈닷컴(VirusTotal.com)에서 파일 해시를 받아 ‘이전 및 이후’를 비교 분석한다. 레지스트리 키 경로를 추출하기도 쉬워, ‘Save’ 옵션, 명령줄의 ‘Autorunsc.exe’를 사용하면 된다. 사일런트 러너도 오토런과 같은 레지스트리 키 여러 개를 대상으로 한다.

단, 악성코드의 1% 정도는 반영구 스토리지에 쓰기를 하지 않는 메모리 상주형이다. 이 경우 지금까지 살펴본 레지스트리 키 중 하나를 변경하지 않는다. 이러한 메모리 상주형 악성코드는 다른 방법으로 탐지해야 한다.



바이러스토탈로 악성코드 찾기
레지스트리에서 악성 변경과 적법한 변경을 구분하는 것이 정말 중요하다. 과거에는 몇 년의 경험이 필요했고, 머신 별로 1시간 이상을 투자해야 했다. 그러나 이제 15초면 꽤 정확하게 구분을 할 수 있다. 오토런의 바이러스토탈 기능을 켜면 된다.

바이러스토탈은 모든 파일 해시를 모든 바이러스 백신 소프트웨어에 대해 실행하는 구글 서비스이다. 현재 67개 바이러스 백신 엔진이 탑재돼 있으며, 그 수가 계속 증가하고 있다. 바이러스토탈은 그 자체로 매우 유용한 도구이다. 사용자가 개별적으로 파일을 제출해 악성코드 감염 여부를 확인할 수 있다. 그러나 오토런, 프로세스 익스플로러(Process Explorer)와 같이 사용할 때 진정한 장점을 발휘한다.

유틸리티로 실행시키거나, 체크 바이러스 토탈(Check VirusTotal) 옵션을 켜면 각 관련 파일을 자동으로 바이러스토탈에 제출하고, 각 파일에 대한 결과를 확인할 수 있다. 결과는 분수 형태인데, 여기서 분모는 제출 파일을 검사하는 바이러스 백신 엔진 수다. 통상 67개 이하이다. 분자는 이들 엔진이 악성으로 분류한 파일의 수이다. 분자가 0이라면 악성으로 분류된 파일이 없다는 의미다. 그러나 3 이상이라면 악성 프로그램이 설치돼 있을 가능성이 높다. 1이나 2라면 상대적으로 알려지지 않은 바이러스 백신 엔진의 거짓 긍정(긍정 오류)이다.

이렇게 활용할 경우 바이러스토탈은 꽤 정확하다. 이처럼 오토런/바이러스토탈닷컴은 큰 도움이 된다. 단, 이런 프로세스까지 자동화, 또는 프로그래밍 하는 간단한 방법은 없다. 레지스트리 키 변경을 수집해 통합하는 것이 출발점이 될 것이다. 이후 수집한 것을 분석하고 악성 에이전트를 탐지하는 방법과 엄격함 정도를 규정할 수 있다. 많은 관리자가 이 정도도 하지 않고 있다.


레지스트리 감사 활성화
윈도우에 기본 탑재된 감사 기능을 사용해 레지스트리 감사 기능을 활성화할 수 있다. 먼저 윈도우 레지스트리 감사 기능을 활성화한다. 2단계 프로세스인데, 먼저 윈도우 이벤트 로거에서 레지스트리 감사 기능을 켜야 한다. 액티브 디렉터리나 로컬 그룹 정책을 사용해 고급 감사 정책 구성(컴퓨터 구성>윈도우 설정>보안 설정) 아래 개체 액세스의 레지스트리 감사 항목을 찾아 활성화하면 된다. 그리고 성공(Success) 및 실패(Failure) 옵션을 활성화한다. 후자는 적절한 권한이 없는데 레지스트리 키를 변경하려 시도하는 프로그램이나 사용자를 파악할 수 있다.

이제 레지스트리 편집기(Regeddit.exe)를 사용해 각 레지스트리 키를 연다. 감사하고 싶은 레지스트리 키를 오른쪽 클릭한 후 권한(Permissions) 옵션을 선택하고, 고급 버튼과 감사 탭을 차례대로 선택한다. ‘Everyone' 그룹을 감사 대상으로 추가하고 3가지 기본 권한(Basic Permissions) 대신 고급 권한 보기(Show Advanced Permissions)를 선택한다. 그리고 다음 권한을 활성화한다.

- 값 설정
- 하위키 생성
- 링크 생성
- DAC 쓰기
- 쓰기 소유자

이제 모니터링 할 각 레지스트리에 이와 같은 권한을 반복해 적용한다. ‘겁쟁이’들만 레지스트리를 감사하는 것이 아니다. 가치가 높은 데이터와 전략적인 자산(도메인 컨트롤러, 인프라 서버, 점프 박스 등)이 포함된 컴퓨터의 레지스트리 키를 집중 관리하는 것이 좋다. 자주 변경되어서는 안 되는 부분이다. 일부는 이러한 과정이 어렵게 느껴질 것이다. 그러나 컴퓨터와 네트워크의 문제를 탐지할 수 있는 유용한 방법이다. ciokr@idg.co.kr 
CSO
X