전력, 반도체, 철강 등 전세계 주요 산업시설에서 사용하는 산업자동화제어시스템을 공격해 피해를 입힌 첫 악성코드로 이름을 떨친 ‘스턱스넷’에 보안전문가들과 기업 보안담당자들이 여전히 많은 관심을 갖고 계실텐데요.

지난달 시만텍이 발표한 ‘스턱스넷’ 악성코드 분석 보고서 내용을 소개해 보려고 합니다. 본사에서 발표한 이번 기술백서 형식의 보고서는 영문인데다 방대한 내용이 담겨 살펴보기에 쉽지는 않았을 것 같습니다.

이 한글 요약본은 시만텍코리아가 제공했습니다. (영문 보고서 전문을 보시고자 하는 분을 위해 파일도 첨부합니다.)



시만텍 스턱스넷 보고서


시만텍이 발표한 스턱스넷 보고서는 수많은 시만텍 보안 대응팀 구성원들이 지난 3개월간 흘린 땀의 결과물로, 현재 대부분의 분석작업이 완료된 상태다. 하지만, 스턱스넷은 상당히 방대하고 복잡한 보안 위협인 만큼 보고서 발표 이후에도 지속적인 업데이트가 필요하다는 점을 밝혀둔다.

최근 언론에 자주 오르내리는 스턱스넷(W32.Stuxnet)은 지금까지 시만텍이 분석한 가장 복잡한 보안 위협에 속한다. 이 보고서에서는 스턱스넷과 스턱스넷의 다양한 컴포넌트를 비롯해 스턱스넷의 최종 공격목표인 산업용제어시스템의 프로그램 재설계에 초점을 맞춰 상세히 분석했다.

