수안이의 컴퓨터 연구실

  • Mainpage
  • About Me
  • Tags
  • Metapage
  • Notice
  • Location
  • Keywords
  • Guestbook
  • Admin
  • Write an Article
  • Total | 1620917
  • Today | 297
  • Yesterday | 482

3 Articles, Search for 'Security/Scanning'

  1. 2007/07/18 NBTScan. NetBIOS Name Network Scanner. (2)
  2. 2007/04/12 Nmap을 이용한 네트워크 스캐닝과 방어하기
  3. 2007/04/03 nmap Option
«Prev  1  Next»
Security/Scanning2007/07/18 13:55

NBTScan. NetBIOS Name Network Scanner.

General Information

NBTscan is a program for scanning IP networks for NetBIOS name information. It sends NetBIOS status query to each address in supplied range and lists received information in human readable form. For each responded host it lists IP address, NetBIOS computer name, logged-in user name and MAC address.

Version 1.5 is now available. See Change Log for changes since previous release.

NBTscan compiles and runs on Unix and Windows. I have tested it on Windows NT 4.0, Windows 2000, FreeBSD 4.3, OpenBSD 2.8 and RedHat Linux 7.1 and 7.3. It should also compile and run on Solaris and other Linuxes as well.

Steve Coleman (Steve (dot) Coleman (at) jhuapl (dot) edu) ported previous versions of NBTscan to Solaris, HP-UX and OSF/1 and fixed several bugs. He reports that NBTscan also runs on IRIX/SGI with minor problems. I was also told that NBTscan runs on AIX (Antonio Dell'elce) and SunOS 4.1.3_U1 (Joe Cline). Mohammad A. Haque (mhaque (at) haque (dot) net) ported nbtscan to Darwin.

This program is a successor of a perl script with the same name and does essentially the same thing, being much faster though. NBTscan produces a report like that:

IP address       NetBIOS Name     Server    User             MAC address
------------------------------------------------------------------------------
192.168.1.2 MYCOMPUTER JDOE 00-a0-c9-12-34-56
192.168.1.5 WIN98COMP <server> RROE 00-a0-c9-78-90-00
192.168.1.123 DPTSERVER <server> ADMINISTRATOR 08-00-09-12-34-56

First column lists IP address of responded host. Second column is computer name. Third column indicates if this computer shares or is able to share files or printers. For NT machine it means that Server Service is running on this computer. For Windows 95 it means that "I want to be able to give others access to my files" or "I want to be able to allow others to print on my printer(s)" checkbox is ticked (in Control Panel/Network/File and Print Sharing). Most often it means that this computer shares files. Third column shows user name. If no one is logged on from this computer it is same as computer name. Last column shows adapter MAC address.

If run with -v switch NBTscan lists whole NetBIOS name table for each responded address. The output looks like that:

NetBIOS Name Table for Host 192.168.1.123:

Name Service Type
----------------------------------------
DPTSERVER <00> UNIQUE
DPTSERVER <20> UNIQUE
DEPARTMENT <00> GROUP
DEPARTMENT <1c> GROUP
DEPARTMENT <1b> UNIQUE
DEPARTMENT <1e> GROUP
DPTSERVER <03> UNIQUE
DEPARTMENT <1d> UNIQUE
??__MSBROWSE__? <01> GROUP
INet~Services <1c> GROUP
IS~DPTSERVER <00> UNIQUE
DPTSERVER <01> UNIQUE

Adapter address: 00-a0-c9-12-34-56
----------------------------------------

FAQ

Where can I get NBTscan?

Download it from http://www.inetcat.net/software/nbtscan.html . I used to have inetcat.org domain but it was grabbed by cybersquatters, so I had to move to inetcat.net.

Is there source code available ?

Yes. Same as above.

NBTscan lists my Windows boxes just fine but does not list my unixes or routers. Why?

That is the way it is supposed to work. NBTscan uses NetBIOS for scanning and NetBIOS is only implemented by Windows (and some software on Unix such as Samba)

I get some error message on a certain operating system while compiling or running NBTscan. What can I do?

If you get errors compiling there is not much I can help you with. I don't have every possible version of every possible OS, so I wouldn't be able to reproduce your problem. Try to figure out what is going wrong, make a patch and send it to me. :)

If you get unexpected results running nbtscan and you think it is a bug, send me a bug report. Describe your environment (OS, version of nbtscan, how big the network you are scanning is, are there any firewalls on the way) and make a packet dump if possible. Comparing the results produced by nbtscan with results of nbtstat -a (Windows utility) also helps to find the problem. If you get same results from nbtscan and nbtstat, this probably means that the problem is in the network setup, not in nbtscan.

Are there any docs in Russian?

No. I am too lazy to do translation. If you are willing to translate docs to Russian or any other language for that matter, you are more than welcome.

How do I write NBTscan output into a file?

Just like any other program:

nbtscan 123.45.67.89 > filename

Works on both Unix and Windows.

How do I make NBTscan write its output one screen at a time?

Just like any other program:

 nbtscan 123.45.67.89 | more 

Works on both Unix and Windows.

How do I export NBTscan output into an Excel file?

Run nbtscan with "-s ," option (script-friendly output, use comma as a field separator) and open the resulting file in Excel.

Why do I get "Connection reset by peer" errors on Windows 2000?

NBTscan uses port 137 UDP for sending queries. If the port is closed on destination host destination will reply with ICMP "Port unreachable" message. Most operating system will ignore this message. Windows 2000 reports it to the application as "Connection reset by peer" error. Just ignore it.

Is there a GUI for nbtscan?

