http_dns_icmp

HTTP代理

效果可能不是那么的好,因为会存在防火墙,可能存在进出的规则

Neo-reGeorg

https://github.com/sensepost/reGeorg
https://github.com/NoneNotNull/reGeorg

reGeorg 是 reDuh 的升级版,主要功能是把内网服务器端口的数据通过 HTTP/HTTPS 隧道转发到本 机,实现基于 HTTP 协议的通信。

reGeorg支持 ASPX,ASHX,PHP,JSP等WEB脚本,并特别提供了一个 tomcat5版本。

https://github.com/L-codes/Neo-reGeorg

python3 neoreg.py -h

可选参数:
-h, - -help 显示此帮助消息并退出
-u URI, –url URI 包含隧道脚本的URL
-k KEY, –key KEY 指定连接密钥
-l IP, –listen-on IP 默认的监听地址。(默认:127.0.0.1)
-p PORT, –listen-port PORT 默认的监听端口。(默认:1080)
-s, –skip 跳过可用性测试
-H LINE, –header LINE 将自定义header LINE传递给服务器
-c LINE, –cookie LINE 自定义初始化Cookie
-x LINE, –proxy LINE proto://host[:port]在给定端口上使用代理
–local-dns 本地读取缓冲区,每个POST发送的最大数据量(默认值:2048 最大:2600)
–read-buff Bytes 本地读取缓冲区,每个POST发送的最大数据量(默认值:2048 最大:2600)
–read-interval MS 读取数据间隔,以毫秒为单位。(默认值:100)
–max-threads N 代理最大线程数(默认值:1000)
-v 提高详细程度(使用-vv或更多以获得更好的效果)

用法

  1. 设置密码生成tunnel上传到服务器

    1
    python .\neoreg.py generate -k passwd
  2. 将脚本上传到web服务

    image-20240131094820704

    image-20240131094853905

  3. 我们可以直接访问,但是不会显示内容,但是我们可以使用webshell管理工具发现这个

  4. 连接隧道

    1
    python .\neoreg.py -k passwd -u http://192.168.79.140/public/tunnel.php

    image-20240131095033687

  5. 尝试访问内网

    image-20240131095249474

    没有挂代理访问失败

  6. 设置代理

    image-20240131095432268

  7. 成功代理

    image-20240131095509215

    感觉效果不是很好

DNS隧道

当目标限制了所有的协议的连接,但是防火墙基本不会拦截dns 协议

Dnscat2

  1. 简介

    dnscat2是一个DNS隧道工具,通过DNS协议创建加密的命令和控制通道,它的一大特色就是服务端 会有一个命令行控制台,所有的指令都可以在该控制台内完成。包括:文件上传、下载、反弹Shell。

  2. 支持的type类型

    A
    TXT
    CNAME
    MX
    AAAA

    相关解释

    Type:DNS解析的类型,常见的有:A、CNAME、MX、TXT。

    A: 域名的IPv4地址。
    AAAA: 域名的IPv6地址。
    CNAME: 域名的别名。
    可以理解为域名的重定向吧,主要方便IP地址的变更。
    比如cdn厂商会给客户企业分配固定的cname而不是IP,如果分配IP,cdn厂商做IP调整就受限哪些客户企业的哪些域名绑定了这个IP,需要沟通服务迁移。
    还有在企业多个域名(www/mail/ftp或其他业务分类的域名)对应一个入口IP地址时候,也可以给多个域名做cname,便于后期的IP调整。
    总之,别名是一种松耦合的处理办法。
    MX: smtp邮箱域名的IP地址。给client端指明某个域名的邮件服务器地址。
    PTR: 根据IP反向查找域名。
    SRV: 服务的IP地址记录,包含ip、port、priority、weight。
    TXT: 名的文本记录。可以记录联系方式、服务版本信息、反垃圾邮件等。
    NS: dns zone。指定哪个域名服务器可以解析该域名的子域名。
    SOA: 授权机构记录,记录ns中哪个是主服务器。

  3. 安装

    1
    2
    3
    4
    5
    6
    apt install ruby ruby-dev git make g++ ruby-bundler
    gem install bundler

    git clone https://github.com/iagox86/dnscat2.git
    cd dnscat2/server
    bundle install

