같은 웹사이트에 대한 두 번의 포트 스캔이 어긋날 수 있는 것은 실행 사이에 이름이 다른 주소로 확인되었기 때문이며, 터널이 대상이 드러내는 것을 바꾸었기 때문이 아니다. 호스트 이름은 조회 지시이며 Nmap은 스캔 시점에 그것을 따른다. 확인자가 다른 레코드로 응답하면 두 번째 스캔은 다른 기계를 측정한 것이다.

숫자 주소를 고정하면 비교가 다시 의미를 갖는다. 보고서의 나머지 모든 것, 즉 타이밍부터 중간 장비까지는 자체 통제가 필요한 별도 변수로 남는다.

보고서에서 똑같아 보이는 두 실험

이름을 그 자신과 비교하면 적어도 두 가지, 즉 패킷이 지나는 경로와 확인자가 돌려준 목적지를 동시에 바꾼 셈이다. 출력의 차이를 둘 중 어느 쪽에도 돌릴 수 없다. 이 모호함이 사전·사후 스캔을 아무도 해결할 수 없는 논쟁으로 만드는 흔한 이유다.

주소를 그 자신과 비교하면 목적지는 구조상 고정된다. 그래도 다른 것은 경로, 출발지 주소, 그 사이의 필터링, 또는 기계 자체의 상태에 속한다. 변수를 하나 제거한 것이며, 모두 제거한 것과는 같지 않다.

포트 표에서 어떤 결론을 내리기 전에 그 두 실험 중 실제로 무엇을 했는지 적어 두자. 이 구분은 두 번째로 도달한 주소에서 한 번도 열려 있지 않았던 포트를 VPN이 차단했다고 보고서가 말할 때까지는 학문적으로 들린다.

ComparisonWhat stays fixedWhat a difference can mean
Name against nameThe string you typedResolver answer, answer order or split-horizon policy changed
Address against addressThe numeric destinationSource path, filtering or service placement changed

먼저 확인하고, 그다음 기록한 주소를 스캔하자

확인과 탐침을 분리해 두 사실이 다른 곳에 남게 하자. 시스템에 무엇을 확인했는지 물어 그 답을 저장한 뒤 Nmap에 문자 그대로의 주소를 넘긴다. 터널을 내린 상태와 올린 상태에서 같은 두 명령을 반복한다.

getent hosts scan.example.net
dig +short scan.example.net A
nmap -Pn -sV -p 443,8443 192.0.2.40

여기서 -Pn 플래그가 중요하다—발견 탐침을 무시하는 호스트는 그렇지 않으면 다운으로 보고되고 빈 결과가 닫힌 포트로 잘못 읽히기 때문이다. -sV는 운영자가 승인한 대상에만 사용하자—버전 탐침은 단순 연결보다 시끄럽고 문서화된 범위에 속한다.

Nmap의 대상 지정 참조는 호스트 이름이 스캔 전에 주소로 확인되며, 여러 주소가 돌아오면 모두를 요청하지 않는 한 도구가 첫 번째를 스캔한다고 분명히 밝힌다. 이 동작에 VPN에 특유한 것은 없다. 분할 DNS, 다른 확인자, 새 순서로 응답하는 로드 밸런서는 터널 없이도 같은 효과를 낸다.

확인된 값을 스캔 출력 옆에 주소 체계, 플래그 집합, 타임스탬프와 함께 남기자. 회사 이름을 돌려주는 역방향 조회는 또 하나의 관찰이며, 어느 백엔드가 응답했는지의 증거는 아니다.

바뀐 포트 상태가 말해 줄 수 있는 것과 없는 것

대상이 고정되면 열림에서 필터됨으로 바뀌는 포트는 보통 경로를 가리킨다. 상류 ACL, 상태 저장 방화벽, 터널 출구를 가정용 출구와 다르게 취급하는 공급자를 생각하자. 범위가 허락하면 같은 서브넷의 두 번째 승인된 주소를 시험해 좁히자—호스트 이름을 바꾸면 확인자 질문이 다시 들어오기 때문이다. 실행마다 변수 하나, 그것이 방법의 전부다.

서비스 배너가 바뀌는 동안에도 열려 있는 포트는 다른 이야기다. 그 패턴은 연결을 백엔드 사이에 분배하는 프런트엔드에 맞고, 당신 쪽에서 아무리 스캔해도 그 뒤의 임차인을 지목할 수는 없다.

스캔이 결코 말하지 않는 것은 의도다. 필터된 포트는 정책의 결과이며 누군가 당신의 터널을 겨냥했다는 증거가 아니고, 열린 포트도 그 뒤의 애플리케이션이 당신을 서비스한다는 증거가 아니다. 두 이야기 중 어느 것을 쓰기 전에든 당신이 운영하는 구성 요소의 로그와 상관관계를 확인하자.

비교가 검토를 견디도록 결과를 기록하자

쓸모 있는 기록에는 요청한 이름, 확인된 주소와 그 체계, 정확한 플래그, 사용 중인 출발지 주소, 대상을 포괄한 승인이 들어 있다. 시간을 더하자—DNS 응답은 돌아가고 타임스탬프 없는 보고서는 같은 논쟁을 두 번 초대한다. 스캐너 버전도 더하자—기본 탐침 동작은 릴리스 사이에 달라진다. 두 실행이 다른 방법을 썼다면 다른 실험으로 다루고 그 사실을 각주가 아니라 제목에 쓰자.

발견을 목적지가 다른지, 출발지 경로가 다른지, 아직 설명되지 않은 차이인지 있는 그대로 표시하자. 그 어휘가 스캔 보고서를 정직하게 유지하고 확인자 응답이 VPN 차단 사건으로 다시 게시되는 것을 막는다. 다음 단계는 보통 주소를 고정한 한 번 더의 실행이며, 더 넓은 스캔이 아니다.

관련 글