2014년 12월 24일 수요일

미래부에서 전수검사를 하겠다는 기사를 보고, 침해사고 대응 (Incident response) 관점에서 몇글자 끄적끄적.

0. 들어가며
이번 한수원 사태와 관련하여
http://www.yonhapnews.co.kr/economy/2014/12/22/0303000000AKR20141222174900017.HTML
이런 기사를 보게 되었다.
"정부가 한국수력원자력의 원전 도면 유출 사건 등 해킹이나 악성코드 등에 의한 사이버 공격 위협이 커지자 내년 초 민간분야 정보통신 기반시설에 대한 민관 합동 전수조사를 한다. 미래창조과학부는 2015년 1월 외부 전문가인 정보보호 보안업계 관계자들과 함께 점검단을 꾸려 통신사업자와 포털, 대형쇼핑몰 등 민간분야 정보통신 기반시설 내 서버와 데이터센터 등 100여곳에 대해 전수조사에 나설 계획으로 전해졌다.
미래부 한 관계자는 23일 이같이 전하면서 "기반시설에 들어간 서버를 하나씩 하나씩 보겠다는 것"이라며 전수 조사에 의미를 부여했다. "

1. 전수검사 != 샘플링
100% 완벽한 보안이란 없기 때문에 침해사고는 발생할 수 있다고 생각된다.
하지만 침해사고 대응 (incident response)을 할때에 어떤 전략을 취하느냐에 따라 지속적으로 리소스 (사람, 시간, 예산, ...)는 투입되는데 고생은 고생대로 하고, 별 신통한 효과를 보지 못하고 계속 해커가 침입하는 결과를 낳기도 한다.
침해사고 대응은 정말로 고통스럽다. 투입된 보안인원 뿐 아니라 정상적인 서비스 운영을 하지 못해 IT서비스를 담당하는 부서도 고통을 분담하게 되고, 또 이것이 장기화 되면 비즈니스를 담당하는 모든 구성원들에게 영향을 끼치게 된다.

그렇다면, 침해사고 대응을 할 때 굳이 전수검사가 필요한 경우는 어떤 경우일까?

2. PDCERF 
그러고 보니 침해사고대응이라는 이름의 과목으로 강의를 4번 정도 개설했었던 것 같다.
저 신문기사를 본 뒤 Facebook 에 (www.facebook.com/cendakim) 전수검사에 대해 아래와 같이 글을 올렸는데, 이 글 때문에 몇몇 언론사에서 연락이 왔었다.
---
그러고 보니 예전에 모 기업에서 재직하던 시절에, 매년 1번 전 국가 전 서버에 대해서 전수검사를 하고, 월 1회에는 원격 진단하던 것이 생각난다. (정말 모든 서버를 전수검사로. 샘플링 아님.) 이런 상황에서는 단순 무식해 보여도, 잘 돌아가고 있다고 믿어지는 것도 실제로 눈으로 한땀한땀 점검하는 것이 *정말로* 중요.아니 이 서버는 서비스 종료되었는데 왜 전원 들어온 채 랙 구석에서 아무도 모르는 채 관리 방치되어 있는 거지?? 라든가,DC 에서 보안정책 내려보냈는데 왜 이 서버는 gpupdate 를 30번이나 입력해도 왜 정책을 도메인 컨트롤러에서 못받아 오는 채로 있었던 거지? 라든가.누가 이 서버 레지스트리에 이런 거 등록해 두었지?이미 기존 망에 침해사고가 일어나서 백도어 깔린 서버 내지는 피씨가 한대라도 있다면 isolation (containment) -> eradication -> recovery 전략이 매우 중요. 일정계획 정말 절묘하게 잡아서 동시에 점검해서 동시에 fix 하지 않으면 해커는 두더지 망치 게임 하듯 요리 조리 피해다니면서 결국 제거 안되는 문제가....
----

전수검사는 단어 그 자체로는 큰 의미는 없다. 모든 것을 다 검사한다 (샘플링 방식이 아닌 모두 다 검사하는 것) 는 간단한 의미이다.
하지만 침해사고대응 전략과 맞물려서 생각하면 고민해야 할 것이 많아진다. 쉽게 쓸 수 있는 말도 아니고, 쉽게 할 수 있는 일도 아니다.
예컨데 보안실무자가 "어제 OOO 서버에 침입이 있었고 조사해본 결과 백도어가 설치된 것을 확인하였습니다" 라고 보고할 경우 경영진이 "다른 서버들은 아무 문제 없나? 모두 조사해봐" 라고 하는 순간 보안실무자의 등에는 땀이 흐를 것이다.

'말이 쉽지 운영 중인 라이브 서비스에 영향을 줄 수도 있는데 어떻게 다 점검을 하란 말인가...' 라는 생각부터 떠오를 것이다.

그렇다고 모두 다 점검을 안할 수도 없다. 다른 서버들이 안전하다는 보장을 할 수 없기 때문이기도 하고, 침입이 확산되는 것을 막고 재발을 방지하려면 한번 모두 살펴보고 싶은 엔지니어의 욕구도 있고, 그래야만 이제 안전해 졌으니 서비스를 계속 운영해도 좋다고 모든 구성원들이 납득할 것 같기 때문이기도 하다.

