[보안사고사례분석] 2011년 발생한 농협 전산망 해킹에 의한 시스템 장애

사고 개요

2011년 봄에 발생한 농협의 전산 시스템 장애는 IBM 엔지니어의 노트북(?)에서 원격명령으로 실행된 dd(혹은 rm) 명령에 의해 발생된 것으로 알려져 있다. 이때 장애가 발생한 서버는 IBM의 AIX 운영체제가 설치된 Unix 서버 약 270여대로 추정된다.

rm 명령은….Unix 서버에서 rm 은 파일과 디렉토리를 삭제하는 명령이다. 윈도에 있는 휴지통..?? 유닉스엔 휴지통 개념이 없다. 파일이나 디렉토리는 무조건 삭제되고 복구도 불가능하다. 그래서 rm 명령을 내리면 파일 하나 하나 “진짜로 지울까요?”라고 물어보도록 강제로 설정하는 것이 기본이다.(하지만 손쉽게 무력화할 수 있다) 따라서 100개의 파일을 지우려면 100번을 y키를 눌러줘야 한다. 농협엔 이 설정이 안되어 있었을 가능성도 있다.

dd 명령은….dd는 디스크를 이미지화하여 백업하고 문제가 발생하였을 경우 백업 받아둔 이미지로 복구할 수 있는 명령이다. 윈도에서 흔히 사용하는 트루이미지나 고스트 정도로 생각하면 틀리지 않다. 하지만 입력 디바이스에 /dev/null 을 지정하고 실행하게 되면 스템은 “작살~”이 난다. 디스크의 앞부분부터 로우레벨에서 모두 지워지기 시작한다고 생각하면 된다.(윈도에서 디스크를 로우레벨로 포맷하는 것과 같음) 이경우 리부팅하면 리부팅도 되지 않을 가능성이 거의 100%다.

이 두개의 명령이 농협의 전산망을 마비시켰다고 알려져 있다.

 

의문점 1. 어떻게 320대의 서버중 275대에서 rm과 dd가 동시에 실행될 수 있는가?


농협의 사고 개요

농협은 275대의 서버에서 rm과 dd 명령이 동시에 실행되었다고 밝히고 있다. 이 rm과 dd 명령은 아무리 서버의 관리자 권한(root)을 갖고 있다고 하더라도 쉽게 사용하는 명령어가 아니다. 그리고 시스템 운영자도 dd 명령을 모르는 경우가 허다하다.

더군다나 모든 파일을 삭제하는 “rm -rf *” 명령은 엔지니어들이 쉽게 입력하고 엔터키를 누를 수 있는 명령이 절대 아니다. Unix 서버에서는 한번 삭제된 파일은 복구가 거의 불가능하다는 것을 잘 알고 있기 때문이다.게다가 275대의 서버에 동시에 로그인하여 이 명령을 실행하는 것은 15년 넘게 엔지니어일을 하고 있는 나로서도 상상하지 못할 일이다. “바보 천치”가 아닌이상 말이다.나 도 수십대의 서버에서 같은 작업을 수행할 때는 이따금씩 여러대의 서버에 동시에 로그인해 동일한 명령을 수행하는 경우가 있다. 하지만 “rm”과 같은 명령을 수행할 땐 등골이 오싹하는 긴장속에서 실행할 수 밖에 없다. 자칫 실수할 경우 내 인생에 되돌릴 수 없는 치명적인 오점을 남기게 될 수도 있기 때문이다.그런데… 농협의 275대 서버에서 동시에 실행되는 스크립트나 명령을 수행하면서 이런 실수를 한다고 생각하면 ??? 상상만으로도 끔찍한 일이다. 과연 IBM의 엔지니어가 이런 위험천만한 작업을 했을까?

의문점 2. 농협의 550여 명의 IT본부에 “rm, dd” 명령을 수행할 권한을 가진 사람이 없다?

농협의 비상식적인 해명

이건…정말…아니다 올시다. 서버의 주인인 농협의 IT본부 550명 인력 중 rm과 dd 명령을 수행할 권한을 가진 사람이 없다니. 이 말을 한 농협 관계자는 IT본부 책임자급인 것으로 알고 있다. Unix의 지식이 전혀 없는 문외한이 아니라면 이런 말은 하지 못한다.

dd나 rm은 서버에 접근할 권한이 있는 사람이라면 누구나 실행할 수 있는 명령이며 서버보안S/W를 이용해 파일접근통제 정책이 있더라도 이 명령 자체의 실행을 막을 수는 없다. 그렇게 되면 서버를 운영하기가 현실적으로 불가능하기 때문이다.게다가 이번 장애는 서버의 Super User계정 즉 root 계정에서 실행된 것으로 보인다. root 계정이 아니라면 아무리 rm이나 dd 명령을 수행하더라도 운영체제 자체에 손상을 주는 것은 100% 불가능하다.

