스캔 결과 해석 및 분석
이 단계에서는 Nmap 스캔 결과를 이해하고 분석하는 방법을 배우겠습니다. 네트워크 보안과 관련하여 스캔 출력을 읽을 수 있는 것은 필수적입니다. 이는 네트워크 보안에 대해 정보에 입각한 결정을 내리는 데 도움이 됩니다. 예를 들어, 스캔 결과를 기반으로 잠재적인 취약점이나 무단 액세스 지점을 식별할 수 있습니다.
다양한 스캔 유형 비교
출력이 어떻게 다른지 확인하기 위해 몇 가지 더 많은 유형의 스캔을 수행해 보겠습니다. 먼저, 포괄적인 스캔을 수행합니다. 이 유형의 스캔에는 모든 일반적인 옵션이 포함되어 있어 대상에 대한 자세한 보기를 제공합니다.
nmap -A -p 8080 localhost > /home/labex/project/comprehensive_scan.txt
이 명령에서 -A 플래그는 매우 중요합니다. 공격적인 스캔 옵션을 활성화합니다. 이러한 옵션에는 대상의 운영 체제 감지, 실행 중인 서비스의 버전 파악, 사용 가능한 스크립트 스캔 및 traceroute 수행이 포함됩니다. 이 플래그를 사용하면 대상에 대한 많은 유용한 정보를 수집할 수 있습니다.
이제 이 포괄적인 스캔의 결과를 살펴보겠습니다.
cat /home/labex/project/comprehensive_scan.txt
출력은 매우 자세할 것입니다. 포트 8080 에서 실행 중인 서비스, 서비스에 대해 실행할 수 있는 가능한 스크립트 및 기타 관련 세부 정보에 대한 정보가 포함됩니다. 이 자세한 정보는 대상의 보안 상황을 더 잘 이해하는 데 도움이 될 수 있습니다.
포트 상태 이해
Nmap 은 포트에 대해 몇 가지 가능한 상태를 보고합니다. 각 상태는 포트의 상태에 대해 다른 내용을 알려줍니다.
- open: 이는 응용 프로그램이 이 포트에서 TCP 연결 또는 UDP 패킷을 적극적으로 수락하고 있음을 의미합니다. 열려 있고 방문자를 받을 준비가 된 문과 같습니다.
- closed: 포트는 액세스할 수 있지만, 해당 포트에서 수신 대기하는 응용 프로그램이 없습니다. 잠겨 있지 않지만 안에 아무도 없는 문과 같습니다.
- filtered: 패킷 필터링으로 인해 Nmap 의 프로브가 포트에 도달하지 못하므로 Nmap 은 포트가 열려 있는지 확인할 수 없습니다. Nmap 이 문을 볼 수 없도록 차단하는 보안 요원과 같습니다.
- unfiltered: 포트는 액세스할 수 있지만 Nmap 은 열려 있는지 닫혀 있는지 알 수 없습니다. 안에 사람이 있는지 알 수 없는 문을 보는 것과 같습니다.
- open|filtered: Nmap 은 포트가 열려 있는지 필터링되었는지 확인할 수 없습니다. 문이 열려 있는지 막혀 있는지 확실하지 않은 불확실한 상태입니다.
- closed|filtered: Nmap 은 포트가 닫혔는지 필터링되었는지 확인할 수 없습니다. 이전 상태와 유사하게 문이 잠겼는지 막혔는지 확실하지 않습니다.
포트 범위를 스캔하여 이러한 상태가 스캔 결과에 어떻게 나타나는지 살펴보겠습니다.
nmap -p 8080-8085 localhost > /home/labex/project/port_states.txt
스캔이 완료되면 결과를 볼 수 있습니다.
cat /home/labex/project/port_states.txt
포트 8080 이 열린 것으로 보고되는 반면, 범위 내의 다른 포트는 닫힌 것으로 보고될 것입니다. 이를 통해 어떤 포트가 활발하게 사용되고 있고 어떤 포트가 사용되지 않는지 알 수 있습니다.
결과의 실제 분석
이제 스캔 결과에서 주요 정보를 추출하여 요약된 보고서를 만들어 보겠습니다. grep 명령을 사용하여 열린 포트를 필터링합니다. 열린 포트는 공격자가 침입할 수 있는 잠재적인 진입점이므로 보안 평가에 매우 중요합니다.
grep "open" /home/labex/project/comprehensive_scan.txt > /home/labex/project/open_ports.txt
필터링 후 결과를 볼 수 있습니다.
cat /home/labex/project/open_ports.txt
이 필터링된 출력은 열린 포트에 집중하는 데 도움이 됩니다. 전체 자세한 스캔 보고서를 살펴보는 대신 어떤 포트가 열려 있는지 빠르게 확인하고 보안 위험을 평가할 수 있습니다.
보안 영향
스캔 결과의 보안 영향을 이해하는 것이 중요합니다. 다음은 염두에 두어야 할 몇 가지 주요 사항입니다.
- 불필요한 열린 포트: 모든 열린 포트는 공격자가 침입할 수 있는 잠재적인 진입점입니다. 서비스가 필요하지 않은 경우 비활성화해야 합니다. 예를 들어, 더 이상 사용하지 않는 서비스에 대해 포트가 열려 있는 경우 공격자는 해당 포트를 사용하여 시스템에 액세스할 수 있습니다.
- 구식 서비스: 이전 버전의 서비스에는 공격자가 악용할 수 있는 알려진 취약점이 있을 수 있습니다. 이러한 위험을 피하려면 서비스를 최신 상태로 유지하는 것이 중요합니다.
- 잘못 구성된 서비스: 최신 서비스라도 잘못 구성된 경우 취약할 수 있습니다. 구성의 작은 실수가 시스템을 공격에 노출시킬 수 있습니다.
LabEx 환경에서는 HTTP 서버를 위해 의도적으로 포트 8080 을 열었습니다. 그러나 실제 프로덕션 환경에서는 이 서비스가 필요한지, 제대로 보호되고 있는지 신중하게 평가해야 합니다.
HTTP 서버 중지
이 단계를 마치기 전에 앞서 시작한 HTTP 서버를 중지하여 정리해 보겠습니다. 먼저, 프로세스 ID 를 찾아야 합니다.
ps aux | grep "python3 -m http.server"
이 명령을 실행하면 HTTP 서버 프로세스를 보여주는 줄을 찾습니다. 출력의 두 번째 열에는 프로세스 ID(PID) 가 포함되어 있습니다. PID 를 찾으면 이를 사용하여 서버를 중지할 수 있습니다.
kill <PID>
<PID>를 이전 명령 출력의 실제 프로세스 ID 로 바꿉니다.
또는 다음 명령을 사용하여 한 단계로 프로세스를 찾아 중지할 수 있습니다.
pkill -f "python3 -m http.server"
서버를 중지한 후에는 더 이상 실행되지 않는지 확인해야 합니다.
ss -tuln | grep 8080
출력이 없으면 서버가 성공적으로 중지된 것입니다.