netcat是網(wǎng)絡(luò)工具中的瑞士軍刀,它能通過TCP和UDP在網(wǎng)絡(luò)中讀寫數(shù)據(jù)。通過與其他工具結(jié)合和重定向,你可以在腳本中以多種方式使用它。使用netcat命令所能完成的事情令人驚訝。
netcat所做的就是在兩臺(tái)電腦之間建立鏈接并返回兩個(gè)數(shù)據(jù)流,在這之后所能做的事就看你的想像力了。你能建立一個(gè)服務(wù)器,傳輸文件,與朋友聊天,傳輸流媒體或者用它作為其它協(xié)議的獨(dú)立客戶端。
下面是一些使用netcat的例子.
[A(172.31.100.7) B(172.31.100.23)]
Linux netcat 命令實(shí)例:
端口掃描經(jīng)常被系統(tǒng)管理員和黑客用來發(fā)現(xiàn)在一些機(jī)器上開放的端口,幫助他們識(shí)別系統(tǒng)中的漏洞。
$nc -z -v -n 172.31.100.7 21-25可以運(yùn)行在TCP或者UDP模式,默認(rèn)是TCP,-u參數(shù)調(diào)整為udp.
pipe建立的管道是單工的,其參數(shù)是一個(gè)包含兩個(gè)元素的整形數(shù)組fd[2],創(chuàng)建成功后fd[0]代表管道可讀的一端,fd[1]代表可寫的一端,這兩個(gè)的本質(zhì)都是文件描述符,當(dāng)進(jìn)程間有數(shù)據(jù)要傳輸時(shí),數(shù)據(jù)發(fā)送的一端需要關(guān)閉fd[0],接收端要關(guān)閉fd[1],才能正常傳送數(shù)據(jù)。這是一種辦法,但是要考慮到,因?yàn)槟悴恢烙脩羰鞘褂檬裁窜浖诎l(fā)送udp數(shù)據(jù)過來,你亂發(fā)數(shù)據(jù)過去,很大可能是被客戶軟件認(rèn)為是不合法的數(shù)據(jù)而過濾掉,如果sock5代理因?yàn)榘l(fā)過去的數(shù)據(jù)被過濾了而認(rèn)為客戶 是斷開了,那么極容易就將沒有斷開的用戶也踢下去了,而且現(xiàn)在的oicq還會(huì)使用使用兩個(gè)連接,一個(gè)是udp連接,另一個(gè)是tcp連接,udp連接只是登陸上服務(wù)器時(shí)使用,tcp連接卻是進(jìn)行數(shù)據(jù)傳輸?shù),而udp連接卻是一直都不會(huì)有數(shù)據(jù)傳輸?shù)牧,如果socks5代理因?yàn)閡dp連接長(zhǎng)時(shí)間沒有數(shù)據(jù)傳輸而將那個(gè)udp連接關(guān)閉的話,oicq也會(huì)因?yàn)檫@樣而掉線(你關(guān)閉了udp連接,oicq以為代理是不可用了,自己會(huì)將tcp連接斷開)。c:當(dāng)服務(wù)器確定數(shù)據(jù)已靜完成發(fā)送,則向客戶端發(fā)送(fin)報(bào)文告訴客戶端:"我這邊數(shù)據(jù)發(fā)完了,準(zhǔn)備好關(guān)閉連接"。
v 參數(shù)指使用冗余選項(xiàng)(譯者注:即詳細(xì)輸出)
n 參數(shù)告訴netcat 不要使用DNS反向查詢IP地址的域名
這個(gè)命令會(huì)打印21到25 所有開放的端口。Banner是一個(gè)文本,Banner是一個(gè)你連接的服務(wù)發(fā)送給你的文本信息。當(dāng)你試圖鑒別漏洞或者服務(wù)的類型和版本的時(shí)候,Banner信息是非常有用的。但是,并不是所有的服務(wù)都會(huì)發(fā)送banner。
一旦你發(fā)現(xiàn)開放的端口,你可以容易的使用netcat 連接服務(wù)抓取他們的banner。
$ nc -v 172.31.100.7 21
netcat 命令會(huì)連接開放端口21并且打印運(yùn)行在這個(gè)端口上服務(wù)的banner信息。
假如你想和你的朋友聊聊,有很多的軟件和信息服務(wù)可以供你使用。但是,如果你沒有這么奢侈的配置,比如你在計(jì)算機(jī)實(shí)驗(yàn)室,所有的對(duì)外的連接都是被限制的,你怎樣和整天坐在隔壁房間的朋友溝通那?不要郁悶了,netcat提供了這樣一種方法,你只需要?jiǎng)?chuàng)建一個(gè)Chat服務(wù)器,一個(gè)預(yù)先確定好的端口,這樣子他就可以聯(lián)系到你了。
Server
$nc -l 1567
netcat 命令在1567端口啟動(dòng)了一個(gè)tcp 服務(wù)器,所有的標(biāo)準(zhǔn)輸出和輸入會(huì)輸出到該端口。輸出和輸入都在此shell中展示。
Client
$nc 172.31.100.7 1567
不管你在機(jī)器B上鍵入什么都會(huì)出現(xiàn)在機(jī)器A上。
大部分時(shí)間中,我們都在試圖通過網(wǎng)絡(luò)或者其他工具傳輸文件。有很多種方法,比如FTP,SCP,SMB等等,但是當(dāng)你只是需要臨時(shí)或者一次傳輸文件,真的值得浪費(fèi)時(shí)間來安裝配置一個(gè)軟件到你的機(jī)器上嘛。假設(shè),你想要傳一個(gè)文件file.txt 從A 到B。A或者B都可以作為服務(wù)器或者客戶端,以下,讓A作為服務(wù)器,B為客戶端。