内网渗透合集(四)

admin 2022年3月23日06:12:15评论147 views字数 6700阅读22分20秒阅读模式

使用netbios spoofing技术渗透内网


一 前言

我们知道,在做内网渗透的时候,ARP欺骗、DNS欺骗等手法往往影响较大,且由于上述技术相对古老,防御软件多,加上现在很多的网络设备也逐渐拥有了ARP欺骗防御功能,所以种种情况无疑为我们的内网渗透增加了难度。
最近我在渗透测试工作中用到NetBios Spoofing技术,这种技术对WIN系列XP, 2003, Vista, 7, 2008均有效,能不依赖于ARP Spoofing以较小的成本抓取系统Hash。

二 NetBIOS Name Service (NBNS) 描述

NETBIOS协议是一种在局域网上的程序可以使用的应用程序编程接口(API),为程序提供了请求低级服务的统一的命令集,作用是为了给局域网提供网络以及其他特殊功能,系统可以利用WINS服务、广播及Lmhost文件等多种模式将NetBIOS名解析为相应IP地址,实现信息通讯,所以在局域网内部使用NetBIOS协议可以方便地实现消息通信及资源的共享。

Windows做DNS解析时有如下步骤:

1.local hosts file - C:WindowsSystem32driversetchosts2.DNS3.NBNS

那么当访问者输入一个不存在的域名,而LOCAL HOST FILE、DNS服务器均无法给出解析时,我们可爱又人性化的Windows就会发送NBNS请求进行查询。

内网渗透合集(四)
请仔细看看上图的抓包,你会发现最给力的是:NBNS请求它是一个广播包!
即任何人可以回复并重定向流量,而不依赖于ARP欺骗。这非常神奇…
内网渗透合集(四)

讲到现在大家一定思路清晰了:当下我们的目的是回复NBNS响应,从而转移流量进行欺骗。

利用方法

NetBios Spoofing利用方法目前来说有两种:HTTP和SMB
我们先打开Metasploit,使用nbns_response模块,然后设置欺骗IP:

内网渗透合集(四)

SMB:

msf > use auxiliary/server/capture/smb msf auxiliary(smb) > set JOHNPWFILE /home/tm/johnsmb JOHNPWFILE => /home/tm/johnsmb msf auxiliary(smb) > show options   Module options (auxiliary/server/capture/smb):     Name        Current Setting   Required  Description    ----        ---------------   --------  -----------    CAINPWFILE                    no        The local filename to store the hashes in Cain&Abel format    CHALLENGE   1122334455667788  yes       The 8 byte challenge     JOHNPWFILE  /home/tm/johnsmb  no        The prefix to the local filename to store the hashes in JOHN format    LOGFILE                       no        The local filename to store the captured hashes    SRVHOST     0.0.0.0           yes       The local host to listen on. This must be an address on the local machine or 0.0.0.0    SRVPORT     445               yes       The local port to listen on.    SSL         false             no        Negotiate SSL for incoming connections   SSLVersion  SSL3              no        Specify the version of SSL that should be used (accepted: SSL2, SSL3, TLS1)msf auxiliary(smb) > run[*] Auxiliary module execution completed[*] Server started.

HTTP:

msf auxiliary(smb) > use auxiliary/server/capture/http_ntlm msf auxiliary(http_ntlm) > set LOGFILE /home/tm/httplog LOGFILE => /home/tm/johnhttp msf auxiliary(http_ntlm) > set URIPATH /URIPATH => /msf auxiliary(http_ntlm) > set SRVPORT 80SRVPORT => 80

场景

1.同交换环境下,有WINDOWS主机访问不存在的域名,如:http://thanks1132124324.com

内网渗透合集(四)

2.同交换环境下,有WINDOWS主机进行不存在的SMB通信,如:\thanks1132124324

