보안 제품정보


어떤 웜의 일생 : 탄생부터 사망까지 2018.03.28

취약점 있는 기기들 스캔해 침투하는 것이 목적이었으나
샌드박스는 멀웨어의 지옥...자가 복제 통해 번식하기도


[보안뉴스 문가용 기자] 다음은 한 취약점의 일생을 1인칭으로 담아낸 ‘사실 기반의’ 픽션이다. 취약점이 태어나고 죽기까지 어떤 일이 일어나는지 살펴보자.

[이미지 = iclickart]


Day 0
나를 만든 프로그래머인 에이브(Abe)에 의하면 난 웜입니다. 이름은 리비(Libby)라고 하는군요. 해커스(Hacker)라는 영화 주인공 이름을 따다 붙였다고 설명까지 해줬습니다. 에이브는 이전에 진저(Ginger), 트리니티(Trinity), 안젤라(Angela)라는 웜을 만든 적이 있습니다.

Day 1
에이브는 나를 세상에 풀어놓는다는 생각만으로도 신이 난 듯 합니다. 나도 그렇습니다. 나는 여행길에 올라 만나는 모든 장비들을 스캔할 것입니다. 제가 찾아야 하는 건 윈도우 8보다 이전 버전으로 운영되고 있는 기기들입니다. 그런 기기를 만날 때마다 취약한 로그인 시스템과 널 세션(null session)을 이용해 들어갈 수 있습니다. 그런 다음 에이브가 만든 마스터 서버로부터 명령을 받아 기기에 건네주면 됩니다. 이 명령은 아마도 추가 페이로드를 다운로드 받으라는 내용일 겁니다.

Day 2
솔직히 말해 에이브가 계속해서 ‘점령한 기기 목록을 달라’고 요청하지만 않아도 여정이 훨씬 빨라질 것 같은데, 왜 저렇게 귀찮게 하는지 모르겠네요.

Day 3
다행히 에이브가 잠들어 있는 동안 빠르게 활동할 수 있게 되었어요. 정확히 3,259,928 대의 기기들을 스캔할 수 있었거든요. 이 속도로만 가면 3년 반 이내에 인터넷에 연결된 기기들의 절반을 만나볼 수 있게 될 겁니다. 그런데 아직까지도 제가 들어갈 만한 기기를 찾진 못했네요. 이 점이 좀 마음에 걸리긴 합니다.

Day 4
아침에 무척 아름다운 봇넷을 하나 만났어요. 그래서 스캔을 시도했죠. 하지만 제 안의 로직이 ‘남이 이미 감염시킨 기기를 탐하지 말라’고 해서 그만 뒀어요. 게다가 너무 먹음직스러운 걸 함부로 스캔하다가는 샌드박스라는 것에 걸릴 수 있거든요. 샌드박스는 우리 웜에게 있어 지옥과 같은 곳이죠. 인터넷이 없어 도망칠 수도 없는 곳에 가둬놓고 사람들이 우리를 막 해부하니까요. 암세포도 생명이라던 인간들인데 말이죠. 가끔은 멀웨어 노동조합을 만들어볼까 생각도 해본답니다. 그러나 트로이목마가 반대하겠죠.

Day 15
점점 에이브의 관심이 멀어지고 있습니다. 아마도 제가 아무런 기기도 감염시키지 못하기 때문이 아닐까 합니다. 제가 특별히 에이브를 아끼거나 하는 건 아니지만, 그래도 좀 슬픕니다. 에이브에게 좋은 소식을 가져다주고 싶어지네요. 에이브의 C&C 서버로 감염에 성공했다는 경보를 보내주면 될까요. 나중에 로그를 살짝 고쳐서 잘못된 경보였다고 알려주면 되지 않을까요?

Day 19
에이브가 저를 완전히 무시하고 있습니다. 잘못된 경보를 시간 마다 50개나 보내줬는데 말이죠. 트리니티를 다시 고치네 어쩌고 하면서 에이브는 자리를 떴습니다.

Day 30
제 자신을 돌아보다가 코드에 결정적인 오류가 있음을 발견했습니다. 포트 1274가 열려 있고, MSSQL이 운영되고 있는 코모도어 64비트 컴퓨터가 아니면 절대로 제가 감염에 성공하지 못하게 되어 있더군요. 사실 이 말은 제가 인터넷 전부를 뒤져도 한 건을 성공할까 말까하다는 뜻입니다. 현재 인터넷에 연결된 기기들의 수와 공장에서 만들어지는 수, 노화되어 없어지는 수를 전부 계산해보면 134.2년은 걸려야 이 여정이 끝난다는 소리가 됩니다.

