Port Scanning

2006. 12. 28. 23:15IT/Network

Port Scanning


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" 메시지를 받으면 close 상태이며 메시지가 오지 않으면 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를 차단하는 것이 좋다. 부지런한 새가 벌레를 많이 잡듯이 부지런한 관리자가 보안 공격에 대하여 시스템을 안전하게 지킬 수 있다.

'IT > Network' 카테고리의 다른 글

Solaris 시스템 성능 조정_TCP Timer  (0) 2007.01.26
Tuning Solaris TCP parameters  (0) 2007.01.26
TCP Connetion  (0) 2006.12.28
RAID Level  (0) 2006.12.28
전력선 통신 시대??  (1) 2006.12.28