업데이트됨 1개월 전
인터넷에 연결된 모든 기기는 지금 이 순간에도 스캔당하고 있습니다. 가끔이 아닙니다. 끊임없이. ZMap 같은 도구는 전체 IPv4 주소 공간을 5분 이내에 탐색할 수 있으며1, 어떤 서비스가 노출되어 있는지, 어떤 포트가 응답하는지, 어떤 시스템이 취약할 수 있는지를 확인합니다.
포트 스캐닝은 네트워크 정찰입니다. 대상의 포트를 체계적으로 탐색하여 무엇이 실행 중이고 접근 가능한지 파악하는 것입니다. 공격자가 시스템을 공격할 때 가장 먼저 하는 일이자, 보안 전문가가 감사를 수행할 때 가장 먼저 하는 일이기도 합니다. 동일한 SYN 패킷, 동일한 포트 탐색, 동일한 바이트가 네트워크 상에서 전송됩니다. 침투 테스터가 보내면 적절한 실사이고, 공격자가 보내면 침해의 첫 수순입니다.
포트 스캐닝으로 알 수 있는 것
포트를 스캔하면 패킷을 전송하고 돌아오는 응답을 분석합니다. 각 포트는 세 가지 상태 중 하나입니다:
- 열림(Open): 서비스가 수신 대기 중이며 연결을 받아들임
- 닫힘(Closed): 포트는 접근 가능하지만 수신 대기 중인 것이 없음
- 필터링됨(Filtered): 방화벽이나 보안 장치가 탐색을 차단하고 있음
443번 포트가 열려 있으면 웹 서버가 HTTPS로 운영 중이라는 의미입니다. 22번 포트가 열려 있으면 SSH 접속이 가능하다는 의미입니다. 3389번 포트가 열려 있으면 원격 데스크톱이 외부에 노출되어 있다는 의미입니다. 열린 포트 하나하나가 정보이며, 그 정보 하나하나가 공격자의 다음 행동을 결정합니다.
스캔은 단일 포트, 범위, 또는 65,535개의 가능한 모든 포트를 대상으로 할 수 있습니다. 범위는 목적에 따라 다릅니다. 일반적인 서비스를 빠르게 확인하는 것부터, 노출된 모든 것을 종합적으로 파악하는 것까지 다양합니다.
TCP 연결 스캔
가장 직관적인 기법입니다. 스캐너가 각 포트에 대해 완전한 TCP 3방향 핸드셰이크를 시도합니다. SYN을 보내고, SYN-ACK을 받고, ACK으로 응답합니다.
핸드셰이크가 완료되면 포트가 열려 있는 것입니다. 대상이 RST(재설정)를 보내면 포트가 닫혀 있는 것입니다. 단순하고 정확합니다.
단점은 눈에 잘 띈다는 것입니다. 완료된 모든 연결이 대상의 로그에 남습니다. 시스템 관리자는 연결 즉시 끊어진 접속 기록을 확인할 수 있습니다. 침입 탐지 시스템도 이 패턴을 탐지합니다. TCP 연결 스캔은 신뢰할 수 있지만 탐지되기 쉽습니다.
이것은 스캐너에 원시 패킷 권한이 없을 때의 기본 스캔 유형으로, 운영 체제의 표준 네트워킹 기능을 사용합니다.
SYN 스캔 (반개방 스캔)
속도, 정확성, 은밀함의 균형이 잘 맞아 가장 많이 사용되는 기법입니다.
SYN 스캔은 초기 SYN 패킷을 보내고 응답을 기다립니다. 대상이 SYN-ACK으로 응답하면 포트가 열려 있는 것입니다. 하지만 핸드셰이크를 완료하는 대신, 스캐너는 즉시 RST를 보내 연결을 중단합니다.
완전한 연결이 성립되지 않아 많은 시스템이 이를 로그에 남기지 않습니다. 연결을 수립하고 정상적으로 종료하는 과정을 생략하므로 스캔이 더 빠릅니다. 수천 개의 포트를 몇 초 안에 탐색할 수 있습니다.
단점은 SYN 스캔에 원시 패킷 권한이 필요하다는 것입니다. 운영 체제의 네트워킹 스택을 사용하는 대신 직접 패킷을 만들기 위해 스캐너에 관리자 권한이 필요합니다.
현대의 침입 탐지 시스템은 반개방 연결 패턴을 탐지하도록 발전했지만, SYN 스캔은 여전히 완전한 TCP 연결 스캔보다 탐지하기 어렵습니다.
UDP 스캔
UDP는 핸드셰이크가 없기 때문에 UDP 스캐닝이 더 어렵습니다. "연결 수락"이나 "연결 거부"가 없습니다. 프로토콜 자체에 "나 여기 있어"라고 알릴 방법이 내장되어 있지 않습니다.
스캐너는 UDP 패킷을 보내고 기다립니다. 세 가지 일이 발생할 수 있습니다:
- 서비스가 데이터로 응답하면 포트가 열린 것
- 시스템이 ICMP "포트 도달 불가"로 응답하면 포트가 닫힌 것
- 침묵
침묵이 문제입니다. 포트가 열려 있지만 서비스가 패킷 형식을 인식하지 못했을 수 있습니다. 방화벽이 포트를 필터링하고 있을 수 있습니다. ICMP 응답이 속도 제한을 받거나 차단되었을 수 있습니다. 스캐너도, 여러분도 차이를 알 수 없습니다.
UDP 스캔은 느립니다. 응답 없는 포트마다 타임아웃을 기다려야 합니다. ICMP 응답에 대한 속도 제한이 더욱 느리게 만듭니다. 단일 호스트의 모든 UDP 포트를 스캔하는 데 몇 시간이 걸릴 수 있습니다.
Nmap
Nmap(Network Mapper)은 이 분야의 표준 도구입니다. 1997년 2,000줄짜리 Linux 포트 스캐너로 처음 출시되었으며2, 현재는 침투 테스터, 시스템 관리자, 공격자 모두가 사용합니다.
일반 포트 SYN 스캔: nmap -sS 192.168.1.1
DNS와 SNMP 포트 UDP 스캔: nmap -sU -p 53,161 192.168.1.1
포트 상태 외에도 Nmap은 서비스 버전(어떤 소프트웨어가 실행 중인지)을 탐지하고, 운영 체제를 식별하며, 취약점 탐지를 위한 스크립트를 실행합니다. 공격자가 보는 방식으로 자신의 네트워크를 바라볼 수 있게 해줍니다.
합법적인 용도
보안팀은 공격자보다 먼저 노출된 서비스를 찾기 위해 자체 인프라를 스캔합니다. 시스템 관리자는 서비스가 예상 포트에서 수신 대기 중인지, 방화벽 규칙이 올바르게 작동하는지 확인합니다. PCI DSS와 같은 규정 준수 감사에서는 결제 시스템이 불필요한 서비스를 노출하지 않는다는 것을 확인하기 위해 정기적인 스캔을 요구합니다.
원칙: 다른 누군가가 스캔하기 전에 먼저 스캔하세요.
공격자가 스캐닝을 활용하는 방법
공격에 앞서 정찰이 선행됩니다. 시스템에 침입을 시도하기 전, 공격자는 무엇이 노출되어 있는지 파악해야 합니다.
전형적인 패턴: 광범위한 스캔으로 활성 호스트를 찾고, 세부 스캔으로 각 대상의 공격 표면을 파악합니다. SSH 서버는 무차별 대입 공격에 취약할 수 있습니다. 오래된 웹 서버에는 알려진 취약점이 있을 수 있습니다. 노출된 데이터베이스 포트는 잘못된 설정을 시사합니다.
정교한 공격자는 천천히 스캔하며, 여러 소스 주소에서 몇 시간 또는 며칠에 걸쳐 탐색을 분산시킵니다. 탐지를 피하기 위해 패킷 단편화와 미끼 호스트 같은 기법을 사용합니다. 목표는 경보를 울리지 않고 대상을 파악하는 것입니다.
탐지와 방어
침입 탐지 시스템은 스캔 특징을 감시합니다: 순차적인 포트 탐색, 단일 소스에서의 연결 폭주, 반개방 TCP 연결, 비정상적인 플래그 조합.
SIEM 플랫폼은 여러 시스템의 로그를 통합하여 단일 호스트로는 탐지하기 어려운 분산 스캔을 잡아냅니다. 며칠에 걸쳐 네트워크의 모든 서버를 천천히 스캔하는 경우가 이에 해당합니다.
방어 계층:
- 네트워크 분할은 외부 스캐너가 접근할 수 있는 범위를 제한합니다
- 방화벽 규칙은 공개 접근이 필요 없는 포트를 닫습니다
- 속도 제한은 공격적인 스캔을 늦추고 경보를 발생시킵니다
- 포트 노킹은 특정 연결 순서로 잠금이 해제될 때까지 서비스를 숨겨 둡니다
- 허니팟 — 정당한 목적이 없는 가짜 시스템 — 은 어떤 트래픽이든 수신하는 순간 높은 신뢰도로 침입을 탐지합니다
가장 중요한 방어는 자신의 공격 표면을 파악하는 것입니다. 정기적인 허가된 스캔을 통해 무엇을 노출하고 있는지 확인하세요. 불필요한 포트를 닫으세요. 잘못된 설정을 수정하세요. 공격자가 보는 방식으로 자신을 바라보세요.
포트 스캐닝에 관한 자주 묻는 질문
포트 스캐닝은 불법인가요?
관할권과 권한에 따라 다릅니다. 자신의 시스템을 스캔하는 것은 합법입니다. 테스트 권한이 있는 시스템(서면 허가 포함)을 스캔하는 것은 합법입니다. 권한 없이 스캔하는 것은 법적으로 불분명한 영역입니다. 일부 관할권에서는 불법 접근으로 취급하지만 그렇지 않은 곳도 있습니다. 합법성과 관계없이, 무단 스캐닝은 종종 서비스 약관 위반이며 대상 조직의 사고 대응을 유발할 수 있습니다.
내 시스템이 스캔당하고 있는지 어떻게 알 수 있나요?
방화벽 로그에서 동일 소스로부터 여러 포트에 대한 반복적인 연결 시도를 확인하세요. 특히 순차적인 포트를 눈여겨보세요. 시스템이 외부로 보내는 ICMP "포트 도달 불가" 메시지를 모니터링하세요. 침입 탐지 시스템은 스캔 패턴을 전문적으로 탐지합니다. 서비스를 운영하지 않는 포트로 트래픽이 들어온다면 누군가 탐색하고 있는 것입니다.
포트 스캐닝과 취약점 스캐닝의 차이는 무엇인가요?
포트 스캐닝은 어떤 서비스가 노출되어 있는지 파악합니다. 어떤 문이 있는지를 알아내는 것입니다. 취약점 스캐닝은 한 발 더 나아가 해당 서비스에서 알려진 약점을 테스트합니다. 문에 고장난 자물쇠가 있는지 확인하는 것입니다. 포트 스캐닝은 정찰이고, 취약점 스캐닝은 평가입니다. 공격자는 이 순서대로 둘 다 수행합니다.
SYN 스캔에 루트 또는 관리자 권한이 필요한 이유는 무엇인가요?
SYN 스캔은 운영 체제의 일반적인 연결 기능 대신 원시 네트워크 패킷을 직접 만듭니다. 원시 패킷 생성은 OS 네트워킹 스택을 우회하기 때문에 상승된 권한이 필요합니다. 동일한 기능이 주소 스푸핑이나 비정형 패킷 생성에 악용될 수 있기 때문입니다. TCP 연결 스캔은 표준 시스템 호출을 사용하기 때문에 이러한 권한이 필요 없습니다.
출처
이 페이지가 도움이 되었나요?