서울대학교 컴퓨터공학과, 삼성전자 소프트웨어연구센터, 인포뱅크, 핌스텍 기술본부 이사, 2003년 10월 안철수연구소 입사

웹2.0은 기본적으로 웹에서 사용하는 기존 기술을 많이 활용하고 있어서 기존 웹 기술이 안고 있는 보안 문제를 그대로 안고 있다. 더욱이 누구나 손쉽게 콘텐츠를 만들어 올리고 이를 자연스럽게 받아가는, 대규모 생산과 신속한 대량 유통이 이루어지는 인프라가 갖추어진 만큼 보안을 위협하는 요소들이 더 다양한 경로로 더욱 빠르게 확산될 가능성이 높아졌다. 

대표적인 것이 아이프레임(iframe)을 이용한 악성코드 삽입, 스크립트 언어를 이용한 악성코드 유포, 분산서비스거부 공격, 피싱(Phishing)이나 파밍(Pharming) 같은 사회 공학 기반의 공격, 웹 애플리케이션의 보안 취약점을 노린 공격 등이다. 여기에 웹2.0의 개발 도구인 AJAX(Asynchronus JavaScript and XML) 등이 보안 위협 요소 전파의 경로로 악용될 소지가 있다. 이들 사례와 각각의 대응 방법을 살펴본다.

아이프레임 태그 이용한 악성코드 유포

기존 웹 취약점으로는 지금도 여전히 많이 사용되는 아이프레임 태그를 이용한 악성코드 유포나 XSS(Cross Site Script) 공격을 들 수 있다.

위 예제와 같이 웹 페이지에 아이프레임 태그를 삽입하고, 그것이 불러들일 URL에 악성코드가 삽입된 페이지를 연결하면, 사용자가 아이프레임 태그가 삽입된 웹 페이지를 클릭하면 악성코드가 유포된다. 이 때 폭, 높이 등을 0으로 한 것은 사용자의 눈에 띄지 않게 하기 위한 것이다. 물론 아이프레임 태그를 삽입하기 위해서는 해커가 해당 웹 페이지를 변경할 수 있는 권한을 가져야 하는데, 권한 관리가 허술한 사이트가 매우 많기 때문에 이러한 해킹은 매우 빈번하게 벌어진다.

아이프레임 태그를 악용한 공격을 막기 위한 핵심 대책은 서버 관리를 잘하는 것이다. 서버 관리자의 계정 관리는 물론 서버 관리자 계정을 탈취할 수 있는 운영체제 관련 보안 취약점에 대한 패치를 지속적으로 적용하고 관리하는 것이 매우 중요하다. 또한 완전하지는 않지만, 회사의 웹 페이지에 크기가 0인 아이프레임 태그가 삽입되어 있는지 지속적으로 점검하기만 하더라도 상당 부분은 막을 수 있다.

XSS 공격도 많이 쓰여

XSS 공격도 많이 쓰이는 공격 방법이다. 이것은 웹 사이트 게시판 등에 사용자가 콘텐츠를 입력할 때 자바스크립트와 같은 스크립트 언어를 쓸 수 있는 점을 악용한다. 스크립트 언어를 이용해 올린 콘텐츠가 서버에 저장되면, 다른 사용자들이 웹 브라우저로 해당 웹 사이트에 접속할 때 스크립트가 브라우저에서 실행된다. 따라서 이 스크립트가 악성코드라면, 이 웹 사이트에 접속하는 수많은 사용자들에게 악성코드가 전파될 수 있다. 

웹 사이트를 개발할 때 보안 프로그래밍(secure programming)을 하면 웬만한 XSS를 막을 수 있다. 대규모 사이트를 구축할 때 외주를 많이 주는데, 개발 기간과 개발 스펙에 보안을 고려할 수 있도록 구체적인 개발 가이드라인을 줘야 하고, 유지보수도 이를 준수할 수 있도록 해야 한다. 

웹 방화벽과 같은 보안 장비를 이용하는 방법도 있다. 초기에는 처리 속도 때문에 꺼리는 웹 서비스 업체들이 많았으나, 이제는 웹 방화벽의 처리 속도가 향상되고, 캐싱, 압축, SSL 가속 기능 등이 포함되고, 전반적인 성능 향상을 이룬 제품들이 속속 나오고 있다.