内网渗透合集(四)
如上图,通过以上两种方法我们均能获取被攻击者的HASH(测试机使用的是WIN7)。
而在获得HASH之后,诸如破解、HASH传递等进一步渗透的方法在此不再赘述。值得注意的是,高版本WINDOWS系统由于HASH存储机制的不同(NTLMv2),破解起来难度较大。

内网渗透:利用WMI代替psexec(WMIEXEC.vbs)

0x01 背景

内网渗透中经常用到psexec这个工具,可以很方便的得到一个半交互式的cmd shell。

但是psexec也有一些问题:psexec需要对方开启ADMIN$共享,而且需要安装服务;另外,psexec退出时有可能服务删除失败,这个情况只是偶尔,但是我碰到过。

安装服务会留下明显的日志,而且服务没有删除的风险更大,管理员很容易就会发现。

WMI可以远程执行命令,所以我就想用VBS脚本调用WMI来模拟psexec的功能,于是乎WMIEXEC就诞生了。基本上psexec能用的地方,这个脚本也能够使用。

0x02 WMIEXEC功能

内网渗透合集(四)

WMIEXEC支持两种模式,一种是半交互式shell模式,另一种是执行单条命令模式。

WMIEXEC需要提供账号密码进行远程连接,但是如果没有破解出账号密码,也可以配合WCE的hash注入功能一起使用,先进行hash注入,然后再使用WMIEXEC即可。

半交互式shell模式

提供账号密码,执行如下命令:

cscript.exe //nologo wmiexec.vbs /shell 192.168.1.1 username password

内网渗透合集(四)

这样就获得了一个半交互式的shell,这个shell和psexec的shell没什么区别。之所以称为半交互式,是因为这个shell也不能执行实时交互的命令,和psexec是一样的。

上个执行命令的图:

内网渗透合集(四)

左边是虚拟机里面执行的命令,右边是WMIEXEC里面执行的。

还可以抓取hash:

内网渗透合集(四)

单个命令执行的模式

这个模式适用于只需要执行一个命令,或者说当前的环境不是交互式shell,没法运行WMIEXEC的shell模式时(比如在webshell里面)。

cscript.exe wmiexec.vbs /cmd 192.168.1.1 username password "command"

内网渗透合集(四)
上面是提供账号密码的情况,如果有时候我们抓取到的是hash,破解不了时可以利用WCE的hash注入,然后再执行WMIEXEC(不提供账号密码)就可以了。

内网渗透合集(四)

Tips:

如果抓取的LM hash是AAD3开头的,或者是No Password之类的,就用32个0代替LM hash即可。

0x03 原理和相关问题

整个过程是先调用WMI通过账号密码或者NTLM认证(WCE注入)连接到远程计算机,然后如果提供了账号密码,则用这个账号密码建立一个到目标的IPC连接。随后WMI会建立一个共享文件夹,用于远程读取命令执行结果。

当 用户输入命令时,WMI创建进程执行该命令,然后把结果输出到文件,这个文件位于之前创建的 共享文件夹中。最后,通过FSO组件访问远程共享文件夹中的结果文件,将结果输出。当结果读取完成时,调用WMI执行命令删除结果文件。最后当 WMIEXEC退出时,删除文件共享。

由于WMI只负责创建进程,没有办法可以判断命令是否执行完毕,所以脚本采用的方法是延迟 1200ms后读取结果文件,但是如果命令执行的时间大于1200ms,比如systeminfo 或者ping之类的,这时候读取结果文件会导致读取的结果不完整,然后在删除结果文件时会出错。

比如正常的执行ping:

内网渗透合集(四)

Ping结果没有读取完整,而且命令执行完后目标服务器上的wmi.dll结果文件并没有被删除!

为了防止出现这种情况,于是在shell模式里面加入了-waitTIME选项,TIME是要等待的时间。当执行的命令后面跟上-wait5000时,表示这个命令等待5s后再读取结果.

内网渗透合集(四)

