Nmap의 고급 TCP 스캔 기법에 대해 알아보겠습니다. Nmap은 다양한 스캔 방식을 제공하여 네트워크 환경에서 포트 스캔을 수행할 수 있도록 돕습니다. 각 스캔 기법은 목적에 따라 선택되며, 현업에서는 그 목적에 맞는 기법을 사용하는 것이 중요합니다. 이들 중 일부는 암호화된 네트워크, 방화벽 우회, 침투 테스트 등에 유용하며, 어떤 기법은 특수한 목적을 위해서만 사용됩니다.
1. TCP SYN 스캔 (-sS
)
원리:
SYN 스캔은 가장 일반적이고 널리 사용되는 포트 스캔 기법입니다.
- 클라이언트는 대상 서버에 SYN 패킷을 전송하여 연결을 시도합니다.
- 대상 서버가 SYN-ACK 패킷을 응답하면, 그 포트는 열려 있는 상태입니다.
- 서버가 RST 패킷을 응답하면, 그 포트는 닫혀 있는 상태입니다.
- 이 방법은 연결을 완료하지 않기 때문에 빠르고 상대방에게 탐지되지 않는 경우가 많습니다.
실무에서의 사용:
- 침투 테스트나 서버 보안 검토에서 가장 많이 사용됩니다.
- 방화벽에서 SYN 패킷을 차단하지 않으면 매우 효율적입니다.
2. TCP 연결 스캔 (-sT
)
원리:
TCP 연결 스캔은 완전한 연결을 생성하는 방법입니다.
- 클라이언트는 서버에 SYN 패킷을 보내고, SYN-ACK 응답을 받으면 ACK 패킷을 보내 연결을 완료합니다.
- 연결이 완료되면 포트가 열려 있음을 알 수 있습니다.
- 연결 후에는 FIN 패킷을 전송하여 연결을 종료합니다.
실무에서의 사용:
- 네트워크 관리 및 문제 해결에서 유용합니다. 방화벽이 SYN 스캔을 차단할 경우 사용할 수 있습니다.
- 그러나 연결을 완전히 만들어 로그에 기록될 수 있으므로 공격적인 목적에서는 주의가 필요합니다.
3. TCP FIN 스캔 (-sF
)
원리:
TCP FIN 스캔은 FIN 플래그를 설정하여 포트를 스캔하는 기법입니다.
- 클라이언트는 FIN 패킷을 서버에 전송합니다.
- 열린 포트에서는 응답을 하지 않으며 (연결을 종료할 필요 없으므로), 닫힌 포트에서는 RST 패킷을 응답하여 포트 상태를 알 수 있습니다.
- 이 방식은 방화벽을 우회할 수 있는 경우가 많고, 패킷 필터링을 우회하는 데 유용합니다.
실무에서의 사용:
- 고급 해킹 기법에서 사용되며, 방화벽에서 FIN 플래그를 차단하지 않으면 우회할 수 있습니다.
- 그러나 많은 시스템에서 필터링되므로, 방화벽이 잘 설정된 환경에서는 잘 작동하지 않습니다.
4. TCP Xmas 스캔 (-sX
)
원리:
TCP Xmas 스캔은 Xmas Tree 플래그를 설정하여 포트를 스캔하는 기법입니다.
- 클라이언트는 FIN, URG, PSH 플래그를 모두 설정하여 패킷을 전송합니다.
- 열린 포트에서는 응답하지 않으며, 닫힌 포트에서는 RST 응답을 받습니다.
- 이 방식도 방화벽 우회가 가능하지만, 필터링될 가능성이 높습니다.
실무에서의 사용:
- 침투 테스트나 방화벽 우회를 목표로 사용할 수 있지만, 많은 네트워크 환경에서 패킷이 차단되므로 잘 사용되지 않습니다.
5. TCP ACK 스캔 (-sA
)
원리:
TCP ACK 스캔은 ACK 플래그를 사용하여 포트를 스캔합니다.
- 클라이언트는 ACK 패킷을 대상 서버로 전송합니다.
- 응답이 있으면 필터링되지 않은 포트, 응답이 없으면 필터링된 포트로 판단할 수 있습니다.
- 방화벽 우회를 위해 사용됩니다. 필터링된 포트는 패킷이 거부되거나 차단되며, 열린 포트는 응답을 받습니다.
실무에서의 사용:
- 방화벽 필터링 상태 확인에 사용됩니다. 방화벽의 패킷 필터링 상태를 확인하거나, 특정 포트가 차단되었는지 알아내는 데 유용합니다.
- 침투 테스트에서 자주 사용됩니다.
6. TCP Window 스캔 (-sW
)
원리:
TCP Window 스캔은 TCP 윈도우 크기를 이용하여 포트를 스캔하는 기법입니다.
- TCP 세션을 통해 반환된 윈도우 크기를 분석하여 포트가 열린 상태인지, 닫힌 상태인지를 확인합니다.
- 열린 포트에서는 큰 윈도우 크기를 보이며, 닫힌 포트에서는 작은 윈도우 크기가 표시됩니다.
실무에서의 사용:
- 고급 스캔 기법으로, 방화벽에 의해 숨겨지지 않으면 유용합니다. 그러나 일반적인 환경에서 사용되지는 않습니다.
7. TCP Idle 스캔 (-sI
)
원리:
TCP Idle 스캔은 "간접적인" 방법으로 포트를 스캔합니다.
- 클라이언트는 다른 시스템을 통해 대상 시스템의 포트를 스캔합니다.
- 대상 시스템과 클라이언트 사이에 Idle IP를 사용하여 실제 스캔을 숨기므로, 공격자는 자신의 IP를 드러내지 않습니다.
실무에서의 사용:
- 익명성이 필요한 상황에서 사용됩니다. 그러나 대상 시스템의 응답이 제한적일 수 있어, 실제로 사용하기는 어렵습니다.
8. **TCP Connect 스캔 (-sT
)**와 **SYN 스캔 (-sS
)**의 비교
SYN 스캔이 연결을 완료하지 않고 포트의 상태를 알아내는 반면, Connect 스캔은 실제로 연결을 생성하여 포트의 상태를 확인합니다. Connect 스캔은 방화벽이나 IDS(침입탐지시스템)에 탐지되기 쉬운 단점이 있으며, 스캔이 완료되면 로그에 연결 기록이 남습니다.
9. 실무에서 자주 사용되는 스캔 방식
-sS
(SYN 스캔): 가장 자주 사용됩니다. 빠르고, 방화벽 탐지에 덜 민감합니다.
-sT
(Connect 스캔): 방화벽이 SYN 스캔을 차단할 경우 사용됩니다. 그러나 연결이 로그에 기록되므로, 이를 피하려는 환경에서는 사용되지 않습니다.
-sA
(ACK 스캔): 방화벽의 필터링 상태를 확인하는 데 유용합니다. 침투 테스트에서 방화벽의 존재를 탐지할 때 사용됩니다.
10. 왜 다른 방식들은 덜 쓰이나?
- SYN, ACK, FIN 스캔은 방화벽이나 IDS에 의해 쉽게 탐지되고 필터링될 수 있기 때문에, 일반적인 환경에서는 잘 사용되지 않습니다.
- Idle 스캔은 고급 스캔 기법이지만, 많은 경우 목표 시스템의 응답을 기다려야 하므로 속도가 느리고 제한적입니다.
- Xmas 스캔은 특정 환경에서만 유용하며, 대부분의 네트워크에서 필터링되는 경향이 있습니다.
결론
각각의 Nmap 스캔 기법은 특정한 목적을 가지고 있습니다. 방화벽을 우회하려는 목표, 침투 테스트, 빠르고 은밀한 스캔 등을 위해 적합한 스캔 방식을 선택해야 합니다. 현업에서는 주로 SYN 스캔과 ACK 스캔이 많이 사용되며, 그 외의 고급 기법들은 특수한 상황에서만 사용됩니다.