행궁동 데이터 엔지니어

반응형

NC(NetCat, 넷캣) 명령어를 사용해서 서버 쪽 포트가 열렸는지 확인하는 방법입니다.

윈도우에서 사용하는 방법이라고 적었는데, 리눅스에서도 Netcat만 설치되어 있다면 사용방법은 동일하므로 Netcat을 수동 설치하거나 apt, rpm 등 해당 리눅스 배포판에 맞는 패키지 툴을 이용해 설치하면 같은 방법으로 사용할 수 있습니다.

 

목차

  1. 사용 예

  2. NC(Netcat) 명령어 옵션 설명

  3. 윈도우(Windows) CMD에서 NC명령어 사용하는 방법

  4. 다운로드 경로

 

1. 사용 예

  • 아래 스크린샷에서 위에 창은 원격지 서버 포트 현황이고, 아래는 nc 명령어를 사용해 포트를 확인한 내용입니다.

  • 서버의 tcp 22, 3306 포트가 LISTEN 상태로 열려 있는 것을 확인할 수 있고, nc명령어로 확인 결과 3306, 22번 포트가 열려있다고(Open) 합니다.

  • 열려있지 않은 80번 포트를 확인해보니 TIMEOUT이 나오는 것을 볼 수 있습니다.

  • 아래 스크린샷을 보고 서버 상태를 보고 53번 포트도 열려있는 거 아닌가? 하는 의문을 가지시는 분들도 있을 거 같은데, 53번 포트의 Local Address의 IP 부분을 보면 해당 포트는 127.0.0.53 단일 IP에만 허용되어있어 해당 IP가 아니면 포트에 접근하지 못합니다. 따라서 nc명령어로 확인하면 Time out이 나옵니다. (서버 자신을 가리키는 것으로 예약된 127.0.0.0/8 대역이므로 결국 해당 포트는 내부에서만 사용하겠다는 의미)

IP주소는 가렸습니다. 위 = 서버포트현황, 아래 = nc 명령어로 확인한 결과 

# 리눅스 서버 포트 확인 명령어
netstat -antp

# nc 명령어
nc -v -z [ip주소] [port번호]

 

2. 옵션 설명

Usage : nc [options] [target host] [ports]

  • -n : 호스트 네임과 포트를 숫자로만 입력받는다.

  • -v : verbosity 를 증가 시킨다. 더 많은 정보를 얻을 수 있다.

  • -o [filename]: 보내거나 받은 데이터를 헥스덤프하여 파일에 저장한다.

  • -u : TCP connection 대신에 UDP connection 이 이루어진다.

  • -p [port number or name] : local-port 를 지정한다. 주로 -l과 같이 사용하게 된다.

  • -s [ip address or DNS] : local ip address를 지정한다. 모든 플랫폼에서 지원되지는 않는다.

  • -l : listen 모드로 nc을 띠우게 된다. 당연히 target host는 입력하지 않는다. -p와 같이 사용하게 된다. nc를 server 로서 쓸 때 사용.

  • -e [filename] : -DGAPING_SECURITY_HOLE 옵션으로 Make 되었을 때 사용 가능하다.  connection 이 이루어졌을 때 file을 exec 시킨다. -l과 같이 사용되면 한 instance만을 사용하는 inetd와 비슷하다.

  • -t : -DTELNET 옵션으로 컴파일되었을 때 사용 가능하다. telnetd에 접속이 가능하도록 접속 시 telnet과 같은 협상과정을 거친다.

  • -i [interval time] : nc는 일반적으로 8K씩 데이터를 보내고 받는데 그렇게 Standard input의 한 라인씩 interval time마다 보내게 된다.

  • -z : connection을 이루기 위한 최소한의 데이터 외에는 보내지 않도록 하는 옵션.

  • -r : port 지정이 여러 개로 되어 있으면 이때 scanning 순서를 randomize 하고 (일반적으로 범위로 지정하면 높은 번호의 포트부터 스캔한다) 또한 -p 옵션에서 지정 가능한 local port도 randomize 합니다. 이때 주의할 것은 -p가 -r을 override 한다는 것입니다.

 

3. 윈도우(Windows) CMD에서 NC명령어 사용하는 방법

  • nc.exe 파일을 C:\Windows\System32 경로에 복사하면 윈도우 CMD창에서 바로 nc명령어를 사용할 수 있습니다. 복사하지 않고 nc.exe 파일을 실행해서 사용해도 됩니다. 

  • 윈도우용 Netcat 다운로는 경로는 아래 4번에 남겨놓았습니다.

다운로드 받은 후 nc.exe 파일을 복사해서 C:\Windows\System32에 붙여넣으면 CMD창에서 해당명령어 사용가능
nc.exe를 C:\Windows\System32에 복사한 모습

 

4. 윈도우용 Netcat 다운로드

 

netcat 1.11 for Win32/Win64

 

eternallybored.org

  • 라이선스 : GPLv2

GPLv2 라이선스

 

옵션 사용방법 출처 : 리눅스 포털
https://www.linux.co.kr/home/lecture/?leccode=10648
반응형

이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band