由于正常的命令都要查看结果,所以执行的命令后面都会加上重定向符,把结果输出到文件中。

所以用这个执行木马会有问题,因为木马进程会一直存在,导致结果文件被占用,不能删除,也不能改写,如果执行不带任何参数的nc.exe也是这种效果

出现这种情况后由于结果文件被占用,所以WMIEXEC不能工作,除非手动更改脚本中的结果文件名。或者可以用taskkill 远程结束掉卡死的进程,然后WMIEXEC可以恢复工作。

为了解决这个问题,加入了-persist选项。

当命令加了persist选项后,程序会在后台运行,不会有结果输出,而且会返回这个命令进程的PID,方便结束进程。

这样就可以运行nc或者木马程序了。

下面是测试nc的结果:

内网渗透合集(四)

相关设定:

Const Path = "C:"

Const FileName = "wmi.dll"

Const timeOut = 1200

这段代码在脚本的一开始,是控制结果文件路径、文件名、以及默认代码执行时间的,可以自行更改

0x04 题外话:UAC的探讨

测试中发现在Server 2008以及2012中,只有Administrator账号能进行远程连接,并且psexec也是一样的情况,还有IPC连接也是。就算是管理员用户组的其他用户也不能进行远程连接。

后来发现是UAC的问题,默认UAC是开启的,这时候只有Administrator账户能够远程访问共享或者连接WMI。

内网渗透合集(四)

图中hehe是管理员用户组的用户,但是PSEXEC在连接时提示拒绝访问,WMIEXEC也是一样。

Google查到可以通过禁用UAC然后psexec就可以使用了,如何禁用参考:http://support.microsoft.com/kb/942817

禁用之后psexec可以通过hehe账户连接,但是是普通的权限,此时要加上-h选项即可获得管理员的权限。

内网渗透合集(四)

禁用UAC后WMIEXEC用hehe账户连接直接就是管理员权限

内网渗透合集(四)

值得一提的是,UAC并不会拦截域管理员,就算UAC是开启的,域管理员也可以直接连接,可以直接使用PSEXEC或者WMIEXEC。

0x05 WMIEXEC使用实例

还是用抓取server 2012域控上的hash作为例子吧,具体操作步骤就不介绍了,直接上图:

内网渗透合集(四)
内网渗透合集(四)
内网渗透合集(四)

0x06 总结

运行时间长的命令时,如ping,systeminfo之类的,记得加上-wait5000或者更久的时间选项

运行nc反弹或者木马等不需要输出结果、同时需要一直运行的程序时,一定要加上-persist选项,不然你就只能去taskkill远程结束进程了

现在单命令执行模式(/cmd)也可以解析-waitTIME 和 -persist选项了,这样就可以用单命令模式运行nc或者远控

下载地址:

https://static-js.b0.upaiyun.com/wp-content/uploads/2015/05/wmiexec-v1_1.rar


内网渗透应用 跨vlan渗透的一种思路

0x00 前言


随着日益发展的网络技术,网络线路也变的越来越复杂。渗透测试人员在web中通过注入,上传等基本或高级脚本渗透方法到达了边界服务器。再深入时则会面对更复杂的网络,比如乱七八糟的vlan环境。

什么是vlan:http://baike.baidu.com/history/id=9328829

测试拓扑图

内网渗透合集(四)

0x01 测试基本状况概述


一共选取了三台服务器和一个H3C s3610三层交换机.顺带笔者的一台笔记本(Kali Linux).

三台服务器代表了tec503的基本业务划分。攻击者处在和webserver相同的vlan200中。并且攻击者已控制到webserver。

在交换机上划分了三个vlan 将Tec503(假想的目标公司)的数据服务器(dataserver.tec503.com)和web服务器 (webserver.tec503.com)及域控分别划分在三个vlan(vlan100,vlan200,vlan300)下。vlan100和 vlan200不能相互访问。但是都可以访问到vlan300.

