| [추석특집] 정보보안의 흩어진 지식 모아보기 | 2017.10.03 |
공격의 7가지 유형과 네트워크 구성 장비 요약해보기
기본적일 수 있지만 긴 연휴 동안 한 차례 다져보는 의미 [보안뉴스 문가용 기자] 서당 개도 3년이면 풍월을 읊는다고 한다. 귀동냥도 오래하면 그럴듯하게 전문가를 흉내 낼 수 있다는 건데, 이건 함정이다. 흉내 좀 낸다고 개가 벼슬길에 오를 지식이나 덕을 갖출 수 있는 것도 아니고, 훈장이 될 만한 그릇이 될 것도 아니기 때문이다. 변화, 발전의 속도가 귓속에서 바람 이는 소리를 살벌하게 풍기는 IT 분야에 있다 보면 이 함정에 빠지기 쉽다. 특히 현장에 발만 살짝 거치고 있는 이 분야 기자들은 자신들이 읊은 풍월에 스스로 도취되어 이제 좀 안다고 착각하기 쉬운데, 요즘 SNS에서 가장 많이 달리는 기자 관련 댓글은 “기자가 공부를 하지 않아요”다. 이게 현실이다. ![]() [이미지 = iclickart] 반성하는 의미에서, 연휴도 마침 길겠다, 지난 몇 년 어깨너머로 전해 듣기만 해 파편처럼 흩어진 보안 관련 지식들을 정리해보는 시간을 가져보기로 했다. 오늘부터 추석 기간 동안 보안의 기초 개념부터 시작해서 요즘 한창 유행하는 파일레스(fileless) 공격의 통로가 되어주는 파워쉘, 온라인 공간에서 스스로의 자취 감추는 방법, 가장 ‘핫’한 분야인 데이터 과학의 기초까지 짚어볼 예정이다. 순서와 주제(제목 아님)는 다음과 같다. 1. 공격과 네트워크와 관련된 조각난 기본지식들 모아보기(오늘) 2. 왜 보안은 그다지도 약한 것인가?(수) 3. 해커란 누구인가?(목) 4. 사이버 범죄 일상화의 시대에서 개인의 보안 지키기(금) 5. 온라인에서 존재를 완전히 감추는 방법(토) 6. 윈도우 파워셸에 관해 알아보자(일) 7. 요즘 각광 받는 데이터 과학의 기본기(월) 태초에 시스템이 있었고 공격자가 있었으니... 사이버 보안은 ‘사이버 공격’이 있기에 존재하는 분야다. 시스템이 먼저 있었고, 거기에 공격하는 자들이 생겨났으며, 그들의 극성 때문에 보안이 정식 전문 분야로 널리 자리 잡아가고 있다. 심지어 보안 전문가들이 가진 스킬셋은 해커의 그것과 상당 부분 겹치기도 한다. 그래서 사이버 보안을 설명하려면 제일 먼저 사이버 보안의 기원인 ‘사이버 공격’ 방법들에 대해 말하는 게 순서다. 현대의 사이버 공격은 크게 7가지로 대략 분류할 수 있다. 1) 멀웨어 공격 : 멀웨어란 ‘나쁜 목적’을 가지고 만들어진 소프트웨어를 총칭하는 말이다. 하지만 멀웨어들도 그 기능과 목적성에 따라 크게 네 가지로 분류가 가능한데, 바이러스, 트로이목마, 스파이웨어, 논리 폭탄이 바로 그것이다. 가장 흔한 멀웨어는 바이러스와 트로이목마다. 루트킷도 멀웨어의 일종에 포함될 수 있으나 대부분 바이러스의 형태로 퍼지기 때문에 바이러스로 분류시켜도 무방하다. 바이러스란 작은 프로그램으로 스스로 복제할 줄 알며 다른 프로그램 내에 숨어 있다는 특징을 가지고 있어, 생물학적인 바이러스와 매우 흡사하다. 시스템에 직접적인 해를 끼치지 않는 바이러스도 제법 있는데, 자가 복제 때 트래픽을 많이 소모시키기 때문에 전반적으로 시스템이나 네트워크가 느려진다. 트로이목마란 그리스 로마 신화에 등장하는 트로이목마 관련 에피소드에서 이름을 따왔다. 적의 성 안으로 침투하기 위해 선물처럼 보이는 커다란 목마 상을 만들고, 그 안에 병력을 집어넣어 안에서부터 공략해 들어간 그 이야기 말이다. 현대의 트로이목마도 이와 똑같다. 겉으로는 정상 소프트웨어처럼 보이나 사용자 몰래 바이러스나 다른 종류의 멀웨어를 다운로드 받아 설치한다. 스파이웨어는 비교적 새롭게 등장한 멀웨어로 사용자가 컴퓨터에서 하는 일들을 모두 감시하고 기록하고 전송하는 소프트웨어다. 주기적으로 스크린샷을 남기거나, 키보드 입력 히스토리를 전부 기록하거나(이를 키로깅이라고 한다) 모바일 기기의 경우 녹음 기능을 몰래 활성화시키거나 문자 메시지를 따로 빼놓기도 한다. 논리 폭탄은 일정 시간 동안 가만히 시스템에 머물러 있다가 특정 조건이 맞춰지면 각종 악의적인 일들을 수행하는 소프트웨어다. 특정 조건이란 보통 ‘날짜’와 ‘시간’이다. 시한폭탄과 비슷하다고도 볼 수 있다. 이 멀웨어들은 시스템 내의 파일을 삭제하거나 환경설정을 조작하는 등의 작전을 감행한다. 2) 보안 침해(security breach) : 보안 장치들을 침해하는 행위를 흔히 ‘해킹’이라고 부른다. 재미있게도 해커들 스스로는 ‘해킹’을 다른 의미로 사용한다. 하지만 특정 시스템에 불법적으로 침투해 들어간다는 뜻으로는 ‘해킹’보다 ‘크래킹’이 더 알맞은 용어임은 분명하다. 비밀번호를 알아내거나 인증 과정을 우회하고, 와이파이망을 침해하고, 불법적으로 특정 네트워크나 데이터에 접근하는 행위를 전부 ‘보안 침해’라고 할 수 있으며, 일반적으로 ‘해킹 공격’이라는 말로 표현되기도 한다. 하지만 ‘보안 침해’와 ‘해킹 공격’은 분명히 다른 말이다. 왜냐하면 ‘보안 침해’를 위해 반드시 해킹 기술이 필요한 건 아니기 때문이다. 가장 대표적인 것이 소셜 엔지니어링(사회공학적) 공격이다. 이는 네트워크에 불법적으로 접근하기 위해 기술적인 것이 아니라 ‘인간의 실수를 유도’하는 공격 방식이다. 차라리 사기에 더 가까운 행위인 것이다. 위에서 다룬 멀웨어 공격의 경우, 보안 침해가 일어난 후에 발생하는 것이므로 둘을 같은 뜻으로 말하는 것도 적절하지는 않다. 다만 보안 침해가 일어난 후 추가 공격을 위해 멀웨어가 사용되는 것이 대부분이긴 하다. 3) DoS 공격(이하 ‘도스 공격’) : 도스 공격자는 시스템에 접근하거나 불법으로 침투하지 않는다. 대신 공격 목표가 되는 시스템으로 아무것도 접근하지 못하도록 막는다. 가장 흔한 방법이 접근 요청 트래픽을 엄청나게 늘려 표적 시스템을 마비시키는 것이다. 공격이 무척 쉬워서 흔히 발견된다는 특징도 가지고 있다. 도스 공격용 툴도 인터넷으로 구하기 쉬워졌다. 로우 오빗 아이언 캐넌(Low Orbit Ion Cannon : LOIC)이 가장 유명하다고 볼 수 있는데, 그 외에도 도스 공격 툴은 무료로 얼마든지 다운로드가 가능하다. 도스 공격이 아무나 일으킬 수 있는 종류의 사이버 공격이 된 것은 이러한 툴들 때문이기도 하다. 디도스(DDos) 공격이라는 또 다른 버전도 존재한다. 디도스 공격은 여러 대의 기계들을 한꺼번에 사용해 도스 공격 효과를 일으키는 것을 말한다. 사실 현대 웹사이트들의 경우 네트워크가 워낙에 클러스터 단위로 분산되어 있고 클라우드도 많이 사용하기 때문에 기계 한 대로 도스 공격을 감행하기란 심히 어려운 일이다. 따라서 요즘의 도스 공격은 디도스 공격으로 정착되고 있는 분위기다. 4) 웹 공격 : 요즘의 웹사이트들은 사용자의 행동을 요구할 때가 많다. 이는 곧 사용자가 웹사이트를 통해 내부 인프라와 상호작용을 한다는 것인데, 이는 ‘인터랙티브’한 웹 환경을 위한 필수요소이기도 하지만 공격점이 되기도 한다. 이렇듯 웹사이트나 웹 애플리케이션을 통해 서버로까지 도달하는 공격을 웹 공격이라고 한다. 대표적으로는 SQL 인젝션 공격과 XSS 공격이 있다. SQL이란 서버로 뭔가 요청을 보낼 때 사용하는 언어다. 예를 들어 사용자가 ID나 비밀번호를 입력하고 ‘확인’을 누르면 웹사이트는 SQL 명령문을 작성해 데이터베이스로 요청을 보낸다. 그러면 데이터베이스는 이 명령문을 바탕으로 ID와 비밀번호를 확인시켜 준다. 그런데 사용자가 ID나 비밀번호 등을 입력하는 란에 SQL 명령문을 입력해도 되는 경우가 있다. 여기에 입력하는 명령문에 따라 서버로부터 ID와 비밀번호 확인 외에 다른 응답도 돌려받을 수 있다. 이러한 웹사이트가 SQL 인젝션 취약점을 가지고 있다고 하고, 이런 취약점을 이용한 공격을 SQL 인젝션 공격이라고 한다. XSS는 크로스 사이트 스크립팅(Cross-site Scripting)의 준말이다. 예를 들어 온라인 서점 사이트가 하나 있다고 치자. 사용자들은 여기서 책을 살 수도 있지만, 자신의 신용카드 정보를 저장하거나 후기를 남기기도 한다. 한 공격자가 이 서점과 굉장히 똑같은 사이트를 하나 추가로 만들었다. 그리고 진짜 서점 사이트에 들어가서 인기가 높은 책의 리뷰란에 후기를 작성했다. 그런데 진짜 후기가 아니라 [script]window.location= "http"//가짜서점.com";[/script]라는 구문을 입력했다. 이렇게 해두면 사용자가 해당 책의 후기를 읽다가 가짜 사이트로 넘어가게 된다. 그리고 다시 ID와 비밀번호를 입력해달라고 요청하면 사용자는 별 의심 없이 다시 한 번 로그인을 시도한다. 이렇게 해서 로그인 정보를 모을 수 있다. 5) 세션 하이재킹(session hijacking) : 간단히 말하자면 클라이언트와 서버 간에 발생하는 세션을 지켜보다가 그 세션을 자기가 차지해버리는 것을 말한다. 1985년 처음 등장한 용어이다. 세션 하이재킹은 공격 난이도가 비교적 높은 편이다. 왜냐하면 공격자는 1) 네트워크에 연결되어 있어야 하며 2) 정상 사용자를 오프라인으로 만들고 3) 동시에 자기가 그 사용자인 것처럼 로그인을 해야 하기 때문이다. 즉 딱히 일괄적으로 정해진 방법이 있지도 않고, 그래서 그리 흔하게 나타나는 공격 형태는 아니다. 6) 내부자 위협 : 말 그대로 조직 내 누군가가 의도적으로나 무의식적으로 공격자와 똑같은 행위를 하는 것을 말한다. 가장 대표적인 내부자 위협의 예는 ‘에드워드 스노든(Edward Snowden)’이다. 물론 여기에 각종 정치적, 이념적인 설명들이 따라붙을 수 있지만, 순수하게 ‘내부자 위협’의 관점으로만 그를 바라보면 더 뛰어난 예를 찾기 힘들다. NSA의 내부자로서 높은 권한을 가지고 있다는 걸 악용해 기밀성 높은 자료를 다량으로 빼돌려 외부에 유출시켰기 때문이다. 한편으로는 재정부 직원이 실수로 전 직원의 연금 현황을 전 사원에게 이메일로 발송시킨다거나, 사업을 진행하다가 민감한 계약서를 다른 회사로 전송시키는 사례는 얼마든지 있다. 이런 요소들도 전부 내부자 위협에 해당한다. 내부자 위협은 ‘내부인의 권한이 높고’ ‘통상 내부인들끼리의 감시는 하지 않기 때문에’ 매우 위험하다. 최근 보안 업계의 가장 큰 골칫거리이기도 하다. 7) DNS 포이즈닝(DNS poisoning) : 인터넷 통신의 대부분은 DNS를 거치게 되어있다. 숫자로만 된 IP 주소를 우리가 잘 아는 이름을 바꿔주는 걸 DNS라고 한다. 이 변환 과정에 끼어들어 엉뚱한 웹사이트로 연결시키는 공격을 DNS 포이즈닝이라고 한다. 여기엔 여러 가지 기법들이 활용된다. 최근엔 ‘신상털기’ 혹은 독싱(doxing) 공격이 떠오르고 있다. 이는 개인적인 정보를 발굴해낸 뒤 이를 세상에 공개해 큰 망신을 주거나 오명을 씌우는 것이다. 주로 정치인이나 연예인 등 세상에 널리 알려진 인물들이 이 공격에 취약하다. 2016년 미국 대선 때 힐러리 클린턴 후보자와 도널드 트럼프 후보자에 대한 각종 독싱 공격이 난무했다. 아니 잠깐, 태초에 시스템이 먼저 있었다며... 이런 공격들이 난무하는 장소는 다름 아닌 네트워크와 인터넷이다. 사실 ‘보안에 대해 본격적으로 공부하고 싶다’고 현장 전문가들에게 문의하면 대부분 ‘네트워크부터 시작하라’고 조언해준다. 즉 전장이 어떤 구조로 만들어졌는지를 이해하는 것이 먼저라는 것이다. 그래서 이왕 기본 개념을 정리하는 것, 네트워크와 인터넷 구조에도 손을 뻗쳤다. 먼저 물리적인 네트워크 장비들에 대해 알아보자. 네트워크는 아주 간단히 말해 두 대 이상의 컴퓨터가 연결된 것을 말하는데, 컴퓨터들을 가장 간단하게 연결시켜주는 값싼 기기로 1) 허브라는 것이 있다. 케이블만 꼽으면 되기에 설치도 매우 간단하다. 하지만 패킷을 이 컴퓨터에서 저 컴퓨터로 전송할 때 허브의 모든 포트로 복제된 패킷이 전송된다는 단점이 있다. 즉 불필요한 네트워크 트래픽이 발생한다는 것이다. 하지만 허브로부터 더 나은 기능을 기대할 수는 없다. 2) 스위치가 있기 때문이다. 스위치란 허브를 좀 더 똑똑하게 발전시킨 장비다. 허브랑 똑같이 생기기도 했다. 그러나 딱 한 가지 차이가 있다. 패킷을 받고나서 허브처럼 해당 패킷을 온 컴퓨터로 다 발송시키는 것이 아니라 목적지가 되는 컴퓨터 한 곳으로만 골라서 보낸다는 것이다. 즉 패킷이 가는 곳을 정확히 파악할 만큼 똑똑해진 것이 바로 스위치다. 여기서 잠깐. 그렇다면 3) 트래픽이란 무엇일까? 트래픽은 수많은 0과 1이다. 이 두 가지 숫자를 전압, 광파, 무선 주파로 변환시켜 전달할 때 각각 UTP, 광케이블, 와이파이 네트워크를 사용한다. 이러한 네트워크 내 선들 사이로 무수한 0과 1이 순서대로 지나가는 걸 트래픽이라고 한다. 그 0과 1이 합쳐진 것을 결국 데이터나 정보라고 하는데, 4) 패킷은 데이터의 작은 덩어리를 말한다. 패킷은 세 가지 부분으로 구성돼 있다. 헤더(header)와 데이터(data), 푸터(footer)가 바로 그것이다. 헤더에는 ‘패킷을 어떻게 처리해야 하는가’, ‘어떤 종류의 패킷인가’ 등에 대한 정보가 들어있다. ‘데이터’는 말 그대로 데이터다. 편지로 치면 본문이요, 기사로 쳐도 본문이다. 푸터는 패킷이 끝났다는 걸 알려주는 역할을 하며 오류가 탐지됐을 때의 정보가 포함된다. 하지만 통상 패킷이라고 하면 본문 데이터를 말한다. 다시 네트워크 장비에 대해 이야기를 해보자면, 5) 리피터(repeater)라는 것이 있다. 신호를 증폭시키는 장치로, 네트워크 케이블이 제한 길이보다 더 길어져야만 하는 상황에서 사용된다. 예를 들어 UTP 선은 100미터가 한계인데, 모든 회사 네트워크가 100m 내에서 해결될 수 없는 게 현실이니 도입되는 장비가 리피터라는 것이다. 6) 라우터도 있다. 컴퓨터와 컴퓨터를 허브나 스위치가 연결시켜준다면 네트워크와 네트워크는 라우터가 연결시켜준다. 그렇기에 기본 개념 자체는 허브/스위치와 흡사하다. 다만 네트워크를 연결시켜주는 것이기 때문에 훨씬 복잡하고, 훨씬 발전된 형태를 가지고 있다. 라우터들 대부분 패킷을 통제하는 방식을 사용자가 설정할 수 있도록 한다. 또한 가장 많은 보안 침해 사고가 발생하는 지점이기도 하다. 결국 이러한 장비들의 총체적인 목적은 ‘데이터 전송’이다. 그런데 이 데이터 전송이란 것에도 규칙이 있고, 통신 방식에도 네트워크마다 차이를 보인다. 이렇게 네트워크마다 다른 규칙 혹은 특성을 프로토콜이라고 부른다. 7) 프로토콜을 사전에 검색해보면 ‘조약’, ‘규약’이라고 나오는데, 네트워크에서도 이는 정확히 똑같은 뜻으로 사용된다. 프로토콜의 종류는 정말 많다. 컴퓨터 사이에 파일을 교환할 때 활용되는 FTP는 20번과 21번 포트를 사용하도록 정하고 있다. FTP보다 안정성은 떨어지지만 더 빠른 프로토콜인 TFTP는 69번 포트를 맡고 있다. 시스템에 원격에서 접속하기 위해서 사용되는 프로토콜은 텔넷(Telnet)이라고 하며 23번 포트가 이것에 의해 통제된다. 이메일을 보내는 데 활용되는 프로토콜은 SMTP라고 하며 25번 포트를, URL을 웹 주소로 변환시키는 DNS 프로토콜은 53번 포트를 가지고 있다. 웹 페이지를 화면에 나타내는 HTTP 프로토콜은 80번 포트를 통하며, 이메일을 받는 데 활용되는 POP3 프로토콜은 110번 포트를 거친다. 최근 구글이 밀고 있는 HTTPS는 443번 포트를 사용한다. 포트는 네트워킹 분야에서 ‘연결점’ 혹은 ‘문 손잡이’와 같은 역할을 한다고 볼 수 있다. 여러 가지 종류의 특별한 연결 통로라고 볼 수도 있다. 고유한 통로에는 위에서 말한 것처럼 숫자가 이름처럼 붙는다. IP 주소와 포트 번호를 묶어서 8) 소켓이라고 부른다. 어떤 포트를 사용하던 네트워크를 통한 모든 통신은 이 소켓을 통과하도록 되어 있다. 인터넷은 기본적으로 9) IP 주소 체계로 이루어져 있다. 마치 모든 사람의 얼굴이 다르듯, 전 세계 모든 컴퓨터와 모바일 기기, 네트워크 장비들에는 고유한 이름이 붙는데, 이것이 바로 IP 주소다. IP 주소는 버전 4와 버전 6으로 나뉘는데, 이를 IPv4와 IPv6로 표기한다. IPv4는 xxx.xxx.xxx.xxx의 형태를 가지고 있으며 각 xxx는 0~255까지의 숫자 중 하나다. 즉 총 42억개의 IP 주소만을 가지고 있을 수 있는 시스템이라는 것이다. 정확히는 4,294,967,296개로 이는 2의 32제곱에 해당한다. 즉 32비트다. 하지만 사물인터넷의 등장으로 42억개는 그리 많지 않은 숫자가 되어버렸다. 이에 등장한 것이 IPv6으로 32비트가 아니라 128비트이며, 즉 2의 128제곱에 해당하는(340,282,366,920,938,463,463,374,607,431,768,211,456개) 주소를 가지고 있어 가까운 미래에 소진되기가 불가능할 정도다. 기본적인 네트워크 유틸리티 네트워크의 상태를 점검하거나 기능을 수행할 때 우린 어떻게 할 수 있을까? 윈도우에서는 명령어 입력창을 통해, 유닉스나 리눅스에서는 쉘을 통해 몇 가지 명령을 입력할 수 있다. 기본적인 몇 가지 명령에 대해 간략히 정리하면 다음과 같다. 약간은 도스 시대의 추억이 떠오를 수 있다. 1) IPConfig : 해당 컴퓨터가 속한 네트워크의 정보를 출력해주는 명령어다. IP 주소, 디폴트 게이트웨이 주소, 네트워크 환경설정 등을 살필 수 있게 해준다. 뒤에 /all 이나 help 등의 매개변수를 뒤에 붙일 수 있다. 2) Ping : Ping은 실험용 패킷을 기기로 보내 해당 기기가 연결 가능한지 확인하고 패킷 전송 시간이 얼마나 되는지 알아보는 데 사용된다. 3) Tracert : 위 Ping의 딜럭스 버전이라고 볼 수 있다. 패킷이 전송 됐는지, 혹은 시간이 얼마나 걸렸는지만 알아보는 것에 더해 중간 과정에 대한 정보들도 전부 출력해준다. 4) Netstat : 네트워크(network) 상태(status)의 준말이다. 말 그대로 네트워크의 상태를 사용자에게 알려주는 명령이다. 특히 사용자의 컴퓨터에 누가 연결되어 있는지를 나타낸다. 5) NSLookup : 사용자의 네트워크에 연결된 DNS 서버와 연결시키는 데 사용되지만, DNS 서버와의 연결여부를 확인하는 데도 사용이 가능하다. 앞에 언급한 DNS 포이즈닝 공격 때 이 명령어가 거의 반드시 활용된다. 이것을 정보보안이라는 분야의 골자를 이루는 기본 지식이라고 하기엔 턱없이 부족하다. 하지만 앞으로 진행될 추석특집을 통해 지식을 좀 더 확장시켜 나가고자 한다. [국제부 문가용 기자(globoan@boannews.com)] <저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지> |
|
|
|