Yes. There are a couple of different GUIs sent to me by different people at different times. Warning: I got this software at different times from different people. I didn't test it and I didn't read the source code. I don't know if it works and what it does when it works, so don't blame me if it does something completely awfull to you or your computer. You have been warned.

  • Use42 by Peter Feil (peter (dot) feil (at) one2many (dot) de) Use42 is a GUI wrapper form enum (by Jordan Ritter BindViewRazor), nbtscan (by me) and ipeye (by Arne Vidstrom). Runs on Windows.The author does not provide any source code. You can download it here.
  • gui.exe was sent to me by r_i_c_h (at) btinternet (dot) com. It is a Windows GUI for nbtscan. r_i_c_h said he got it from someone else but lost the sources. You can download it here.
  • xNBTscan was contributed by Brian (daten (at) dnetc (dot) org) and is a GTK2-base GUI for X. You can get it from here.

Why nbtscan doesn't scan for shares? Are you going to add share scanning to nbtscan?

No. NBTscan uses UDP for what it does. That makes it very fast. Share scanning requires TCP. For one thing, it will make nbtscan more slow. Also adding share scanning means adding a lot of new code to nbtscan. There is a lot of good share scanners around, so I see no reason to duplicate that work.

Why do I get 00-00-00-00-00-00 instead of MAC address when I scan a Samba box?

Because that's what Samba send in response to the query. Nbtscan just prints out what it gets.

Usage

NBTscan is a command-line tool. You have to supply at least one argument - address range in one of three forms:

xxx.xxx.xxx.xxx Single IP in dotted-decimal notation. Example: 192.168.1.1.
xxx.xxx.xxx.xxx/xx Net address and subnet mask. Example: 192.168.1.0/24
xxx.xxx.xxx.xxx-xxx Address range. Example: 192.168.1.1-127. This will scan all addresses from 192.168.1.1 to 192.168.1.127.

It also understands the following switches:

>nbtscan -f my_ips.txt <output depends on other options>
Option Meaning Usage example
-v verbose output. Print all names received from each host
>nbtscan -v 192.168.1.123
NetBIOS Name Table for Host 192.168.1.123:

Name Service Type
----------------------------------------
DPTSERVER <00> UNIQUE
DPTSERVER <20> UNIQUE
DEPARTMENT <00> GROUP
DPTSERVER <03> UNIQUE
DPTSERVER <01> UNIQUE

Adapter address: 00-a0-c9-12-34-56
----------------------------------------
-d dump packets. Print whole packet contents. Cannot be used with -v, -s or -h options.
>nbtscan -d 192.168.1.123

Packet dump for Host 192.186.1.2:

Transaction ID: 0x02e9 (745)
Flags: 0x8400 (33792)
Question count: 0x0000 (0)
Answer count: 0x0001 (1)
Name service count: 0x0000 (0)
Additional record count: 0x0000 (0)
Question name: CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Question type: 0x0021 (33)
Question class: 0x0001 (1)
Time to live: 0x00000000 (0)
Rdata length: 0x0089 (137)
Number of names: 0x05 (5)
<skipped lots of data>
-e Format output in /etc/hosts format.
> ./nbtscan -e 192.168.75.0/28
192.168.75.2 M3I4W6
192.168.75.3 BOCKSTAEL
192.168.75.4 PCROGER
192.168.75.6 R392900055
192.168.75.12 SONY
192.168.75.13 DSNRVTWF
192.168.75.14 G8F8N7
192.168.75.15 VAIO

-l Format output in lmhosts format.
> ./nbtscan -e 192.168.75.0/28
192.168.75.2 M3I4W6 #PRE
192.168.75.3 BOCKSTAEL #PRE
192.168.75.4 PCROGER #PRE
192.168.75.6 R392900055 #PRE
192.168.75.12 SONY #PRE
192.168.75.13 DSNRVTWF #PRE
192.168.75.14 G8F8N7 #PRE
192.168.75.15 VAIO #PRE

-t timeout wait timeout seconds for response. Default 1.
>nbtscan -d 192.168.1.123
<output depends on other options>
-b bandwidth Output throttling. Slow down packet output so that it uses no more that bandwidth bps. Useful on slow links, so that ougoing queries don't get dropped.
>nbtscan -b 28800 192.168.1.123
<output depends on other options>
-r use local port 137 for scans. Win95 boxes respond to this only. You need to be root to use this option on Unix.
>nbtscan -r 192.168.1.123
<output depends on other options>
-q Suppress banners and error messages
>nbtscan -q 192.168.1.123
<output depends on other options>
-s separator Script-friendly output. Don't print column and record headers, separate fields with separator.
>nbtscan -s : 192.168.1.1-24
192.168.1.1:DIRDY-BIRDY :<server>:JOED :00-a0-c9-12-34-56
192.168.1.4:MIGHTY :<server<:JPSMITH :00-aa-00-78-90-12
192.168.1.5:BUGS-BUNNY :<server<:OUR_ADMIN :00-aa-00-34-56-78
192.168.1.19:DEFENDER :<server<:PETERA :00-60-b0-90-12-34

>nbtscan -s : -v 192.168.1.1
194.186.12.236:DIRDY-BIRDY :00U
194.186.12.236:COMPANY__COM :00G
194.186.12.236:DIRDY-BIRDY :20U
194.186.12.236:DIRDY-BIRDY :03U
194.186.12.236:COMPANY__COM :1eG
194.186.12.236:JOED :03U
194.186.12.236:MAC:00-a0-c9-12-34-56
-h Print human-readble names for services. Can only be used with -v option.
>nbtscan -s : -h -v 192.168.1.1
194.186.12.236:DIRDY-BIRDY :Workstation Service
194.186.12.236:COMPANY__COM :Domain Name
194.186.12.236:DIRDY-BIRDY :File Server Service
194.186.12.236:DIRDY-BIRDY :Messenger Service
194.186.12.236:COMPANY__COM :Browser Service Elections
194.186.12.236:JOED :Messenger Service
194.186.12.236:MAC:00-a0-c9-12-34-56
-m retransmits Number of retransmits. Default 0.
>nbtscan -m 2 192.168.1.123
<output depends on other options>
-f filename Take IP addresses to scan from file filename

Installation

