CVE漏洞中文网

0DayBank一个专门收集整理全球互联网漏洞的公开发布网站
  1. 首页
  2. 百科
  3. 正文

内网审计

2017年5月24日 1054点热度 0人点赞 0条评论
内网审计
  • 首页
  • 分类阅读
  • 文库
  • 专栏
  • 公开课
  • 商城
  • 漏洞盒子
注册 | 登录
投稿

Tunnel:论如何在内网中自由渗透

戒贤2016-07-21共413892人围观 ,发现 37 个不明物体工具网络安全

*本文作者:戒贤,本文属FreeBuf原创奖励计划,未经许可禁止转载

背景

能够成功地通过web漏洞获取到webshell,对于一次完整的渗透测试来说,仅仅相当于万里长征的第一步。这么说,可能比较夸张吧,并不是所有渗透测试都会遇到几百台机器的大内网。

在PTES(渗透测试执行标准)中,把渗透测试分成了七个主要的过程,也就是说现在通常说的前期交互、目标识别、信息收集、漏洞分析、漏洞利用、后渗透测试、报告编制这七大步骤。如果你看过PTES标准,你应该会跟我有一样的感觉,后渗透测试部分的内容,几乎等于其他六个部分的总和。当然,也只是在系统规模达到一定程度的时候,才会明显的感觉出来。

小生虽然离开了安全工程师的岗位,还是偶尔会遇到小年轻们拿到shell之后就不知道该干嘛了。写了个报告交给客户,草草结束了一个项目(这也是目前渗透测试服务的一个弊病,大部分的渗透测试都以Getshell为主要指标,能getshell,基本上已经宣告渗透测试结束了)。内网中,如何打开一个稳定、可靠的数据通道,对后续的测试工作起到非常重要的作用。这里分享一些我在之前渗透测试中常用的方式。在造成最小影响的情况下,构建稳定的内网代理通道。

其实并没有什么新奇的工具。我相信有很多我没都还没见识过的工具,不少坊间流传的远控工具功能强大,也非常易于使用。对于我这种,至今还在使用初版菜刀的“学院派”来说,最基础的工具,往往是最可靠的。

第一个工具:SSH(别急着喷,先看完)

SSH在渗透测试中往往扮演了非常重要的角色。一方面,几乎所有的Linux/Unix服务器和网络设备都支持SSH协议。另一方面,SSH是最常用的远程管理协议,网络层面的访问控制协议,往往会为SSH网开一面。很多管理员为了便于管理,都会开放SSH远程管理,总不能每次一出问题就直奔机房吧。SSH本身是安全的,但是安全的通道,同样会在网络攻击中被利用。

SSH最简单的命令行格式如下:

ssh root@192.268.201.100

使用-p指定目标服务器上的ssh端口

ssh root@192.268.201.100 -p 2222

或者用下面的形式:

ssh root@192.168.201.100:2222

使用-N建立静默连接(建立了连接,但是你看不到会话,这个选项不是所有的ssh都支持,具体看情况)

ssh -N  root@192.168.201.100:2222

使用-f对ssh进行后台执行,这个选项会把ssh转入后台,即使用户登出,ssh会话也不会终端,除非超时。

ssh -f  root@192.168.201.100:2222

只要在本地设置一下代理端口就可以使用了。估计不少同学也是用过类似的方式去访问某些“不可描述”的网站。

SSH的隧道,说得通俗一些,其实就是端口映射,或者叫端口转发。

SSH一共支持三种隐射方式:

动态映射(使用-D选项,前面说的就是这种方式)。原理图如下:

QQ20160715-1@2x.png

ssh -D 8080 root@192.168.201.100

这个命令行会在本机上监听8080端口,成为一个sock5代理,只要简单设定一下代理,就可以以192.168.201.100作为代理服务器传送流量了。

本地映射(使用-L选项),将远端服务器的端口,隐射到本地。原理图如下:

QQ20160715-3@2x.png

