Port Scan
Scanning
Prerquisite
풋프린팅 : 해킹을 시도하기 전 상대방의 IP, 서버 정보 등을 알아가는 과정
스캐닝 : PING, Port Scan, 등을 이용하여 상대방의 시스템 종류, 활성화된 서비스 등을 알아내는 보다 세부적인 과정
따라서 포트 스캐닝은 실제로 서버의 정보에 침해를 가하는 공격은 아니지만 서버에 대한 공격 전 사전 준비이기 때문에 신경을 쓸 필요가 있음
Port Scan
Sweep
<aside> 💡
특정 네트워크에 대하여 네트워크 속해있는 시스템의 작동유무를 판단하는 공격
요청에 대한 응답여부를 판단하여 공격대상의 IP 주소와 네트워크 범위를 알아내는 것이 목표
</aside>
ICMP Sweep 여러 IP 주소에 ICMP Echo Request(Ping)을 보내고 응답이 오는지를 확인
TCP Sweep | 특정 포트(예: 80)에 대해 어떤 IP가 해당 포트를 열어두었는지 확인 |
UDP Sweep | 특정 UDP 포트가 열려 있는지 확인 |
Open Scan
<aside> 💡
시스템 자체의 활성화 여부뿐만 아니라, 스캔하는 포트에 해당하는 서비스의 활성화 여부를 조사할 수 있음
스캔하려고 하는 목적 포트로 연결을 시도하여 그 응답 형태를 보고 포트의 활성화 여부를 판단
</aside>
TCP Full Open Scan
공격 대상자와 TCP 세션을 맺어 서비스의 활성 여부를 판단하는 공격기법
1. 포트가 열려있는 경우
- 서버의 SYN/ACK 응답에 대해 ACK를 전송하여 세션 형성
2. 포트가 닫혀있는 경우
- 서버의 무응답에 RST+ACK 패킷을 전송하여 세션을 끊음
결과적으로 세션을 형성하기 때문에 스캔이 느리고 로그가 남게되는 단점이 있음
TCP Half Open Scan
공격 대상자와 TCP 세션을 맺지않고 끊게되어 로그를 남기지 않는 공격기법
공격자가 피해자에게 SYN 을 전송하고 SYN + ACK 를 수신받으면 RST 패킷을 전송하여 세션을 끊어 세션에 대한 로그를 남기지 않는다.
→ 단, 세션을 연결하려는 시도의 로그(SYN 세그먼트 전송기록)는 남기 때문에 완전히 숨길순 없음
UDP Scan
UDP는 비연결지향성 프로토콜이기 때문에 응답을 통해 서비스의 활성 여부를 확인할 수 없음
따라서 ICMP Port Unreachable 메시지를 이용하여 포트의 활성 유무를 확인
응답이 없다면 서비스가 활성된 것이고, ICMP Port Unreachable 메시지를 받으면 포트가 닫혀있음을 확인할 수 있음
→ 응답이 없는 것이 실제로 서비스의 활성화를 신뢰할 수 있는 지표는 아니다. 중간 라우터나 방화벽에 의해 패킷이 드랍되거나 ICMP 응답을 차단하고 있을 수 있기 때문이다.
Stealth Scan
<aside> 💡
TCP의 HandShaking을 이용하는 것이 아닌 헤더의 FLAG 값을 조작하여 그 응답으로 서비스의 활성 여부를 확인하는 방법
</aside>
FIN SCAN FIN FLAG를 설정하여 전송하면 포트가 열려있을 시 응답이 없고, 닫혀있는 경우에만 RST 패킷을 수신받음
NULL SCAN | TCP 헤더에 FLAG 값을 설정하지 않고 전송하는 방법으로 결과값은 FIN SCAN과 동일함 |
XMAS SCAN | TCP 해더 내에 존재하는 모든 플래그를 설정하여 전송하는 방법 |
ACK SCAN | ACK만 설정된 TCP 패킷을 전송하여 방화벽의 정책 여부를 확인하는 기법이다. |
RST 패킷을 받으면 방화벽에 의해 필터링되지 않는 포트임을 알 수 있음 → 열려있는지는 확인이 불가능
ICMP Port unrecheable 메시지를 수신하면 방화벽에서 차단되는 포트임을 알 수 있음 | | DECOY SCAN | 스캔 시 스캔 공격을 여러 IP로 전송하여 IDS/IPS에서 어떤 IP에서 공격이 들어오는 것인지 확인하기 어렵게 하는 공격 |
대응책
- 불필요한 패킷을 차단하도록 방화벽 구성
- 사용하지 않는 포트는 열어놓지 않음
- IDS를 이용하여 포트 스캔 탐지
- 시스템 로그 검사