Unix 운영체제가 그렇게 허술하게 만들어져 있지는 않다. 따라서 위의 말은 “농협IT본부 직원들은 root 계정을 사용하지 않는다.”는 말이다. Unix 서버를 조금이라도 아는 사람이라면 “콧방귀”를 뀔 이야기다.Unix서버의 root 계정은 협력사 엔지니어는 사용하지 못하게 통제할 수는 있어도 농협의 IT인력 중 최고 권한을 가진 사람에게는 허용하는 것이 기본 정책이 되어야 한다. 위의 언급이 사실일리도 없지만 설사 사실이라면…

집주인이 “나는 내 집의 열쇠를 갖고 있지 않고 집을 지은 회사가 내 집의 열쇠를 갖고 있어 내 마음대로 집에 들어갈 수 없다” 는 이야기와 다를 바가 없는 것이다. 이 언급은 “완벽한 책임 회피성 발언”으로서 모든 책임을 하청업체 격인 협력업체에게 전가하려는 의도가 아닐까 생각된다.제대로 된 보안정책이라면 root 계정에서 수행되는 모든 작업은 농협의 IT 본부 직원이 직접 수행하는 것이 옳다. root 계정은 쉽게 협력사 직원이나 농협IT본부의 아무에게나 허락되어서는 안되는 것이다. root 계정은 서버의 생명줄과도 같은 중요한 계정이다.

의문점 3. 너무도 허술하고 방만한 관리체계

사실 이 부분은 미스테리가 아니라 현실이다. 대부분의 전산센터를 운영하고 있는 공공기관이나 기업, 그리고 금융사들은 “비용절감”을 위해 전산시스템관리의 대부분을 외주업체에 맞긴다. 말이 좋아 외주업체지 하청에 하청에 하청을 주는 경우가 대부분이다. 그리고 3~4단계의 하청을 거쳐 가장 말단의 하청업체조차도 정규직원이 아닌 “아르바이트” 수준의 계약직원을 “파견”하는 경우가 대부분이다.

결국 고임금의 일부 정규직원은 운영체제나 애플리케이션에 대한 관리에서 빠져나가 편한 업무를 수행하고 하드웨어나 운영체제 그리고 시스템관리 소프트웨어의 운영은 하청업체의 엔지니어들이 수행하게된다. 하지만 이들은 그 시스템의 “주인”은 결코 아니다. “결국 객(客)”에게 모든 권한을 주었다는 말이된다. 말그대로 “주객이 전도됐다”.

하지만 대한민국 대부분의 전산실은 지금도 “주객이 전도돼 있다.”객이 서버에 “백도어”를 심어놔도 주인은 결코 그것을 찾아낼 능력이 없는 경우가 90%는 된다고 본다. 아마도 그 백도어가 의심되면 또다른 협력업체를 불러 찾아달라고 할 것이다.

농협 전산센터야 말로 대한민국 IT 업계의 참담한 현실을 그대로 보여주는 곳이다.

개발자들 사이에서 피해야할 은행 두곳이 있다고 했다. 그 두곳중의 한곳이 바로 “농협”이다. 하지만 이것은 비단 “농협”만의 문제는 아니다. 대부분의 기업이나 공공기관들이 프로젝트를 진행하면서 엔지니어와 개발자를 너무도 심하게 쥐어짠다. 나도 신입사원시절엔 개발도 했고 지금도 재미삼아 조금씩 코딩도 하곤 하지만 참담한 개발자들의 업무환경을 보고 “개발은 때려죽여도 안한다”는 생각을 갖게 되었다.

적어도 3년은 걸려야 할 프로젝트를 1년6개월에 끝내기 위해 주말은 물론 밤을 꼬박 불태우기(?)를 밥먹듯 해야한다. 게다가 처음 요구사항들에 맞추어 프로젝트 기간과 인력을 확보하고 프로젝트를 시작하지만 이것 저것 추가적인 기능들을 요구해오니 개발시간과 비용은 점점 증가하게 된다. 그렇게 부당한 요구를 “갑”이 해오면 우리나라의 대표적인 “을~병~정~”인 SI업체들에겐 거부권이 없다. 추가되는 기능 하나 하나가 시간이요 비용인데 우리나라 사람들은 S/W는 “금나와라 뚝딱~!”하면 나오는 것으로 안다. 또 그렇게 강압적으로 해야 “일잘한다”는 평가를 받으니 참으로 어이가 없는 현실이다.

