![](https://images.dongascience.com/uploads/old/article/2015/01/123384671054c87f592a890.jpg)
![](https://images.dongascience.com/uploads/old/article/2015/01/25806018554c87f6d647db.jpg)
매일 5만5000개가 넘는 새로운 악성코드가 인터넷 에 뿌려진다. 컴퓨터 앞에 앉아서 수시로 백신을 업데 이트 해도 모든 악성코드를 막을 수 없다. 초보적인 악 성코드는 쉽게 대응할 수 있지만 일류 해커가 마음먹 고 짠 악성코드는 분석가가 직접 붙어서 하나씩 코드 를 확인해야 한다. 최근에는 악성코드가 더 독해졌다. 먼저 분석가들이 어떻게 악성코드를 처리하는지 살펴보자. ‘악성코드.exe’라는 실행파일은 컴퓨터 부 팅에 필수적인 부분을 삭제해서 컴퓨터를 망가뜨린 다. 이 실행파일은 컴퓨터에 직접 명령을 할 수 있게 0 과 1로 이뤄져 있다. 눈으로 봐서는 잘 알 수 없다. 그래 서 0과 1을 좀 더 구체적인 기계어로 바꾼다. ‘부팅 부 위에 접근해라’, ‘삭제해라’ 같은 단순한 명령 말이다. 전문가가 모든 기계어를 꼼꼼히 살펴보면 좋겠지만 불가능하다. 10Mb 용량의 악성코드를 기계어로 바꾸 면 A4 용지 한 박스가 넘는다.
그래서 분석가들은 악성코드를 자신의 컴퓨터에 배양한다. 실제 바이러스를 생각해보면 이해가 쉬울 것이다. 새로운 바이러스가 나타났을 때, 실험용 쥐에 바이러스를 감염시키거나 우연히 감염된 환자의 사례 를 살펴보는 것처럼 말이다. 분석가는 자신의 컴퓨터 에 가상 운영체제를 하나 더 설치해서 악성코드를 감 염시켜본다. 그리고 15분 정도 기다리면서 증상을 확 인하고 응급조치를 한다. 그런데, 영리해진 요즘 악성 코드들은 이때 죽은 척을 한다. 분석가가 사용하는 가 상 운영체제를 감지하고 ‘여기서 까불다가는 얄짤 없 겠다’며 조용히 때를 기다린다. 15분이 지나도 별 탈이 없으면 분석가는 다른 악성코드를 살펴본다. 이렇게 방어망을 넘기는 것이다.
운 좋게 죽은 척 하는 녀석을 잡아내더라도 문제가 있다. 앞서 말한 대로 0과 1로 된 컴퓨터 언어를 기계어 로 바꿔야 하는데 이 작업을 전문적으로 방해하는 악 성코드가 있기 때문이다. 이 기술을 ‘난독화’라고 부른 다. ‘부팅에 필요한 부분을 지워라’라는 말을 ‘류현진은 토마토를 잘 던진다’, ‘과학동아는 재밌어’라는 별의별 말로 바꿀 수 있다. 기계어 수준에서 이렇게 보일 뿐이 지 실제 프로그램 작동에는 문제가 없다. 난독화 기술 이 적용된 악성코드는 사실상 대응이 불가능하다. 그 래서 의심스러운 녀석이 난독화가 됐을 경우에는 아 예 악성코드로 분류해버린다. 다만 인터넷 뱅킹 등 금 융 프로그램은 해커의 해킹에서 정보를 지키기 위해 난독화 기술을 사용하므로 세심한 구분이 필요하다.
"보안 전문가들이 아무리 막고 막아도 보안은 뚫린다. 뛰는 보안 전문가 위에 나는 해커가 있기 때문이다. 날아다니는 해커들이 요즘 은밀하게 개발하고 있는, 기상천외하고 재기발랄한 해킹 기술들을 모아봤다. _도움 홍석희 고려대 교수"
프로그래밍은 효율의 싸움이다. 컴퓨터 속의 한정 된 메모리를 가장 효율적으로 사용하는 프로그램이 좋은 프로그램이다. 불필요한 연산이 없으면 좋다는 말이다. 눈치 빠른 해커가 이 습관을 놓칠 리 없다. 문 자를 비교하는 알고리듬을 예로 들어보자. ‘donga’와 ’domga’가 서로 같은 단어인지 확인하기 위해 가장 앞자리 문자부터 비교한다. d, o가 일치하는 것을 확 인하다가 세 번째에 와서야 m과 n이 다르다고 결론을 내고 비교를 멈춘다. 넷째, 다섯째 문자는 아예 비교 조차 하지 않는다.
이런 문자열 비교 알고리듬은 로그인 비밀번호를 확인할 때 많이 사용한다. 해커는 ‘donga’라는 비밀번 호를 알아내기 위해 일단 ‘aaaaa’부터 입력한다. 두 문 자는 아예 첫 자리부터가 다르기 때문에 ‘로그인에 실 패했다’는 메시지가 빨리 화면에 뜬다. baaaa, caaaa 도 마찬가지다. 그러다가 daaaa로 바뀌는 순간 둘째 자리까지 비교한다. 물론 이번에도 ‘로그인에 실패했 다’라는 메시지가 나오지만 aaaaa나 baaaa 때보다 조 금 더 시간이 걸린다. 이 시간은 불과 1마이크로초 이 내지만 해커는 이 작은 차이를 놓치지 않고 암호의 첫 번째 문자가 ‘d’라는 것을 눈치 챈다. 이런 방식으로 전 체 암호를 알아낸다. 이를 ‘시간차 공격(타이밍)’이라고 부른다.
시간차 공격을 막는 방법은 간단하다. 효율적인 프로그래밍을 포기하면 된다. 하지만 프로그래머들은 이런 방법을 망설인다. 여기에 더 걸리는 시간 역시 마 이크로초 정도로 아주 짧지만 이 시간을 낭비라고 생 각해 적용을 망설인다. 아무래도 해커나 프로그래머 의 시간은 보통 사람보다 천천히 흐르는 것 같다.
“손들어 움직이면 쏜다! 진돗개” “올챙이.” “신분이 확인되었습니다.” 군대 다녀온 사람이면 알리라. 이 요상한 대화는 군 대에서 어두운 밤에 경계 근무를 교대 할 때 오가는 대화다. 진돗개와 올챙이를 ‘암구호’라고 부른다. 적군 은 암구호를 알아내기 위해, 잔인하지만 상대편 한 명 을 잡아서 고문한다. 이때 조심해야할 것은 애써 잡은 포로를 적당하게 괴롭히는 것이다. 너무 세지도, 약하 지도 않게.
해커도 칩 속에 숨은 암호를 알아내기 위해 칩을 괴 롭힌다. 이를 ‘결함 분석’이라고 한다. A를 입력하면 비 밀키 계산으로 B라고 대답하는 칩이 있다. 이 결과만 으로는 두 값 사이에 사용된 비밀키를 알 수 없다. 그 래서 칩의 일부를 망가뜨린다. 결함이 생긴 칩은 A를 넣으면 연산을 완전히 다 하지 못하고 C가 나온다. 같 은 방법으로 D, E를 찾아 비밀키에 대한 힌트를 얻는 다. 결국 칩 속의 비밀키를 알아낸다. 고문도구로 가장 흔히 쓰이는 것은 레이저다.
말은 쉬워 보이지만 결함 분석은 의외로 시간이 많 이 걸린다. 칩에 따라 외부 충격을 견디는 정도가 달라 서 적당한 충격량을 찾아야 하기 때문이다. 너무 세게 때려서 칩이 고장 나기라도 하면 또 새로운 칩을 구해 야 한다. 위치도 중요하다. 부수는 위치에서 어떤 연산 이 일어나는지 대략적으로 알고 있으면 비밀키를 알아내는 데 유리하다. 칩 설계도가 있다면 좋겠지만 그 게 아니라면 적당한 위치를 찾기 위해 매번 칩을 부수 고 또 부숴야 한다.
결함 분석을 유용하게 쓸 수 있는 사례는 암구호처 럼 다수가 하나의 비밀키를 공유할 때다. 프린터 제조 회사는 정품 잉크와 다른 잉크를 구분하기 위에 정품 잉크에 비밀키가 내장된 칩을 심어둔다. 이때 정품 잉 크 속에 든 비밀키는 모두 다 동일하다. 이 비밀키를 알 아내면 가짜 잉크를 정품처럼 속일 수 있다. 그래서 그 런지 요즘 대용량 가짜잉크가 유행이다.
해킹을 공부하는 여자가 남친과 크게 싸우고는 책 상 위에 스마트폰을 놓고 자리를 비웠다. 남친은 심란 한 마음에 그녀가 아닌 전 여친의 SNS에 잘 지내냐는 쪽지를 보냈다. 다음날 그녀가 화를 내며 왜 전 여친에 게 연락했느냐고 묻는다. 몰래 숨어서 감시라도 한 걸 까. 정답은 스마트폰에 있다.최신 스마트폰에는 대략 12개가 넘는 센서가 있다. 중력, GPS, 자이로스코프, 가속도, 온도, 빛 센서는 주 위 변화를 민감하게 감지해 스마트한 서비스를 제공 한다. 이런 유용한 센서들을 해킹에 사용할 수 있다.
여자가 자리를 비운 사이 남자친구는 키보드를 이용 해 메시지를 보냈다. 키보드를 누를 때마다 책상에 아 주 작은 진동이 생겼고 스마트폰에 이 기록이 남은 것 이다. 이 진동을 잘 분석하면 남자친구가 키보드의 어 떤 자판을 눌렀는지 유추할 수 있다. 미세한 진동으로 어떻게 이런 일이 가능하냐는 기자의 질문에 윤지원 고려대 정보보호대학원 교수는 “패턴 분석과 언어분 석 모델이 비결”이라고 대답했다. 윤 교수는 최근 휴대 용 카드 단말기 뒷면에 자이로스코프를 부착해 카드 비밀번호를 알아내는 기술을 개발했다.
키보드에 자판을 칠 때 각 자판마다 진동 모양이 조 금씩 다르다. 위치에 따라 누르는 손가락이 다르고, 힘 도 다르다. 이렇게 서로 다른 패턴을 특징짓고 따로 구 분하는 것은 그리 어렵지 않다. 문제는 특정 패턴과 실제 자판의 글자를 연결하는 것이다. 이를 위해 자판 위 의 물리적 위치와 언어모델을 사용한다. 예를 들어 왼 쪽 중지로 누르는 ‘e’와 ‘d’는 비슷한 모양의 진동 패턴 을 나타낸다. 둘 중에 누가 e이고, d 인지 구분이 거의 불가능하다. 단독으로는 구분이 안 되지만 말 속에서 는 구분이 가능하다. ‘th’ 다음에 e 또는 d의 신호가 오 면 ‘the’, ‘ay’앞에 신호가 오면 ‘day’다. 진동해킹의 단점 은 패턴을 구분하기 위해 많은 데이터가 필요하다는 점이다. 진동을 만드는 대상, 센서를 부착하는 위치에 따라 분석을 다시 해야 한다. 그래도 조심해서 나쁠 것은 없으니, 만약 여자친구가 휴대전화를 책상 위에 놓고 사라진다면 허튼 짓은 하지 말자.
영화 ‘어벤져스’에 천둥의 신 토르(Thor)가 있다 면 해커에게는 IP 우회프로그램 ‘토르(The Onion Router)’가 있다. 토르는 패킷을 양파 껍질처럼 암호화 해 라우터를 지날 때마다 하나씩 벗겨 정체를 숨긴다. 서울 용산 과학동아 사옥에서 부산 해운대까지 직접 과학동아를 배송한다고 생각해보자. 직접 연결한 길 이 있으면 가장 좋겠지만 아쉬운 대로 올림픽대로와 경부 고속도로, 부산 시내 도로를 타고 해운대로 향한 다. 이때 올림픽 대로에 들어서는 지점과 서울 톨게이 트 같은 분기점이 라우터다.
라우터를 통과하는 기본 단위, 그러니까 운전자가 ‘패킷’이다. 패킷에는 실제로 서버에 전달하려는 정보(과학동아), 출발지와 최종 목적지(용산, 해운대)가 적혀있다. 만약 서울에서 발생하는 모든 패킷이 지나가는 라우터를 장악하고 있으면 서울 사람들이 누구와 어떤 대화를 하는지 확인할 수 있다. 도감청 논란을 일으켰던 미국 국가안전보장국(NSA)도 미국 전역을 연결하는 엄청나게 큰 라우터를 감시했다.
양파 라우터, 즉 토르의 출발점은 바로 이곳이다. 토르는 개인의 정보를 보호하기 위해 모든 데이터를 암호화 시킨다. 패킷의 내용물, 출발지와 목적지를 공개키 방식으로 암호화한다. 여기서 끝이 아니다. 만약 정보기관이 모든 라우터를 장악하 고 있다면, 속에 든 내용물은 알 수 없어도 정보가 어디서 어디로 갔는 지는 알 수 있다. 그래서 토르는 라 우터의 주소를 암호화하고, 가장 빠른 길 대신 무작위 경로를 선택 한다. 서울에서 부산을 갈 때 비행 기를 타고 남미 베네수엘라로 갔다 가, 도쿄를 거쳐 김해 공항에서 버 스를 타고 부산을 가는 것이다. 속 도는 무척 느리겠지만 보안은 거의 완벽에 가깝다.
익명성과 보안이 생명인 해커가 토르를 가만히 놔둘 리가 없다. 개 인정보 보호라는 원래 의도와는 상관없이 사용자 중 절반 이상이 사이버 범죄와 해킹을 위해 토르 를 사용하고 있다. 2013년 6월 25일 청와대 홈페이지 해킹 사건에도 토르가 활용됐다. 해커는 ‘인터넷 익스플로러’인 척 위장해 토르 프 로그램을 청와대에 설치해 악성코 드를 내려 받았다. 아무리 좋은 의 도로 훌륭한 프로그램을 만들면 무엇하랴. 쓰는 이의 마음은 그렇 지 않은데 말이다.
▼관련기사를 계속 보시려면?
INTRO. 사이버 백년전쟁
PART 1. 미국은 왜 북한을 지목했나
PART 2. 기상천외한 해킹기술 5
Epilogue. “북한 악성코드는 사이코패스”