交换机开启snmp和telnet(snmp一般用来监控交换机流量等,telnet用于管理三层交换机)。

测试目标:在尽可能少留下痕迹的前提下,接触到dataserver的数据。

0x02 前期基本渗透过程


在前期信息搜集时发现tec503.com存在域传送漏洞.由此确定了此次测试的目标ip(5.5.6.4).

内网渗透合集(四)

并且webserver对外开放.在基本探测后发现存在web漏洞。并且在获得webshell之后成功获取到了管理权限。

之后在webserver上查看到网关ip为172.10.0.1,试着ping一下.

内网渗透合集(四)

telnet上去看到是一台H3C设备。

内网渗透合集(四)

尝试123456,password,manager等简单弱口令登陆,结果都失败。

尝试snmp弱口令探测(这里的弱口令是指snmp管理时用到的团体字符串。一般可读权限的为public,可读可写的默认为private).

内网渗透合集(四)

发现果真使用默认的可读团体字符串public.继续尝试使用snmp获取到H3C设备密码

内网渗透合集(四)

成功的获取到密码”admin”(忘了说 我前面是故意没有试admin的)

之后便可以通过这个密码telnet登陆到交换机中.

内网渗透合集(四)

并成功的进入到system-view状态.

0x03 交换机下的渗透过程


在成功通过telnet登陆到交换机后我们便可以开始收集交换机的各种配置信息(vlan划分,super密码,路由表信息。Ip池划分等等)并且 这些信息除了super密码以外基本都可以通过snmp的一个可读字符串获取到。而且对于思科设备来讲,如果有个可读可写的团体字符串,那么直接就可以下 载到cisco的核心配置文件(含密码字符串等).

这里需要简单的说说三层交换机的两个功能,vlan划分以及端口镜像。端口指的是交换机上的端口,而不是计算机的服务端口。

端口镜像则是指将交换机某个端口下的数据镜像到另一个端口的技术,并且可以选择镜像流入或流出的数据包。这一技术通常应用在企业监控,流量分析中。在端口镜像时也应注意流量过高引发监视端口流量负载的问题。

这次测试便是通过端口镜像技术获取到dataserver发送和接受到的数据包。

我们先来分析下这台交换机的配置文件。

内网渗透合集(四)

在这里我们可以看到super密码 这个密码通过H3C ciper加密。加密的字符串可以通过https://github.com/grutz/h3c-pt-tools/blob/master/hh3c_cipher.py这个脚本解密。

接下来看看ip-pool的划分,配合前期nslookup收集到的信息可以进一步清晰的逼近目标.

内网渗透合集(四)

根据上图可以发现我们现在处于vlan200中,目标处于vlan100,域控在300.

那么我们继续看看每个正在使用的接口被划分到了哪个vlan中。

内网渗透合集(四)

这里可以看到 Ethernet 1/0/3在vlan100中.而Ethernet 1/0/4在vlan200中,也就是我们所处的vlan。

清楚接口划分之后我们开始建立一个本地镜像组1。

内网渗透合集(四)

然后制定被镜像的端口号。

内网渗透合集(四)

接着制定监控端口号。

内网渗透合集(四)

最后登陆到我们控制的webserver.使用抓包软件分析目标(dataserver.tec503.com)的数据包.

这是捕获到目标(dataserver.tec503.com)ICMP数据包的示意图。

内网渗透合集(四)

这是捕获HTTP数据包的示意图。

内网渗透合集(四)

同理其他协议的包也应如此,具体的后续分析过程就不在这里演示了。


from:

http://drops.wooyun.org/tips/649

https://www.91ri.org/12908.html

http://www.freebuf.com/articles/5238.html


如果本文对你有所帮助,请点击分享,谢谢各位。

本文始发于微信公众号(关注安全技术):内网渗透合集(四)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月23日06:12:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   内网渗透合集(四)https://cn-sec.com/archives/503129.html

发表评论

匿名网友 填写信息