nc作为客户端使用,可以连接其他服务器的端口,服务端使用,开放一个端口并监听这个端口,等待别人的连接
使用nc连接smtp邮件服务器发送邮件
smtp是应用层协议,用来发送邮件,端口是25
要用base64加密将用户名和密码进行加密后在终端登录,最好不要使用kali自带的base64工具,问题
- 首先通过ping smtp.163.com来获取邮件服务器域名的IP地址,然后根据IP地址来和25端口来连接
nc -nv 202.116.5.110 25
-n 表示只通过IP地址不进行DNS域名解析
-v 表示显示详细信息
也可以直接通过域名来访问服务器
nc smtp.163.com 25
- helo <客户端主机名> # 告诉服务器客户端主机名
- 然后通过base64加密自己的用户名和密码
base64 xxxxxxx@163.com
base64 xxxxxxxx
注意这个是授权码不是你的邮箱密码 - auth login
分别输入加密后的用户名密码 - mail from: < xxxxxxxx@163.com >
注意这里要有个冒号和尖括号 - rcpt to: < receiver@163.com >
- data
通知服务器下面开始接收邮件内容 - from:xxx #表示发件人
- to:xxxx #表示收件人,可以有多个
- subject:xxxxxxx #输入邮件主题,需要空格一行才开始输入19正文
- 然后输入你想发送的内容,最后要空一行,最后换行以字符'.'结尾,回车
- quit
退出邮件邮件服务器连接
使用nc连接pop3服务器进行邮件的接收
pop3邮件服务器端口是110
- 通过
nc -nv <ip address> 110
ornc <pop3.163.com> 110
进行连接 - 输入命令
- USER <user name> (base64 加密的username,你的邮箱账号)
- PASSWORD
使用nc连接web服务器80端口
nc -nv <ip address> 80
连接上后通过http命令获得网页内容
比如
- head
- get
- post
- ...
使用nc进行简单数据传输
nc 文本传输
电脑A: nc -lp <port>
(侦听一个端口)
电脑B: nc -nv <ip address> <port>
(连接一个端口)
然后两台电脑就可以进行文本聊天的功能了
nc 传输终端输出内容
电脑A:nc -lp <port> [> file]
电脑B:< commamd > | nc -nv < ip address > < port > [-q < second >]
这样电脑B上command输出的内容就会传递到电脑A中
电脑A可以通过后面可选的命令将传递过来的内容保存到文件中
电脑B命令的-q参数指定内容传递完成之后隔多长时间断开连接
电脑A也可以使用-q参数
这种方式可以用来做电子取证
nc传输文件和数据
正向,接收端打开端口
电脑A:nc -lp 333 > l.mp4
电脑B:nc -nv < ip address > < port > < l.mp4 -q 1
反向,发送端打开端口
电脑A:nc -lp 333 < l.mp4
电脑B:nc -nv < ip address > < port > > l.mp4 -q 1
这样所有连接到电脑A的电脑都会收到服务器发来的文件,可以用来做钓鱼端口,谁连接到了这个端口就给你发个木马之类的文件
加密传文件,以正向为例
电脑A:nc -lp 333 | mcrypt --flush -Fbqd -a rijndael-256 -m ecb > 1.mp4
电脑B:mcrypt --flush -Fbq -a rijndalel-256 -m ecb < a.mp4 | nc -nv < ip address > < port > -q 1
要输入加密的密码,传输完毕后要输入密码解密
传输目录,借助压缩工具,以反向为例
电脑A:tar -cvf - music/ | nc -lp 333 -q 1
电脑B:nc -nv < ip address > < port > | tar -xvf -
不要漏了-
流媒体服务
电脑A:cat l.mp4 | nc -lp 333
电脑B:nc -nv 1.1.1.1 333 | mplayer -vo x11 -cache 3000 -
cache参数表示缓存大小,3000字节的大小,缓存播放完了新的流就会流进来,本地不会生成文件内容
注意电脑B命令后面的-
远程硬盘克隆
A:nc -lp 333 | dd of =/dev/sda
B:dd if==/dev/sda | nc -nv 1.1.1.1 333 -q 1
这样可以对硬盘块级别的数据备份到另一台机器,将硬盘的状态完全拷贝过来,原原本本地,包括被标记了删除的文件,可以在本地硬盘进行数据还原。上面的B电脑的数据就传递到A上,if表示输入,of表示输出,记得插一块新的硬盘来接收
这样会把整个硬盘的内容拷贝下来
操作系统是对磁盘内的被删除的文件文件名的标志位置为被删除,实际还是存在磁盘中的,如果有新的文件覆盖掉原来的文件才真正失去。所以刚刚删除的文件是可以被复原的。