一、pingtunnel工作原理

在上面的实验环境中,我们将分别在攻击机kali 2020和webserver上部署pingtunnel工具,在量太主机之间实现icmp隧道,再在kali2020上监听1080(图中写错了,没改过来),将webserver访问内网主机server2003远程桌面3389的数据通过icmp协议进行数据封装,然后转发到kali2020的1080端口上,从而实现了win7上访问server2003上3389端口的目的。webserver作为黑客的一个跳板,从而控制内网的主机。这个过程看起来跟ssh隧道本地端口转发非常相似,不同之处知识穿透防火墙的流量是通过icmp协议,另一个是ssh协议。

二、部署pingtunnel

操作系统环境:两台kali linux,两台windows,一台防火墙(只允许icmp协议数据包通过),

1.下载pingtunnel

  先到网站http://freshmeat.sourceforge.net/projects/ptunnel下载tar包文件,解压编译安装

1>tar zxf PingTunnel-0.72.tar.gz
2>cd PingTunnel
3>make && makeinstall
注意:

安装前要先安装依赖库(libpcap类似于wincap)

apt-get install flex

apt-get install -y byacc

wget http://www.tcpdump.org/release/libpcap-1.9.0.tar.gz
tar zxf libpcap-1.9.0.tar.gz
cd libpcap-1.9.0
./configure
make && make install

2.pingtunnel参数

-x 指定 icmp 隧道连接验证密码

-lp 指定要监听的本地 tcp 端口

-da 指定要转发到的机器的 ip 地址

-dp 指定要转发到的机器的 tcp 端口

-p 指定icmp隧道另一端机器的 ip 地址

3.c/s命令

vps(攻击机)命令:

ptunnel -p 192.168.4.134  -lp 1080  -da 1.1.1.10 -dp 3389 -x  pass

webserver(跳板机)命令:

ptunnel -x shuteer

win 7 (黑客攻击端)命令

win + R

mstsc

192.168.4.136:1080

接下来可以尝试密码弱口令暴力破解

此时我们就可以拿到内网主机的远程桌面,实现远程控制的目的了,请仔细看看我所标红的IP地址,发现了什么,192.168.4.136是vps的ip地址,而这台主机的真正ip为1.1.1.10内网主机的ip

我们再看看数据经过ICMP隧道,在pingtunnel上留下的记录

可以很情绪的看到session会话

三、防御ICMP隧道攻击的方法

许多网络管理员会阻止ICMP通信进出站点。但是出站方向,ICMP通信是被允许的,而且目前大多数的网络和边界设备不会过滤ICMP流量。使用ICMP隧道时会产生大量的ICMP数据包,我们可以通过wireshark进行ICMP数据包分析以检测恶意ICMP流量,具体方法如下。

.检测同一来源的ICMP数据包的数量。一个正常的ping 命令每秒最多发送两个数据包,而使用ICMP隧道的浏览器会在很短的时间内产生上千个ICMP数据包。

.注意那些Payload大于64bit的ICMP数据包

.寻找相应数据包中的payload与请求数据包中的payload不一致的ICMP数据包

.检查ICMP数据包的协议标签。例如,icmptunnel会在所有的ICMP payload前面添加"TUNL"标记来标识隧道----这就是特征