ssh -L 8080(本地端口):192.168.201.101(目标主机):3306(目标端口) root@192.168.201.100(跳板机)

以SSH Server 为跳板,将Target Host的端口,映射到本地服务器上。这时候,你访问本地的8080端口,实际访问的,就是Target Host的3306了。

前提:SSH Server必须要能通过ssh够登陆到Target Host上去。

场景:SSH Server和Target Host都在内网,但是外部机器只能访问到SSH Server,而无法直接对Target Host做任何请求的时候。

远端映射(使用-R选项),将一个远端服务器的端口,隐射到另一个远端服务器。

QQ20160715-5@2x.png

ssh -R 3307:192.168.202.244:3306 root@192.168.201.100

这个时候,执行这条命令的主机,就成为跳板机。

前提:执行这条命令的主机,必须同时能够访问SSH Server和Target Server。

场景:SSH Server在外部,跳板机在内网,Target Host和跳板机同网段但无法直接从互联网访问到,或者Target Host处在更深层的内网。

实际上,本地映射、远端映射和动态隐射都可以灵活应用,跳板机、目标主机的角色是可以互相转换的。

假设渗透测试中的一个场景如下:

假设,每一台服务器你都知道至少一个账户的密码,这里假设内网的服务器上都有一个弱口令的oracle账户。

测试人员 公网跳板机 内网跳板机1号 内网跳板机2号 目标主机
192.168.100.1
公司内网
218.2.135.2
虚拟主机
具备独立的公网IP
233.33.33.33
已Getshell
不能从外部直接登陆
但可以访问互联网
192.168.100.100
内网主机
不能访问互联网
可以被跳板1号访问
10.10.10.2
核心服务器
可被跳板机2号访问
能够访问核心区域

第一步:登陆公网跳板机

ssh root@218.2.135.2

第二步:把218.2.135.2的公钥,添加到跳板机1号的信任列表中。

公钥信息,在你本地的~/.ssh/know_hosts里面可以找到

形如:

218.2.135.2 ssh-rsa AAAAB3NzaC1y**************************************************************************************************************************************************************************************************************************7/WggmJ4OYMJp0OnKQ==

对应的,跳板机1号上你要添加到对应账户的~/.ssh/known_hosts文件中。

因为ssh初次登陆一台主机的时候,会询问用户,是否信任该主机。而且,如果同一个ip,其公钥与此前登陆时记录的公钥不必配,是无法登陆的,所以需要进行这个操作。

第三部:映射跳板机2号的ssh端口,到公网跳板机上(在跳板机1号的webshell中执行)

ssh -f -N -R 2222:192.168.100.100:22 root@218.2.135.2

图解:

QQ20160716-0@2x.jpg

第四部:登陆到跳板机2号上

ssh oracle@localhost:2222

因为上一步已经将跳板机2号的22端口映射到公网跳板机上去了,这时候可以直接登陆。

(注,公网跳板机也要做好防护,映射出去的端口,很有可能被扫描或者攻击,这个时候实际上被扫描的就是内网的服务器,我们不希望这种事情发生,这个时候就应当限制,2222端口只能被本地访问)

第五部,在跳板机2号上继续创建动态隐射

ssh -f -N -D 192.168.100.100:7777 oracle@10.10.10.2

图解:

QQ20160716-1@2x.jpg

渗透测试中有很多变数,不能一竿子打死,只映射特定的一个端口(比如1521)。最后一跳,个人建议以动态映射的方式,这样可以保证后续的其他测试工作也能顺利进行。但如果甲方对渗透测试有特定的需求,请务必按照甲方要求的方式进行。(比如,甲方不希望你访问除10.10.10.2之外的任意服务器,那么最后一跳就做一个本地隐射就可以了)

第六部:在跳板机1号上执行

ssh -f -N -R 7777:218.2.135.2:7777 oracle@192.168.100.100

最终,打开了一个直通内网核心的SSH隧道。

只要配置代理,sock5://218.2.135.2:7777,就可以使用浏览器或者数据库终端或者其他工具,来进行更深入的测试。

