메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

보안 도구 분석 - 1부

한빛미디어

|

2001-08-07

|

by HANBIT

10,841

by 칼 콘스탄틴(Carl Constantine), 역 한빛 리포터 1기 서광열 앞으로 몇 차례에 걸쳐 리눅스 보안으로 깊이 들어가 VPN 시스템이나 트립와이어(tripwire)와 같은 보안 방법에 대해 이야기하고자 한다. 현재 여러 가지 보안 도구들이 나와 있지만 모든 보안 도구들을 사용해 볼 수는 없다. 대신에 필자의 경험으로 비추어 보아 괜찮았던 보안 도구들을 다루고자 한다. 필자는 지금도 항상 새로운 보안 도구가 없는지 주시하고 있다. 몇몇 경우에는 매우 유명한 보안 도구 중에 하나를 골랐고 또 어떤 경우에는 핵심을 가장 잘 설명해주는 옵션을 골라서 사용하였다. 어떤 경우든지 더 나은 방법이 있을 수 있겠지만, 필자가 사용하는 보안 도구 역시 원하는 일을 할 수 있게 해준다. 필자는 "어떤 일을 하고자 할 때 자신이 하고 싶은 방법으로 하라"는 철학의 신봉자다. 실제로 보안 도구들을 살펴보기에 앞서 다른 모자(hat)를 써야 하는데, 바로 black hat이다. († 역자 주: 보통 공격 위주의 해킹 기법을 연구하는 사람을 black hat이라고 하고, 반대로 다소 학술적이고 방어적인 해킹 기술을 연구하는 사람을 white hat이라고 한다) 크래커들(보안 커뮤니티에서는 주로 black hat이라고 함)이 네트워크에 침입해 들어오지 못하게 하려면 크래커들이 사용하는 방법을 배우고, 그들이 사용하는 해킹 도구를 접해 봐야 한다. 그들이 생각하는 방식으로 생각해 봐야 하는 것이다. 다른 사람이 네트워크를 망가뜨리기 전에 스스로 보안 문제를 찾아내는 편이 좋다. 지금부터 리눅스 시스템 관리자를 위한 여러 가지 보안 도구를 살펴 볼 것이지만, 독자 여러분도 black hat을 쓰고 자신의 네트워크가 외부의 침입으로부터 안전한지 살펴보는 것을 잊지 않도록 하자. 도구! 도구! 도구의 왕국! 보안 분석을 위한 툴을 이야기할 때, 실은 두 가지를 이야기하는 셈이다. 보안 분석은 침입자를 추적하거나 시스템에 남긴 흔적을 찾는 실제 보안 도구를 이야기할 뿐만 아니라, 공격자를 찾기 위한 시스템이나 그 과정까지 함께 의미하는 것이다. 첫 번째 범주에 드는 도구는 많이 있다. 앞으로 연재될 기사에서 nmap, tcpdump, 이더리얼(Ethereal), snort, syslog, 트립와이어(Tripwire)를 다룰 것이다. 할애된 지면이 많지 않기 때문에 어느 한 가지 보안 도구를 자세히 다루진 못할 것이다. 자신의 마음에 드는 도구를 더 깊이 공부하는 것은 독자 여러분의 몫이다. 물론 간단한 소개와 더불어 정확히 그 보안 도구로 무엇을 할 수 있는지 보여주는 몇 가지 예를 제시할 것이다. 두 번째 범주인 과정 분석 도구(procedural tools)인 허니팟(honey pots)을 살펴보자. 허니팟(Honey pots) 공격자들이 쉽게 공격할 수 있는 시스템(혹은 네트워크)을 만들어 보면, black hat이 어떤 생각을 하는지 혹은 스크립트 키드들이 최근에 어떤 일에 매달려 있는지 알아볼 수 있다. 이 과정에서 공격자들이 감시 당하고 있다는 사실을 모르게 하는데, 이러한 시스템을 허니팟이라고 한다. 이름이 허니팟인 데는 나름의 이유가 있다. 꿀(honey)로 더 많은 파리를 끌어들이는 것처럼, 시스템이 취약해 보인다면 더 많은 공격자를 끌어 들일 수 있다는 유추에서 나온 말이다. 일반적으로 허니팟은 시스템에 로그를 남길 뿐만 아니라, 외부 시스템과 하드카피로도 로그를 남길 수 있도록 트립와이어, syslog와 같은 도구를 사용하고 있다(시스템에 로그를 남기는 이유는 공격자들이 시스템 로그를 지우면 자신의 흔적이 없어진다고 생각하기 때문이다). 공격자들의 행동을 관찰할 때엔 이 글의 뒷부분에서 설명할 snort와 같은 도구를 사용한다. 허니팟에서는 이미 알려진 보안 이슈들에 대한 패치를 하지 않는데, 이를 통해서 이러한 구멍(hole)이 어떻게 해킹 당할 수 있는지 알 수도 있다. 끝으로 인터넷에는 완벽한 허니팟을 만들기 위해 노력하는 사이트가 많다. 하지만 필자는 HoneyNet 프로젝트를 으뜸으로 꼽는다. HoneyNet 프로젝트는 "Know Your Enemy"라는 시리즈 문서로 시작되었다. 이는 매우 훌륭한 문서이고 필자는 허니팟에 관심 있는 사람이나 실제적인 보안 문제를 배우길 원하는 사람에게 이 문서를 추천한다. nmap nmap(network mapper)는 네트워크의 문제를 발견하는 최고의 도구이다. 보안 분석을 위한 도구라기 보다는 포트 스캐닝(port-scanning) 도구이며, tarball이나 rpm 형식으로 내려 받을 수 있다. 표도르라는 사람이 작성했고, 계속해서 활발히 개발 및 유지되고 있다. 그러나 간단한 겉모양에 속지 말기 바란다. 포트 스캐너 이상의 많은 것이 숨어 있기 때문이다. nmap을 사용하여 scan(어느 호스트가 살아있는지 확인)과 port scan(특정 호스트에서 어떤 서비스를 제공하는지 알아봄)을 핑(ping)할 수 있고, TCP/IP 핑거프린팅(TCP/IP fingerprinting: 원격으로 호스트의 운영 체제를 판별) 등을 할 수 있다. 유인 스캐닝(decoy scanning)과 sunRPC 스캐닝, reverse-identd(신원확인 데몬) 스캐닝 등도 가능하다. nmap 자체는 콘솔에서 동작하는 도구이다. 그러나 패키지에는 nmap을 위한 프론트엔드(front end) 클라이언트 두 개 중 하나가 포함되어 있다. NmapFE는 자크 스미스가 GTK+를 사용하여 썼고, 현재는 표도르가 유지하고 있다. 두 번째 프론트엔드는 KDE용으로 이안 제프가 썼다. KDE를 사용하고 있으면 KNmapFE를 내려 받을 수 있다. nmap에 대해서 얘기하자면 끝이 없지만, 이제는 세션을 한 번 살펴 보자. 필자의 홈 네트워크에 대해서 스캔 해보았다. 필자의 홈 네트워크는 세 대의 머신으로 구성되어 있는데, 리눅스 박스(Mallard)와 아이맥(iMac), 그리고 방화벽이다. 여기에서 세션을 볼 수 있다. 명령 행에서 어떤 일이 일어났는지 살펴보자. -o는 TCP/IP 핑거프린팅으로 원격 호스트의 운영 체제를 알아내는데, 스캐닝하고 있는 컴퓨터 운영 체제의 네트워크 스택의 작은 차이점을 잡아내는 여러 가지 기술을 사용한다. 또한 가동 시간(uptime) 테스트도 병행하는데, 이 옵션은 스캔을 통해 모은 여러 정보를 사용해서 시스템의 지문을 인식하고 OS를 결정한다. 만약 nmap이 OS를 파악해 내지 못하면, URL을 제공하여 이 지문을 보낸다. 위의 예제에서는 nmap이 스톰리눅스(Storm Linux: Debian 계열)를 돌리는 필자의 리눅스 박스를 잡아내지 못했다. 아이맥(192.168.1.33)의 경우 nmap은 너무 많은 지문을 잡아냈다. 마지막으로 방화벽의 경우에는 nmap이 정확한 운영 체제를 알아내는 데 성공하였다. 또한 Mallard가 17일 동안 켜져 있었고 방화벽이 49일 동안 켜져 있었다는 사실 또한 알아내었다. 이런 종류의 정보는 공격하고자 하는 사람들에게 매우 유용하다. -sS는 TCP SYN 스캔이다. 이 스캔은 완전한 TCP 연결을 맺지 않는 대신, SYN패킷을 보내고 마치 정말 연결을 맺을 것처럼 응답을 기다린다. 이 스캔 방법의 장점은 로그를 남기지 않는다는 것이다. 이 스캔을 사용하려면 루트(root)여야 한다. 위의 예제에서는 Mallard(192.168.1.25)의 모든 포트를 보여주었고, 아이맥은 열려있는 포트가 없음을, 그리고 방화벽에는 몇 개의 포트가 열려 있음을 보여준다. 마지막 인자(argument)는 IP 범위에서 256개의 가능한 IP를 스캔하도록 한다. 약간 방향을 틀어 NmapFE를 사용해보자. 이 예제에서 필자는 방화벽을 스캔할 것이다. 또한 전체가 아니라 1-1024번 사이의 포트만을 스캔할 것이다.