内网流量操控---pingtunnel建立icmp隧道的更多相关文章

  1. reGeorg v1.0内网流量转发

    reGeorg v1.0 git Usage $ reGeorgSocksProxy.py [-h] [-l] [-p] [-r] -u [-v] Socks server for reGeorg H ...

  2. linux 查看内网流量

    可以使用iftop进行Linux机器的网络流量监控 安装方法 centos系统下 第一步:安装EPEL源 yum install epel-release 第二部:安装iftop yum instal ...

  3. 利用SSH端口转发实现远程访问内网主机远程桌面(一) 建立SSH转发

    近期家里更换了移动的宽带,拨号后拿到的是10开头的内网IP,就不能像之前一样通过路由器的端口映射实现从外网访问主机的远程桌面.这种情况下可以利用一台具有公网IP的服务器充当中转,利用SSH的隧道转发功 ...

  4. ssh反向连接内网主机

    holer听别人说也挺好用不过本人没试过:https://github.com/Wisdom-Projects/holer 利用autossh建立稳定隧道,前提双方互加公钥信任. # yum inst ...

  5. 内网渗透之frp使用

    0x00 前言 nps相比上次已经介绍过了.但是他有一个致命缺点就是在scks5代理下会长连接一直不放开导致结果不准确.所以来讲讲frp的使用.frp虽然需要落地配置文件,但是扫描的结果还是很准确的. ...

  6. 关于网卡eth0、eth1以及服务器为什么要把内网和外网卡区分开

    在搜搜上看到了这个回答,它解释了什么是eth0,eth1: eth0和eth1这是网卡设备,只是个名称不必纠结.通常服务器会有多个网卡的,所以就有eth0 eth1 eth2 这样的名称,而且在一些系 ...

  7. ICMP隧道工具ptunnel

    ICMP隧道工具ptunnel   在一些网络环境中,如果不经过认证,TCP和UDP数据包都会被拦截.如果用户可以ping通远程计算机,就可以尝试建立ICMP隧道,将TCP数据通过该隧道发送,实现不受 ...

  8. [svc]frp内网穿透

    什么是穿透 可以任意暴漏内网任何服务,加入你在你的办公网络有台pc,可以上网就可以了, 你可以在你电脑上安装各类服务器, 暴漏如80 22等端口, 注意 这可以暴漏到公网哦, 在出口不做任何nat情况 ...

  9. 内网安全---隐藏通信隧道基础&&网络通信隧道之一ICMP隧道

    一,隐藏通信隧道基础知识 在完成信息收集之后,我们要判断流量是否出的去.进的来.隐藏通信隧道技术常用于在受限的网络环境中追踪数据流向和在非受信任的网络中实现安全的数据传输. 1.常见的隧道: .网络层 ...

随机推荐

  1. 安卓开发之intent

    两个活动之间的跳转要通过intent来进行,intent跳转分为隐式的和显示的. 首先xml中定义Button,通过按下按钮实现回调,在回调函数中进行相应intent设置. <Button an ...

  2. java继承成员函数特点

    1 //成员函数. 2 /* 3 * 当子父类中出现成员函数一模一样的情况,会运行子类的函数. 4 * 这种现象,称为覆盖操作.这时函数在子父类中的特性. 5 * 函数两个特征: 6 * 1,重载. ...

  3. ansible roles实践 zookeeper集群部署

    1.下载解压 wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11. ...

  4. SQL解析器详解

    1.概述 最近,有同学留言关于SQL解析器方面的问题,今天笔者就为大家分享一下SQL解析器方便的一些内容. 2.内容 2.1 SQL解析器是什么? SQL解析与优化是属于编辑器方面的知识,与C语言这类 ...

  5. 导入 static 修饰的包

    一 static关键字,可以修饰变量  方法  代码块 ,  静态内部类.  还可以用来修饰 需要导入的包 准备工作 package zhouxufeng; public class Text1 { ...

  6. java中的数据模型类

    package com.aaa.zxf.ajax.test; import java.io.Serializable; /** * java中的继承. * * 一.数据模型类 * 数据模型类:用来存取 ...

  7. 解决手机unauthorized错误

    手机:xiaomi-note(OS: Android 6.0) 手机开发者选项中USB调试已经打开,在电脑命令行下输入adb devices,显示手机未认证 D:\develop\androidroo ...

  8. Handler消息机制的写法

    使用Handler的步骤:         1.主线程中创建一个Handler         private Handler handler = new Handler(){             ...

  9. 【转】Python中自定义可迭代对象

    python 中内置的可迭代的对象有 list.tuple.set.dict 等,那么我们自己怎么定义一个可迭代的对象呢?先来段代码吧 import re import reprlib RE_WORD ...

  10. Java基础复习(三)

    1. &和&&的区别. &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则 ...