Network Mapper의 약자인 Nmap은 가장 많이 사용되는 포트매퍼 및 네트워크 스캐닝 도구 중 하나입니다. Nmap의 기본 기능 중 일부는 권한이 없는/일반 사용자로 실행할 수 있지만 대부분의 고급 기능을 사용하려면 루트 또는 sudo 권한이 필요합니다.
예를 들어, NULL, Stealth SYN Scan 및 기타 많은 고급 포트 스캔 기능은 루트 권한으로만 작동할 수 있습니다. Nmap은 적절하고 사용 가능한 결과를 제공하기 위해 원시 패킷 데이터에 액세스해야 하기 때문입니다.
sudo 권한 없이 이러한 고급 기능을 실행하려고 할 때마다 도구는 "루트 권한이 필요합니다"라는 메시지를 표시합니다.
불행히도 Nmap을 실행하기 위해 sudo를 사용해야 하는 것은 특히 sudo 그룹에 속해 있지 않은 경우 문제가 될 수 있습니다.
다행히 루트 또는 sudo 권한 없이 기능을 사용하여 Nmap을 실행할 수 있습니다.
기능이란 무엇입니까?
Linux 기능은 프로그램과 프로세스가 루트 사용자를 위해 예약된 권한을 활용할 수 있도록 하는 Linux 커널 속성입니다.
본질적으로 Linux 기능은 루트 사용자 권한 또는 권한을 공유하므로 권한 없는 프로세스가 권한 있는 프로세스로 실행될 수 있으므로 권한 검사를 거치지 않습니다.
수많은 Linux 기능이 있습니다. 매뉴얼 페이지에서 Linux 기능에 대해 자세히 알아볼 수 있습니다.
이 가이드의 핵심은 CAP_NET_RAW, CAP_NET_ADMIN 및 CAP_NET_BIND_SERVICE의 세 가지 기능을 사용하여 루트 사용자 권한을 확인하지 않고 Nmap에 실행하는 데 필요한 권한을 부여하는 방법을 보여주는 것입니다.
참고: 악의적인 사용자가 Nmap의 스크립팅 엔진을 악용하여 전체 sudo 권한에 액세스하고 스크립트를 사용하여 로컬 호스트 취약점을 악용할 수 있으므로 상승된 기능을 설정할 때 주의하십시오. 따라서 이러한 설정을 주의해서 사용하거나 특정 그룹에 대한 Nmap의 액세스를 제한하십시오.
다음은 sudo 및 루트 권한의 필요성을 제거하기 위해 Nmap에 부여한 Linux 기능입니다.
- CAP_NET_RAW: 이 기능을 설정하면 프로세스가 원시 패킷 데이터 및 소켓에 액세스하고 사용할 수 있습니다.
- CAP_NET_ADMIN: 이 기능은 프로세스에 IP 방화벽 관리, 인터페이스 구성, TOS의 서비스 유형 설정, 라우팅 테이블 변경 등과 같은 다양한 네트워크 활동을 수행할 수 있는 능력을 제공합니다.
- CAP_NET_BIND_SERVICE: 이 기능은 소켓을 인터넷 도메인 권한이 있는 포트에 바인딩합니다.
Linux 기능은 스레드와 파일에 대해 각각 "효과적", "상속 가능", "허용됨" 및 "주변" 세트로 할당됩니다. 루트 또는 sudo 권한 없이 실행하는 데 필요한 기능을 Nmap에 제공하기 위해 eip
를 사용하고 있습니다. , 따라서 Nmap은 어떤 사용자가 실행하든 상관없이 이러한 기능을 사용할 수 있습니다.
1단계:libcap 설치
Linux 기능을 설정하려면 libcap 패키지를 설치해야 합니다. 이 패키지를 사용하면 setcap 명령을 사용할 수 있습니다. 다음 명령을 사용하십시오.
sudo apt-get install libcap2-bin
이제 libcap이 설치되었으므로 setcap
을 사용할 수 있습니다. Linux 기능을 수정하는 명령입니다.
2단계:Nmap 기능 설정
루트 사용자 권한 없이 실행할 수 있는 Nmap 기능을 설정하려면 다음 명령을 실행하십시오.
sudo setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip $(which nmap)
기능을 설정하면 getcap
을 사용하여 기능이 적용되었는지 확인할 수 있습니다. 명령.
getcap $(which nmap)
참고: Nmap 설치 폴더의 전체 경로를 지정하는 것이 필수적입니다.
3단계:권한 플래그로 Nmap 실행
이제 이 세 가지 기능이 설정되었으므로 Nmap에 이러한 기능이 있음을 알리기 위해 권한 플래그를 사용하여 sudo 권한 없이 Nmap을 실행할 수 있습니다. 그렇게 하려면 다음을 실행하십시오.
nmap --privileged -sS 192.168.0.112
참고 :--privileged
를 사용해야 합니다. 옵션을 선택하지 않으면 Nmap이 이러한 권한이 있는지 알 수 없습니다.
nmap --privileged
를 입력하는 데 걸리는 시간을 절약하려면 플래그를 매번 다음 위치에 추가하여 NMAP_PRIVILEGED 환경 변수를 영구적으로 설정할 수 있습니다.
- ~/.xsessionrc: 이것은 대부분의 데스크탑/그래픽 환경에서 작동하며 셸과 터미널에서 상속할 수 있습니다.
- ~/.프로필: 이것은 로그인이 필요한 쉘에서 작동합니다.
- ~/.bashrc: bash에서 작동합니다.
- ~/.gnomerc: 그놈에서만 작동
마무리
대부분의 Nmap 포트 스캔 및 호스트 검색 방법에는 루트 또는 sudo 권한이 필요합니다. 튜토리얼에서 논의된 바와 같이, 이 기능을 재정의하고 루트나 sudoers 그룹 없이 Nmap을 실행할 수 있습니다. 사용할 수 있는 최고의 Linux 포트 스캐너를 확인하십시오.