nmap 디스플레이 창

NmapFE가 뛰어난 점은 명령 행에서 쓰이는 명령어를 보여준다는 점이다. 명령 행 도구를 사용하는 데 익숙하지 않다면 명령 행 명령을 보여주는 GUI 프론트엔드가 매우 유용할 것이다. 이더리얼(Ethereal) 이번엔 이더리얼을 살펴보자. 이더리얼은 유닉스(GTK+)와 윈도우 모두에서 사용 가능한 네트워크 프로토콜 분석기이다. 이를 사용하면 실제 네트워크나 디스크에 저장된 캡처 파일(대상 사이트에서 멀리 있는 곳에서 분석하기 유용함)을 살펴볼 수 있다. 이더리얼 또한 최고를 유지하기 위해 많은 프로그래머를 보유하고 있다. 여기에서 이더리얼을 내려 받을 수 있다. 이더리얼은 네트워크에서 바로 TCP 세션을 캡처하거나, 스니프(sniff)할 수 있다. 이더넷은 패킷이 네트워크의 한 머신에서 다른 머신으로 갈 때 그 네트워크나 서브넷의 모든 머신에 패킷을 뿌리는 방식으로 동작한다. 필자가 네트워크 내에 임시로 셋업한 머신과 필자 머신 사이의 TCP 세션을 살펴보자.


