
macOS에는 네트워크를 관리할 수 있는 유용한 그래픽 유틸리티가 몇 가지 있지만, 진정한 강력한 기능을 원한다면 터미널을 사용해야 합니다. 익숙하지 않은 사용자에게는 다소 어렵게 느껴질 수 있지만, 터미널로 네트워크 정보를 확인하는 데 기술 전문가일 필요는 전혀 없습니다. macOS는 내부적으로 Unix의 변형을 기반으로 작동하기 때문에 방대한 네트워킹 도구를 자유롭게 활용할 수 있습니다. 그중에서도 가장 강력한 도구 중 하나인 nmap은 몇 가지 명령어와 조합하면 네트워크에 대한 방대한 정보를 제공합니다.
nmap으로 로컬 네트워크의 열린 포트 스캔하기
nmap은 macOS에서 명령줄 포트 스캐너의 대명사이지만, 사용하기 전에 먼저 설치해야 합니다.
Homebrew로 nmap 설치하기
Homebrew 패키지 관리자가 설치되어 있다면 터미널에서 다음 명령어를 실행하세요.
brew install nmap
이 명령어는 nmap과 필요한 의존성 패키지를 자동으로 다운로드하여 설치해 줍니다.
nmap으로 스캔하기
nmap은 지정된 호스트 이름 또는 네트워크 주소를 스캔하여 열린 포트 목록을 반환하도록 설계된 도구입니다. 이름은 'network mapper(네트워크 매퍼)'의 약자이지만, 실제 기능은 포트 매퍼에 가깝습니다.
nmap을 실행하는 가장 간단한 방법은 대상이 되는 IP 주소 또는 IP 주소 범위를 지정하는 것입니다. 로컬 네트워크를 스캔하려면 적절한 IP 주소로 바꿔 입력하면 됩니다. 아래 명령어는 nmap의 공식 교육용 테스트 서버인 scanme.nmap.org를 스캔하는 예시입니다.
nmap scanme.nmap.org

IP 주소 범위의 열린 포트를 한 번에 스캔하려면 슬래시(/) 표기법을 사용합니다.
nmap 192.168.0.0/24
라우터와 네트워크에 연결된 각종 장치의 IP 주소를 먼저 확인하려면 arp 또는 ipconfig 명령어를 활용하면 됩니다.
sudo nmap -A scanme.nmap.org

-A 플래그를 사용하면 nmap이 더욱 공격적으로 스캔하여 훨씬 많은 정보를 반환하지만, 서버 로그에 스캔한 사용자의 존재가 그대로 기록됩니다. 참고로 -A 플래그는 반드시 sudo 권한과 함께 실행해야 합니다. sudo 명령어를 사용할 수 없거나 사용하고 싶지 않다면, root 권한 없이 nmap을 실행하는 별도의 가이드를 참고하세요.
sudo nmap -O scanme.nmap.org
이 명령어는 지정된 IP 주소의 운영체제(-O) 정보를 스캔합니다. 마찬가지로 sudo 권한이 필요합니다.
nmap을 좀 더 은밀하게 실행하고 싶다면 -sS 플래그를 사용해 보세요.
sudo nmap -sS scanme.nmap.org

이 옵션은 '하프 오픈(half-open)' 스캐닝을 수행합니다. TCP SYN 패킷을 전송해 포트가 열려 있는지 확인하지만, 긍정적인 응답을 받아도 ACK 패킷으로 회신하지 않습니다. 그 결과 원격 서버는 이 스캔을 로그에 기록하지 않을 가능성이 높습니다.
-sS 플래그를 비롯한 대부분의 스캔 모드 스위치는 sudo와 함께 실행해야 합니다. 예를 들어 -sP 모드 스위치는 포트가 아닌 IP 주소만 스캔하며, 뒤에서 설명할 arp 명령어와 비슷한 역할을 합니다. 더 다양한 스캔 모드가 궁금하다면 nmap 매뉴얼 페이지를 확인해 보세요.
더 자세한 결과를 얻고 싶다면 -vv 또는 -v3 태그를 추가하세요. 상세 로깅 수준이 활성화되어 출력이 더 읽기 쉬워지지만 그만큼 길어집니다. 찾고자 하는 정보에 따라 이러한 플래그가 큰 도움이 될 수 있습니다.
물론 nmap의 결과를 grep으로 파이프(|)하여 특정 결과만 검색할 수도 있습니다. 예를 들어 22번 포트만 확인하고 싶다면 아래와 같이 실행합니다.
nmap scanme.nmap.org | grep "22/tcp"
해당 포트가 열려 있지 않으면 아무 결과도 반환되지 않고, 열려 있다면 포트의 상태 정보가 출력됩니다.
arp로 로컬 네트워크의 활성 IP 주소 스캔하기
arp는 로컬 네트워크에 연결된 장치를 스캔하는 도구입니다. arp는 주소 결정 프로토콜(Address Resolution Protocol)을 생성하고 수정하기 위해 설계되었기 때문에 네트워크 스캔 기능은 제한적입니다. 하지만 모든 Mac에 기본 탑재되어 있어 별도 설치 없이 빠르게 필요한 정보를 얻을 수 있다는 장점이 있습니다.
현재 네트워크에 연결되어 응답하는 모든 장치의 목록을 확인하려면 터미널을 열고 다음 명령어를 실행하세요.
arp -a
이 명령어는 네트워크에 연결된 모든 장치의 목록을 IP 주소와 MAC 주소 형태로 반환합니다.

arp의 기능은 사실상 이것이 전부입니다. arp -a -i en0처럼 실행하면 en0 네트워크 인터페이스의 결과만 필터링해서 볼 수 있습니다.
자주 묻는 질문
1. nmap은 해킹 도구인가요?
nmap은 악의적인 목적으로 악용될 수 있지만, 그 자체로 해킹 도구는 아닙니다. 특히 자신의 네트워크를 점검하는 용도로 사용한다면 전혀 문제가 되지 않습니다.
2. nmap을 반드시 Homebrew로 설치해야 하나요?
아니요. brew 명령어로 설치하는 것이 가장 간편하지만, nmap 공식 웹사이트에서 제공하는 macOS 인스톨러를 통해서도 설치할 수 있습니다.
3. nmap은 macOS에서만 사용할 수 있나요?
아니요. macOS뿐 아니라 Windows, Linux, FreeBSD, Solaris 등 다양한 Unix 계열 운영체제에서도 nmap을 사용할 수 있습니다.
4. nmap이 할 수 있는 것이 이게 전부인가요?
nmap의 모든 기능을 다루려면 여러 편의 분량이 필요합니다. 더 깊이 있는 정보는 nmap 공식 매뉴얼을 참고하세요.
네트워크 도구 모음
nmap은 확실히 가장 강력한 네트워크 도구 중 하나지만, 도구 세트에 담아야 할 유일한 소프트웨어는 아닙니다. 예를 들어 ipconfig는 네트워크 인터페이스 정보를 확인하는 데 유용하고, arp 명령어는 네트워크에 연결된 모든 장치를 신속하게 훑어볼 때 유용합니다.
macOS를 더 다양하게 활용하고 싶다면 USB 드라이브에 macOS를 설치하는 방법도 함께 알아두면 좋습니다.