자동화된 분산서비스거부 공격

웹 페이지에 대한 공격뿐 아니라 기존 웹 서비스 사이트에 대한 공격 방법 또한 여전히 유효하다. 지난 2월에 한 신문에 국내 한 채팅, 커뮤니티 업체가 중국 해커들의 공격을 받아 이틀째 사이트를 폐쇄하고 있다는 기사가 실렸다.  

이런 공격은 대부분 음성적인 사업을 하는 성인 사이트 업체를 겨냥한다. 이 해커들은 공격을 하면서 500만원을 입금할 것을 요구한다는 것이다. 이 기사에 따르면, 이 공격은 봇(IRCBot) 웜을 임의의 PC에 감염시킨 뒤 이들을 통해 특정 사이트를 공격하라고 명령함으로써 이뤄진 분산서비스거부(DDoS) 공격이다. 

분산서비스거부 공격은 네트워크 연결 요청, 콘텐츠 처리 요청 등 서비스 요청을 과도하게 함으로써 서비스가 작동하지 못하게 하는 전통적인 공격방법이다. 봇 웜과 같은 악성코드를 통한 자동화된 분산서비스거부 공격은 웬만한 보안 장비를 가지고는 막아 내기가 어렵다. 

영세한 웹 기반 서비스 사업체들이 감당하기에는 매우 버거울 수밖에 없다. 더구나 인터넷이 엄청나게 발전한 지금은 많은 사업이 웹을 통해 서비스를 하고 있어서 이러한 공격이 사업에 치명적인 영향을 미치기 때문에 돈을 내라는 요구에 입금을 하기도 한다고 한다. 웹2.0 시대에는 이러한 공격이 미치는 영향은 더욱 커졌다. 

분산서비스거부 공격을 막는 가장 간단한 방법은 라우터에서 공격하는 IP 주소(소스 IP)를 막는 것이다. 하지만 IP 스푸핑(spoofing)으로 IP 주소를 속일 수 있고, 봇 웜과 같은 악성코드를 이용하여 분산서비스거부 공격을 하면 IP를 특정하기도 어려워서 소스 IP를 막는 것은 사실상 불가능하다. 

라우터에서 공격 대상이 되는 IP를 막을 수도 있는데, 해당 서비스가 여전히 작동할 수 없기 때문에 완전한 방법은 아니다. 이 공격을 막기가 매우 어려운 것은 엄청나게 쏟아져 들어 오는 공격 패킷은 차단하면서도 드문드문 들어 오는 정상 패킷은 통과시켜야 하기 때문이다. 

예를 들어 80번 포트를 통해 웹 서버에 공격이 들어오는데, 사용자들 역시 80번 포트를 통해 웹 서비스를 받으려고 한다면, 공격 패킷은 막고, 사용자들의 요청 패킷은 통과시켜야 한다. 여러 IPS 장비들이 분산서비스거부 공격을 막는다고 하지만, 이것을 충분하게 처리하는 제품은 별로 없어 보인다.

사회공학 기반 공격도 늘어 

한편, 사용자들이 웹 사이트를 기반으로 컨텐츠를 주고 받기 때문에 사회공학(Social Engineering) 기반의 공격이 늘어나고 있다. 사회공학 공격은 사회의 절차나 제도, 사람의 심리 등을 악용하여 사람이 어떤 행동을 하게 하거나 비밀 정보를 노출하게 하는 공격 방법을 말한다. 한 마디로 사기치는 것이다. 

예를 들어 예전에는 이메일 웜이 아웃룩 취약점을 통해 자동으로 전파되는 경우가 있었지만, 요즘에는 첨부 파일을 실행시키지 않으면 이메일 웜은 거의 전파되지 않는다. MSN 메신저를 통해서 퍼지는 웜 역시 사용자들이 자신의 ‘대화 상대’에 있는 사람들을 믿기 때문에 이들에게서 오는 파일을 받고 실행함으로써 퍼지게 된다. 