클릭하면 큰 화면을 볼 수 있다.

여기에 Mallard와 다른 머신 사이의 텔넷 세션이 있다. 캡처된 데이터를 보기 위해 어느 줄이든 클릭할 수 있다. 데이터의 일부는 외부로 나가는 필자의 키 스트록이다. 데이터의 또다른 일부는 안으로 들어오는 이에 대한 응답이다. 스크린 샷을 살펴보면 잠재적인 공격자인 필자가 다른 사람이 패스워드를 치기를 기다린다는 사실을 알 수 있다. 실제로 몇 줄 밑에 패스워드가 나타났다. 지금까지 아무런 두려움 없이 텔넷을 사용했다면, 지금부터는 두려워 질 것이다. 이더리얼은 몇 가지 좋은 기능을 가지고 있다. 필자가 특히 좋아하는 특징 하나는 도구 메뉴의 Follow TCP Stream 옵션이다. 캡처된 세션에 이 데이터를 이용하여 무엇을 찾을 수 있는 알아보자.


클릭하면 큰 화면을 볼 수 있다.

이럴수가!! 단순히 네트워크의 TCP 트래픽을 살펴보기만 했는데 루트 권한을 얻을 수 있었다. 빨간색으로 표시된 부분이 서버로 보내진 데이터이다. 비교를 위해서 똑같은 세션을 살펴보도록 하자. 단 이번에는 텔넷 대신 SSH를 사용하였다.


클릭하면 큰 화면을 볼 수 있다.

관리자와 사용자가 안전하지 않은 기술을 사용하는 대신에 보안 채널을 사용하면 이더리얼이 훨씬 많은 정보를 모을 수 있다. 이더리얼은 여기에서 보여준 것보다 훨씬 막강한 기능을 가졌다. 여러분도 이 도구를 살펴보고 직접 네트워크에서 실험해 보기 바란다. 관리자가 아니라면 관리자와 매니저에게 이 문제를 제기하기 바란다. 그들도 패스워드나 예산 데이터 등이 회사의 누구에게나 스니프 당하는 것을 원하지는 않을 것이다 스니핑 당하는 것을 피하려면 이런 종류의 공격을 피하는 방법은 스위치 네트워크(switched network)를 도입하는 것이다. 스위치 네트워크에서는 대상 머신으로 패킷을 보내면 오직 그 머신만이 패킷을 받게 된다. 그래서 악의적인 사용자가 네트워크에서 일어나는 트래픽을 무작위로 살펴보는 일이 불가능해진다. 그러나 만약 공격자가 머신에서 원격 모니터링 세션을 열었거나, 자신의 머신에서 트래픽을 살펴보고 있다면 스위치는 소용이 없다. 위의 예제 또한 스위치 네트워크에서 캡처한 것인데, 필자가 소스 머신에서 이더리얼을 돌리고 있었기 때문이다. 리소스 웹사이트: 책: 결론 이것은 빙산의 일각에 지나지 않으며, 이야기할 것이 많다. 다음 기사에서 syslog, tcpdump, 트립와이어를 다루고자 하니 기대해 주기 바란다. 칼 콘스탄틴(Carl Constantine)은 Open Source Solutions社(www.os-s.com)의 리눅스 강사이자 프로그래머로 일한다. 서광열님은 한빛 리포터 1기로 활동 중이며, 포항공대 PLUS의 회원입니다.
TAG :
댓글 입력
자료실

최근 본 책0