- Sweep은 특정 네트워크에 대하여 해당 네트워크에 속해있는 시스템의 작동 유무를 판단할 수 있는 기법이다.
- 목표 대상 기관에서 사용하거나 소유하고 있는 IP 주소와 네트워크 범위를 알아낼 수 있다.
- Sweep는 요청에 대한 응답을 수행하는 클라이언트/서버 구조를 기반으로 하고있다.
- 시스템 자체의 활성화 여부뿐만 아니라, 스캔하는 포트에 해당되는 서비스의 활성화 여부를 조사할 수 있는 방법이다.
- 전송 프로토콜에 따라 TCP Open 스캔과 UDP Open 스캔 기법으로 나뉘고 둘 다 스캔하려고 하는 목적 포트로 연결을 시도한 후 그 응답 형태를 보고 포트의 활성화 여부를 판단한다.
🌂 TCP Full Open 스캔(TCP Connect 스캔)
- TCP Full Open 스캔은 포트가 열려 있는 경우 대상시스템으로부터 SYN/ACK 패킷을 수신하면 그에 대한 ACK 패킷을 전송함으로써 연결을 완료하는 방식이다.
- 포트가 닫혀 있을 경우 대상 시스템이 연결 요청을 받아들이지 못하므로 RST/ACK 패킷을 전송한다.
- TCP Full Open 스캔은 신뢰성 있는 결과를 얻을 수 있지만, 속도라 느리고 로그를 남기므로 탐지가 가능하다는 단점이 있다.
🌂 TCP Half Open 스캔(TCP SYN 스캔)
- 세션에 대한 로그가 남는 TCP Full Open 스캔의 단점을 보완하기 위해 나온 기법으로 로그가 남기지 않아 추적이 불가능 하도록 하는 기법이다.
- 세션을 완전히 연결하지 않고, TCP Half Connection만으로 포트의 활성화 여부를 판단한다.
- 공격자의 SYN 세그먼트 전송기록은 남게 되므로 스캐닝 공격사실을 완전히 숨길 수는 없다.
- 스캔하고자 하는 포트를 대상으로 UDP 연결을 시도할 때 ICMP Port Unreachable 에러 메시지가 수신되면 해당 포트를 비활성화를 의미하며, 아무런 응답이 없다면 해당 포트의 활성화를 의미한다.
- UDP를 이용한 포트 스캔은 신뢰하기 어렵다. UDP 패킷이 네트워크를 통해 전달되는 동안 라우터나 방화벽에 의해 손실될 수 있기 때문이다.
- 스텔스 스캔은 TCP 헤더를 조작하여 특수한 패킷을 만든 후 스캔 대상 시스템에 보내 그 응답으로 포트 활성화 여부를 알아내는 기법이다.
- TCP FIN 스캔은 TCP 헤더 내에 FIN 플래그를 설정하여 공격대상 시스템으로 메시지를 전송하면 스캔 대상 시스템의 포트가 열려 있을 경우에는 응답이 없고, 포트가 닫혀있는 경우에만 RST 패킷이 되돌아오게 된다.
- NULL 패킷은 TCP 헤더 내에 플래그 값을 설정하지 않고, 전송하는 패킷을 말하며 XMAS 패킷은 TCP 헤더 내에 ACK, FIN, RST, SYN, URG 플래그를 모두 설정하여 전송하는 패킷이다.
- 두 패킷 역시 포트가 열려 있을 때는 응답이 없고, 포트가 닫혀있을 경우에만 RST 패킷이 돌아온다.
- 포트의 오픈 여부를 판단하는 것이 아니라 방화벽의 룰셋을 테스트 하기 위한 스캔이다.
- ACK 플래그만 설정해서 보낸다.
- 방화벽에서 필터링 된다면 응답이 없거나 ICMP 메시지를 받고 필터링 되지 않으면 RST+ACK를 받는다.
- 방화벽이 stateful한 필터인지 아니면 단순히 들어오는 syn 패킷을 차단하는 필터링인지를 점검하는 목적으로 사용된다.
- decoy는 스캔을 당하는 대상 호스트에서 스캐너 주소를 식별하기 어렵도록 실제 스캐너 주소 외에 다양한 위조된 주소로 스캔하는 방식을 말한다.
- 다양한 IP로 스캐너 주소를 위조하여 관리자가 스캔을 누가 하는지 알아채기 어렵도록 한다.
- 불필요한 패킷을 차단하도록 방화벽 설정
- 사용하지 않는 포트는 열어놓지 않음(불필요한 서비스는 종료)
- 침입탐지시스템(IDS)을 사용해 포트 스캔 탐지
- 시스템 로그 감사
스캔 공격 툴 NMAP에 대한 설명이 잘된 블로그 적어두고 가요:_)
https://www.solanara.net/solanara/nmap