소개
운영 체제 (OS) 핑거프린팅 실습에 오신 것을 환영합니다.
운영 체제 핑거프린팅은 보안 전문가와 공격자가 원격 대상에서 실행 중인 운영 체제를 파악하기 위해 사용하는 핵심 정찰 기술입니다. 특정 패킷 (때로는 비정상적인 TCP 및 UDP 패킷) 을 대상에 전송하고, 대상의 TCP/IP 스택이 응답하는 미묘한 차이 (TTL 값, 윈도우 크기, 플래그 조합 등) 를 분석함으로써 Nmap 과 같은 도구는 기반 운영 체제를 정확하게 추측할 수 있습니다.
이는 직접적인 사실 확인이 아닌 추론 기술입니다. Nmap 은 관찰된 네트워크 동작을 핑거프린트 데이터베이스와 비교합니다. 결과는 매우 유용할 수 있지만, 방화벽, 프록시 또는 특이한 스택 구성에 의해 영향을 받을 수 있는 '교육받은 추정치'로 다루어야 합니다.
이번 실습에서는 Nmap 의 강력한 OS 핑거프린팅 기능을 활용하여 원격 시스템을 식별하고, 이러한 기술을 버전 탐지와 결합하여 포괄적인 네트워크 프로파일링을 수행하는 방법을 배웁니다.
OS 핑거프린팅 활성화
이 단계에서는 Nmap 을 사용하여 운영 체제 핑거프린팅의 기초를 배웁니다. 운영 체제 핑거프린팅은 원격 대상에서 실행 중인 운영 체제를 결정하는 기술입니다. Nmap 은 정교하게 설계된 일련의 TCP 및 UDP 패킷을 대상에 전송하고 그 응답을 분석하여 이를 수행합니다. 운영 체제마다 TCP/IP 스택 구현 방식이 조금씩 다르기 때문에, Nmap 은 이러한 응답을 방대한 데이터베이스와 비교하여 일치하는 항목을 찾습니다.
이 기술이 가능한 이유는 네트워크 스택이 사람이 작성한 구현체이며, 구현마다 미묘한 기본 설정값이 다르기 때문입니다. 핑거프린팅은 이러한 차이를 단서로 활용합니다.
Nmap 에서 OS 핑거프린팅을 활성화하려면 -O 플래그를 사용합니다. 원시 패킷을 생성하려면 관리자 권한이 필요하므로 sudo를 사용하여 명령을 실행해야 합니다.
로컬 머신 (localhost) 을 대상으로 OS 핑거프린팅 스캔을 실행하고, 결과를 프로젝트 디렉토리의 os_scan.txt 파일에 저장해 보겠습니다.
sudo nmap -O -p 22,80 localhost > /home/labex/project/os_scan.txt
스캔이 완료되면 cat 명령어를 사용하여 결과를 확인할 수 있습니다.
cat /home/labex/project/os_scan.txt
다음과 유사한 출력이 나타납니다. "Device type", "Running", "OS details"로 시작하는 줄을 찾아보세요.
Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 14:53 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000020s latency).
Other addresses for localhost (not scanned): ::1
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6.32
OS details: Linux 2.6.32
Network Distance: 0 hops
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 1.56 seconds
출력 결과는 대상이 LabEx 환경과 일치하는 Linux 커널에서 실행 중임을 보여줍니다.
OS 추측 분석
이 단계에서는 Nmap 이 OS 핑거프린팅 중 불확실성을 어떻게 처리하는지 살펴봅니다. 때때로 대상에 특정 패킷을 차단하는 방화벽이 있거나, 매우 생소하거나 고도로 커스터마이징된 운영 체제가 실행 중일 수 있습니다. 이러한 경우 Nmap 은 데이터베이스에서 완벽하게 일치하는 항목을 찾지 못할 수도 있습니다.
Nmap 이 정확한 운영 체제를 결정할 수 없을 때, 신뢰도 백분율과 함께 추측 목록을 제공할 수 있습니다. --osscan-guess 플래그 (--fuzzy와 동일) 를 사용하여 Nmap 이 더 공격적으로 추측하도록 강제할 수 있습니다. 이는 완벽하게 일치하지 않더라도 OS 일치 항목을 출력하도록 Nmap 에 지시합니다.
이는 정찰 결과에 종종 불확실성이 포함된다는 점을 상기시켜 줍니다. 숙련된 분석가는 모든 탐지 결과가 정확하다고 가정하는 대신, 그러한 불확실성을 기록합니다.
localhost를 대상으로 다시 스캔을 실행하되, 이번에는 공격적인 OS 추측 기능을 활성화하고 결과를 guess_scan.txt 파일에 저장해 보겠습니다.
sudo nmap -O --osscan-guess -p 22,80 localhost > /home/labex/project/guess_scan.txt
이제 생성된 파일의 내용을 확인합니다.
cat /home/labex/project/guess_scan.txt
출력은 이전 단계와 비슷하게 보이지만, 대상이 더 생소한 시스템이라면 Aggressive OS guesses: Linux 5.0 (96%), Linux 4.15 (95%)와 같이 백분율이 포함된 쉼표로 구분된 OS 추측 목록을 볼 수 있습니다.
Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 14:54 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000020s latency).
...
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6.32
OS details: Linux 2.6.32
...
표준 시스템에서도 --osscan-guess를 사용하는 것은 TCP/IP 스택 동작을 숨기려는 강화된 (hardened) 대상을 다룰 때 매우 유용한 기술입니다.
OS 및 버전 탐지 결합 (-A)
이 단계에서는 -A 플래그를 사용하여 OS 탐지와 다른 강력한 Nmap 기능을 결합합니다. -A 플래그는 "Aggressive scan options(공격적 스캔 옵션)"를 의미합니다.
-A 플래그를 사용하면 Nmap 은 다음과 같은 여러 고급 기능을 한 번에 자동으로 활성화합니다.
- OS 탐지 (
-O) - 버전 탐지 (
-sV): 열린 포트를 조사하여 서비스 및 애플리케이션 버전을 결정 - 스크립트 스캔 (
-sC): 기본 Nmap 스크립팅 엔진 (NSE) 스크립트 세트 실행 - Traceroute (
--traceroute): 대상까지의 네트워크 경로 결정
이 결합된 접근 방식은 대상 시스템에 대한 포괄적인 프로필을 제공하므로, 초기 정찰 단계에서 보안 전문가들이 가장 선호하는 방식입니다.
localhost를 대상으로 공격적인 스캔을 수행하고 결과를 aggressive_scan.txt에 저장해 보겠습니다. 이 스캔은 더 많은 검사를 수행하므로 시간이 조금 더 걸릴 수 있습니다.
sudo nmap -A -p 22,80 localhost > /home/labex/project/aggressive_scan.txt
스캔이 완료되면 결과를 확인합니다.
cat /home/labex/project/aggressive_scan.txt
훨씬 더 풍부한 출력 내용을 확인할 수 있습니다. OS 세부 정보와 함께 열린 포트에서 실행 중인 서비스의 정확한 버전 (OpenSSH 및 nginx 등) 과 기본 스크립트를 통해 수집된 추가 정보를 볼 수 있습니다.
Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 14:54 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000019s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 (Ubuntu Linux; protocol 2.0)
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6.32
OS details: Linux 2.6.32
...
이러한 기술들을 결합하면 단일 명령어로 대상 시스템에 대한 방대한 정보를 수집할 수 있습니다.
요약
축하합니다! 운영 체제 핑거프린팅 실습을 성공적으로 완료했습니다.
이번 실습을 통해 다음 내용을 배웠습니다.
- Nmap 의
-O플래그를 사용하여 TCP/IP 스택 응답을 분석함으로써 원격 운영 체제 핑거프린팅을 수행하는 방법. --osscan-guess플래그를 적용하여 대상 OS 가 완벽하게 일치하지 않을 때 Nmap 이 확률적인 추측을 제공하도록 강제하는 방법.-A플래그를 활용하여 OS 탐지, 서비스 버전 탐지, 스크립트 스캔 및 Traceroute 를 결합하여 포괄적인 대상 프로파일링을 수행하는 방법.
이러한 기술은 네트워크 정찰 및 취약점 평가의 기초가 되며, 보안 전문가가 분석 중인 환경을 이해하고 그에 따라 보안 조치를 조정할 수 있도록 해줍니다.