우선 스턱스넷은 다양한 컴포넌트와 함수를 포함하고 있는 방대하고 복잡한 악성코드의 일종이다. 시만텍은 보안블로그(http://www.symantec.com/connect/ko/symantec-blogs/sr)를 통해 스턱스넷 일부 컴포넌트에 대해 이미 설명한 적이 있지만 이 보고서에서는 스턱스넷 보안 위협에 대해 훨씬 포괄적이고 자세한 정보를 다루었다.


스턱스넷 구조와 공격방법

스턱스넷 구조는 다양한 익스포트(Export)와 리소스(Resource)를 갖고 있는 대형 dll 파일로 구성되어 있으며, 이밖에 두 개의 암호화된 설정 블록을 포함하고 있다.

스턱스넷의 드롭퍼(dropper) 컴포넌트는 모든 구성요소를 포함한 랩퍼(wrapper) 프로그램으로 ‘스터브(stub)’라는 섹션 내부에 저장되어 있다. 이 스터브 섹션은 스턱스넷 실행에 중요한 역할을 담당한다. 스턱스넷이 실행될 때 드롭퍼가 스터브 섹션에서 dll 파일을 추출해 마치 모듈처럼 dll 파일을 메모리에 매핑시키고, 익스포트를 호출한다.

스터브 섹션을 가리키는 포인터가 매개변수로 호출 익스포트에 전달되면 이후 익스포트는 매개변수로 전달된 스터브 섹션에서 dll 파일을 추출해 메모리와 매핑시키고 매핑된 dll 파일 안에 있는 또다른 익스포트를 호출한다. 이후 원래 스터브 섹션을 가리켰던 포인터가 다시 매개변수로 전달되며, 이러한 과정은 스턱스넷이 실행되는 내내 지속적으로 발생한다. 따라서 원래의 스터브 섹션은 매개변수 형태로 여러 프로세스와 함수에 전달된다. 이런 방식에 의해 스턱스넷의 각 계층은 항상 메인 dll 파일과 설정 블록에 접근하게 된다.

알려진 대로 스턱스넷의 주요 공격목표는 송유관과 발전소 등에서 사용하고 있는 산업용제어시스템이나 이와 유사한 시스템이다. 스턱스넷의 최종 목표는 PLC(Programmable Logic Controller)를 공격자의 의도대로 작동시키고 PLC 운영자가 이러한 변경사항을 알지 못하도록 PLC 코드를 수정, 산업용제어시스템의 프로그램을 재설계하는데 있다.

스턱스넷 개발자는 이같은 목표를 달성하기 위해 매우 다양한 컴포넌트를 취합, 성공 가능성을 높인다. 여기에는 제로데이 취약점, 최초의 PLC 루트킷인 윈도우 루트킷, 안티바이러스 탐지 회피기술, 복잡한 프로세스 인젝션 및 후킹 코드, 네트워크 감염 루틴, P2P 업데이트, 명령제어(Command and Control) 인터페이스 등이 포함되어 있다.

스턱스넷의 주요 특징


이란 사례에서 보듯이 스턱스넷은 송유관, 발전소 등 특정 산업용제어시스템을 공격 목표로 삼는다. 스턱스넷의 궁극적인 목표는 PLC 프로그램을 변경함으로써 공격자의 의도대로 오작동을 유도해 시설을 파괴 또는 마비시키는데 있다.

스턱스넷은 지난 7월 발견되었지만 적어도 1년 전부터 존재해 왔다는 사실이 확인되었고, 그 이전부터 활동했을 가능성도 제기되고 있다. 현재까지 대부분의 스턱스넷 감염사례는 이란에서 발견되었다. 스턱스넷은 다음과 같은 다양한 특징을 갖고 있다.

USB와 같은 이동식 저장매체의 자동실행 취약점을 이용한 자기복제. 마이크로소프트 윈도우 바로가기 ‘LNK/PIF’ 파일 자동 파일 실행 취약점(BID 41732)

윈도우 프린트 스풀러(Windows Print Spooler) 취약점을 이용해 LAN을 통한 전파. 마이크로소프트 윈도우 스풀러 서비스 원격 코드 실행 취약점 (BID 43073).

마이크로소프트 윈도우 서버 서비스 RPC 처리 원격 코드 실행 취약점(BID 31874)을 이용해 SMB를 통한 전파

네트워크 공유를 통해 원격 컴퓨터상에서 자가복제 및 실행

WinCC 데이터베이스 서버가 실행중인 원격 컴퓨터상에서 자가복제 및 실행

스텝 7(Step 7) 프로젝트가 로딩될 때 자동 실행되는 방식으로 스텝 7 프로젝트에 자가복제

LAN 상에서 P2P 방식으로 스스로 업데이트

총 4개의 마이크로소프트 취약점 이용. 2개는 자가복제를 위해 위에 언급한 취약점 이용, 나머지 2개는 아직 공개되지 않은 권한 상승 취약점을 이용

해커가 업데이트된 버전 등 코드를 다운로드하고 실행할 수 있도록 C&C 서버에 접속

바이너리가 숨겨진 윈도우 루트킷 포함

안티바이러스 등의 보안제품 회피 시도

특정 산업용제어시스템에 침투, 지멘스 PLC의 코드를 변경해 시스템 파괴 가능성

PLC에 변조된 코드(기본적으로, PLC 루트킷)를 숨김


스턱스넷 공격 시나리오


산업용제어시스템(ICS)은 PLC 코드처럼 특수 어셈블리에 의해 실행된다. PLC는 주로 인터넷이나 심지어 네트워크에 접속되지 않은 윈도우 컴퓨터상에서 프로그래밍되며, ICS 역시 인터넷에 접속되어 있을 가능성이 낮다. 이 같은 점을 고려해 스턱스넷의 기술적 특징을 기반으로 추측 가능한 예상 공격 시나리오는 다음과 같다.

우선, 각 PLC마다 고유한 방식으로 환경 설정이 되어 있기 때문에 공격자는 먼저 ICS의 구조를 파악하기 위해 정찰 업무를 수행해야 한다. ICS 설계 문서는 내부직원이 몰래 빼내거나 심지어 스턱스넷 초기 버전 또는 다른 악성 바이너리를 통해 입수할 수 있다. 일단 설계 문서와 ICS 컴퓨팅 환경에 대한 정보를 확보하면 스턱스넷 최신 버전 개발에 착수한다. 스턱스넷의 각 기능들은 저마다 실행 이유가 있으며, ICS 파괴라는 최종 목표를 위해 움직인다.

다음으로 공격자는 실행코드를 테스트하기 위해 PLC, 모듈, 주변기기 등 필수 ICS 하드웨어를 포함해 실제 표적 ICS와 동일한 환경을 구축해야 한다. 준비에서 테스트까지 전 과정에 대략 6개월의 시간이 소요되며, 품질보증, 관리 등 수많은 다른 지원인력은 차치하고 5~10명의 핵심 개발자들이 투입된다.

또한 악성 바이너리 파일에는 의심을 피하기 위해 디지털 부호로 변환시켜주는 드라이버 파일이 포함되어 있다. 이를 위해 공격자는 두 개의 디지털 인증서를 탈취한다. 양자는 물리적으로 가까운 거리에 위치해 있어야 하며, 디지털 서명을 빼내기 위해 건물 내부로 직접 침투할 수 있다.

스턱스넷은 목표물을 감염시키기 위해 목표 환경으로 직접 침투해야 한다. 이를 위해 기꺼이 협력하거나 아예 범죄 사실을 모르는 제3의 대상을 이용할 수 있다. 목표 시설에 접근 권한이 있는 협력사나 내부 직원 등이 그 대상이다. 1차 감염은 USB와 같은 이동식 드라이브를 통해 이루어진다. .

일단 스턱스넷이 목표 시스템 환경 내의 컴퓨터 한 대를 감염시키면 일반 윈도우 컴퓨터이지만 PLC 프로그래밍에 사용되는 ‘필드 PG(Field PG)’를 찾아 확산되기 시작한다. 대다수의 필드 PG는 네트워크에 연결되어 있지 않기 때문에 스턱스넷은 먼저 2년 전에 등장한 제로데이 취약점을 통해 LAN 상의 컴퓨터로 스텝 7 프로젝트를 감염시키고 이동식 드라이브를 통해 감염을 시도한다.

공격자는 C&C 서버로 스턱스넷을 제어할 수 있지만 앞에서 언급했듯이 표적 컴퓨터는 외부 인터넷에 접속되어 있을 가능성이 낮다. 따라서 시스템 파괴를 위한 모든 기능은 스턱스텟 실행파일에 직접 내장된다. 이 실행파일 업데이트는 스턱스넷에 의해 P2P 방식으로 전파된다.

마침내 스턱스넷이 스텝 7이 실행 중인 적합한 컴퓨터를 발견하면 PLC 코드를 변경함으로써 PLC 시스템을 파괴한다. 스턱스넷 개발에는 대규모 자원이 투입되었기 때문에 공격 목표는 주로 중요도가 높은 핵심 기간 시설들이다. 스턱스넷에 감염된 기업들은 문제를 해결하기 위해 PLC 코드를 조사하지만 스턱스넷이 코드 변경사항을 숨기기 때문에 특이사항을 발견하기는 어렵다.

원하는 필드 PG를 찾기 위해 자가복제 방식이 필요할 수 있지만 공격자는 목표 기업 외부의 컴퓨터까지 감염시킴으로써 부수적인 피해를 입힌다. 또한 공격사실이 발견될 때면 이미 초기 공격이 완료되었을 가능성이 높다.


스턱스넷 보안 위협 개요


날짜

주요 사건

2008-11-20

LNK 취약점을 이용한 Trojan.Zlob 변종 발견. 후에 스턱스넷으로 확인됨.

2009-04

하킨나인(Hakin9) 보안 전문 잡지가 프린터 스프롤러 서비스의 원격 코드 실행 취약점에 관해 자세히 소개함. 이 취약점은 후에 MS10-061로 확인됨.

2009-06

스턱스넷 초기 샘플 발견. MS10-046 이용하지 않음. 서명된 드라이버 파일 없음

2010-01-25

리얼텍 세미컨덕터 회사 소유의 유효 인증서로 서명된 스턱스넷 드라이버 발견

2010-03

MS10-046을 이용한 첫 번째 스턱스넷 변종 발견

2010-06-17

바이러스블로카다(Virusblokada) 보안업체, W32.스턱스넷 발표(RootkitTmphider라 명명), 바로가기/.Ink 파일 처리 취약점(후에 MS10-046로 확인)을 이용해 확산되었다고 밝힘.

2010-07-13

시만텍, W32.Temphid를 탐지 목록에 추가(전에는 트로이 목마로 탐지)

2010-07-16

마이크로소프트, 바로가기/.Ink 파일 처리 취약점을 포함한 ‘윈도우 쉘 취약점의 원격 코드 실행 가능성’에 대한 보안 공지 발표.

베리사인, 리얼텍 세미컨덕터에 대한 인증서 폐지

2010-07-17

이셋(Eset), 제이마이크론 테크놀러지사의 인증서로 서명된 새로운 스턱스넷 드라이버 발견

2010-07-19

지멘스, 자사 WinCC SCADA 시스템의 악성코드 감염 보고서를 조사 중이라고 밝힘.

시만텍, 탐지 웜의 이름을 W32.Stuxnet로 변경.

2010-07-20

시만텍, 스턱스넷 C&C 트래픽 감시

2010-07-22

베리사인, 제이마이크론 테크놀러지사의 인증서 폐지.

2010-08-02

마이크로소프트, 윈도우 쉘 바로가기 취약점에 관한 MS10-046 패치 발표

2010-08-06

시만텍, 스턱스넷의 PLC 침투 및 코드 주입방식과 ICS에 미친 영향에 대해 발표.

2010-09-14

마이크로소프트, 8월 시만텍이 확인한 프린터 스풀러 취약점에 관한 MS10-061 패치 발표.

마이크로소프트, 8월 시만텍이 확인한 두 개의 권한 상승 취약점 발표.

2010-09-30

시만텍, 바이러스 게시판에 스턱스넷 포괄 분석 자료 게시


스텍스넷 감염 현황

시만텍은 2010년 7월 20일 스턱스넷 C&C 서버의 트래픽을 모니터링하는 시스템을 마련해 감염률과 감염된 컴퓨터의 위치를 파악했다. 시만텍의 시스템은 스턱스넷 C&C 서버와 연결이 가능한 컴퓨터에서 전송되는 C&C 트래픽만을 파악했으며, C&C서버로 전송되는 트래픽 가운데 만약 지멘스 SIMATIC 스텝 7 산업 제어 소프트웨어를 구동하는 경우, C&C 서버로 다시 전송되는 데이터는 암호화되어 전송되며, 내부 및 외부 IP 주소, 컴퓨터 이름, OS버전, 지멘스 스텝 7 설치 정보 등을 포함하고 있다.

2010년 9월 29일 기준으로 약 10만대의 감염호스트가 파악되었다. 1번 그래프는 국가별로 감염된 호스트의 숫자를 보여주고 있으며, 이란에서 가장 많은 감염 숫자가 발견되었다.

 

사용자 삽입 이미지

2번 그래프는 WAN IP 주소를 기준으로 국가별로 감염된 기관의 숫자를 보여주고 있다.

사용자 삽입 이미지

시만텍은 155개국, 4만대 이상의 외부 IP 주소를 모니터링했다. 3번 그래프는 국가별로 감염된 호스트의 비중을 보여주고 있으며, 감염된 호스트 가운데 약 60%(정확히는 58.31%)가 이란에 위치한 것으로 파악되었다.


사용자 삽입 이미지

스턱스넷은 지멘스 STEP 7 소프트웨어가 설치된 호스트를 파악하는 것이 목표다. 4번 그래프는 감염된 호스트 가운데 지멘스 소프트웨어가 설치된 감염된 호스트의 국가별 비중을 보여주고 있다.

사용자 삽입 이미지

5번 그래프에서 일자별로 새롭게 스턱스넷에 감염된 IP 주소 숫자를 살펴보면 8월 22일 이란은 더 이상 새로운 감염사례를 보고하지 않았다. 이는 감염 사례가 줄어들었기 때문이 아니라, 이란이 외부로 나가는 C&C 서버 연결을 차단했기 때문으로 분석된다.

사용자 삽입 이미지

이란에 감염사례가 집중된 것은 이란이 최초 감염 목표였고, 그래서 초기에 감염사례가 시작되었기 때문으로 분석된다. 스턱스넷은 표적공격이지만 다양한 확산 기술을 사용하고 있기 때문에 초기 목표물 이외의 대상으로 확대되고 있다. 이런 추가적인 감염사례로 인해 부수적인 피해를 야기하고 있으며, 이는 스턱스넷이 사용하고 있는 초기의 다양한 확산 경로로 인한 의도하지 않은 부작용이라고 할 수 있다. 감염률은 사용자들이 취약점에 대한 패치를 하면서 감소할 것으로 예상되지만 이런 종류의 웜의 특성상 안전하지 않은, 패치가 안된 컴퓨터들을 통해 지속적으로 확산될 것으로 예상된다.


맺으며

스턱스넷은 악성코드의 역사상 여러가지 새로운 기록을 세우고 있다. 최초로 한번에 4개의 제로데이 취약점을 이용했으며, 2개의 디지털 인증서를 공격하고, 산업 제어 시스템에 악성코드를 심었다. 특히, 스턱스넷은 중요한 기반시설 인프라에 직접적으로 사이버 공격을 감행하는 것이 가능하다는 것을 보여주는 사례라는 점에서 시사하는 바가 크다.

스턱스넷 사례에서 보듯이 갈수록 고도화·정교화·표적화되고 있는 최신 사이버 공격에 대비해 시만텍은 기업들에게 다음과 같은 실천방안을 권고하고 있다.

1. IT 정책의 수립: 기업은 위협에 대한 우선순위를 정하고, 기업 내 모든 위치에서 적용 가능한 정책을 정의하고, 자동화 등의 기능을 이용해 보안 정책을 집행해야 한다.

2. 정보 중심의 보호: 정보 중심의 접근을 통해 적극적으로 정보를 보호해야 한다. 기업 내 가장 중요하고 민감한 정보가 어디에 있는 지를 파악해 적절한 보호를 강구해야 한다.

3. 신원 관리: 누가 민감한 정보에 접근하는 지 파악하고 관리해야 한다. 직원, 파트너, 고객 등 세가지 그룹이 기업의 시스템에 접근할 수 있기 때문에 신원 인증 관리가 중요하다. 디바이스, 시스템 혹은 애플리케이션의 사용자를 인증함으로써 자산을 보호할 수 있다.

4. 시스템 관리: 시스템 자체의 관리도 중요하다. 최신 보안 패치를 배포하고, 자동화를 통해 효율성을 제고하고, 시스템 상태의 감시 및 보고 등의 활동을 통해 시스템을 관리해야 한다.

5. 인프라 보호: 개별 포인트의 보안에서 나아가 인프라 전체의 보호를 강구해야 한다. 중요한 내부 서버를 보호하고 데이터의 백업 및 복구 역량을 우선적으로 확보해야 한다. 또, 위협에 신속히 대응하기 위해 인프라 운영에 대한 가시성을 높이고 보안 인텔리전스를 갖춰야 한다.

6. 24x7 중단없는 가용성 확보: 안전한 보호와 더불어 보안 운영으로 인해 시스템 가용성에 영향을 받지 않도록 가용성을 확보하는 것 또한 중요하다.

7. 정보 관리 전략 수립: 정보 유지 계획과 정책을 포함한 정보 관리 전략을 수립해야 한다. 데이터의 수명주기를 고려해, 백업, 아카이빙, 삭제 등의 작업을 통해 총체적인 정보 관리를 구현해야 한다.


이와 함께 시만텍은 주요 기간 인프라 보호를 위해 각국 정부에 다음과 같은 실천방안을 권고하고 있다.


1. 정부 차원에서 적절한 리소스를 투입해 핵심 기간 인프라 보호 프로그램을 수립, 운영해야 한다.

2. 산업계, 민간 기업들과 적극적인 협력을 통해 핵심 기간 인프라 보호와 관련된 정보를 공유하고, 인식을 제고해야 한다

3. 사이버 공격에 대비하기 위해 보안만으로는 불충분하다. 핵심 기간 인프라 공급업체와 일반 기업들이 정보의 저장, 백업 등이 이뤄지고 있는지, 계정 및 접근 관리 프로세스가 제대로 실행되고 있는지 확인해야 한다.


2010/11/05 11:17 2010/11/05 11:17

트랙백 주소 :: 이 글에는 트랙백을 보낼 수 없습니다