(我自己都觉得好烦的说…..)

你发送的流量,在公网跳板机上,跳板机2号上,目标主机上都会进行解密和重新加密的工作,所以效率会低很多(有点类似于洋葱路由了)。一般的手工测试或者文件传输没有太大问题,但是这个隧道一般无法支撑Namp或者WVS之类快速发包的工具。

如果你觉得这些操作太过于繁琐,不妨试试SSH Tunnel(仅限Mac,非常值得花钱买的一个软件)。windows的话,还是一行一行敲命令吧。

第二个工具,Proxifier

其实我并不是很喜欢这个工具,虽然功能强大。个人感觉配置Proxifier比配置防火墙还麻烦,所以用的很少。

QQ20160716-2@2x.png

在Proxies中添加你的代理服务器,可以配置多个代理,支持Socks4/5,HTTPS和HTTP代理。

看到下面的ProxyChains了么?这是它非常强大的一个功能。

其次是配置代理规则,

QQ20160716-3@2x.png

规则中可以详细指定,什么应用,访问什么站点的时候,使用哪一条代理链路。

在渗透测试的时候,这样的多链路代理会有比较大的用处。

切记,隧道和多链路代理本身已经打破了信息系统中固有的访问控制策略,如果你不能保证你自己的环境是否安全,请不要给客户增加额外的麻烦。

注:Proxifier跟VMware Workstation在功能上有冲突,如果安装了Proxifier,VM的虚拟机共享功能就无法使用。我之前遇到这个问题,蛋疼地把系统都重装好几次才意识到它俩有冲突。

第三个工具,SSH Proxy

算是SSH Tunnel的姊妹,同一个开发者,也是只有Mac下才有的工具。一般两者配合使用,基本上可以不用Proxifier了。它其实就做做了一个SSH的动态隐射而已。

QQ20160716-4@2x.png

配置好本地的映射端口,代理的服务器和对应的身份验证信息就可以了。

SSH Proxy的白名单功能比较好用,如果只需要对特定的站点或IP地址进行代理,就把IP地址添加到白名单里就可以了。但相比Proxifier,就没有的ProxyChains功能和多链路代理功能。

忠告:不建议使用SSH隧道出墙,因为流量特征明显,非常容易被屏蔽。

第四个工具,windows专用的sock5代理工具。

这个工具很小,可以使用命令行方式安装,可以在系统中注册成一个服务,随系统启动。也可以使用下面的命令行来运行这个服务,监听的端口是10086。

这个工具只有三个参数:

socks5.exe -i 安装socks5代理服务

socks5.exe -d 删除服务

socks5.exe -r 直接运行代理,不会注册一个新的服务。

(为了避免测试结束之后就忘记了,建议还是用-r方式直接运行,使用完毕就kill掉这个进程)

详细的使用介绍和源码,请戳这里

第五个工具,netsh

我自己用得也不是很多,暂时还没有好的案例可以分享,但是在内网中效果还是很不错的。

命令行格式如下:

创建端口映射

netsh interface portproxy add  v4tov4 listenaddress=192.168.100.100 listenport=8443 connectaddress=10.10.10.2 connectport=8443

删除端口映射

netsh interface  portproxy delete v4tov4 listenaddress=192.168.100.100 listenport=8443

查看当前所有的端口映射规则:

netsh interface  portproxy show  v4tov4

同样的,如果你能够在多台服务器上创建端口转发的链路,效果和ssh隧道几乎是一样的。

最后,渗透测试结束的时候,务必清除你创建的所有代理链路。毕竟,这些代理隧道已经打破了内网的访问控制策略了。(使用-N 和 -f选项建立的SSH会话运行在后台,只能kill掉对应的进程,但别kill错了)

如果你用我的方式去修改了known_hosts文件,也要把对应的公钥信息做清理。

小结:

隧道之所以能成功,前提是系统中访问控制不足。如果系统中配置了SSH远程管理的白名单,或者在ACL里限制特定的IP才能连接SSH,又或者系统完全使用带外管理,那就得两说了。

