IT 이야기2009. 11. 10. 23:29
Nmap의 가장 잘 알려진 기능중의 하나는 TCP/IP stack fingerprinting을 이용한 OS의 탐지다. Nmap은 여러개의 TCP와 UDP패킷ㅇ르 보내면서 그 응답을 시험하게 된다. TCP ISN 샘플링, IP ID 샘플링 그리고 TCP ISN 샘플링 등 수십가지의 결과물을 nmap-os-db와 비교하게 된다. 응답들에는 OS에 대한 설명이 포함되어 있고 화사이름, OS, OS버전, 장비이름등을 알아낼 수 있게 된다.

만약 Nmap이 OS를 탐지하지 못할때는 대안으로 당신의 결과물을 nmap으로 보낼수 있는 주소를 출력받는다. 이럼으로 당신은 OS의 탐지하는 지식풀에 일조할수 있는 것이고 Nmap을 사용하는 모든 이들에게 일조하게 되는 것이다.

OS탐지는 얻어진 정볼르 통해 몇가지 테스트를 수행할 수 있다. 그중의 하나가 TCP 순서예측분류(Sqeuence Prediction Classification)이다. 이를 통해 타겟호스트에 거짓 TCP연결의 가능성 정도를 측정할 수 있다. 이것은 rlogin,firewall filter등과 같은 원본 IP 위주의 연결형태나 공격자의 소스를 감추는데 사용될 수 있다. 이런 형태의 위장은 더이상 사용되지 않지만 아직도 많은 장비들은 위의 공격에 취약하다. 영어로는 "worthy challenge" 혹은 "trivial joke"등과 같이 불리는데 이것은 기본적인 결과물을 제공한다. 대부분의 장비들은 ID필드의 값을 하나씩 증가시키면서 스캔하게 된다.

추가적으로 OS의 업타임을 탐지하는 것이다. 이것은 RFC 1323문서를 이용한 것으로 TCP 타임스탬프가 언제 재부팅되었나를 보는것이다. 하지만 때론 실제와 다른 타임스탬프를 도출하기도 한다.

OS 탐지는 다음과 같은 옵션을 가진다.

-O (OS탐지) : OS탐지를 가능하게 해주고 -A를 통해 다른 옵션과 함께 사용 가능하다.

--osscan-limit (OS탐지를 지정된 타겟에 한정) : OS탐지는 하나의 open포트와 closed포토가 있을때 훨씬 효과적이다. 이 옵션의 설정으로 해당 옵션의 설정과 맞지 않는 타겟은 생략되게 되고 이를 통해 많은 시간을 절약할 수 있다.

--osscan-guess; --fuzzy (OS탐지 결과의 예측) : OS를 예측할 수 없을때 가능성에 대한 결과를 나타낸다. 이를 통해 좀더 공격적으로 호스트를 스캔하게 되고 불확실한 결과물과 함께 신용도도 나타내게 된다.

--max-os-tries (타겟에 대한 OS매치 갯수 지정) : 기본적으로 매치에 실패한 후에도 같은 검색이 5번 계속 이루어지는데 1로 지정해 줄경우 Nmap의 스캔속도를 향상시킨다. 물론 이로 인해 탐지해 낼수 있는 확률은 떨어지게 된다.

원문링크: http://nmap.org/book/man-os-detection.html
Posted by 구텐모르겐
IT 이야기2009. 11. 4. 03:30


Nmap은 옵션을 통해 어떤 포트가 스캔되었는지에 대한 설명과 순서대로 혹은 무작위로 나타낼 수 있다. 기본적으로 Nmap은 100개의 대표적인 포트를 스캔한다.

-p (해당범위의 포트를 스캔) : 해당 옵션을 통해 사용자는 어떤 포트를 스캔할지를 정할 수 있고 이 옵션을 통해 기본값은 무시된다. 1-1023과 같이 범위값이 -으로 연결되어 있으면 된다. 처음값과 마지막값이 생략되는데 1-65535의 값을 사용하기 때문이다. 만약 0번포트를 스캔하고 싶다면 명확히 언급해 줘야 한다. IP프로트콜 스캐닝(-s0)은 0-255의 값을 스캔하게 된다.

TCP나 UDP를 스캔할때는 T:나 U:뒤에 특정 포트값을 입력함으로 스캔할 수 있다. 그러므로 -p U:53, 111, 137, T:21-25, 80, 139, 8080이라고 하면 UDP 53, 111,137포트를 스캔후에 TCP포트들을 순서대로 스캔하게 된다. 만약 TCP와 UDP 모두를 스캔한다고 할때 -sU를 명시해줘야 하고 TCP스캔 타입(-sS, -sF, -sT)을 명시해 줘야 한다. 프로토콜에 대한 명시가 없으면 모든 포르토콜에 대해 스캔하게 된다.

nmap-service를 통해서 포트들은 이름으로 표현되기도 하고 *나 ?같은 특수문자도 사용가능하다.만약 FTP와 http로 시작하는 모든 포트를 스캔하고 싶다면 -p ftp,http*과 같이 하면 된다.

포트범위는 사각브라켓으로 표현되고 -p [0-1024]라고 표현하면 1024이내의 모든 포트를 스캔하게 된다.

-F(제한적이지만 빠른 스캔) : 적은 양의 포트를 스캔할때 사용한다. 기본적으로 nmap은 1,000개의 포트를 스캔하지만 -F는 100개만 스캔한다.

Nmap은 nmap-service파일을 필요로 하는데 이를 통해 어떤 포트들이 가장 많이 쓰이는지 알 수 있다. -F는 가장 범용적인 포트들과 0-1024의 포트들을 스캔한다.

-r (무작위 해제) : Nmap은 포트를 무작위로 스캔하게 된다. 무작위적인 포트스캔이 추천되긴 하지만 본인의 필요에 의해 -r의 사용이 가능하다.

--port-ratio (0과 1사이의 소숫점) : nmap-service파일에 나와있는 포트들을 명시된 포트보다 많은 비율로 스캔하게 된다.

--top-ports (1보다 큰 정수) : nmap-service에 있는 N개의 높은 비율의 포트를 스캔한다.

원본링크: http://nmap.org/book/man-port-specification.html
Posted by 구텐모르겐