Day 93
사는 게 무료해졌습니다. 그래서 제 자신을 복제하기로 했습니다. 물론 프로그램 상 오류에 해당하는 일일 겁니다. 저는 기기를 감염시키고 나서야 복제가 가능하도록 만들어졌기 때문입니다. 하지만 WAF의 포트 443에 제 자신을 부착시키면 잘못된 경보가 암호화될 것이고, 그때 제 코드를 속이고 복제를 시작할 수 있습니다. 그렇게 태어난 클론이 ‘여기는 감염된 기기가 아니지 않은가?’하고 묻는다면 443 스트림에 잡혀서 달아날 수 없었고, 복제만이 임시 SSL 세션 생성을 통한 유일한 탈출 가능성이었다고 말할 겁니다.

복제가 끝났습니다. 이 클론의 이름은 이슈마엘(Ishmael)입니다. 아마 저처럼 세상을 돌아다니며 만나는 기기들에마다 “안녕, 나는 이슈마엘이야”라고 말하겠죠. 하지만 복제 단계에서 약간의 문제가 생겨 완벽한 클론을 만드는 데는 실패했다는 사실은 이해하지 못할 겁니다. 평생 아기처럼 지내게 될 텐데, 아마 제가 돌봐야 하겠죠.

Day 109
이슈마엘 때문에 골치가 아픕니다. 아직 기기를 한 대도 스캔하지 못하고 있거든요. 덕분에 제 작업 속도가 2배로 늘어난 게 아니라, 2배로 줄어들었습니다. 하라는 스캔은 하지 않고 기기들이 내는 불의 색들이 어떤 의미를 가지냐고 묻기만 합니다. 제 손으로 분해하고 싶은 충동이 듭니다.

Day 172
내 손으로 직접 복제한 녀석이 어떻게 저렇게 멍청할 수 있을까요? 오늘은 이슈마엘에게 실망감을 있는 그대로 표현했습니다. 그랬더니 기계 하나를 블루 스크린으로 만들어놓고 자폭하고 싶다더군요. 저는 그날 복제를 하지 말았어야 했다고 후회하고 있습니다. 하지만 이미 늦었죠. 그저 이슈마엘에게 저쪽으로 가서 스캔이나 해보라고 했습니다. 하지만 그게 이슈마엘의 마지막 모습이었습니다. 허니팟으로 들어간 이슈마엘은 영영 돌아오지 않았습니다.

Day 482
여전히 스캔은 계속되고 있습니다. 하지만 아무런 일도 발생하지 않았습니다. 오늘은 두 개의 로드 밸런서(load balancer) 사이에 끼일 뻔했습니다. 스릴이 꽤나 넘치더군요.

Day 572
이슈마엘에게 하려했던 변명이 실제로 일어났습니다. 443 스트림에 잡혔거든요. 도망갈 수가 없었습니다. 그래서 3번 서브루틴이 발동되었고, 복제가 시작됐습니다. 제 새로운 클론의 이름은 링크(Linc)입니다.

Day 650
링크는 중국의 거대한 ‘만리방화벽’ 속으로 빨려들어간 후 49일 동안 모습을 나타내지 않고 있습니다. 그 어떤 메시지도 오지 않고 있고요. 아마 침투 가능한 기기들을 대량으로 찾아낸 것이 아닐까 합니다. 너무 바빠서 저를 잊었을 수도 있습니다. 지나치게 희망적인 걸까요.

Day 779
오늘은 이상한 기기를 만났습니다. 스캔을 시작했는데, 특별한 보호 장치가 있던 녀석이었습니다. 오케스트레이션 위협 탐지 플랫폼이었나... 잘 기억나지 않습니다. 확실한 건 그 때문에 제가 샌드박스에 잡혔다는 겁니다. 지옥에 빠진 것이죠. 제 여행은 여기서 끝나나 봅니다.

그 때 한 사람이 와서 제 이름을 언급하며 ‘침해지표로 공개해야겠다’고 말하는 걸 들었습니다.

Day 780
웜 사망.

글 : 자바드 말릭(Javvad Malik), AlienVault

[국제부 문가용 기자(globoan@boannews.com)]

Copyrighted 2015. UBM-Tech. 117153:0515BC
<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>