하지만 여전히... '말이 쉽지 그거 어떻게 하라고... 시간도 없고 사람도 없고 돈도 없는데' 라는 생각이 들 수 밖에 없을 것이다.

대개 침해사고대응시 의사결정의 중요 요소는 피해 자산의 중요도, 예산, 복구에 소요되는 시간, 또는 복구를 해내야만 하는 시간 (예컨데 서비스 다운타임이 4시간 이상 지속될 경우 약관에 의해 고객에게 피해보상을 해야 한다는 조항이 있다거나), 피해 자산과 동질성을 갖는 자산 (동일 OS version 을 쓰고 있다거나, 동일 application 이 구동중이었다거나, 동일 패스워드를 쓰는 계정이 있었다거나, ...) 의 범위, 피해 서버로부터 연결할 수 있는 장비들의 규모 (즉, 사건 발생시 perimeter 를 어디까지 설정해야 할지의 문제) 등이 있다.

PDCERF 방법론에서 R = Recovery 란 동일한 공격이 재발하지 않고, 다시 서비스가 정상적인 운영가능한 상태로 돌아왔을 때 비로소 R 이라고 부른다. 현실적인 예로는 해킹 발생한 서버에 백도어를 제거하고 보안조치를 취한 후 동일 사건이 3달 이내 재발하지 않는다면 R에 성공했다고 간주할 수 있겠다.

보안담당자들은 이런 요소들을 종합적으로 고려해서 현실적인 대안을 택하게 된다. 예컨데, 동일 서브넷에 있는 장비들에 대해 정밀진단을 신속히 마무리 짓고, 다른 서버들에 대해 추가 모니터링을 확대해 나가는 전략을 선택할 수도 있겠고, 단순무식하게 공격 진원지로 보이는 IP 대역을 차단하고, 발견된 악성코드나 백도어를 antivirus 등 기존 보안솔루션에서 탐지가 안되던 것을 이제부터는 탐지가 가능하도록 새로이 패턴 추가를 하는 선에서 마무리 짓고, 새 패턴으로 백신 전체 돌려본 뒤 더 발견된 것이 없으면 우선 한숨 돌린다든지, 공격에 이용된 IP 나 계정으로 로그인한 흔적이 있는 장비들에 대해서 1차 분석을 한다거나 할 것이다.

3. 전수검사, 그 이상과 현실
소위 전수검사라는 것은 신속하게 모든 서버를 정밀하게 동시점검을 해낼 수 있다면 이상적이나, (또 자동화 하여 상시 on-demand 로 해낼 수 있다면 이상적이나) 여러 상황을 고려하여 쉽게 진행하지는 못하는 것이 일반적이다.

하지만, 피해가 발생한 곳이 critical infrastructure 라면 이야기는 달라진다.
cyber attack 이 real world 에 영향을 주는 attack 이 될 수 있기 때문이다. 굳이 이란 부쉐르 원전을 망가뜨렸던 stuxnet 의 예를 들지 않아도 될 것이다.

이때는 절대적으로 필요한 것이 "이제는 안전하다" 라고 말할 수 있는 "확신(guarantee)"이다. 그래야만 critical infrastructure 를 기존의 공격으로부터 보호하고 서비스를 향후에도 안전하게 이어갈 수 있기 때문이다.
더불어 "확신" 이라는 것을 담보해야 하는 이유는 critical infrastructure 의 보호(protection)에는 보안(security) + 안전(safety)의 개념이 함께 묶여 있기 때문이다.
정말로 mission critical 한 서비스라면, 정말로 단 하나의 여지라도 남아 있을 경우 피해가 catastrophic 등급으로까지 갈 수 있다면, 전수검사를 해야한다.
이때 중요한 것은 resource planning, scheduling 이다.
우선, 정밀분석에 동시 투입가능한 전문인력 수, 1대 점검에 소요되는 평균 시간, 최대 허용되는 downtime, 그리고 예산 범위 내에 최대 확보 가능한 서버, 네트워크 장비, 회선 등을 모두 고려해야 한다.
두번째로는 PDCERF 의 CER 이다. (Containment -> Eradication -> Recovery)
진흙 투성이가 된 애완견 10마리가 집안을 누비고 있고, 나는 청소를 해야 한다고 하면 진흙투성이 애완견을 계속 방들을 헤집고 다닐 수 있도록 놓아둔 채 이 방 저 방을 청소한 들 아무 의미가 없게 된다.
새로운 방을 하나 확보하고, 기존 애완견 10마리는 더 이상 다른 방으로 돌아다니지 못하도록 격리한 뒤,  몇명이 동시에 몇마리를 씻길 수 있는 확인 후 (예를 들어 한번에 2마리씩 동시에 씻길 수 있다면), 씻긴 애완견들을 새 방에 넣는 식으로 처리를 해야 한다. 동시에 몇마리 씩 씻길 수 있는가는 시간을 최대한 단축시키기 위한 고려사항이고 근본적으로는 CER 문제이되, 해결방법은 divide and conquer 라고 볼 수 있는 것이다.
비유를 떠나 현실로 돌아오면 만만한 작업은 절대 아니고, 단시일에 끝날 수 일은 아니게 된다.
피해를 입은 서버 및 네트워크 구간을 격리시키고, 새로 서비스를 이관할 깨끗한 네트워크를구성하는 작업 (VLAN 과 ACL구성만해도 머리가 아파올 것이다.), 기존 현행 서비스를 오염된 구간에서 계속 이어가는 와중에, 클린업된 서버가 새로운 VLAN에서 서비스를 seamless 하게 take-over 할 방법, 동시에 모든 서비스를 격리시킬 수 없으니 VLAN 을 세밀히 나누어 순차적으로 작업할 일정 잡는 것, 새로 IP를 부여할 필요가 있는지 여부, 서버 복제 문제, 몇대의 서버를 예비장비로 확보할지, 네트워크 장비나 회선은 한시적으로라도 추가 임차를 할지, 전문가는 몇명까지 투입 가능할지, 예산은 어느 정도 될지 등등 말이다.
더불어 전력 분야는 국내 주요 발전소들간 계통 연계가 되어 있어서 기업에서의 보안진단 처럼 A 라는 발전소 점검이나 셧다운을 임의로 시킬 수 없다. (모든 계통이 서로 영향을 주고 받기 때문이다.) A라는 곳이 점검으로 인해 잠시 out of service 가 되어 있는 동안 다른 곳에서 이 부하를 감당해 줘야 하고 점검 작업 자체도 nation-wide 하게 생각해야 한다.