Installing from Win32 binaries

  1. Download zip archive
  2. Unpack it
  3. Put nbtscan.exe and cygwin1.dll to directory in your PATH, such as winnt/system32
  4. That's all. Now you can run nbtscan from command prompt.

Installing from sources on Windows

  1. Download and install Cygwin from http://sources.redhat.com/cygwin/
  2. Start Cygwin shell and proceed from there as in Unix installation

Installing from sources under Unix

  1. Ungzip and untar sources
  2. Run ./configure script
  3. Run make and make install
  4. That's all.

Perl version of NBTscan

NBTscan was first written in Perl. It is much more slow then its C cousin, and has less options, but it has an advantage also: Windows Perl script is able to receive responses from Windows 95 sent to port 137. So if you really have to scan Windows 95 boxes from Windows you can download and use Perl NBTscan. There is also a IpInfo (Perl script too) which runs both on NT and Unix, and gives some additional info (such as DNS host name). It was created by Steve Coleman.

Reporting bugs, sending comments, etc.

You can report bugs to the author (hey, that's me) alla (at) inetcat (dot) org. I am not promising to do anything about it, but I may well want to fix them. I shall also appreciate comments and suggestions. If you have somehow enhanced this program - send me a copy or a patch.

"Scanning" 카테고리의 다른 글
  • NBTScan. NetBIOS Name Network Scanner. (2)2007/07/18
  • Nmap을 이용한 네트워크 스캐닝과 방어하기 (0)2007/04/12
  • nmap Option (0)2007/04/03
2007/07/18 13:55 2007/07/18 13:55
Posted by webdizen
Tags NBTScan, Network, Scan, Security
No Trackback 2 Comments

Trackback URL : http://www.webdizen.net/blog/trackback/3079

Leave your greetings.

  1. 냥냥이

    항상rss에 구독해서 보는데 좋은자료가 많군요 ㅎㅎ

    2008/01/07 12:54 [ Permalink : Modify/Delete : Reply ]
    • webdizen

      구독까지 해서 봐 주시다니 감사합니다. 제가 호기심이 많고, 궁금한걸 잘 참지 못해서 책을 찾아보거나, 인터넷을 통해 얻은 정보들을 아티클로 올려놓다보니 조금씩 쌓여진거 같아요.

      2008/01/07 15:48 [ Permalink : Modify/Delete ]
[로그인][오픈아이디란?]

Security/Scanning2007/04/12 23:53

Nmap을 이용한 네트워크 스캐닝과 방어하기

Nmap을 이용한 네트워크 스캐닝과 방어하기
(Scanning and Defending Networks with Nmap)

번역 : 이국현 / errai@hitel.net
원문 http://www.linuxsecurity.com/feature_stories/feature_story-4.html

최근 들어 인터넷 침입사고에 관한 이야기들이 언론에 많이 소개되고 있다. 하지만 기사를 보면 간단한 컴퓨터 조작만으로 신기하게 시스템 접근권한을 얻어내는, 영리한 도둑의 이야기 정도로 과장하고 있다. 그러나 실제로 간단한 방법은 거의 없다. 한 컴퓨터 시스템을 크래킹하기 위해서는 우선 계획이 필요하다. 크래커는 목표로 하는 서버를 찾아야 하고, 그 다음에 머신에 어떤 port가 열려있는지, 시스템이 문제를 해결하기 전에 찾아야 한다.

이것은 일반적으로 스캐닝이라고 하는 것으로, 스캐닝을 통하여 네트워크상에 있는 머신을 찾고, 무슨 port가 열려있는가를 보기 위해 그 머신들을 테스트하는 작업(art)을 하게 된다. 크래커가 공격을 시작하기 전 첫번째 전략은 바로 네트워크와 호스트들을 스캐닝하는 것이다. Nmap과 같은 툴을 이용한 스캐너들 즉, “나쁜 놈들(bad guys)”은 네트워크를 둘러보고 취약한 목표를 찾는다. 한번 이런 목표들이 확인되면, 침입자는 열린 port를 스캔 할 수 있다. Nmap은 또한 TCP stack fingerprinting을 이용하여 정확하게 스캔당한 머신의 타입을 결정할 수 있다.

이 문서는 각각의 네트워크에 대한 크래커의 시야를 파악하고, 보안 관리자가 자신의 싸이트를 조사할 수 있도록 , Nmap의 사용법에 대해 다루고 있다. 침입자 또한 같은 툴을 이용하고 있으므로, 관리자는 그들처럼 자신의 싸이트가 어떻게 보이는지 알 수 있을 것이다. 하나하나 설명해 나가면서 여러분의 시스템보안에 이 문서가 도움이 될 수 있길 바란다.

Nmap은 GNU General Public License(GPL) 에 속하며, http://www.insecure.org/nmap 에서 무료로 다운로드 받을 수 있다. tar로 묶인 소스화일, 혹은 rpm으로 된 것도 있다. 필자가 이 문서를 쓰는 시점에서 안정버젼은 2.12 이다. 약간의 그래픽이 첨가된 프로그램도 있지만, 이 문서에서는 command-line에서의 Nmap 사용법에 대해서만 중점을 두겠다.

Nmap의 사용법은 꽤 단순하다. command-line에서의 Nmap의 옵션(flag)은 -s 를 붙이는데 스캔의 타입에 따라 다르다. 예를 들어 ping scan에서는 “-sP” 이다. 옵션 다음에는 목표 호스트 또는 네트워크를 명시해 준다. Nmap의 성능은 루트로 실행했을 때 가장 최고가 된다. 왜냐하면 일반유저는 Nmap이 활용하는 custom packet을 만들 수 있는 능력이 없기 때문이다.

Nmap은 타겟을 설정함에 있어 매우 유연한 동작을 보인다. 네트워크 주소 값을 지정할 때 /mask를 덧붙여서 써주면 간단하게는 하나의 호스트, 혹은 전체 네트워크를 스캔 할 수 있다. 만약 “victim/24” 라고 목표를 지정한다면 네트워크 C class를 검색하고, 또한 “victim/16”이라고 한다면 B class를 검색하게 된다.

덧붙여서 Nmap은 wild cards(*)를 이용하여 네트워크 검색이 가능하다. 예를 들어 192.168.7.* 는 192.168.7.0/24 이라고 했을 때와 같은 결과 값을 얻을 수 있게 된다. 혹은 192.168.7.1,4,8-12 와 같이 subnet에 있는 호스트를 선택적으로 스캔하는 것도 가능하다.


** Ping Sweeping **

    침입자들은 Nmap을 가지고 전체네트워크의 타겟 들을 훑어볼 수 가 있다. 이는 보통 “-sP” 라고 써줌으로써 ping scan을 하는 것이다. 일반적으로 Nmap은 ICMP echo와 TCP ACK를 각 호스트에 보내어 검색을 한다. 그러면 Nmap이 보낸 패킷에 반응을 한 호스트들이 나타나게 된다.

    # nmap -sP 192.168.7.0/24
    Starting nmap V. 2.12 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/)
    Host  (192.168.7.11) appears to be up.
    Host  (192.168.7.12) appears to be up.
    Host  (192.168.7.76) appears to be up.
    Nmap run completed -- 256 IP addresses (3 hosts up) scanned in 1 second


    아마도 때때로 여러분은 단지 ICMP echo request를 보낼 필요없이 시스템이 동작하는지 만을 파악하길 원할 것이다. 이런 경우 목표 네트워크를 스캔하기 위해서 TCP “ping” 을 사용한다.

    TCP “ping”은 목표 네트워크의 각각의 머신에게 ACK 를 보낸다. 각 머신들은 TCP RST를 이용하여 응답하게 된다. TCP “ping”을 이용한 스캔을 위해서는 “-PT”라는 옵션을 첨가해주면 된다. 이번의 예제에서는 80번 tcp port(http)를 target port 로 이용해 보도록 하겠다. 이것은 목표의 라우터들 심지어 firewall 조차도 아마 통과할 수 있을 것이다. 주의할 것은 머신이 살아있는지 죽어있는지를 결정하는데 호스트의 target port가 열려있을 필요가 없다는 것이다. 다음에 보이는 것이 실행의 예이다.

    # nmap -sP -PT80 192.168.7.0/24
    TCP probe port is 80
    Starting nmap V. 2.12 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/)
    Host  (192.168.7.11) appears to be up.
    Host  (192.168.7.12) appears to be up.
    Host  (192.168.7.76) appears to be up.
    Nmap run completed -- 256 IP addresses (3 hosts up) scanned in 1 second


    침입자들은 목표 네트워크의 머신이 살아있는지 알 때, 으레 다음 단계로 port scanning을 한다.

    port scanning의 여러가지 타입들이 Nmap을 통해 제공된다.( Tcp connect, Tcp SYN, Stealth FIN, Xmas Tree, Null, UDP scan등 )