ICMP

通过某种信道获取了内网主机的shell,但是当前信道不适合做远控的通信信道,TCP和UDP等传输 层协议不能出网,DNS、HTTP等应用层协议也不能出网,只有ICMP协议可以出网。

image-20240131123000346

pingtunnel

创建一个payload

image-20240310122107066

注意这个的意思就是说,将这个shell 反弹到目标的9999

对,这个意思是反弹目标的端口

正常的应该是,反弹到攻击机

通过伪造ping,把tcp/udp/sock5流量通过远程服务器转发到目的服务器上。用于突破某些运营商封锁TCP/U DP流量。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# ./pingtunnel -h

通过伪造ping,把tcp/udp/sock5流量通过远程服务器转发到目的服务器上。用于突破某些运营商封锁TCP/UDP流量。

Usage:

// server
pingtunnel -type server

// client, Forward udp
pingtunnel -type client -l LOCAL_IP:4455 -s SERVER_IP -t SERVER_IP:4455

// client, Forward tcp
pingtunnel -type client -l LOCAL_IP:4455 -s SERVER_IP -t SERVER_IP:4455 -tcp 1

// client, Forward sock5, implicitly open tcp, so no target server is needed
pingtunnel -type client -l LOCAL_IP:4455 -s SERVER_IP -sock5 1

-type 服务器或者客户端

服务器参数server param:
-key 设置的密码,默认0
-nolog 不写日志文件,只打印标准输出,默认0
-noprint 不打印屏幕输出,默认0
-loglevel 日志文件等级,默认info
-maxconn 最大连接数,默认0,不受限制
-maxprt server最大处理线程数,默认100
-maxprb server最大处理线程buffer数,默认1000
-conntt server发起连接到目标地址的超时时间,默认1000ms

客户端参数client param:
-l 本地的地址,发到这个端口的流量将转发到服务器
-s 服务器的地址,流量将通过隧道转发到这个服务器
-t 远端服务器转发的目的地址,流量将转发到这个地址
-timeout 本地记录连接超时的时间,单位是秒,默认60s
-key 设置的密码,默认0
-tcp 设置是否转发tcp,默认0
-tcp_bs tcp的发送接收缓冲区大小,默认1MB
-tcp_mw tcp的最大窗口,默认20000
-tcp_rst tcp的超时发送时间,默认400ms
-tcp_gz 当数据包超过这个大小,tcp将压缩数据,0表示不压缩,默认0
-tcp_stat 打印tcp的监控,默认0
-nolog 不写日志文件,只打印标准输出,默认0
-noprint 不打印屏幕输出,默认0
-loglevel 日志文件等级,默认info
-sock5 开启sock5转发,默认0
-profile 在指定端口开启性能检测,默认0不开启
-s5filter sock5模式设置转发过滤,默认全转发,设置CN代表CN地区的直连不转发
-s5ftfile sock5模式转发过滤的数据文件,默认读取当前目录的GeoLite2-Country.mmdb

下面是具体的例子

模拟主机是目标主机,但是我的主机不出网
kali 作为目标主机

现在运行payload

image-20240310132335299

然后开启监听

image-20240310132908047

然后运行pingtunel

image-20240310134135216

然后靶机也要运行

image-20240310134400527

最后就运行payload 就可以了

image-20240310134416078

现在就使用icmp 了

但是防火墙可能会被完全限制


http_dns_icmp
https://tsy244.github.io/2024/01/31/渗透/http-dns-icmp/
Author
August Rosenberg
Posted on
January 31, 2024
Licensed under