No Rules Rules

netcat 활용하기 (feat. 윈도우) 본문

생활/업무

netcat 활용하기 (feat. 윈도우)

개발하는 완두콩 2022. 7. 20. 14:11
728x90
반응형

지금은 기억도 나지 않지만 한때 대세는 해킹이지!!! 라며 관심 가지고 공부했던 리버스 엔지니어링과, 그때 함께 많이 찾아보던 netcat 입니다.

netcat은 TCP또는 UDP를 이용하여 데이터를 읽고 쓰는 유틸리티입니다.

OS를 가리지 않는다는 장점이 있고, 윈도우는 따로 설치를 해야 하지만 리눅스의 경우, 보통 배포에 포함된 경우가 많습니다.

 

윈도우의 경우, 설치 후 환경 변수에 등록만 해둔다면, 리눅스와 마찬가지로 "nc xxxx" 과 같이 명령어로 사용할 수 있습니다.

netcat, ncat, nc 로 불리는 아이입니다.

그럼 윈도우 OS 기준으로 설치부터 사용까지 정리 해보겠습니다.

 

 

netcat 1.11 for Win32/Win64

 

eternallybored.org

 

일단 위 경로를 통해 netcat 1.11을 설치 해줍니다. (설치라기보단 실행파일이 포함된 압축 파일입니다.)

어디에 압축을 풀어도 상관없지만 설명을 위해 C:\netcat 이라고 가정합니다.

잠깐!

윈도우에 설치된 혹은 기본 보안프로그램에 의해 nc.exe가 삭제될 수 있습니다.

보안프로그램 내에서 예외 경로를 지정해줍시다.

 

편리한 사용을 위해 환경 변수에 등록도 해줍니다.

 

 

 

이렇게 환경 변수에 등록을 하면 "nc xxxx" 처럼 사용할 수 있는데요.

윈도우키 + R 을 누르고 "cmd"를 실행해볼께요.

 

nc는 다음과 같은 옵션들을 사용할 수 있는데요.

단순히 채팅 형태로 사용을 해보겠습니다.

 
반응형
-l은 listen의 약자, -p은 port의 약자입니다. 즉, 12345번 포트로 listen할꺼야~ 라는 의미입니다. 기본적으로 TCP 서버입니다.

서버는 클라이언트의 데이터를 수신하기 위한 용도이며, 위 텍스트는 수신된 데이터입니다.

 

 

127.0.0.1 아이피 주소의 12345 포트로 데이터를 전송하고자 하는 클라이언트입니다. 기본적으로 TCP 클라이언트입니다.

 

 

이렇게 클라이언트에서 콘솔 input을 하면, 서버에서 수신된 데이터를 콘솔 output하게 됩니다.

 

UDP로도 연결이 가능합니다.

 
 
위 TCP와 비슷하지만 -u 옵션을 주면 UDP로 동작됩니다.

 

 
마찬가지로 위 TCP와 비슷하지만 -u 옵션으로 UDP 클라이언트를 생성하였습니다.

 

서버에서의 수신 정보는 파일로 남길 수도 있습니다.

 

 
서버에서 수신한 데이터를 C:\Users\user\Desktop\log.log 파일에 출력하도록 합니다.

 

클라이언트에서 송신한 데이터는 log 파일에 출력됩니다.

 


제가 netcat을 사용한 목적은 WSL의 포트 포워딩에 의해서 시작되었습니다.

이전 포스팅에서와 같이 WSL2는 UDP에 대한 포트 포워딩을 지원하지 않기 때문입니다.

 

nc를 이용한 별도의 툴(SDI구조의 MFC로 계획중입니다.)을 만들 계획이지만, 그전에 UDP 포트 포워딩이 되는지 테스트를 해봐야겠습니다.

 

12345번 포트로 데이터를 송신하기 위해 UDP 클라이언트를 생성합니다.

 

12345번 포트로 수신하기 위한 UDP 서버를 생성합니다. 그리고 수신한 데이터를 23456번 포트로 송신하는 UDP 클라이언트를 생성합니다.

즉, 중계기와 같은 역할을 하는 아이라고 생각하면 될것 같습니다.

 

 
23456번 포트로 수신하기 위한 UDP 서버를 생성합니다. 12345번 포트의 UDP 클라이언트에서 송신한 데이터가 정상적으로 수신되는 것을 확인하였습니다.

 

 

728x90
반응형
Comments