** Port Scanning **

    Nmap은 connect() system call을 이용해 목표 호스트의 지정한 port에 접속을 하고, TCP 의 3-way handshake를 완결 짓기 때문에 TCP 접속을 이용한 침입자는 쉽게 탐지된다. 호스트 머신의 Log기록들에 침입자에 의해 열려진 port들이 나타날 것이다. TCP connect scan은 “-sT” flag를 이용하여 사용한다.

    # nmap -sT 192.168.7.12
    Starting nmap V. 2.12 by Fyodor
    (fyodor@dhp.com, www.insecure.org/nmap/)
    Interesting ports on (192.168.7.12):
    Port    State       Protocol    Service
    7        open        tcp        echo
    9        open        tcp        discard
    13      open        tcp        daytime
    19      open        tcp        chargen
    21      open        tcp        ftp
    ...
    Nmap run completed -- 1 IP address (1 host up) scanned in 3 seconds


** Stealth Scanning **

    만약 공격자가 목표 머신의 시스템 로그 기록에 그가 요청한 것들을 남기지 않고 스캔하길 원한다면 무엇을 해야 할까? TCP SYN scans는 목표 머신에 log기록을 거의 남기지 않는다. SYN scan은 TCP 연결경로의 첫번째 패킷으로 SYN packet 을 보냄으로써 시작한다. 열린 port들은 SYN|ACK 로 응답을 할 것이다. 그러나 이때 공격자가 ACK대신 RST를 전송하면 연결은 종료되게 된다. 장점은 3-way handshake가 절대 완성되지 않는다는 것과 이런 타입의 로그 기록을 남기는 싸이트는 거의 없다는 것이다. 한편 닫혀있는 port들은 RST와 함께 처음의 SYN에 응답할 것이고 Nmap은 그 호스트의 port가 닫혀 있다는 것을 결정할 수 있게 된다. SYN scan은 “-sS” flag를 이용하여 실행한다.

    # nmap -sS 192.168.7.7
    Starting nmap V. 2.12 by Fyodor
    (fyodor@dhp.com, www.insecure.org/nmap/)
    Interesting ports on saturnlink.nac.net
    (192.168.7.7):
    Port    State       Protocol  Service
    21      open        tcp        ftp
    25      open        tcp        smtp
    53      open        tcp        domain
    80      open        tcp        http
    ...
    Nmap run completed -- 1 IP address (1 host up) scanned in 1 second


    비록 SYN scan이 더 알아챌 수 없을지라도, 몇 가지 침임 탐지 대책들을 이용하여 탐지해 낼 수 있다. Stealth FIN, Xmas Tree, 그리고 Null scan들은 packet filter나 firewall들을 피하는데 사용되어진다. 이런 3가지 스캔들은 닫힌 port들을 위해 RST를 리턴하고, 열린 포트들은 packet를 버린다. FIN “-sF” 스캔은 FIN packet을 각각의 port로 보낼 것이고, 한편 Xmas Tree scan “-sX”는 FIN, URG, PUSH flag를 모두 켠다. 그리고 Null scan “-sN”은 모든 flag를 끈다.
    TCP 표준들에 Miscrosoft는 순종하고 있지 않기 때문에 FIN, Xmas Tree, 그리고 Null scan은 오직 Miscrosoft 운영체제가 아닌 경우에서만 영향을 발휘한다.