4. 그럼에도 불구하고
기간이 오래 걸리겠지만, 해야 한다고 생각된다.
국민 안전이 담보되어야 하고, 이미 해킹당한 곳이 하필 주요국가기반시설이라면, 주요 시설 내 장비가 모두 안전한 상태로 클린업 되어 돌아가고 있다는 확신을 가져야 하기 때문에 기간과 예산을 충분히 들여서 해야 한다고 생각된다. 
만에 하나라도 백도어가 한대에라도 남아 있다면 다시 공격은 야금야금 들어오게 될 것이다.
애초에 망분리+단방향전송장비 조합에서도 취약점이 있고, 또 아직도 현장에서 USB의 부주의한 이용으로 인해 보안사고가 없지는 않아왔었다.
더불어, 폐쇄망이라는 점을 맹신해서 제어망 내부에는 패치 조차 안되어 있는 경우도 많고, 또 발전관련 설비들은 임의로 보안패치를 할 경우 발전관련 소프트웨어 패키지나 솔루션들이 오동작하거나 벤더로부터 보장을 받지 못하게 되어 아무 조치도 그간 취하지 못하고 있었던 고질적인 문제들도 있다. (제어망 내에 Windows NT 4.0 서버, SunOS 4.x 서버들도 아직 현역으로 구동중인 장비가 있다는 걸 아는지? )

5. 하지만 이것만은...
군사 용어 중에 축차투입이라는 것이 있다.  한번에 10을 확 쏟아부어서 최대의 효과를 내야 하는 것이 정석이라고 한다면, 1을 찔끔 넣어보고 안되면 1을 더 부어보고, 안되면 2도 넣어보고, 그 뒤에도 안되면 4도 넣어보고 하지만 계속 추가투입되는 증분 자체는 큰 양이 안되니 계속 각개격파 당하는 상황을 일컫는 말이다.
보안전수검사의 핵심은 최대한 가용할 수 있는 리소스에 맞춰서 (동시에 분석가능한 인원 및 장비한계수) 일정계획과 격리 및 방역 계획을 짜는 것이다. 해커는 한번 내부까지 침입해서 베이스캠프를 마련했다면 옆 서버에 추가 공격을 날려서 공격 벡터를 바꾸고 또 추가 베이스 캠프를 만드는데 몇초 걸리지 않는다. 
즉 진흙탕에서 아이들이 뛰어 놀때 진흙탕에 가서 아이를 하나 둘씩 씻겨 봐야 그 아이들은 또 다른 아이들과 섞여서 진흙에 묻고 물과 사람과 시간은 계속 투입될 뿐이다. 진흙탕에 있는 아이를 한번에 두명씩 씻길 수 있다면 두명씩 개별적으로 목욕탕으로 불러낸 뒤 씻기고 깨끗한 방으로 넣는 작업을 모든 아이를 씻길 때까지 하는 것이 중요하다. 세부 방법으로 6학년 아이들만 먼저 씻기든, 남학생들만 먼저씻기든, 그것은 상황에 맞게 유연하게 대응하면 될 것이고... (첫달은 사내망, 둘째달~다섯째 달은 제어망을 구간별로 순차적으로 하든...)
이왕 침해사고 대응과 안전 확보를 위해 전수검사를 결정했다면 최대한 많은 인원을 동시에 투입할 수 있도록 계획을 짜고, 효율을 위해 돈을 아끼지 말도록 하라. 
4~5명 찔끔찔끔 체크리스트 기반으로 점검하고 그치게 된다면 그거야 말로 돈은 돈대로 쓰고, 사고는 계속 이어지는 축차투입이 되고 말 것이다.