우리나라 금융권의 급여는 높기로 유명하다. 1금융권과 증권사들은 그중에서도 높다. 하지만 그 높은 인건비를 감당하기 어려워서 “비용절감… 경영효율화”를 위한다는 명분으로 급여가 싼 하청업체에게 시스템의 관리과 개발을 하청주게 된다. 그리고 그 업체 선정에  “인맥”과 리베이트가 동원될 것은 불을 보듯 뻔하다. 따라서 협력업체 직원들의 인건비는 하청에 하청을 주면서 점점 깎이기 마련이다.

이런 열악한 환경은 결국 IT개발자나 엔지니어의 수명을 짧게 만든다. 초급을 거쳐 중급개발자 혹은 중급엔지니어가 되면 많은 사람들이 높은 업무강도와 낮은 급여수준 그리고 비젼의 없음에 지쳐 IT업계를 떠나거나 마케팅, 제품기획, 영업등으로 보직을 변경한다. 그래서 우리나라에선 노하우와 경험이 풍부한 기술 인력이 부족할 수 밖에 없다. 당연히 많은 프로젝트에서 겪지 않아도될 수많은 시행착오가 반복적으로 프로젝트를 지연시키는 이유가 되곤 한다.

또한 정보시스템과 정보보호시스템에 대한 투자도 인색하기 짝이 없다. 정보시스템은 “쓸데없는, 투자대비 효용성이 떨어지는 비용 소모적인 것”이라는 인식이 강하다. 정보시스템으로 인해 많은 업무들이 신속하고 체계적으로 수행되고 있고 서로 다른 성격의 업무들이 유기적으로 통합되어 비용절감은 물론 시너지 효과를 나타내고 있는 것을 간과하기 때문이다.

심지어 금융분야 처럼 정보시스템이 없으면 존재할 수 없는 은행이나 증권사에서 조차도 정보시스템과 보안시스템에 대한 투자에 인색한데 다른 산업분야는 언급할 필요도 없을 것이다.

그렇다면 사상최악의 보안사고인 농협의 시스템 장애는 악의적인 해킹? 도무지 이해할 수 없는 시스템 장애상황이다 보니 여러 추측이 난무하는 가운데 이런 추측이 나오기도 한다.

농협에서 일하며 너무도 고생이 심했던 누눈가가 “엿먹어 봐라”하는 심정으로 275대의 서버에서 하드디스크를 초기화하는 장애를 유발시킨것이 아닌가 라고 생각될 수도 있다. rm과 dd 명령을 통한 디스크의 초기화는 운영체제를 잘 아는 사람만이 내릴 수 있는 명령이다.  운영체제를 잘 모르는 많은 엔지니어들 조차 dd 명령어가 생소하다고 생각할 것이다. 그리고 275라는 숫자가 실수로 보기에는 너무도 말도 안되는 숫자이고 하드디스크를 완전 삭제하여 운영체제를 재설치하게 되면 사실상 포렌식이 불가능하기 때문에 그래서 이런 추측이 나오고 있는 듯 하다.난 충분히 가능한 추측이라고 본다. (하지만 현실적이진 않다. 왜냐하면 아무리 농협에 악의적인 감정이 있더라도 IT 업계에 종사하는 사람이라면 이런 공격이 가져올 여파는 상상을 초월한다는 것을 잘 알기 때문이다.)

그리고  또 하나의 가장 가능성 높은 시나리오는 APT 공격에 의한 악의적 해킹이다.

농협에 자주 드나드는 IBM 엔지니어의 노트북에 원격제어 혹은 작업의 모니터링이 가능한 악성코드를 감염시킨 뒤 장시간 해당 엔지니어의 작업을 분석하고 농협에 들어가 농협의 전산망에 노트북을 연결하였을 때 자동으로 해당 서버들에 접속하여 dd 명령을 root 권한으로 실행하도록 하는 배치작업을 등록하였을 가능성이다. 아주 오래전 부터 치밀하게 준비하다면 충분히 가능한 APT 공격이다. 배치 작업으로 등록만 하게 되면 정해진 시간에 dd 명령이 자동으로 실행되도록 할 수 있기 때문에 수백대의 서버를 동시에 “작살~” 낼 수 있다. 매우 악의적인 공격이라고 볼 수 있다.

어찌됐든 2011년 발생한 농협의 사상 최악의 금융시스템 보안사고는 오늘날 우리나라의 참담한 정보시스템 분야의 특히 서버에 대한 보안 현실을 여실히 드러내는 사건이라고 생각된다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Scroll to Top