** UDP Scanning **

    만약 침입자가 exploit(역자 주: 크래커들이 시스템을 침입하기 위해 사용하는 특정한 프로그램들을 지칭함 )를 위해 특정 rpcbind hole이나 cDc Back Orifice 같은 UDP hole을 찾는다면, 그/그녀는 어떤 UDP port가 열려있는지 알기를 원할 것이다.
    침입자는 UDP scan “-sU” 를 사용하여 호스트에 어떤 UDP port가 열려있는지 알 수 있다. 만약 호스트에서 “port unreachable” 메세지를 리턴하면 그 포트는 닫혀있는 것으로 간주된다. 대부분의 UNIX 호스트들은 ICMP 에러의 비율을 제한하고 있기 때문에 이런 방법은 시간을 많이 소비하게 된다. 다행히도  Nmap은 이런 비율을 탐지하고 그 자신의 속도를 낮추어 거부했을 때의 메시지로 인해 목표가 오버플로어 되지 않도록 한다. 다음은 UDP scan의 실행결과이다.

    # nmap -sU 192.168.7.7
    WARNING:  -sU is now UDP scan -- for TCP FIN scan use -sF
    Starting nmap V. 2.12 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/)
    Interesting ports on saturnlink.nac.net (192.168.7.7):
    Port    State       Protocol     Service
    53       open        udp         domain
    111     open        udp          sunrpc
    123     open        udp          ntp
    137     open        udp          netbios-ns
    138     open        udp          netbios-dgm
    177     open        udp          xdmcp
    1024   open        udp          unknown
    Nmap run completed -- 1 IP address (1 host up) scanned in 2 seconds


** OS Fingerprinting

    종종 침입자는 특정한 플랫폼에서만 실행되는 exploit를 실행하기 위해 그와 유사한 운영체제를 찾을 것이다. 일반적으로 TCP/IP fingerprinting은 “-O” 옵션을 포함하여 원격으로 운영체제를 탐지해낸다. 이것은 ping scan을 제외한 port scan과 결합하여 사용해야만 한다. Nmap은 호스트에 다른 타입의 조사를 행하여 OS를 찾아낸다. 원격으로 OS를 탐지해내기 위한 다른 방법과 마찬가지로 ICP initial Sequence Number(ISN)의 패턴을 찾기 위해 SYN packet과 함께 선언하지 않은 flag를 리모트 호스트로 보내고, BOGUS flag는 원격 호스트의 그 반응이 어떤 종류인가를 입증하기 위해 FIN 조사같은 기능을 사용한다. 그것은 TCP stack에서 포함하고 있고 이를 Fingerprinting 하게 된다. 본 문서에서 stack fingerprinting 까지 논의하는 것은 한계가 있으므로 관심이 있는 사람은 Nmap의 저자인 Fyodor에 의해 쓰여진 문서를 찾아보기 바란다. (http://www.insecure.org/nmap/nmap-fingerprinting-article.html )

    Nmap의 OS 탐지기능의 특징은 매우 정확하며, SYN scan을 포함하여 솔라리스 2.7 머신의 stack을 fingerprin-ting 해서 증명하는 것과 같은 일에 효과적인 도구이다.

    # nmap -sS -O 192.168.7.12
    Starting nmap V. 2.12 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/)
    Interesting ports on comet (192.168.7.12):
    Port    State       Protocol  Service
    7        open        tcp         echo
    9        open        tcp         discard
    13      open        tcp         daytime
    19      open        tcp         chargen
    21      open        tcp         ftp
    ...
    TCP Sequence Prediction: Class=random positive increments
                            Difficulty=17818 (Worthy challenge)
    Remote operating system guess: Solaris 2.6 - 2.7
    Nmap run completed -- 1 IP address (1 host up) scanned in 5 seconds


    TCP Sequence Prediction 부분을 주의해서 보기 바란다. -O 옵션을 주어 Nmap을 실행시키게 되면 TCP Sequence Prediction이 얼마나 어려운지도 알려준다. 이것은 침입자가 호스트의 공격할 수 있는 위험성에 대한 정도로써 얼마나 침입할 가치가 있는가를 포함하고 있기도 하다.


** Ident Scanning **

    침입자는 종종 root로 돌아가는 web server와 같은 프로세스를 공격 대상으로 삼을 때가 있다. 만약 타켓이 identd를 돌리고 있다면 침입자는 Nmap을 사용하여 httpd 데몬이 어떤 소유자로 실행되고 있는지 찾아낼 수 있다. 이는 TCP connect scan에 “-I” 옵션을 포함하여 실행한다. 아래에 한 리눅스 웹서버를 스캔 한 예가 있다.

    # nmap -sT -p 80 -I -O www.yourserver.com
    Starting nmap V. 2.12 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/)
    Interesting ports on www.yourserver.com (xxx.xxx.xxx.xxx):
    Port    State       Protocol  Service         Owner
    80      open        tcp        http            root
    TCP Sequence Prediction: Class=random positive increments
                             Difficulty=1140492 (Good luck!)
    Remote operating system guess: Linux 2.1.122 - 2.1.132; 2.2.0-pre1 - 2.2.2
    Nmap run completed -- 1 IP address (1 host up) scanned in 1 second


    만약 당신의 웹서버가 실수로 root로 실행되도록 설정되었다면, 당신에게 회사에서 밤샐 일이 생길지도 모른다.

    루트로 아파치를 실행시키는 것은 나쁜 보안 습관이다. /etc/inetd.conf 에서 auth 부분을 주석 처리해서 ident 요청을 막아두어야 한다. 그리고 inetd를 재 실행 시킨다. ident 요청을 막는 다른 방법은 ipchains나 다른 firewall을 이용하여 당신의 네트워크에 장벽을 설치하는 것이다. 이것은 어떤 데몬이 누구의 소유로 동작하는지 당신의 싸이트를 조사해보려는 호기심 많은 무뢰한들을 막을 수 있을 것이다.


