JNB
rss

skin by 이글루스

보안

port scanning의 이해 06.10.02 18:27
글 : ㈜코코넛 서비스지원부 권혁철 주임
hckwon@coconut.co.kr

보안기술의 발전에도 불구하고, 패스워드는 시스템 보안의 중요한 역할을 담당하고 있습니다.
패스워드는 여러 가지 보안 기술을 피해 시스템을 파괴하는 것을 어렵게 합니다.
비록 우리가 패스워드를 더 강력하게 하려는 기술과 정책을 사용할 지라도,
우리는 시스템에서 인간적인 요소들과 싸워야 할 것입니다.

결국 우리의 최종 목표는 사용자들로 하여금 더 나은 패스워드를 선택해서 사용하도록 하는 것입니다.
그러나 그 목표를 달성하는 방법이 언제나 명확하게 드러나는 것은 아닙니다. 문제는 인간들,
즉 우리들이 창조적이라고 생각하는 방법들이 언제나 예측 가능한 방법이라는 것입니다.
만약 제가 완전히 랜덤한 단어들의 리스트를 만들기 위해 당신에게 물어본다면,
필연적으로 당신이 말한 리스트에는 어떠한 패턴의 종류가 나타날 것입니다.

따라서 좋은 패스워드를 선택하는 것은 많은 교육을 요구하게 됩니다.
시스템 관리자는 교육을 받아야 할 필요가 있고, 그러한 교육은 최종 사용자들에게 반드시 전달되어야 합니다.

이 글을 통해서 우리가 보편으로 가지고 있는 패스워드에 대한 잘못된 믿음에 대해서 알아보고,
그것을 통해서 윈도2000과 XP, 2003에서의 패스워드에 대한 이해에 더 가깝게 접근하기를 바랍니다.

Port scanning이란, Port scanner에 의한 목적지 시스템에 대하여 Listen 되어 있는
port(접속 가능한 port)를 찾기 위한 행위입니다. 공격자들은 Target 시스템이 alive 되어 있는지
확인(주로 ping을 이용하며, 네트워크 단위에서는 ping sweep을 한다) 하고,
열려진 port를 탐색한 후 취약점 scanner(Nessus, Internet Scanner 등)를 이용하여 취약점 분석을 합니다.
그 후에 시스템의 취약점을 이용하여 공격을 하게 됩니다.

Footprinting이 DNS정보나, Whois 정보와 같은 open된 정보를 수집하는 단계라고 한다면
port scanning은 시스템의 alive 체크 후 실질 적인 최초의 시스템 분석 시도라고 할 수 있습니다.
그렇기 때문에 관리자는 공격자로부터 port scanning 시도가 확인이 되면 다른 공격 시도가 없는지 모니터 해야 합니다.

그러나 Port scanning이 악의적인 목적으로만 사용되지는 않습니다.
관리자 입장에서 유용하게 사용 할 수도 있는 것이 바로 port scanning입니다.
관리자가 시스템에 어떤 port가 열려 있는지 확인하여 사용하지 않는 불필요한 서비스를 중단 시킬 수 있으며,
운용중인 서비스에 접속이 되지 않을 경우 해당 port가 열려 있는지 닫혀 있는지 확인하는 용도로 사용 할 수 있습니다.


이번에는 port scanning에 대한 여러 기법에 대하여 설명을 드리겠습니다.
많은 Port scanning기법들이 있지만 그 중에 많이 알려져 사용하는 기법들을 중심으로 설명하도록 하겠습니다.
가장 진보적인 scanner로 알려진 Nmap은 세가지 포트 상태를 알려 줍니다. Open/Close/Filtered입니다.
Open이나 Close 상태는 이어지는 다음 설명을 통해 이해하실 수 있습니다.
Filtered의 경우는 대상 포트에서 아무런 응답이 없을 경우 Filtered라고 Scan 결과에 표시가 됩니다.
Filtered의 경우 Firewall이나 Router/Switch와 같은 Network 장비의 Filtering에 의해서 표시 되기도 하며
대상 포트 자체의 Filtering에 의해서 표시 되기도 합니다. Nmap의 경우 Filtered는 open 상태로 결정하고 있습니다.

1) TCP connect() scan
이 기법은 3Way hand-shaking을 이용한 scanning입니다. 완전한 TCP 연결을 하여 Port의 open/close
상태를 확인하기 때문에 시스템에서 쉽게 탐지가 될 수 있습니다.

