퇴근길에 아파트 현관 앞에서 주인을 알 수 없는 USB를 발견했다면 어떻게 하실 건가요? 누군가가 잃어버린 분실물일 거라 생각해 습득물을 경비실에 맡겨 주인을 찾아 달라고 할 수도 있겠죠. 하지만 USB에 담긴 내용이 궁금하든가, 아니면 고용량 USB여서 포맷 후 사용하기로 마음먹고 가져가는 사람도 있을 것입니다.
우리나라는 카페나 지하철 등 건물 안이나 사회 인프라 전반에 CCTV 등의 감시장치가 있습니다. 그리고 내 것이 아닌 물건에는 대부분 손을 대지 않는 국민성을 가지고 있습니다. 하지만 해외에서 실시한 한 실험 결과에 따르면 대다수의 사람들이 주인 잃은 물건을 습득 후 자신이 사용한다고 합니다.
이러한 인간의 심리를 역이용해 비밀 정보를 획득하는 침입 수단 중 하나가 사회공학기법입니다. 약 10년 전 발생한 컴퓨터 바이러스 프로그램인 스턱스넷(Stuxnet) 해킹 사례는 USB를 통한 침투로 보고됐습니다. 이번 글에서는 OT(Operational Technology) 보안의 일환으로 스턱스넷 해킹 사례를 되짚어보고자 합니다.
스턱스넷은 벨라루스의 한 보안회사에서 2010년 7월에 처음 발견했습니다. 악성코드에 있는 일련의 문자를 보고 ‘Stuxnet’이라고 이름 지었는데요. 스턱스넷의 목적은 윈도우PC나 서버 시스템의 감염을 통한 정보 탈취가 아닙니다. 독일의 지멘스의 SCADA(Supervisory Control And Data Acquisition) 시스템의 프로그램 가능 로직 제어기(PLC, Programmable Logic Controller)를 제어하는 것이었습니다.
SCADA는 ‘감독 제어 및 데이터 수집’의 약자로, PLC나 원격 단말 장치(RTU)와 같은 SW, HW의 조합을 의미합니다. PLC는 공장과 같은 산업현장의 로봇제어, 하수처리, 엘리베이터 등 플랜트시설의 유지관리와 자동제어, 모니터링에 사용하는 제어장치를 말합니다. PLC는 전원장치, CPU, 메모리, 입출력 장치가 일체형인 블록타입과 모듈형으로 나뉩니다.
즉, SCADA 시스템은 인프라 모니터링과 통제 HW(센서, 모터, 릴레이), PLC, 프로그래밍 시스템(일반적인 윈도우 노트북이나 데스크탑)으로 구성된 산업현장의 생산망 시스템 일체입니다.
공격자는 원자력발전소나 화학공장의 개발자나 운영자들이 PLC프로그래밍을 위해 지참하는 노트북의 반입, 반출 과정에서 감염된 USB를 집어 들도록 유인합니다. USB를 실행하기만 해도 악성코드가 배포되도록 했는데요. 일각에서는 스턱스넷 배포를 위해 USB를 사용했기 때문에 기술적인 관점에서는 자기복제가 가능한 웜이라고 부르지 않는다고 합니다.
스턱스넷 악성코드 분석가에 의하면 공격자는 최소 6명 이상의 프로그래머로 구성돼 6개월 이상 악성코드를 작성했다고 합니다. 대부분의 위협이 1~2개의 취약점을 이용하는 데 반해 스턱스넷은 7개의 취약점을 이용합니다. USB 장치를 삽입 시 자동 실행되는 링크 바로가기 아이콘 로드 취약점(CVE-2010-2568)을 이용해 악성코드를 제작합니다. 또한, USB 자체를 공격 도구로 하고 USB가 공유되거나 감염된 컴퓨터에 연결된 다른 USB키가 감염되는 것과 함께 윈도우 SMB 취약점(MS08-067) 및 프린터 스풀러 취약점(MS10-061)을 이용합니다.
감염된 단말은 외부 명령제어(C&C) 서버에 접속해 OS정보, 호스트명, IP주소, 설정 데이터들을 전송합니다. 공격자는 PLC를 원격제어 할 수 있는 취약한 컴퓨터를 찾아냅니다. 그리고 STL이나 SCL과 같은 언어를 사용해 작성된 데이터와 코드 블록이 로드돼 실행되는 점을 확인하고 DLL 파일을 대체합니다. 이로써 악성코드를 삽입해 제어할 수 있으며 디지털 서명 탈취를 통해 루트킷을 설치합니다.
스턱스넷으로 인해 피해를 입은 C&C 공인IP는 115개 이상의 나라에 4만여 개가 넘었습니다. 피해를 입은 지멘스 시스템은 이란(67대), 한국(8대), 미국(5대), 영국(2대) 등으로 보고됐습니다. 스턱스넷은 우리가 인지할 수 있는 전통적인 일반 악성코드가 아닙니다. 사회공학기법을 포함해 공격대상에 타깃팅된 정교한 악성코드입니다.
스턱스넷은 지난 2013년 3월 20일 발생된 3.20 사이버테러 사건 이전에 발생한 악성코드입니다. 비록 사이버공격이었지만 이제껏 겪어보지 못한 형태의 악성코드였는데요. 공격자는 특정 국가의 특정 산업기반 시설 및 시스템 침투와 파괴를 목표로 인간의 심리를 교묘히 이용했습니다. 알려지지 않은 다양한 제로데이 취약점과 오랜 기간동안 탐색과 공격 시나리오를 작성해 동원할 수 있는 모든 해킹기술을 이용한 APT(지능형지속위협) 공격을 감행하기도 했습니다.
일부 악성코드 백신 제조사는 이 시기를 기점으로 숙주파일로부터 변형 및 파생돼 쏟아지는 악성코드에 대해 사후약방문식 바이러스 패턴 제작을 통한 치료 방법에 한계를 느꼈습니다. 이에 특정 프로세스가 이상 행위를 하는 수치를 스코어링해 보호하는 행위기반 보안기술이나 사용자들이 SW에 대해 평점을 주는 행위에 아이디어를 얻어 작성자, 작성날짜와 사용량, 파일해시, 디지털 서명 등의 비교를 통한 평판기반보안이라는 신기술을 도입했습니다. 평판기반보안은 이후 인공지능(AI)/머신러닝 기술로 업그레이드돼 기존의 악성코드 분석가에 의존했던 전통적인 백신과는 다른 솔루션 영역으로 자리매김하게 됩니다.
이상 SCADA 시스템에 대한 개요와 스턱스넷의 특징 및 해킹 사례에 대해 알아봤습니다. 폐쇄망 환경에서는 외부망과의 물리적인 통신을 엄격히 제한하고 있으며, 보안의 3요소 목표 중 가용성 확보가 우선시되는 것이 사실입니다. 비록 10년이 지난 시점의 오래된 해킹 사례지만 공격자 관점에서 바라본 폐쇄망 해킹기법 사례를 통해 데이터 흐름의 가시성 확보와 이상 유무를 파악할 수 있는 OT보안의 출발점에 대해 생각해 보는 계기가 되길 바랍니다.
[참고자료]
Symantec Security Response : W32.Stuxnet Dossier ver1.3 (Nov 2010)
GasDetectorsUSA : MIRAMAR PLC-SCADA
글 ㅣ LG CNS 사이버시큐리티팀