** Options **

    이런 scan들에 덧붙여서 Nmap이 제공하는 무수한 옵션들을 소개하겠다. 그 중 하나가 “-PT” 이다. 우리는 이미 위에서 다루었다. 이 옵션은 타겟 머신이나 네트워크의 일반적으로 filter되지않은 port들을 TCP ping으로 직접 ping scan할 때 사용된다. 유용한 옵션으로 “-P0”가 있다. Nmap은 port scan을 하기전에 TCP “ping”과 5 ICMP echo 모두를 이용하여 타겟을 ping 할것이다. 만약 싸이트에서 ICMP와 TCP 검색을 막아 놓았을 경우 보통 스캔되지 않을 것이다. 그래서 “-P0” 옵션을 이용하면 처음에 ping을 하지 않고 호스트를 스캔 하도록 Nmap에서 지원하고 있다.

    한가지, 독자가 한번 사용하면 습관처럼 사용하게 될 옵션이 있다. 바로 “-v” 자세한 옵션이다. 이 옵션은 모든 스캔타입들과 함께 사용할 수 있다. 이 옵션을 한번 혹은 두 번 사용해서 타켓 머신에 관한 보다 더 자세한 정보를 얻을 수 있다.

    특정한 port를 타겟으로 삼는 기능은 “-p” 옵션을 이용하여 실행된다. 예를 들어 침입자가 당신의 웹서버를 ftp(port 21), telnet(port 23), name service(port 53),그리고 http(port 80) 에 관해 조사하고, 어떤 OS를 쓰는지 까지 알길 원한다면 다음과 같은 SYN scan을 이용할 것이다.

    # nmap -sS -p 21,23,53,80 -O -v www.yourserver.com


    인기있는 exploit들이 모아져 있는 데이타베이스들에 의해, 풋내기 크래커일지라도 당신의 머신에서 루트권한을 얻을 수 있는 방법을 곧 잘 찾아낼 수 있을 것이다.


** 결론 **

    침입자가 Nmap을 사용하여 어떤 측정을 했겠는가? Scanlogd, Courtney, 그리고 Shadow와 같은 수많은 툴 들이 존재한다. 그러나 이런 툴을 사용하는 것이 실무에서 일하는 관리자들의 지식을 대신할 순 없다. 스캔은 종종 침입의 전조로 나타나기 때문에 싸이트들은 그들의 머신에 대해 감시와 제어를 우선시해야 한다.

    Nmap을 이용해 각자의 싸이트를 감시함으로써, 시스템과 네트워크 관리자들은 잠재적인 침입자들이 당신의 싸이트를 조사하는 것들을 발견할 수 있다. 자..이제 당신의 라우터들 구석에 Nmap과 함께 리눅스박스를 설치하고, 펭귄 군단의 하나로써 스캐닝을 시작하자!

    이국현님은 숭실대 컴퓨터학부에 재학 중이며 숭실대 파워리눅스 유저모임 (SPLUG) 에서 활동하고 있습니다 .

"Scanning" 카테고리의 다른 글
  • NBTScan. NetBIOS Name Network Scanner. (2)2007/07/18
  • Nmap을 이용한 네트워크 스캐닝과 방어하기 (0)2007/04/12
  • nmap Option (0)2007/04/03
2007/04/12 23:53 2007/04/12 23:53
Posted by webdizen
No Trackback No Comment

Trackback URL : http://www.webdizen.net/blog/trackback/2818

Leave your greetings.

[로그인][오픈아이디란?]

Security/Scanning2007/04/03 17:41

nmap Option