对于甲方来说,SSH固然是最常用的一种远程管理工具,SSH本身安全性也可以保障。但一定要意识到,安全工具,往往也会沦为攻击的重要手段。

如果没有足够的资源来建立带外管理的网络结构,内网中至少要限制SSH远程登录的地址和双向的访问控制策略(从外部到内部,从内部到外部)

切记,再牛逼的安全防护策略,也敌不过内网里遍地的弱口令。-_-|||

我身边的很多人都用LCX,但是从业三年时间里,我自己还没有成功地使用过这个工具,这里就不做介绍了。期待各位来做补充。

*本文作者:戒贤,本文属FreeBuf原创奖励计划,未经许可禁止转载

戒贤

戒贤4 篇文章等级: 4级
|
|
  • 上一篇:Httpoxy远程代理感染漏洞
  • 下一篇:美国大选选民登记数据在暗网大肆贩卖

这些评论亮了

  • 戒贤(4级)一只混迹在安全圈子边缘的调酒师回复
    @ XXXX 战五渣的PLA :wink:
    )9(亮了
  • Webrobot(1级)资深屌丝,网络安全爱好者,只围观,不掺合回复
    楼主说的没有成功使用过这个工具,我想知道是怎么个不成功法,相对来说做转发个人一直都是在用lcx,nc等。
    )8(亮了
发表评论

已有 37 条评论

  • xxx 2016-07-21回复1楼

    顶

    亮了(3)
  • erro 2016-07-21回复2楼

    第三部:映射跳板机2号的ssh端口,到公网跳板机上(在跳板机1号的webshell中执行)

    ssh -f -N -R 2222:218.2.135.2:22 oracle@192.168.100.100

    ssh -f -N -R 2222:192.168.100.100:22 root@218.2.135.2

    亮了(3)
    • 戒贤 (4级)一只混迹在安全圈子边缘的调酒师 2016-07-21回复

      @ erro 呃,我命令行写错了么?

      亮了(4)
    • hello_terminator 2016-07-21回复

      @ erro maosi diliubu ye youwenti ssh -f -N -R 7777:192.168.100.100:7777 oracle@218.2.135.2

      亮了(4)
      • 戒贤 (4级)一只混迹在安全圈子边缘的调酒师 2016-07-21回复

        @ hello_terminator 第五部在192.168.100.100 上面创建了一个动态的隐射,即192.168.100.100:7777
        第六步是把192.168.100.100:7777直接映射到外网去了
        我故意构造了一个比较复杂的场景,来体现SSH隧道的功能,但是我自己都被绕进去好几遍

        亮了(3)
    • 戒贤 (4级)一只混迹在安全圈子边缘的调酒师 2016-07-21回复

      @ erro 不好意思,我把自己给绕晕了。感谢指正!!!

      亮了(2)
  • Webrobot (1级)资深屌丝,网络安全爱好者,只围观,不掺合 2016-07-21回复3楼

    楼主说的没有成功使用过这个工具,我想知道是怎么个不成功法,相对来说做转发个人一直都是在用lcx,nc等。

    亮了(8)
    • 戒贤 (4级)一只混迹在安全圈子边缘的调酒师 2016-07-21回复

      @ Webrobot  就想我不知道你是怎么成功的一样。每个人都有自己熟悉的一套工具吧

      亮了(5)
  • 木千之 (4级)人,既无虎狼之爪牙,亦无狮象之力量,却能擒狼缚虎,驯狮猎象,... 2016-07-21回复4楼

    Interesting~~如我的理解没有错,作者的意思是测试人员利用不同机器的SSH账户进行跳板连接?若跳板机2号由跳板机1号连接,那么审计记录是否是跳板机2号上的用户从跳板机1号上登录?这样只要限定不同用户可SSH登录的PC即可,一旦发现用户异常登陆即可报警

    亮了(5)
    • 戒贤 (4级)一只混迹在安全圈子边缘的调酒师 2016-07-21回复

      @ 木千之  可以这么说。ssh隧道一定会留下一条登陆信息,而且不好清除。根据登陆的审计记录来判断异常,也是一种不错的的方式

      亮了(3)
  • CPU 2016-07-21回复5楼

    加精

    亮了(4)
  • taylorwin (5级) 2016-07-21回复6楼

    Tunnel 接近实战,必须点赞

    亮了(5)
  • jason 2016-07-21回复7楼

    :eek: 首先你得拿到webshell

    亮了(5)
  • XXXX 2016-07-21回复8楼

    内网遍地的弱口令?呵呵呵,你搞的是什么战五渣级别的内网还是你的字典特别牛逼啊

    亮了(4)
    • 戒贤 (4级)一只混迹在安全圈子边缘的调酒师 2016-07-21回复

      @ XXXX 战五渣的PLA :wink:

      亮了(9)
  • lqy876669834 (1级) 2016-07-21回复9楼

    ssh学习到了 :smile:

    亮了(3)
  • 三哥 2016-07-21回复10楼

    “内网遍地的弱口令?呵呵呵,你搞的是什么战五渣级别的内网还是你的字典特别牛逼啊”,然而现实就是这么骨感,并不是每个公司都像360那么全副武装,也并不是每个公司的老总都有安全公司高层那样有安全意识,安全团队往往只能迁就员工、高层,这就叫重视程度与用户体验

    亮了(4)
    • 戒贤 (4级)一只混迹在安全圈子边缘的调酒师 2016-07-21回复

      @ 三哥 这是有故事呀

      亮了(3)
  • 1 2016-07-21回复11楼

    不错~不过除了翻以外没实际用过ssh加密通道

    亮了(3)
  • 周鸿祎 2016-07-21回复12楼

    lcx这些过时的东西,老子早就不用了,老子遍历中国吉吉

    亮了(3)
  • ss 2016-07-21回复13楼

    文章不错,但是感觉网上一堆类似的………

    亮了(2)
    • 戒贤 (4级)一只混迹在安全圈子边缘的调酒师 2016-07-22回复

      @ ss 我知道,单说SSH隧道或者netsh,网上各种介绍都很多。怕就怕现在不少年轻人,连这俩工具都没听说过

      亮了(3)
  • global_hacker (4级) 2016-07-21回复14楼

    netsh 还不错 win 自带的 还可以 不过 lcx 等 nc 都也不错

    亮了(3)
  • 我叫抗把子 2016-07-21回复15楼

    我身边的很多人都用LCX,但是从业三年时间里,我自己还没有成功地使用过这个工具,这里就不做介绍了,
    对于一个不会使用LCX的人,而且还很自信,想想这个人的渗透经验有多低。

    如果目标服务器只对外网开通了80端口,即使是有ssh服务端,但是你不知道他们的密码,这里介绍的方法都是行不通的。。。
    关于windows部分的介绍你连个端口都弹不回来。。

    “Tunnel:论如何在内网中自由渗透”,干脆改成论如何在内网中自由使用的ssh服务,渗透也不要加了,你连个端口都弹不回来。

    亮了(4)
    • 戒贤 (4级)一只混迹在安全圈子边缘的调酒师 2016-07-22回复

      @ 我叫抗把子
      那阁下想必是十八般武艺样样精通的高手了。
      先说密码的问题,虽然密码把守着访问的第一道关卡,但是绕过密码,或者窃取密码的方式多种多样,这个我可没办法一条一条列给你。
      windows的部分,反弹端口跟getshell虽然相差很多,但都只是后渗透测试的起点。我重点在介绍后渗透测试部分的东西。

      亮了(1)
  • yyy3333 2016-07-22回复16楼

    ….哎 其实说出来 最疼的地方是 速度 ……

    亮了(0)
  • bt0sea (5级)微信公众号:gsgsoft 2016-07-22回复17楼

    我能问一下大侠,那个长时间的连接,不怕内网安全工具发现?

    亮了(0)
    • 戒贤 (4级)一只混迹在安全圈子边缘的调酒师 2016-07-22回复

      @ bt0sea  我的出发点是“渗透测试”,我认为测试目标系统安全防护的有效性,也是渗透测试的一个主要目标。如果没有被发现,就表明系统中存在比较严重的问题了。另外,SSH隧道是事先建立好加密的链接,然后把流量封装在这个链接里进行发送,即使没有流量,链接依然会存在,而且SSH会发送随机数据保持链接不会超时。但是netsh不同,它建立起来的只是一个端口转发的链路,监测起来就比较麻烦了。
      实际上,此前我遇到的一些案例,内网各种安全设备都跟摆设一样。-_-|||

      亮了(0)
  • 战略忽悠局张局 2016-07-22回复18楼

    lcx和nc因为太有名,经常被干掉…netsh不错,遇到win主机一直用这个

    亮了(0)
    • 戒贤 (4级)一只混迹在安全圈子边缘的调酒师 2016-07-22回复

      @ 战略忽悠局张局 遇到过两次规模比较大的windows域控,各方面的防护都做得蛮好的,但是netsh没有被限制,于是一条通道直接打到核心去了。然后没多久我就离职了,以后是再也用不上了

      亮了(0)
  • dayima 2016-07-22回复19楼

    = = 在座的各位都是辣鸡!

    亮了(1)
  • startagain (2级) 2016-07-24回复20楼

    给一台内网机器就够了,其它都是浮云……

    亮了(0)
  • 无名人士 2016-07-25回复21楼

    把lcx和nc用py和go语言重构。

    亮了(0)
    • 戒贤 (4级)一只混迹在安全圈子边缘的调酒师 2016-07-25回复

      @ 无名人士 :eek: 服务器上没Go环境咋办?!

      亮了(0)
      • 无名人士 2016-07-25回复

        @ 戒贤  重构打包成exe

        亮了(0)
  • 三哥 2016-07-25回复22楼

    不去关注技术本身,反倒对作者的一句谦虚之言大评特评,这么做真的大丈夫嘛,哪来的优越感呢!

    亮了(1)
  • 匿名用户 2016-07-27回复23楼

    我相信有很多我没都还没见识过的工具,打错字了。。是我们不是我没。

    亮了(0)

必须您当前尚未登录。登陆?注册

必须(保密)

表情插图

取消

戒贤

戒贤

一只混迹在安全圈子边缘的调酒师

4 篇文章64 条评论

相关阅读

  • Windows任意代码执行0day(CVE-2014-4114)分析报告
  • 俄罗斯自动攻击工具Black Hole更新v2.0版
  • 安全框架-Razorback 0.5.0
  • WebUSB API:让你的USB设备安全的接入网络
  • 从某云服务商溯源黑客老巢:实例讲解Botnet僵尸网络和DDoS

特别推荐

关注我们 分享每日精选文章

不容错过

  • 工具推荐:Cknife,跨平台版中国菜刀正式开源Chora2016-03-21
  • 飞越珠海来看你:2016 GeekPwn澳门全程纪实FB独家2016-05-16
  • 走进科学:黑客叔叔带你玩转LED_Hackingp0tt12014-10-13
  • 走近科学:那些年,媒体笔下被夸大的黑客fu4k2014-12-01

FREEBUF

  • 免责声明
  • 关于我们
  • 加入我们

广告及服务

  • 寻求报道
  • 广告合作
  • 联系我们
  • 友情链接

关注我们

  • 官方微信
  • 新浪微博
  • 腾讯微博
  • Twitter

赞助商

Copyright © 2013 WWW.FREEBUF.COM All Rights Reserved 沪ICP备13033796号

css.php

正在加载中...

0daybank

标签: 暂无
最后更新:2017年5月24日

小助手

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

COPYRIGHT © 2024 www.pdr.cn CVE漏洞中文网. ALL RIGHTS RESERVED.

鲁ICP备2022031030号

联系邮箱:wpbgssyubnmsxxxkkk@proton.me