웹2.0 시대에 각광받고 있는 사용자 제작 콘텐츠(UCC)로 각광받는 것이 동영상인데, 이 동영상을 재생하기 위한 프로그램을 설치하라고 하면서, 그 프로그램과 함께 스파이웨어들을 설치하는 경우를 들 수 있다. 이런 스파이웨어들을 설치하는 곳들이 대부분 인터넷 성인 카페들이므로 그런 곳에서 설치하라는 프로그램들은 설치하지 않는 것이 좋다. 

보통 이제는 익숙한 말이 되어 버린 피싱이나 아직은 좀 생소하지만 언론에 심심치 않게 나오는 파밍은 대표적인 사회공학 공격 방법이다. 개인정보(Privacy)와 낚시(fishing)의 합성어인 피싱은 위장 사이트를 통해 개인 정보를 빼내는 것을 말한다. 도메인 이름과 겉모양을 진짜 사이트와 비슷하도록 위장 사이트를 만들고, 위장 사이트로 유도하는 피싱 메일을 보내어 사용자가 여기에 포함된 링크를 클릭하여 위장 사이트에 접속하도록 만든다. 

가령 컴퓨터에서 인터넷을 통해 안철수연구소 웹 사이트에 연결하려면 www.ahnlab.com과 같은 도메인 이름을 입력하게 되는데, 이 도메인 이름은 도메인이름서비스(DNS)를 통해 실제 인터넷 주소(IP 주소)로 변환된다. 이 과정을 가로채서 위장 사이트 IP 주소를 보내 줌으로써 피싱 사이트로 유도하는 공격 방법을 파밍이라고 한다.

개인정보 갱신 이메일 무조건 의심

피싱이나 파밍이 사회공학 공격이므로, 자신의 개인 정보를 갱신하라는 이메일을 받으면 무조건 의심해 봐야 한다. 그런 메일을 보내는 정상 사이트를 나는 한 번도 본 적이 없다. 혹시 궁금해서 그 사이트를 들어가 보려면, 그 메일에 있는 링크를 통하지 않고, 검색엔진이나 사전에 알아 놓은 도메인 이름을 통해 해당 홈페이지에 접속해서 확인해 본다. 요즘 피싱 차단 기능이 있는 제품도 있다. 피싱을 차단하는 여러 알고리즘이 있긴 하지만, 아직 해당 사이트(또는 URL)를 차단하는 수준에서 대동소이하다. 

끝으로 웹 애플리케이션 측면에서의 보안 문제를 볼 수 있다. 인터넷 익스플로러의 보안 취약점이 없거나 사용자가 모두 보안 패치를 적용했다면 사실 악성코드가 쉽게 퍼지지 않는다. 웹 사이트에 브라우저로 연결했을 때에 악성코드와 같은 보안 위협이 자동 실행되는 것은 해당 보안 위협이 자동 실행될 수 있는 취약점이 웹 브라우저에 있기 때문이다. PC에서 이런 취약점을 차단하는 제품으로는 개인 IPS가 있는데, 보통 개인 방화벽이나 통합PC보안 제품에 한 기능으로 포함되어 있다.

이 외에도 구글맵에 사용되면서 웹2.0의 개발 도구의 총아가 된 AJAX 등 웹2.0 개발 도구에 대한 취약점을 우려하기도 한다. 요즘 RIA(Rich Internet Application)이 에 큰 관심이 모아지고 있는데, AJAX나 Flex와 같이 웹 브라우저를 플랫폼으로 하여 애플리케이션을 구축하는 방식에서는 웹 브라우저의 보안 취약점이 그대로 존재하여 애플리케이션에도 영향을 미칠 것이다.

MS의 WPF(Windows Presentation Foundation)나 어도비의 아폴로 프로젝트(Apollo project)와 같이 데스크톱 애플리케이션에 인터넷 접속 기능을 함께 넣으려고 하는 흐름에서는 이것의 보안 취약점 측면을 따로 눈 여겨 봐야 할 것으로 판단된다. 

[IT TODAY 2007년 창간예비호 게재]

저작권자 © 디지털투데이 (DigitalToday) 무단전재 및 재배포 금지