USAGE : ./nmap [Scan Type(s)] [Options] <host or net [#1] ... [#N]>

Scan Type

-sT

TCP connect() scan : TCP scanning의 가장 기초적인 형태로 connect() 함수를 사용해서 모든 포트에 대해 스캔하는 방식이다. 만약 포트가 listening 상태라면 connect()는 성공할 것이고, 그렇지 않으면 reachable 되지 않는다.

-sS

TCP SYN scan : full TCP 접속을 하지 않으므로 "half-open" 스캐닝이라 한다. 하나의 SYN 패킷을 보내어 SYN|ACK 응답이 오면 그 포트는 listening 상태임을 나타내며, RST 응답이 오면 non-listener임을 나타낸다. 이 기술은 하나의 패킷을 보내어 SYN|ACK 응답을 받으면 그 즉시 RST 패킷을 보내서 접속을 끊어버린다. 이렇게 하면 접속이 이루어지지 않은 상태에서 접속을 끊었기 때문에 로그를 남기지 않는 경우가 대부분이다. custom SYN packet을 만들기 위해서는 루트 권한이 필요하다.

-sF
-sX
-sN

Stealth FIN, Xmas Tree, Null scan : 이들은 SYN 패킷을 막아놓은 방화벽이나 패킷 필터 또는 Synlogger와 Courtney 같은 스캔을 탐지하는 프로그램들을 무사히 통과할 수 있다. open 포트로 FIN 패킷을 보내면 이 패킷을 무시하고, closed 포트로 보내면 RST 패킷이 온다. 이들 스캔은 주로 유닉스계열 OS에서만 사용 가능하며, 루트권한이 필요하다.

-sP

Ping scanning : 네트워크의 어느 호스트가 살아있는지를 알고 싶을 때 사용한다. nmap은 명시한 네트워크의 모든 IP 주소로 ICMP echo request packet을 보내어 이것을 행한다. 호스트가 살아 있다면 응답을 보낸다. 하지만 microsoft.com 같은 일부 사이트는 echo requst packet을 방해한다. 따라서 nmap은 포트번호 80(default) 으로 TCP ack packet을 보낸다. 만약 RST back을 받았다면 이 시스템은 살아있는 것이다.

-sU

UDP scans : 이것은 호스트의 어떠한 UDP 포트가 open 되어 있는지를 결정하기 위해 사용된다. 이 기술은 시스템의 각 포트에 0 바이트의 udp 패킷을 보낸다. 만일 ICMP port unreachable 메시지를 받았다면 이 포트는 closed 상태이며, 다른 경우라 open 상태라고 할 수 있다. 일부에서는 UDP 스캐닝이 무의미하다라고 말한다. 하지만 최근의 Solaris rcpbind hole을 보면 Rpcbind가 32770 이상의 정의되지 않은 UDP 포트에서 발견되고 있다. 이것은 111 포트가 방화벽에서 차단되어지는 것과는 별개의 문제이다. 따라서 UDP 스캐너로 30,000번 이상의 high 포트들이 listening 상태인지를 점검해봐야 한다. 이것은 루트만이 실행가능하다.

-sA

ACK scan : 이 방법은 방화벽의 룰셋을 정밀하게 계획하기 위해 사용된다. 특히 방화벽이 stateful한지 아니면 단순히 들어오는 SYN 패킷을 차단하는 패킷필터인지를 점검하는데 도움이 된다. 포트에 ACK 패킷을 보내어 RST 응답을 받으면 그 포트는 "unfilterd"이며, 아무런 응답이 없으면 "filtered" 이다. nmap은 "unfilterd" 포트는 프린트하지 않는다.

-sW

Window scan : TCP Window 크기의 변칙 때문에 filtered/nonfiltered 뿐만 아니라 open 포트도 스캔할 수 있다는 점을 제외하면 ACK scan과 매우 유사하다.

-sR

RPC scan : 이 스캔 방법은 nmap의 다양한 포트 스캔 방법을 조합해서 이루어진다. 이것은 열려져있는 TCP/UDP 포트에 대해 그들이 RPC 포트인지, 서비스를 제공하는 프로그램은 무엇이며, 버전은 무엇인지 등을 확인하기 위해 SunRPC program NULL commands를 계속 보내게 된다. 따라서 호스트의 portmaper가 방화벽(또는 TCP wrapper)안에 있다 하더라도 'rpcinfo -p'와 같은 정보를 얻을 수 있다.

-b

FTP bounce attack : 익명 FTP 서버를 이용해 그 FTP 서버를 경우해서 호스트를 스캔한다. 이를 FTP 바운스 스캔이라 한다.


Options

-P0

이것은 방화벽에 의해 ICMP echo requests (or responses)를 막아놓은 네트워크의 스캔을 가능하게 한다. ping을 막아놓은 호스트를 스캔하기 위해서는 -P0 나 -PT80을 사용해야 한다.

-PT

어느 호스트가 살아 있는지를 알기 위해 TCP "ping"을 사용한다. 이것은 ICMP echo request 패킷을 보내고 응답을 기다리는 대신에, 네트워크에 TCP ACK를 보내어 응답이 오기를 기다린다. RST 응답이 오면 호스트는 살아 있는 것이다. 이 옵션은 ping 패킷을 차단하는 네트워크나 호스트을 스캔하는 동안은 호스트가 살아 있는 것과 같다. -PT<port number>를 사용 하며, 디폴트 포트는 80이다.

-PS

이 옵션은 루트사용자를 위해 ACK 패킷 대신에 SYN (connection request)을 사용한다. 호스트가 살아 있다면 RST (or, rarely, a SYN|ACK)로 응답 한다.

-PI

이 옵션은 오리지날 ping (ICMP echo request) packet을 사용한다. 이것은 살아있는 호스트를 찾으며 또한 네트워크의 subnet-directed broadcast addresses를 찾는다. 이들은 들어오는 IP 패킷을 컴퓨터의 서브넷으로 브로드케스트하기 위한 IP 주소이다. 따라서 denial of service attacks (Smurf is the most common) 가능성이 있다면 이들은 제거되어야 한다.

-PB

이것은 ping 기본 형태로 ACK (-PT)와 ICMP (-PI) 모두를 사용한다.

-O

이것은 TCP/IP fingerprinting을 통해 리모트 호스트를 확인하는데 사용된다 다시 말해 리모트 시스템의 운영체제를 점검해 준다. 루트권한이 필요하다.

-I

RFC 1413에 정의되어 있는 ident 프로토콜을 사용해 open되어 있는 포트가 어떤 사용자에 의해 열려 있는지 검사한다.

-v

verbose mode : interactive한 사용에 매우 유용한 옵션이다.

-h

nmap의 'quick reference'이다.

-p
<port ranges>

점검하고자 하는 포트를 지정하는 옵션이다. 예로 23번 포트를 점검하려면 '-p 23' 하면 된다. 또한 '-p 20-30,139,60000-'은 20에서 30사이의 포트와 139번 포트, 60000번 이상의 포트에 대해 스캔하라는 뜻이다.

-F

nmap-services에 나열된 포트만 스캔한다.

-n / -R

DNS lookup을 하지 않는다. / DNS lookup을 한다.

-S
<IP_Address>

패킷의 source 주소를 지정한다.

-e
<interface>

네트워크의 인터페이스를 지정한다.

-g
<portnumber>

패킷의 source 포트번호를 지정한다.

-oN
<logfilename>

스캔한 결과를 로그 파일에 남긴다(사람이 읽기 편한 포맷).

-oM
<logfilename>

스캔한 결과를 로그 파일에 남긴다(컴퓨터가 읽기 편한 포맷).

"Scanning" 카테고리의 다른 글
  • NBTScan. NetBIOS Name Network Scanner. (2)2007/07/18
  • Nmap을 이용한 네트워크 스캐닝과 방어하기 (0)2007/04/12
  • nmap Option (0)2007/04/03
2007/04/03 17:41 2007/04/03 17:41
Posted by webdizen
Tags nmap
No Trackback No Comment

Trackback URL : http://www.webdizen.net/blog/trackback/2777

Leave your greetings.

[로그인][오픈아이디란?]

«Prev  1  Next»

RSS HanRSS
Blog Image
webdizen
이 곳은 컴퓨터에 대해 연구하고, 공유하고, 소통하기 위한 연구실입니다. 개인적으로는 OLAP, Data Mining, Semantic Web, Data Modeling에 대해서 연구하고 있습니다.

Categories

전체 (2998)
Webdizen (134)
Life (6)
Diary (16)
Blog (9)
IDEA (1)
Travel (10)
Book (14)
Photo (7)
Movie (7)
Music (13)
Leisure Sports (10)
Funny (5)
Hardware (119)
Software (120)
Windows (5)
Unix & Linux (119)
Installation (4)
Kernel (10)
System (34)
Develop (22)
X-Window (0)
Applicaton (31)
Security (4)
Framework (2)
Hadoop (2)
Programming (805)
Algorithm & Data Structure (1)
Assembly (38)
UNIX/Linux C (95)
C++ (128)
STL (4)
Java (38)
Win32 API (92)
ATL/COM (44)
MFC (151)
.NET (26)
WCF/WPF (4)
C# (28)
Network Programming (17)
Database Programming (12)
OpenGL / DirectX (13)
Multimedia Programming (0)
Game Programming (21)
Parallel Distributed Progra... (0)
Reverse Engineering (0)
Debugging (9)
Python (1)
Ruby (1)
Ruby on Rails (1)
QT (4)
GTK (0)
JSP (0)
PHP (6)
ASP.NET (6)
ASP (3)
Development (28)
Useful Library (2)
Data Modeling (0)
Database (105)
Oracle (4)
MSSQL (41)
MySQL (2)
Data Warehouse (2)
Data Mining (3)
Network (66)
Web (78)
DHTML (4)
XHTML (1)
Javascript (1)
CSS (1)
AJAX (9)
XML (11)
Flex (1)
Silverlight (3)
Security (91)
DoS (1)
Kernel (10)
Scanning (3)
Sniffing (0)
Spoofing (4)
Overflow (28)
Web (11)
Shell (10)
Format String (14)
Window (2)
Embedded (70)
Multimedia (27)
Mobile (14)
Graphic (24)
Management (633)
Knowledge (581)
Hadoop (0)

Notice

  • 메타 블로그 사이트에 등록
  • 새해 맞이 블로그의 변화
  • 블로그 명칭 변경
  • 도메인(www.webdizen.net) 구...
  • TEXTCUBE 1.6.1로 업그레이드...

Tags

  • 데이터 분산
  • 컨디션
  • 구글
  • Singletion Pattern
  • Modeling
  • 정치인
  • 컴포넌트
  • 집중
  • Ajax
  • 암기
  • CSS
  • 노테르담
  • 스노우보드
  • 웹 개발자
  • SNMP
  • Preloading
  • Qcodo Framework
  • 브러쉬
  • XCANVAS
  • 메모리 오류

Recent Articles

  • ASCII Code의 CRLF 제거 방법.
  • Hadoop 에서 c++ API 이용시....
  • Ubuntu Linux에서 Hadoop 구....
  • 내 심장을 한껏 뛰게한 "국가....
  • 스타 스키마 데이터베이스 설....

Recent Comments

  • ■ 온라인카지노 ▶ http://L....
    asdf 11/21
  • 그리고 혹시 해외여행자보험....
    kim 11/05
  • ★★실제 바다게임장과 똑같....
    asdf 11/04
  • sbsyama.co.to← 짱5000만당....
    asdf 11/04
  • ♡KicaZ??o(???) 바카라사....
    fdsf3fass 11/03

Recent Trackbacks

  • 파일 열기/저장하기 CFileDialog.
    은마군의 나태블록 02/11
  • World IT Show 2008.
    상우 :: Oranzie's BLOG 2008
  • cvs서버 설치하기.
    3인3색 2008
  • 속속 공개되는 Google Chart....
    PHP와 Web 2.0 2007
  • 마방진을 구하는 프로그램.
    Oranzie's BLOG 3 2007

Archive

  • 2009/09 (3)
  • 2009/08 (1)
  • 2009/03 (1)
  • 2009/02 (9)
  • 2009/01 (13)

Calendar

«   2009/11   »
일 월 화 수 목 금 토
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

Bookmarks

    • Administration
      • IIS.NET
      • NTFAQ
      • OS의 모든 것
      • 리눅스포털
    • Database
      • SQL Server Central
      • SQL Team
    • Development
      • .NET Heaven
      • ASP Alliance
      • ASP.NET 2.0
      • Bullog.net
      • C# Corner
      • C++ (C PlusPlus.com)
      • C++ Reference
      • CodeGuru
      • CodePlex
      • DebugLab
      • Dev Articles
      • Devpia
      • DotNet Junkies
      • DotNet Zone
      • Driver Online
      • GOSU.NET
      • HOONS 닷넷
      • Joinc 팀블로그
      • KOSR
      • MSDN Home Page
      • OSR Online
      • Sky.ph - 개발자 커뮤니...
      • TAEYO.NET
      • The Code Project
      • WindowsClient.net
      • 김상욱의 개발자 Side
      • 조인시 위키
    • Human Networks
      • belief21c's e-space
      • I think I can
      • Invisible Rover's Blog :D
      • Rodman®
      • ■ Feel So Good~! ■
      • 까만 나비
      • 나를 가꾸는 시간.
      • 나만의 즐거움~~!
      • 단녕
      • 상우 :: Oranzie's BLOG
    • Information Technology
      • Microsoft TechNet
      • 지디넷코리아 - 글로벌...
    • Security
      • FoundStone
      • milw0rm
      • NewOrder
      • OpenRCE
      • Phrack.org
      • Reverse Engineering b1...
      • Reverse Engineering Team
      • RootKit
      • SecurityFocus
      • SecurityXploded by Nag...
      • Wow Hacker
      • Zone-H
Textcube
Louice Studio Inc.
Powered by Textcube. Original designed by Tistory.