2) TCP SYN scan
Half-open scan 또는 Stealth scan으로 불리기도 하며 완전한 TCP 연결을 맺지 않고,
대상 포트로 SYN 패킷을 전송하여 SYN/ACK을 받으면 open 상태, RST/ACK를 받으면 close 상태입니다.
SYN scan은 half-open 연결을 통하여 포트의 open/close 상태를 확인하기 때문에 TCP connect() scan에
비하여 비밀스러운 연결로 시스템에 로그가 기록되지 않습니다. TCP를 이용한 scanning 중 scan속도가
TCP connect() scan 보다 빠르기 때문에 가장 많이 사용하는 방법입니다.

3) TCP FIN, Xmas Tree, NULL scan
이 세가지 scan기법은 Stealth scan이라고 불리기도 하며 UNIX 계열 시스템에 대해서만 사용 할 수 있습니다.
만약, TCP FIN, Xmas Tree, NULL scan으로 scanning을 하여 결과가 없다면 해당 시스템은
Windows 계열의 시스템이라고 판단할 수 있습니다.
TCP FIN scan은 TCP flag의 FIN을 활성화 하여 대상 포트로 패킷을 전송하고,
Xmas Tree scan은 TCP flag의 FIN, URG, PUSH을 활성화 하여 대상 포트로 패킷을 전송합니다.
NULL scan은 TCP flag를 모두 비활성화 하여 대상 포트로 패킷을 전송합니다.
세 scan 모두 포트가 close 상태이면 RST 패킷을 되돌려 보냅니다(RFC 793). Open 상태이면 패킷을 무시합니다.

4) UDP scan
UDP scan은 UDP를 사용하는 열린 포트를 찾기 위한 scanning입니다.
대상 포트로 UDP 패킷을 전송하고 대상 포트로부터 "ICMP Port Unreachable" 메시지를 받으면 c
lose 상태이며 메시지가 오지 않으면 open 상태입니다.
UDP scan은 정확도가 떨어지기 때문에 결과에 대해서 신뢰를 할 수 없는 scan입니다.
Close상태는 명확하게 포트가 닫혀 있다는 것을 알 수 있지만 Open 상태는
UDP protocol의 특성(비연결형 protocol)상 네트워크의 상태나 Router, Switch등에 의한 Filtering에 의해서
응답이 없을 수 있기 때문에 특히, open상태는 정확도가 떨어진다고 할 수 있습니다.

Port scanning 대응 방법은 그리 어렵지 않습니다.
그러나, 대부분의 관리자들은 이 문제에 대해서 중요치 않게 생각하거나 소홀이 생각하고 있습니다.
어렵지 않은 방법으로 Port scanning에 대하여 대응을 할 수 가 있습니다.

첫번째로 네트워크 장비에 의한 Filtering을 할 수 있습니다. Router나 Switch에서 ACL을 이용하여 허용하지 않은
사용자 이외에는 네트워크 접근을 차단 하는 방법입니다.

둘째는 서버에서 실행되고 있는 불필요한 서비스를 중지 함으로써 서버내의 취약점을 표출하지 않는 것입니다.
OS 설치 시 기본적으로 탑재되어 실행 되는 서비스 중에는 보안에 취약한 서비스들이 있습니다.
그러한 서비스를 중지하는 것 만으로도 어느 정도 방어가 가능합니다.
셋째는 침입탐지 시스템과 침입차단 시스템을 연동하여 대응하는 방법입니다.
침입차단 시스템 하나만으로도 첫번째 방법과 같이 할 수 있으나 첫번째 방법은 Scanning을 탐지하지 못하기 때문에
어디에서 공격이 들어오는지 알 수 없습니다.
Router나 Switch의 syslog를 점검한다고 하더라도 이미 Scan이 끝난 상황일수 있기 때문에 대응이 늦어지게 됩니다.
효과적으로 대응하기 위해서는 침입탐지 시스템을 이용하여 침입자를 감지하고
침입차단 시스템에서 공격자의 IP를 차단하는 것이 좋겠습니다.

부지런한 새가 벌레를 많이 잡듯이 부지런한 관리자가 보안 공격에 대하여 시스템을 안전하게 지킬 수 있습니다.

References:
Nmap Free Security Scanner
http://www.insecure.org

        

    
Copyright 1999-2018 Zeroboard / skin by JY