ATT&CK 红队实战(一)2
0x04 内网渗透
4.1 将web服务器上线到CS
将刚才生成的beacon.exe
上传到web目录,然后在shell中执行这个exe,就可以将shell上线到CS了。
4.2 目标主机信息收集
拿到 shell
第一步,调低心跳值,默认心跳为 60s
,执行命令的响应很慢
我这是自己的内网且没有杀软我就设置为 0 了,真实环境不要设置这么低
进入 beacon
执行 sleep 0
,然后查看下基本的本机信息:
1 | whoami |
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-058
、ms15-051
、ms16-016
、uac-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
新建一个 Listener
,payload
设置为 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 | beacon> rev2self |
这几条命令,执行后得到了 ROOT-TVI862UBEH
这台主机的 beacon
如法炮制得到了域控主机 OWA
的 beacon
token 窃取
除了直接使用获取到的 hash
值,也可以直接窃取 GOD\Administrator
的 token
来登录其他主机
选择 beacon
右键 -> 目标 -> 进程列表
选择 GOD\Administrator
的 token
盗取:
然后在选择令牌处勾选使用当前 token
即可
0x05 总结
我们利用mysql日志写shell或者CMS的模板文件写shell轻松拿下Web服务器,再利用Web服务器作为跳板,去横向收集域内主机信息,并利用窃取的凭证横向移动到其他主机,最终实现整个域的控制