패킷 조각화를 이용한 고급 방화벽 우회
이 단계에서는 패킷 단편화라는 보다 진보된 방화벽 우회 기술을 살펴봅니다. 시작하기 전에 패킷 단편화가 무엇인지 이해해 보겠습니다. 데이터가 네트워크를 통해 전송될 때 패킷이라고 하는 더 작은 단위로 나뉩니다. 일부 방화벽 및 침입 탐지 시스템 (IDS) 은 악성 활동의 징후가 있는지 이러한 패킷을 검사하도록 설계되었습니다. 그러나 이러한 보안 시스템은 더 작은 조각으로 분해된 패킷인 단편화된 패킷을 처리하는 데 어려움을 겪을 수 있습니다. 이러한 어려움은 스캔 중에 특정 보안 조치를 우회할 수 있는 기회를 제공할 수 있습니다.
스캔 대상으로는 로컬 HTTP 서버를 계속 사용합니다. 먼저 이전 스캔을 수행한 터미널에서 해당 디렉토리로 이동해야 합니다. 이 디렉토리는 프로젝트 파일이 있는 곳이며, 명령이 올바르게 작동하려면 이 디렉토리에 있어야 합니다. 이렇게 하려면 다음 명령을 실행합니다.
cd /home/labex/project
이제 올바른 디렉토리에 있으므로 Nmap 의 단편화 옵션을 사용하여 스캔을 실행할 준비가 되었습니다. 이 옵션은 IP 패킷을 더 작은 조각으로 분할하여 패킷 필터가 스캔을 감지하기 어렵게 만듭니다. 다음은 사용할 명령입니다.
sudo nmap -f -Pn --reason -p 8000 localhost
이 명령에서 추가 옵션 -f를 분석해 보겠습니다. -f 옵션은 Nmap 에게 IP 패킷을 단편화하도록 지시합니다. 이렇게 하면 패킷 필터가 패킷을 분석하고 스캔을 수행하고 있음을 감지하는 것이 더 어려워집니다.
명령을 실행한 후 다음과 유사한 출력이 표시되어야 합니다.
Starting Nmap 7.80 ( https://nmap.org ) at 2025-03-18 16:46 CST
Nmap scan report for localhost (127.0.0.1)
Host is up, received user-set (0.000062s latency).
Other addresses for localhost (not scanned): ::1
PORT STATE SERVICE REASON
8000/tcp open http-alt syn-ack ttl 64
Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds
이 출력은 스캔 결과를 보여줍니다. 호스트 (localhost) 가 작동 중이고 포트 8000 이 열려 있음을 알려줍니다.
다음으로 이러한 결과를 별도의 파일에 저장하려고 합니다. 이렇게 하면 나중에 참조하고 다른 스캔 결과와 비교할 수 있습니다. 결과를 저장하려면 다음 명령을 실행합니다.
sudo nmap -f -Pn --reason -p 8000 localhost > /home/labex/project/nmap_frag_scan.txt
이 명령의 > 기호는 Nmap 스캔의 출력을 지정된 파일로 리디렉션합니다.
이제 이 파일의 내용을 확인하여 결과가 올바르게 저장되었는지 확인해 보겠습니다. 파일의 내용을 표시하는 데 사용되는 cat 명령을 사용합니다.
cat /home/labex/project/nmap_frag_scan.txt
스캔 결과는 이전 스캔과 유사하게 보일 수 있지만 기본 기술은 다릅니다. 이 경우 Nmap 은 IP 패킷을 더 작은 조각으로 단편화하여 상태 비저장 패킷 필터가 스캔을 감지하기 어렵게 만듭니다.
지금까지 사용한 두 가지 스캔 방법, 즉 일반 스캔과 단편화된 스캔을 비교해 보겠습니다. 이 비교를 저장할 새 파일을 만듭니다. 다음은 이를 수행하는 명령입니다.
echo "Comparing regular scan vs. fragmented scan:" > /home/labex/project/scan_comparison.txt
echo "---------------------------------------------" >> /home/labex/project/scan_comparison.txt
echo "" >> /home/labex/project/scan_comparison.txt
echo "1. Regular scan with -Pn:" >> /home/labex/project/scan_comparison.txt
cat /home/labex/project/nmap_scan.txt >> /home/labex/project/scan_comparison.txt
echo "" >> /home/labex/project/scan_comparison.txt
echo "2. Fragmented scan with -f -Pn:" >> /home/labex/project/scan_comparison.txt
cat /home/labex/project/nmap_frag_scan.txt >> /home/labex/project/scan_comparison.txt
이 명령은 먼저 비교 파일에 헤더를 쓰고, 일반 스캔 및 단편화된 스캔의 결과를 파일에 추가합니다.
이제 비교 파일의 내용을 표시하여 비교를 검토해 보겠습니다.
cat /home/labex/project/scan_comparison.txt
제어된 환경에서는 두 스캔의 결과가 유사하게 보일 수 있습니다. 그러나 실제 시나리오에서는 이러한 다양한 기술이 서로 다른 방화벽 구성에 대해 다양한 수준의 성공을 거둘 수 있습니다. 패킷 단편화 (-f) 는 상태 비저장 패킷 필터에 특히 효과적입니다. 상태 비저장 패킷 필터는 각 패킷을 독립적으로 검사하며 종종 조각을 다시 조립하여 전체 패킷을 검사할 수 없으므로 단편화된 스캔이 이러한 필터를 우회할 가능성이 더 큽니다.
더 많은 단편화를 위해 Nmap 을 사용하면 여러 -f 플래그 (예: -ff) 를 사용하거나 --mtu 옵션으로 사용자 지정 MTU(Maximum Transmission Unit) 크기를 지정하여 수준을 높일 수 있습니다. MTU 는 네트워크를 통해 전송할 수 있는 패킷의 최대 크기입니다. 사용자 지정 MTU 를 지정하면 패킷이 단편화되는 방식을 제어할 수 있습니다.
이 기술은 보안 평가를 수행할 때 패킷 단편화를 방화벽 감지를 회피하는 추가 방법으로 사용할 수 있음을 보여줍니다.